Pester Failure Analysis
PowerShell/PowerShell
Investigates failing Pester tests in PowerShell CI jobs by following a six-step workflow from pull request status to documented fix recommendations.
“Break the Loop - Deep Bug Analysis”
$ npx skills add jlifeng/JobPilot --skill break-loop -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jlifeng/JobPilot break-loop --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jlifeng/JobPilot.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/break-loop .claude/skills/break-loop && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "break-loop" agent skill from https://github.com/jlifeng/JobPilot/tree/main/.agents/skills/break-loop into .claude/skills/break-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "break-loop", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jlifeng/JobPilot/tree/main/.agents/skills/break-loopType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jlifeng/JobPilot --skill break-loop -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jlifeng/JobPilot break-loop --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jlifeng/JobPilot.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/break-loop .agents/skills/break-loop && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "break-loop" agent skill from https://github.com/jlifeng/JobPilot/tree/main/.agents/skills/break-loop into .agents/skills/break-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "break-loop", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jlifeng/JobPilot --skill break-loop -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jlifeng/JobPilot break-loop --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jlifeng/JobPilot.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/break-loop .cursor/skills/break-loop && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "break-loop" agent skill from https://github.com/jlifeng/JobPilot/tree/main/.agents/skills/break-loop into .cursor/skills/break-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "break-loop", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jlifeng/JobPilot.git --path .agents/skills/break-loop--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jlifeng/JobPilot --skill break-loop -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jlifeng/JobPilot break-loop --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jlifeng/JobPilot.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/break-loop .gemini/skills/break-loop && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "break-loop" agent skill from https://github.com/jlifeng/JobPilot/tree/main/.agents/skills/break-loop into .gemini/skills/break-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "break-loop", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jlifeng/JobPilot break-loopInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jlifeng/JobPilot --skill break-loop -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jlifeng/JobPilot.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/break-loop .github/skills/break-loop && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "break-loop" agent skill from https://github.com/jlifeng/JobPilot/tree/main/.agents/skills/break-loop into .github/skills/break-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "break-loop", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jlifeng/JobPilot --skill break-loop -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jlifeng/JobPilot break-loop --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jlifeng/JobPilot.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/break-loop .opencode/skills/break-loop && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "break-loop" agent skill from https://github.com/jlifeng/JobPilot/tree/main/.agents/skills/break-loop into .opencode/skills/break-loop/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "break-loop", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
break-loopBreak Loop is a skill in jlifeng/JobPilot (140 stars). Its SKILL.md is about 1.1k tokens. Licence: Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7f33542. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Break Loop loads about 1.1k tokens when it runs. Until then it costs about 11 tokens; SKILL.md has 472 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jlifeng/JobPilot at commit 7f33542, republished under its Apache-2.0 licence (© jlifeng). 472 words, ~1,131 tokens.
.claude/skills/break-loop/SKILL.md (or your agent's skills folder).When debug is complete, use this skill for deep analysis to break the "fix bug -> forget -> repeat" cycle.
Analyze the bug you just fixed from these 5 dimensions:
Which category does this bug belong to?
| Category | Characteristics | Example |
|---|---|---|
| A. Missing Spec | No documentation on how to do it | New feature without checklist |
| B. Cross-Layer Contract | Interface between layers unclear | API returns different format than expected |
| C. Change Propagation Failure | Changed one place, missed others | Changed function signature, missed call sites |
| D. Test Coverage Gap | Unit test passes, integration fails | Works alone, breaks when combined |
| E. Implicit Assumption | Code relies on undocumented assumption | Timestamp seconds vs milliseconds |
If you tried multiple fixes before succeeding, analyze each failure:
What mechanisms would prevent this from happening again?
| Type | Description | Example |
|---|---|---|
| Documentation | Write it down so people know | Update thinking guide |
| Architecture | Make the error impossible structurally | Type-safe wrappers |
| Compile-time | TypeScript strict, no any | Signature change causes compile error |
| Runtime | Monitoring, alerts, scans | Detect orphan entities |
| Test Coverage | E2E tests, integration tests | Verify full flow |
| Code Review | Checklist, PR template | "Did you check X?" |
What broader problems does this bug reveal?
Solidify insights into the system:
.trellis/spec/guides/ thinking guides.trellis/spec/backend/ or frontend/ docsPlease output analysis in this format:
## Bug Analysis: [Short Description]
### 1. Root Cause Category
- **Category**: [A/B/C/D/E] - [Category Name]
- **Specific Cause**: [Detailed description]
### 2. Why Fixes Failed (if applicable)
1. [First attempt]: [Why it failed]
2. [Second attempt]: [Why it failed]
...
### 3. Prevention Mechanisms
| Priority | Mechanism | Specific Action | Status |
|----------|-----------|-----------------|--------|
| P0 | ... | ... | TODO/DONE |
### 4. Systematic Expansion
- **Similar Issues**: [List places with similar problems]
- **Design Improvement**: [Architecture-level suggestions]
- **Process Improvement**: [Development process suggestions]
### 5. Knowledge Capture
- [ ] [Documents to update / tickets to create]The value of debugging is not in fixing the bug, but in making this class of bugs never happen again.
Three levels of insight:
30 minutes of analysis saves 30 hours of future debugging.
IMPORTANT: After completing the analysis above, you MUST immediately:
Update spec/guides - Don't just list TODOs, actually update the relevant files:
cross-platform-thinking-guide.mdcross-layer-thinking-guide.mdcode-reuse-thinking-guide.mdbackend/*.md or frontend/*.mdSync templates - After updating .trellis/spec/, sync to src/templates/markdown/spec/
Commit the spec updates - This is the primary output, not just the analysis text
The analysis is worthless if it stays in chat. The value is in the updated specs.
© jlifeng, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/break-loop of jlifeng/JobPilot.
Open the folder on GitHubat commit 7f33542
Break Loop next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Break Loop this skilljlifeng/JobPilot | 140 | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Pester Failure AnalysisPowerShell/PowerShell | 56k | — | ~5.1k | Automated safety check: Pass | MIT | |
| Rust TDD Workflowrtk-ai/rtk | 83k | — | ~753 | Automated safety check: Notes | Apache-2.0 | |
| Clawteam DevHKUDS/ClawTeam | 5.5k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Browser Testing with Chrome DevToolsaddyosmani/agent-skills | 103k | 4 repos | ~3.5k | Automated safety check: Warn | MIT | |
| Apple Container Test RunnerRustPython/RustPython | 22k | — | ~467 | Automated safety check: Pass | MIT |
PowerShell/PowerShell
Investigates failing Pester tests in PowerShell CI jobs by following a six-step workflow from pull request status to documented fix recommendations.
rtk-ai/rtk
Enforces red-green-refactor for Rust work, with idiomatic test patterns, a naming convention and a pre-commit gate of cargo fmt, clippy and test.
HKUDS/ClawTeam
A skill your agent uses when working inside the ClawTeam repository itself: local development, debugging, reviewing, testing, validating multi-agent flows, or checking whether a code change actually…
addyosmani/agent-skills
Connects an agent to a real Chrome instance through the Chrome DevTools MCP server, so it can inspect the DOM, read console errors and profile performance directly.
RustPython/RustPython
Runs RustPython tests inside a Linux container built with Apple's container CLI, so macOS users can compare Linux results with their local ones.
code-yeongyu/oh-my-openagent
Tests the omo Codex plugin in an isolated CODEX_HOME with a local mock model, proving hooks fired through app-server notifications without touching ~/.codex.
jlifeng/JobPilot
Brainstorm - Requirements Discovery (AI Coding Enhanced). An agent skill from jlifeng/JobPilot.
jlifeng/JobPilot
Update Code-Spec - Capture Executable Contracts. An agent skill from jlifeng/JobPilot.
jlifeng/JobPilot
Finish Work - Pre-Commit Checklist
jlifeng/JobPilot
Start Session
Categories
Run `npx skills add jlifeng/JobPilot --skill break-loop -a claude-code`. Or copy the skill folder (.agents/skills/break-loop in jlifeng/JobPilot) into .claude/skills/break-loop in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jlifeng/JobPilot --skill break-loop -a codex`. Or copy the skill folder (.agents/skills/break-loop in jlifeng/JobPilot) into .agents/skills/break-loop in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jlifeng/JobPilot --skill break-loop -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/break-loop, .gemini/skills/break-loop, .github/skills/break-loop and .opencode/skills/break-loop in your project.
SKILL.md names no scripts, command-line tools or credentials: Break Loop is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Break Loop is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.1k tokens (SKILL.md is roughly 4.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Break Loop: Pester Failure Analysis (PowerShell/PowerShell, 56k stars), Rust TDD Workflow (rtk-ai/rtk, 83k stars), Clawteam Dev (HKUDS/ClawTeam, 5.5k stars) and Browser Testing with Chrome DevTools (addyosmani/agent-skills, 103k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jlifeng (a GitHub user) maintains it in jlifeng/JobPilot, which has 140 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: jlifeng/JobPilot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.