implement
Skill0 starsChanged 4 months agoMITView on GitHub
Execute an existing plan file. Use only when the user named this skill or a plan file, or the work is load-bearing. Ordinary requests: do the work — do not send the user to /plan first.
- Reads credentials
- Commits and pushes
191 other projects use a version of this.
Adopted by
Most recently taken up by
- revisit-studies/studytheir own version, first seen Nov 9, 2026
- dz114879/skillstheir own version, first seen Nov 8, 2026
- Dimon94/dveritytheir own version, first seen Nov 8, 2026
- Dimon94/skillstheir own version, first seen Nov 8, 2026
- The-Vibe-Company/quivrtheir own version, first seen Nov 8, 2026
- miklschmidt/archboardtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use setup-ts-deep-modules, ask-matt and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
liufeng1976Skillsetup-ts-deep-modules
Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.
Also in 43 projects that use this
GoogleSkillask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Also in 91 projects that use this
RoentekSkillloop-me
Grill me about specs for the workflows I want to build, within this workspace.
Also in 50 projects that use this
AWSSkillto-questionnaire
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
Also in 88 projects that use this
ryotaroh180105Skillclaude-handoff
Hand the current conversation off to a fresh background agent that picks up the work immediately.
Also in 42 projects that use this
GoogleSkillto-spec
Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.
Also in 168 projects that use this
- +3 more from google
Other versions191 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 191
- mattpocock/skills★ 309ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- foambubble/foam★ 17ksame name
- formbricks/formbricks★ 13ksame name
- ArcReel/ArcReel★ 6.3ksame name
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- fallow-rs/fallow★ 5.3ksame name
- withcoral/coral★ 4.9ksame name
- bestofjs/bestofjs★ 3.1ksame name
181 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository55 other files it gives its agents.
- AGENTS.mdAGENTS.md
- scripts/AGENTS.mdAGENTS.md
- src/AGENTS.mdAGENTS.md
- .cursor/rules/publish-version-bump.mdcCursor rule
- .cursor/rules/release-version-sync.mdcCursor rule
- antigravitySkill
- auditSkill
- autoplanSkill
- bootstrapSkill
- brainstormSkill
- browseSkill
- ceo-reviewSkill
- clarifySkill
- cleanupSkill
- code-reviewSkill
- codexSkill
- component-inventorySkill
- context-restoreSkill
- context-saveSkill
- critiqueSkill
- cronSkill
- csoSkill
- cursorSkill
- debugSkill
- deepen-planSkill
- design-reviewSkill
- devex-reviewSkill
- document-reviewSkill
- eng-reviewSkill
- executing-plansSkill
- fableSkill
- finishSkill
- frontend-designSkill
- grill-meSkill
- grokSkill
- learnSkill
- office-hoursSkill
- onboardSkill
- plan-design-reviewSkill
- planSkill
- polishSkill
- qaSkill
- reviewSkill
- shipfastSkill
- shipthoroughSkill
- simplifySkill
- specSkill
- statusSkill
- subagent-driven-developmentSkill
- test-driven-developmentSkill
- ui-auditSkill
- ui-ux-pro-maxSkill
- using-git-worktreesSkill
- verification-before-completionSkill
- writing-plansSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
74 rules. 0 are common, 52 are distinctive, and 22 are very specific to this project.
0
Common
Most of the 171 edited versions we read keep these.
52
Distinctive
This author's own choices. Worth a look.
22
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 11
If you are running this skill in Codex, read ../references/codex-compatibility.md before following host-specific tool instructions.
- Very specific: line 15
Read ../references/work-size.md before continuing.
- Very specific: line 51
Look for the most recent plan file in docs/plans/ that isn't archived.
- Distinctive: line 52
Read it completely — understand the phases, tasks, key decisions, and execution strategy.
- Very specific: line 55
Freshness check: If the plan has frontmatter with date and ttl_days, check whether today exceeds date + ttl_days.
- Distinctive: line 70
Before running the execution methodology or editing any file, spend ≤2 minutes grepping every concrete assertion the phase you're about to …
- Distinctive: line 74
If it's already N+1 or N+2, the literal numbers are stale — bump from current.
- Very specific: line 93
If a project follows the auto-loaded plan-materialization.md rule, this step is already mandated there.
- Very specific: line 111
If already on a feature branch: check whether you are inside an existing worktree — mechanically, never by path pattern, since worktrees …
- Distinctive: line 117
If yes, continue there. If no, ask the user before continuing — they may have been mid-task in the main checkout.
- Very specific: line 120
When CE's Phase 1 step 2 lists Options A / B / C, treat Option B as the default.
- Very specific: line 122
If soloship:using-git-worktrees is not available (the skill isn't installed in this environment), fall back to creating a worktree manually:
- Distinctive: line 135
Before executing, claim the plan so no other session implements it at the same time.
- Very specific: line 175
Claim acquired: update the plan's frontmatter to status: in-progress, claimed_by: <short session label — e.g.
- Very specific: line 184
The status flip is not optional and it is not deferred: Write status: in-progress NOW, at claim time — before any code is written.
- Distinctive: line 207
Before writing any code, state the scope lock — out loud, in the run, where the user can see it:
- Very specific: line 218
If docs/architecture/COMPONENTS.md exists, read it before creating or specifying UI components — reuse or extend an existing component on …
- Distinctive: line 248
Read the plan completely and clarify ambiguities before starting
- Distinctive: line 258
Advisor vs orchestrator (state your choice out loud): If the plan is one hard task that needs steering, run as an advisor (single agent, no …
- Distinctive: line 275
Exception — trivial changes: If the plan truly describes a 1-2 step direct change (typo fix, single-file tweak, obvious rename), skip the …
- Distinctive: line 299
Merge conflicts: stop immediately, report the conflicting files, ask the user how to proceed.
- Very specific: line 303
If the user later wants a PR for an already-merged change, they can run it manually from the base branch, or use /soloship:finish Option 2 …
- Distinctive: line 338
Use test accounts when a flow needs auth or specific state: If a flow requires being logged in, having a particular role, an existing …
- Distinctive: line 347
If executing ANY QA Plan row surfaces ANY issue — a visual break, broken interaction, console error, wrong behavior, a failing request, …
- Distinctive: line 370
When implementation is complete:
- Very specific: line 372
If the work was non-trivial, suggest: "Run /learn to capture what you learned."
- Very specific: line 373
Do not start a shipping skill.
- Distinctive: line 412
Read the work document completely
- Distinctive: line 414
If anything is unclear or ambiguous, ask clarifying questions now
- Very specific: line 433
Ask: "Continue working on [current_branch], or create a new branch?"
- Distinctive: line 434
If continuing, proceed to step 3
- Distinctive: line 435
If creating new, follow Option A or B below
- Very specific: line 444
Use a meaningful name based on the work (e.g., feat/user-authentication, fix/email-validation).
- Distinctive: line 454
Only proceed after user explicitly says "yes, commit to [default_branch]"
- Distinctive: line 455
Never commit directly to the default branch without explicit permission
- Distinctive: line 457
Recommendation: Use worktree if:
- Distinctive: line 463
Use TodoWrite to break plan into actionable tasks
- Distinctive: line 467
Keep tasks specific and completable
- Very specific: line 488
IMPORTANT: Always update the original plan document by checking off completed items.
- Distinctive: line 497
After completing each task, evaluate whether to create an incremental commit:
- Very specific: line 508
Scope Ledger Gate (Soloship — required before this commit): Before the commit that closes a task, invoke the verification-before-completion …
- Distinctive: line 533
Handling merge conflicts: If conflicts arise during rebasing or merging, resolve them immediately.
- Distinctive: line 547
Follow project coding standards (see CLAUDE.md)
- Distinctive: line 548
When in doubt, grep for similar implementations
- Distinctive: line 552
Run relevant tests after each significant change
- Distinctive: line 553
Don't wait until the end to test
- Distinctive: line 555
Add new tests for new functionality
- Distinctive: line 567
Keep TodoWrite updated as you complete tasks
- Distinctive: line 569
Create new tasks if scope expands
- Distinctive: line 570
Keep user informed of major milestones
- Distinctive: line 576
Always run before submitting:
- Distinctive: line 590
Run configured agents in parallel with Task tool.
- Distinctive: line 593
All TodoWrite tasks marked completed
- Distinctive: line 598
No console errors or warnings
- Very specific: line 602
Add a ## Post-Deploy Monitoring & Validation section to the PR description for every change.
- Very specific: line 609
If there is truly no production/runtime impact, still include the section with: No additional operational monitoring required and a …
- Very specific: line 649
Keep the screenshots local (attach them when you show the result).
- Distinctive: line 653
Modified screens: Before AND after screenshots
- Distinctive: line 656
IMPORTANT: Always include uploaded image URLs in PR description.
- Distinctive: line 713
Update the plan's YAML frontmatter to the completed state and release the claim taken in Step 1.8:
- Very specific: line 720
Remove the claimed_by line (the work is no longer in flight), then clear the claim file:
- Distinctive: line 768
When swarm mode is enabled, the workflow changes:
- Distinctive: line 819
Don't wait for perfect understanding - ask questions and move
- Distinctive: line 826
Don't reinvent - match what exists
- Distinctive: line 830
Run tests after each change, not at the end
- Distinctive: line 837
Write tests for new code
- Distinctive: line 838
Run linting before pushing
- Distinctive: line 839
Use reviewer agents for complex/risky changes only
- Distinctive: line 844
Don't leave features 80% done
- Distinctive: line 849
Before finishing (merge/ship), verify:
- Distinctive: line 863
Don't use by default: Use reviewer agents only when:
- Distinctive: line 875
Analysis paralysis: - Don't overthink, read the plan and execute
- Distinctive: line 876
Skipping clarifying questions: - Ask now, not after building wrong thing
- Distinctive: line 878
Testing at the end: - Test continuously or suffer later
“Common” is measured: kept by at least 6 in 10 of the 171 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Host Compatibility
If you are running this skill in Codex, read ../references/codex-compatibility.md before following host-specific tool instructions. Claude Code should continue to use the Claude-specific tools and command wrappers described here.
Soloship Implement
Read ../references/work-size.md before continuing. If the user asked you to
do work and did not name this skill or a plan file, stop this skill and do
the work unless it is load-bearing.
Your job is to execute an existing plan. Do NOT start implementing without a plan
file in docs/plans/. If they invoked this skill and no plan exists, tell them —
do not bounce ordinary work to /plan.
Model posture (see .claude/rules/model-mode.md)
Standard posture (Opus/Sonnet/Codex — the default): execute this skill exactly as written, every step in order.
Fable posture (model id contains fable/mythos): the gates below are
binding; the rest is method guidance you may adapt.
Gates (binding): Step 1 reading the plan in full · Step 1.5 pre-execution
state verification (every concrete claim grepped, deltas documented) ·
Step 1.7 branch/worktree discipline · Step 1.8 claiming the plan (status flip
to in-progress) · Step 2.0 Scope Lock ledger, and resolving every ledger
row before done · Step 2.5 finishing/merge mechanics · Step 2.6 QA Gate —
every QA Plan row executed with evidence, the fix-and-re-verify loop, and QA
teardown · the methodology's "Prepare Operational Validation Plan (REQUIRED)"
step (it produces a required artifact — gate, wherever in the phases it
lives) · plan status flip on completion.
Choreography (adaptable in Fable posture): the embedded execution methodology under "Implementation Methodology" (Phases 1–4, swarm mode, the quality checklist, fixed report formats) describes HOW to move between those gates — treat it as a completion checklist, not a script. Order your own work; batch edits when safe; run the suite when it informs you, not ritually after every edit. The plan's phases and the gates above still happen — with evidence — whatever path you take between them.
Step 1: Find the Plan (with Freshness Check)
Look for the most recent plan file in docs/plans/ that isn't archived.
Read it completely — understand the phases, tasks, key decisions, and execution
strategy.
Freshness check: If the plan has frontmatter with date and ttl_days,
check whether today exceeds date + ttl_days. If stale, warn:
"This plan is N days old (expires after M days). Verify it still reflects current
intent before executing." Do not block — warn and proceed. Freshness applies
only to planned / in-progress plans (legacy: Not started / active) —
backlog, done, and abandoned are exempt.
Step 1.5: Pre-Execution State Verification
Required for every multi-phase plan, every phase, every time. Plans embed concrete factual claims about the codebase — version numbers, file paths, identifier names, "is X done" assumptions — that are correct at write time and can be wrong at execute time. Intervening commits land. The author guesses a location without grepping. A prior phase changed something this phase depends on.
Before running the execution methodology or editing any file, spend ≤2 minutes grepping every concrete assertion the phase you're about to execute makes:
- Version constants: plan says "bump CONST N → N+1"? Grep the constant. If it's already N+1 or N+2, the literal numbers are stale — bump from current.
- File locations: plan names a file path for a CSS variable, identifier,
palette override, or alias?
grep -rn "<construct>" src/ functions/src/and confirm it actually lives where the plan says. - Identifier renames: plan assumes a prior phase renamed
OldNametoNewName?git log --oneline -p -S "OldName"across the touched files. Use the new name if the rename happened, the old name if it didn't. - "Is X done" assumptions: plan assumes a prior phase did or did not do something? Grep for the artifact (renamed tab, deleted file) before re-doing it or before assuming it still needs to be done.
Cap at 2 minutes per phase. The point is to surface mismatches, not to re-derive the plan.
Document every delta in the phase handoff under "Plan-vs-reality adjustments documented:". Empty if none — empty signals that verification ran. Populated with each delta if found. The next phase's executor reads the handoff and inherits the corrected mental model.
If a project follows the auto-loaded plan-materialization.md rule, this step is
already mandated there; this skill restates it because it's the highest-leverage
discipline /implement can enforce. See
docs/solutions/workflow-issues/plan-state-decay-during-multi-phase-execution-20260503.md
(in any project that has compounded this learning) for surfaced incidents.
Skip this step ONLY if the plan is single-phase or the work is the trivial 1-2 step direct change documented in the Step 2 exception.
Step 1.7: Branch/Worktree Discipline (Soloship Override)
The CE methodology below offers three branch-setup options at the start of Phase 1 (new branch / worktree / stay on default). Soloship's default differs from CE's: default to a worktree (CE's Option B), not a bare new branch (CE's Option A).
Why: Soloship users frequently run 2-5 parallel agent processes against the same repo at the same time. New feature work on a fresh branch in the same working directory will trip over the other processes — dirty state from one agent's WIP shows up in another's diffs, builds run against the wrong files, and git status becomes unreadable. A worktree gives each new branch its own physical directory, so parallel processes can't collide.
How to apply when reaching CE's Setup Environment step:
- If on the default branch and starting new work: invoke the
soloship:using-git-worktreesskill instead of runninggit checkout -bdirectly. The skill handles directory selection,.gitignoresafety, and clean baseline tests. If already on a feature branch: check whether you are inside an existing worktree — mechanically, never by path pattern, since worktrees live under several roots (
.worktrees/,.claude/worktrees/,~/.superconductor/worktrees/, harness-specific paths) and a glob silently misses most of them:[ "$(cd "$(git rev-parse --git-dir)" && pwd -P)" != "$(cd "$(git rev-parse --git-common-dir)" && pwd -P)" ] && echo "in a worktree"If yes, continue there. If no, ask the user before continuing — they may have been mid-task in the main checkout.
- Skip the worktree only if the user explicitly says "use a branch in this checkout" or the work is the trivial 1-2 step exception documented in Step 2 below.
When CE's Phase 1 step 2 lists Options A / B / C, treat Option B as the default. Do not present the three-option menu to the user unless they push back — the menu is a CE-era artifact and the worktree default is what Soloship wants.
If soloship:using-git-worktrees is not available (the skill isn't installed in this environment), fall back to creating a worktree manually:
mkdir -p .worktrees
grep -q "^\.worktrees/$" .gitignore || echo ".worktrees/" >> .gitignore
git worktree add ".worktrees/<branch-name>" -b "<branch-name>"
cd ".worktrees/<branch-name>"…and verify the new directory got added to .gitignore before proceeding.
Step 1.8: Claim the Plan (Soloship — cross-session coordination)
Before executing, claim the plan so no other session implements it at the same
time. Claims live on the shared whiteboard every worktree of the repo sees —
<git-common-dir>/soloship/claims/ — one file per plan, created atomically
(noclobber: first writer wins, two racing sessions can never overwrite each
other).
COORD="$(cd "$(git rev-parse --git-common-dir)" && pwd -P)/soloship"
mkdir -p "$COORD/claims" "$COORD/sessions"
# Own session id: session file whose pid matches this shell's parent process;
# fallbacks: freshest session file, then a pid label.
SID=$(grep -l "\"pid\":$PPID," "$COORD/sessions/"*.json 2>/dev/null | head -1 | xargs -I{} basename {} .json)
[ -z "$SID" ] && SID=$(ls -t "$COORD/sessions/"*.json 2>/dev/null | head -1 | xargs -I{} basename {} .json)
[ -z "$SID" ] && SID="pid-$PPID"
PLAN_FILE="<the plan filename, e.g. 2026-01-01-my-feature.md>" # filename only, normalized to filesystem-safe
CLAIM="$COORD/claims/$PLAN_FILE.json"
if ( set -o noclobber; printf '{"session_id":"%s","branch":"%s","claimed_at":"%s"}\n' \
"$SID" "$(git branch --show-current)" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" > "$CLAIM" ) 2>/dev/null; then
echo "claim acquired"
else
HOLDER=$(grep -oE '"session_id":"[^"]*"' "$CLAIM" | head -1 | cut -d'"' -f4)
# Freshness = the HOLDER SESSION's heartbeat (sessions/<holder>.json mtime),
# not the claim file's age; session_idle_min from $COORD/config.json (default 60)
IDLE_MIN=$(grep -oE '"session_idle_min":[0-9]+' "$COORD/config.json" 2>/dev/null | grep -oE '[0-9]+$'); [ -z "$IDLE_MIN" ] && IDLE_MIN=60
HB="$COORD/sessions/$HOLDER.json"
AGE_MIN=99999
[ -f "$HB" ] && AGE_MIN=$(( ( $(date +%s) - $(stat -f %m "$HB" 2>/dev/null || stat -c %Y "$HB") ) / 60 ))
echo "claim held by $HOLDER, heartbeat ${AGE_MIN} min ago (idle threshold: ${IDLE_MIN})"
fi- Claim held by a session with a fresh heartbeat (< idle threshold): STOP. Another session is implementing this plan right now. Tell the user which session (its worktree/branch) and ask how to proceed. Do not start implementing.
- Claim held but the holder's heartbeat is stale (or its session file is gone): the claiming session likely crashed. Claims are advisory, never deadlocks — take it over: replace the claim file with your own, note the takeover to the user, and continue.
- Claim acquired: update the plan's frontmatter to
status: in-progress,claimed_by: <short session label — e.g. "worktree feat-x session">,branch: <branch>,updated: <today>. (Vocabulary: see the plan skill's Artifact Contract.)
After completing each phase, update the plan frontmatter progress:
"<done>/<total>" and updated: — this is what makes the status board
trustworthy without git archaeology.
The status flip is not optional and it is not deferred. Write
status: in-progress NOW, at claim time — before any code is written. The
plan-truth gate blocks your first code commit until you do, because a plan that
says planned while its code is being committed is a plan that is actively
lying. Flip it to done at the merge, not "at the end": the end of a long
session is exactly where context runs out and the write silently never happens.
That is how four Command Center plans came to claim "Not started" for features
that were live in production.
If a handoff drove this work (docs/handoffs/<file>), record
handoff: docs/handoffs/<file> in the plan frontmatter now. You will delete the
handoff when the work completes — a handoff is consumed exactly once, and one
that outlives its execution describes a world that no longer exists.
Step 2.0: Scope Lock (run start — Soloship)
The commit-time Scope Ledger (Phase 2 of the methodology below) catches drift right before a commit — but the rabbit holes that cause drift happen during the run, long before the commit. This step closes that gap by declaring the boundary up front, when your judgment about what's in scope is clearest and least tempted by whatever interesting thing you'll discover at hour two.
Before writing any code, state the scope lock — out loud, in the run, where the user can see it:
- Deliverable. One sentence: what will exist when this run is done, taken
from the plan's
## Goal/## Done-When. If the plan has a## Done-When, the deliverable is "every Done-When item observably true." - Stop condition. The observable signal that means stop — the Done-When met, the failing thing fixed and re-verified. Naming it now is what lets you recognize "done" later instead of drifting past it.
- Component reuse declaration (UI work only).
<!-- concern:component-reuse -->Ifdocs/architecture/COMPONENTS.mdexists, read it before creating or specifying UI components — reuse or extend an existing component on purpose match, cite what you found, and apply the rule of three (seereferences/component-inventory.md). As part of the scope lock, list the components this run will REUSE vs CREATE, citing the inventory (or the grep that came up empty). A run that creates a component it never declared should treat that as scope drift. - Parking lot. Open an explicit out-of-scope discoveries list, empty at start. Every genuinely-interesting thing you find mid-run that is not the deliverable — a nearby bug, a refactor that would be nice, a second feature the code is begging for — goes in the list and you keep going. You do not chase it. At the end of the run you surface the list to the user as "found these along the way — want any of them next?".
The parking lot is the mechanism. Without it, the honest impulse "I should fix this too" silently expands the run until it never finishes — the exact open-ended drift the loop spine exists to stop. Parking a discovery is not ignoring it; it's refusing to let it hijack this run.
This is visible in a dry-run: an /implement that has started must be able
to show its stated deliverable, stop condition, and current parking lot on
request. If it can't, the scope was never locked.
Skip the scope lock only for the trivial 1-2 step exception below (there is nothing to drift from).
Step 2: Route to Execution
Apply the execution methodology below with the plan file path as input. It will:
- Read the plan completely and clarify ambiguities before starting
- Set up the correct branch (subject to the Step 1.7 worktree override above)
- Execute the plan systematically while maintaining quality
- Ship complete features rather than half-built ones
The CE workflow handles both sequential and parallelizable work internally — you do not need to separately choose "subagent-driven" vs "parallel agents." Pass the plan as-is; if the plan's Execution Strategy section calls for parallelism, surface that in your hand-off to CE so it can fan out.
Advisor vs orchestrator (state your choice out loud). If the plan is one hard
task that needs steering, run as an advisor (single agent, no fan-out). If it
is a splittable batch of similar items (N files, N records, N pages) — especially
one long enough to risk a cap or interruption — run as an orchestrator: fan
out a bounded worker per item on a cheap tier while you keep the quality gate, and
make the run resumable with the checkpoint from
references/resumable-orchestration.md (per-item state file, idempotent side
effects, retry-then-dead-letter — so a kill at item 300 of 500 resumes instead of
restarting or duplicating). Say which shape you picked and why in one line the
user can see — it's a stated decision, never a hidden one.
<!-- concern:delegation-discipline -->This skill's mandated dispatches are the ceiling, not the floor — run the
dispatches it names, and do not add discretionary subagents on top (no extra
verification or review dispatches, no splitting one modest task across
parallel workers); see references/delegation-discipline.md.
Exception — trivial changes: If the plan truly describes a 1-2 step direct change (typo fix, single-file tweak, obvious rename), skip the CE workflow and implement it directly. The CE workflow has real setup overhead; don't pay it for five-minute changes.
Common misreads
- "I don't need a plan / I'll skip the methodology and just code it" → no plan means no shared understanding of what "done" means, and the methodology handles branch setup, clarification gates, and quality checks that are easy to forget solo. Run
/planfirst; skip the methodology only for genuinely trivial changes. - "I'll adjust the plan as I go" → adjustments are fine — but update the plan file. An executed plan that doesn't match the written plan is worse than no plan at all.
- "I'll skip
/learn— this was routine" → "routine" work that needed a plan and an implementation skill is, by definition, not trivial. Capture what you learned. - "The build passes / I changed the rendering code, so the page is fine" → a green build proves it compiles, not that the button does the thing, and code you believe renders correctly is not code you've watched work. The Browser QA Gate (Step 2.6) means driving the real flow in
/soloship:browse. - "I can't test that flow — it needs a login / paid account / specific data" → that's an unmet gate, not an exemption. Use a test account or seeded fixture; if none exists, ask the user for one. An untested authenticated flow is not done.
- "It's done, I'll just note the QA is pending" → "done with QA pending" is not done. Nothing ships until the affected flows were observed working and any fixes were re-verified.
Step 2.5: Finishing Behavior Override (Soloship)
The CE methodology below ends Phase 4 ("Ship It") with git push -u origin <branch> followed by gh pr create. Soloship overrides this final step: do not create a PR automatically. Soloship is a solo-developer tool — there's no reviewer waiting on GitHub, and the PR step is pure latency between "done" and "live." The default finishing behavior is a local merge into the base branch, then push the base branch.
When you reach CE's Phase 4 step 3 ("Create Pull Request"), run the shared local merge sequence in references/merge-sequence.md instead of gh pr create. It is the single definition of the merge flow: integrate origin/<base> in your worktree, verify the integrated state there (Step 2.6's QA evidence counts, if nothing changed since), then merge in a throwaway detached worktree and push — the main checkout is never entered and no test command runs in it. The remote's push rejection is the concurrency arbiter: rejected push = another session's merge landed first; fetch, integrate, re-verify, push again.
Report the merge target, the commit hash that's now on the base branch, and confirmation that the feature branch and worktree were cleaned up (merge-sequence Step 4).
Merge conflicts: stop immediately, report the conflicting files, ask the user how to proceed. Do not auto-resolve.
Skip the override and run the original PR flow only if the user explicitly asked for a PR earlier in the conversation ("open a PR for this," "push it up for review," etc.). Inferring "the work is done, PR is next" does not count as explicit. When opt-in is explicit, run CE's original Phase 4 step 3 (git push -u origin HEAD + gh pr create).
If the user later wants a PR for an already-merged change, they can run it manually from the base branch, or use /soloship:finish Option 2 on a new branch.
Step 2.6: QA Gate (Soloship — required before "done")
This step implements the auto-loaded
browser-qa-gateandqa-plan-in-plansrules. The rules are the always-on source of truth; this step is where/implementenforces them.
Execute the plan's QA Plan first. Plans produced by /soloship:plan carry a
## QA Plan section — a table of every touched surface and the verification
method matched to its work type (browser QA for UI, real requests for APIs, real
command runs for CLIs, pre/post data checks for migrations, dry-runs for
skill/prompt changes, …). Execute every row of that table and capture the
evidence it names. If the plan predates this contract and has no QA Plan section,
derive one now from the diff (one row per touched surface, method per the QA
method table in /soloship:plan) and execute it. Browser QA remains mandatory
for any browser-reachable surface regardless of what the plan says.
No plan is finished until the change has been exercised in a real browser and any issues found have been fixed and re-verified. This gate runs AFTER implementation and the quality checks, and BEFORE the finishing/merge step (Step 2.5 / CE Phase 4). "Tests pass" and "build succeeds" are necessary but not sufficient — they do not prove the actual user-facing behavior works. Only driving the real UI does.
This is a hard gate. Passing it requires observed evidence, not assertion. "It should work," "the build is green so the page is fine," or "I changed the code that renders it" do NOT satisfy this gate — only watching the real flow happen does. This is verification-before-completion applied to the user-facing surface.
<!-- concern:verification-sufficiency -->This gate's named evidence, once produced for the current state, is sufficient —
stacking further passes or reviewer dispatches on top is scope creep, not rigor.
A changed state (post-fix, post-edit) still requires fresh evidence; see
references/verification-sufficiency.md. Each iteration of the
fix-and-re-verify loop below verifies a new state and remains mandatory.
What "browser QA" means here
Use /soloship:browse (Soloship's headless browser) to drive the actual flows the change touches, end to end, on the running app (local dev server or deployed preview). Browser selection follows the browser-qa-gate rule: isolated browser first (/soloship:browse, then a managed Chrome such as Chrome DevTools MCP), then the user's real browser only when a login or existing session is required — and "the browser is in use by another session" means check the claim's liveness and fall down that list, never give up:
- Identify the affected surface. From the diff, list every page, route, component, and user flow this change can reach. That list is what must be exercised — not just the one page you were thinking about.
- Exercise the real flow, not just page load. Click through the happy path and the key states the change introduces or affects: empty state, error state, loading, validation failures, the specific interaction you built. Loading a page without interacting with it is not QA.
- Use test accounts when a flow needs auth or specific state. If a flow requires being logged in, having a particular role, an existing record, a paid plan, etc., reach it as a real logged-in user:
- Look for a documented test account at
docs/testing/test-accounts.md. If it exists, use the account it names as the default (read its credentials from the gitignored secrets file it points to). Use a different account only if the task specifically calls for one. - If none is documented and the flow needs a login, STOP and ask the user: "This project has no documented test account and this flow needs a login. Want me to create a test account and document it so QA always uses it from now on (unless a specific account is needed)?"
- If yes: create one the cheapest reliable way — the app's own signup via
/soloship:browse, or a seed/admin script. If it can't be self-served (manual provisioning / external IdP), ask the user to provision one and hand you the credentials. Then document it indocs/testing/test-accounts.mdbuilt to the test-account standard (references/qa-test-accounts.md): one account per role, plus-alias emails routed to one QA inbox (so email flows are verified by reading that inbox), a dedicated QA tenant, secrets in a gitignored file (.ai/test-credentials.json— never commit credentials; non-production, disposable only), and an idempotent provision/reset procedure. From then on, that documented default account is what QA uses unless the task names a specific one. - If no: the authenticated flow is untested — say so plainly and do not call the work done. "Couldn't test because it needs login" is an unmet gate, not an exemption.
- If yes: create one the cheapest reliable way — the app's own signup via
- Look for a documented test account at
- Capture evidence. Screenshots (before/after where relevant) and the observed result of each flow. The evidence is what proves the gate was met.
The fix-and-re-verify loop (applies to EVERY QA Plan row, not just browser QA)
If executing ANY QA Plan row surfaces ANY issue — a visual break, broken interaction, console error, wrong behavior, a failing request, wrong CLI output, a bad migration result, a regression on an adjacent flow:
- Fix it.
- Re-execute that QA row — observe the fix actually working. A fix is not "done" because the code changed; it's done when the re-run shows the correct behavior. For browser rows that means re-driving the flow; for an API row, re-sending the requests; for a CLI row, re-running the command; for a migration row, re-checking the data.
- Re-check adjacent rows the fix could have touched — a fix that breaks a neighboring surface has not fixed anything.
- Repeat until every row of the QA Plan passes clean. Do not stop at "mostly passing," do not downgrade a failing row to a known issue, do not defer a failure to a follow-up task.
The loop has exactly two exits:
- Every QA Plan row passes with evidence — proceed to the finishing/merge step.
- A failure is genuinely unfixable right now (external service down, needs the user's product decision, blocked on credentials). Then STOP, report the work as NOT done with the failing row and why, and ask the user. Never silently proceed, never call it done with a failing row.
"Ran out of loop iterations" is not an exit. If you notice the same fix failing repeatedly, that's the signal to run /soloship:debug (find the root cause) rather than re-patching — then resume the loop.
QA teardown (both exits, before reporting)
The moment QA reaches an exit — pass or blocked — release the browser surfaces you held (per browser-qa-gate): close every Claude in Chrome tab you created (tabs_close_mcp), release any 1Password credential grants (release_credentials), close Chrome DevTools MCP pages and built-in-browser pages you opened, then release your browser claim (the Stop-hook teardown reminder prints the exact rm command; run it — otherwise the claim holds until session end). Leave the /soloship:browse daemon running — its logins are shared state by design. A QA session that keeps holding the user's browser after finishing is exactly why the next session finds it "busy." Only you can close your tabs — no hook can.
The only valid exemption
If the change genuinely has no browser-reachable surface — a pure CLI change, an internal script, a config/infra-only change, a data migration with no UI effect — state that explicitly with the reason ("No browser QA: this change only touches the build script; nothing user-facing renders differently"), and instead execute the plan's QA Plan rows for those surfaces (run the CLI and show the output, hit the endpoint and show the response, query the data and show the row). The exemption is "there is nothing in a browser to test," never "browser testing is inconvenient" or "I'm confident" — and it exempts only the browser method, never the QA Plan itself. When in doubt, test it in the browser.
Step 3: After Implementation
When implementation is complete:
- If the work was non-trivial, suggest: "Run
/learnto capture what you learned." - Do not start a shipping skill. If the user asked to ship, use
/shipfastfor a production hotfix or/shipthoroughfor a thorough production go-live. Otherwise stop.
Verification
Implementation is not complete until ALL of these are true:
- Plan file was read and understood before any code was written
- Pre-execution state verification ran (Step 1.5) and any deltas are documented in the phase handoff under "Plan-vs-reality adjustments documented:" (empty if none — empty signals verification ran)
- All tasks in the plan are addressed (completed or explicitly deferred with reason)
- Tests pass (
npm testor equivalent — show the output) - Build succeeds (
npm run buildor equivalent — show the output) - No unrelated changes introduced (diff stays within plan scope)
- QA Gate passed (Step 2.6) — every row of the plan's QA Plan was executed with its evidence captured, AND every affected user-facing flow was exercised in a real browser via
/soloship:browse(with a test account where auth/state was needed), issues found were fixed AND re-verified by re-running the flow, with evidence (screenshots/observed results) captured. OR an explicit "no browser-reachable surface" exemption was stated with its reason and the QA Plan rows for those surfaces executed instead. Never satisfied by "tests pass" or "should work."
Implementation Methodology
<!-- Vendored from compound-engineering v2.34.0 (Kieran Klaassen). See skills/vendored/ce/LICENSE. -->Work Plan Execution Command
Execute a work plan efficiently while maintaining quality and finishing features.
Introduction
This command takes a work document (plan, specification, or todo file) and executes it systematically. The focus is on shipping complete features by understanding requirements quickly, following existing patterns, and maintaining quality throughout.
Input Document
<input_document> #$ARGUMENTS </input_document>
Execution Workflow
Phase 1: Quick Start
Read Plan and Clarify
- Read the work document completely
- Review any references or links provided in the plan
- If anything is unclear or ambiguous, ask clarifying questions now
- Get user approval to proceed
- Do not skip this - better to ask questions now than build the wrong thing
Setup Environment
First, check the current branch:
current_branch=$(git branch --show-current) default_branch=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@') # Fallback if remote HEAD isn't set if [ -z "$default_branch" ]; then default_branch=$(git rev-parse --verify origin/main >/dev/null 2>&1 && echo "main" || echo "master") fiIf already on a feature branch (not the default branch):
- Ask: "Continue working on
[current_branch], or create a new branch?" - If continuing, proceed to step 3
- If creating new, follow Option A or B below
If on the default branch, choose how to proceed:
Option A: Create a new branch
git pull origin [default_branch] git checkout -b feature-branch-nameUse a meaningful name based on the work (e.g.,
feat/user-authentication,fix/email-validation).Option B: Use a worktree (recommended for parallel development)
skill: git-worktree # The skill will create a new branch from the default branch in an isolated worktreeOption C: Continue on the default branch
- Requires explicit user confirmation
- Only proceed after user explicitly says "yes, commit to [default_branch]"
- Never commit directly to the default branch without explicit permission
Recommendation: Use worktree if:
- You want to work on multiple features simultaneously
- You want to keep the default branch clean while experimenting
- You plan to switch between branches frequently
- Ask: "Continue working on
- Create Todo List
- Use TodoWrite to break plan into actionable tasks
- Include dependencies between tasks
- Prioritize based on what needs to be done first
- Include testing and quality check tasks
- Keep tasks specific and completable
Phase 2: Execute
Task Execution Loop
For each task in priority order:
while (tasks remain): - Mark task as in_progress in TodoWrite - Read any referenced files from the plan - Look for similar patterns in codebase - Implement following existing conventions - Write tests for new functionality - Run tests after changes - Mark task as completed in TodoWrite - Mark off the corresponding checkbox in the plan file ([ ] → [x]) - Evaluate for incremental commit (see below)IMPORTANT: Always update the original plan document by checking off completed items. Use the Edit tool to change
- [ ]to- [x]for each task you finish. This keeps the plan as a living document showing progress and ensures no checkboxes are left unchecked.Phase milestones (Soloship): whenever a whole phase of the plan completes, also update the plan frontmatter:
progress: "<done>/<total>"andupdated: <today>. The status board reads these instead of digging through git logs.Incremental Commits
After completing each task, evaluate whether to create an incremental commit:
Commit when... Don't commit when... Logical unit complete (model, service, component) Small part of a larger unit Tests pass + meaningful progress Tests failing About to switch contexts (backend → frontend) Purely scaffolding with no behavior About to attempt risky/uncertain changes Would need a "WIP" commit message Heuristic: "Can I write a commit message that describes a complete, valuable change? If yes, commit. If the message would be 'WIP' or 'partial X', wait."
Scope Ledger Gate (Soloship — required before this commit): Before the commit that closes a task, invoke the
verification-before-completionskill and emit its Scope Ledger (shipped / remaining / out-of-scope) and Touch Map (git grepthe changed value/name across the whole repo; one row per hit, each resolved with evidence). Do not rungit commituntil the ledger is emitted and every Touch-Map row is resolved. If REMAINING is non-empty, do not call the task "done" — state exactly what shipped and what remains. This is the in-run catch for stale-state bugs and premature phase-done claims; it has to happen before the commit because the user does not interrupt mid-run.Commit workflow:
# 1. Verify tests pass (use project's test command) # Examples: bin/rails test, npm test, pytest, go test, etc. # 1b. Scope Ledger Gate emitted and all Touch-Map rows resolved (see above) # 2. Stage only files related to this logical unit (not `git add .`) git add <files related to this logical unit> # 3. Commit with conventional message git commit -m "feat(scope): description of this unit"Handling merge conflicts: If conflicts arise during rebasing or merging, resolve them immediately. Incremental commits make conflict resolution easier since each commit is small and focused.
Note: Incremental commits use clean conventional messages without attribution footers. The final Phase 4 commit/PR includes the full attribution.
Follow Existing Patterns
- The plan should reference similar code - read those files first
- Match naming conventions exactly
- Reuse existing components — this is checkable, not aspirational:
<!-- concern:component-reuse -->Ifdocs/architecture/COMPONENTS.mdexists, read it before creating or specifying UI components — reuse or extend an existing component on purpose match, cite what you found, and apply the rule of three (seereferences/component-inventory.md). - Follow project coding standards (see CLAUDE.md)
- When in doubt, grep for similar implementations
Test Continuously
- Run relevant tests after each significant change
- Don't wait until the end to test
- Fix failures immediately
- Add new tests for new functionality
Figma Design Sync (if applicable)
For UI work with Figma designs:
- Implement components following design specs
- Compare the result against the design iteratively (screenshot the running UI and diff it against the design spec); a general-purpose subagent can do this comparison pass
- Fix visual differences identified
- Repeat until implementation matches design
- Track Progress
- Keep TodoWrite updated as you complete tasks
- Note any blockers or unexpected discoveries
- Create new tasks if scope expands
- Keep user informed of major milestones
Phase 3: Quality Check
Run Core Quality Checks
Always run before submitting:
# Run full test suite (use project's test command) # Examples: bin/rails test, npm test, pytest, go test, etc. # Run linting (per CLAUDE.md) # Use linting-agent before pushing to originConsider Reviewer Subagents (Optional)
For complex, risky, or large changes, dispatch general-purpose review subagents using Soloship's shared rubrics (
references/code-review-axes.md,references/security-checklist.md,references/performance-checklist.md,references/testing-patterns.md), or run/soloship:reviewfor a full pass.Run configured agents in parallel with Task tool. Present findings and address critical issues.
- Final Validation
- All TodoWrite tasks marked completed
- All tests pass
- Linting passes
- Code follows existing patterns
- Figma designs match (if applicable)
- No console errors or warnings
- QA Gate passed (Step 2.6) — required. Every row of the plan's QA Plan executed with evidence, and every affected user-facing flow exercised in a real browser via
/soloship:browse(test account where needed), issues fixed and re-verified by re-running the flow, evidence captured. Or an explicit "no browser surface" exemption with the QA Plan rows for those surfaces executed instead. Do not enter Phase 4 (Ship It) until this passes — a green build is not QA.
- Prepare Operational Validation Plan (REQUIRED)
- Add a
## Post-Deploy Monitoring & Validationsection to the PR description for every change. - Include concrete:
- Log queries/search terms
- Metrics or dashboards to watch
- Expected healthy signals
- Failure signals and rollback/mitigation trigger
- Validation window and owner
- If there is truly no production/runtime impact, still include the section with:
No additional operational monitoring requiredand a one-line reason.
- Add a
Phase 4: Ship It
Create Commit
Scope Ledger Gate (Soloship — required before this final commit): Invoke
verification-before-completionand emit the Scope Ledger + Touch Map for the whole change set, not just the last file touched.git grepevery value/name introduced or changed across the repo; resolve every hit with evidence. Do not commit until the ledger is emitted and every row is resolved. If anything is REMAINING, the report must say so — never claim the plan is fully shipped when it is not.git add . git status # Review what's being committed git diff --staged # Check the changes # Commit with conventional format git commit -m "$(cat <<'EOF' feat(scope): description of what and why Brief explanation if needed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> EOF )"Capture Screenshots for UI Changes (for any UI work)
For design changes, new views, or UI modifications, capture before/after screenshots so the change is reviewable by eye.
Step 1: Start the dev server (if not running) — use the project's dev command (e.g.
npm run dev), run in the background.Step 2: Capture screenshots with
/soloship:browse— navigate to the route and take a screenshot./soloship:browseis Soloship's headless browser (open a URL, interact, screenshot, diff before/after).Keep the screenshots local (attach them when you show the result). There's no upload step — Soloship's default finish path is a local merge, not a PR, so screenshots are for the maintainer to eyeball, not to embed in a remote PR.
What to capture:
- New screens: Screenshot of the new UI
- Modified screens: Before AND after screenshots
- Design implementation: Screenshot showing Figma design match
IMPORTANT: Always include uploaded image URLs in PR description. This provides visual context for reviewers and documents the change.
Create Pull Request
git push -u origin feature-branch-name gh pr create --title "Feature: [Description]" --body "$(cat <<'EOF' ## Summary - What was built - Why it was needed - Key decisions made ## Testing - Tests added/modified - Manual testing performed ## Post-Deploy Monitoring & Validation - **What to monitor/search** - Logs: - Metrics/Dashboards: - **Validation checks (queries/commands)** - `command or query here` - **Expected healthy behavior** - Expected signal(s) - **Failure signal(s) / rollback trigger** - Trigger + immediate action - **Validation window & owner** - Window: - Owner: - **If no operational impact** - `No additional operational monitoring required: <reason>` ## Before / After Screenshots | Before | After | |--------|-------| |  |  | ## Figma Design [Link if applicable] --- [](https://github.com/EveryInc/compound-engineering-plugin) 🤖 Generated with [Claude Code](https://claude.com/claude-code) EOF )"Update Plan Status — DO THIS BEFORE THE MERGE, NOT AFTER
This step used to live at the very end of this skill, and that position is precisely why it did not happen. By the time a long implementation reaches its final step, context is exhausted and the write gets dropped — leaving a plan that claims the work was never done. Write the status as part of the merge, not as a postscript to it. The
plan-mergegate will block the merge until you do.Update the plan's YAML frontmatter to the completed state and release the claim taken in Step 1.8:
status: done (legacy plans may say active/completed — write done) progress: "<total>/<total>" updated: <today>Remove the
claimed_byline (the work is no longer in flight), then clear the claim file:COORD="$(cd "$(git rev-parse --git-common-dir)" && pwd -P)/soloship" rm -f "$COORD/claims/<plan-filename>.json"Then clean up the artifacts this work consumed (the self-cleaning contracts from the
plan-artifact-lifecyclerule):# A handoff is consumed exactly once — delete the one that drove this work. git rm -q docs/handoffs/<file> # if the plan's frontmatter names a `handoff:` # A promoted draft is superseded by its plan — delete it. git rm -q docs/drafts/<file> # if the plan's frontmatter names a `promoted_from:`Stage these in the same commit as the status flip. Leaving them behind means the next agent has to guess which document is current.
- Notify User
- Summarize what was completed
- Link to PR
- Note any follow-up work needed
- Suggest next steps if applicable
Swarm Mode (Optional)
For complex plans with multiple independent workstreams, enable swarm mode for parallel execution with coordinated agents.
When to Use Swarm Mode
| Use Swarm Mode when... | Use Standard Mode when... |
| Plan has 5+ independent tasks | Plan is linear/sequential |
| Multiple specialists needed (review + test + implement) | Single-focus work |
| Want maximum parallelism | Simpler mental model preferred |
| Large feature with clear phases | Small feature or bug fix |
Enabling Swarm Mode
To trigger swarm execution, say:
"Make a Task list and launch an army of agent swarm subagents to build the plan"
Or explicitly request: "Use swarm mode for this work"
Swarm Workflow
When swarm mode is enabled, the workflow changes:
- Create Team
Teammate({ operation: "spawnTeam", team_name: "work-{timestamp}" }) - Create Task List with Dependencies
- Parse plan into TaskCreate items
- Set up blockedBy relationships for sequential dependencies
- Independent tasks have no blockers (can run in parallel)
- Spawn Specialized Teammates
Task({ team_name: "work-{timestamp}", name: "implementer", subagent_type: "general-purpose", prompt: "Claim implementation tasks, execute, mark complete", run_in_background: true }) Task({ team_name: "work-{timestamp}", name: "tester", subagent_type: "general-purpose", prompt: "Claim testing tasks, run tests, mark complete", run_in_background: true }) - Coordinate and Monitor
- Team lead monitors task completion
- Spawn additional workers as phases unblock
- Handle plan approval if required
- Cleanup
Teammate({ operation: "requestShutdown", target_agent_id: "implementer" }) Teammate({ operation: "requestShutdown", target_agent_id: "tester" }) Teammate({ operation: "cleanup" })
See the orchestrating-swarms skill for detailed swarm patterns and best practices.
Key Principles
Start Fast, Execute Faster
- Get clarification once at the start, then execute
- Don't wait for perfect understanding - ask questions and move
- The goal is to finish the feature, not create perfect process
The Plan is Your Guide
- Work documents should reference similar code and patterns
- Load those references and follow them
- Don't reinvent - match what exists
Test As You Go
- Run tests after each change, not at the end
- Fix failures immediately
- Continuous testing prevents big surprises
Quality is Built In
- Follow existing patterns
- Write tests for new code
- Run linting before pushing
- Use reviewer agents for complex/risky changes only
Ship Complete Features
- Mark all tasks completed before moving on
- Don't leave features 80% done
- A finished feature that ships beats a perfect feature that doesn't
Quality Checklist
Before finishing (merge/ship), verify:
- All clarifying questions asked and answered
- All TodoWrite tasks marked completed
- Tests pass (run project's test command)
- Linting passes (use linting-agent)
- Code follows existing patterns
- Figma designs match implementation (if applicable)
- QA Gate passed (Step 2.6) — every row of the plan's QA Plan executed with evidence, and every affected user-facing flow exercised in a real browser via
/soloship:browse(test account where needed), issues fixed AND re-verified, evidence captured — or an explicit "no browser surface" exemption with the QA Plan rows for those surfaces executed instead. This is mandatory; a green build is not QA. - Before/after screenshots captured (for UI changes) — kept local for the maintainer to eyeball
- Commit messages follow conventional format
When to Use Reviewer Agents
Don't use by default. Use reviewer agents only when:
- Large refactor affecting many files (10+)
- Security-sensitive changes (authentication, permissions, data access)
- Performance-critical code paths
- Complex algorithms or business logic
- User explicitly requests thorough review
For most features: tests + linting + following patterns is sufficient.
Common Pitfalls to Avoid
- Analysis paralysis - Don't overthink, read the plan and execute
- Skipping clarifying questions - Ask now, not after building wrong thing
- Ignoring plan references - The plan has links for a reason
- Testing at the end - Test continuously or suffer later
- Forgetting TodoWrite - Track progress or lose track of what's done
- 80% done syndrome - Finish the feature, don't move on early
- Over-reviewing simple changes - Save reviewer agents for complex work
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

