project-build
Skill0 starsChanged 21 days agoMITView on GitHub
Execute the current project-time plan step by step, tests first, verified with real output, recording memory, marking progress on disk and committing each step, stopping at milestone gates, resuming cleanly after a context reset, and running parallel steps in git worktrees when the plan allows. Use when /project-time hands off to it, or the user wants to continue building, resume after a reset, run the next step, or run a gate.
In this repository4 other files it gives its agents.
- project-planSkill
- project-specSkill
- project-timeSkill
- project-wrapSkill
The file
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 5 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 10
Follow the conventions in the project-time block of AGENTS.md.
- Very specific: line 16
Read plan/INDEX.md and the three memory indexes (general, project, cycle) with their pinned items.
- Very specific: line 41
Verify: Run the step's verify command and quote its last few lines verbatim in your message, in a code block: a tool call alone isn't …
- Distinctive: line 45
When pausing mid-step, or after a milestone inside a long step, update Last stop with one concrete line: what's done, what's next.
- Distinctive: line 51
Run the full test command from the INDEX header and quote its summary lines verbatim.
- Distinctive: line 52
Check each acceptance criterion this milestone covers against the running code, with an input that would fail if the criterion were broken.
- Very specific: line 56
Wait for the user's go-ahead.
- Very specific: line 62
When the INDEX mode is parallel where possible and the next steps are marked ∥ with all their needs done, orchestrate instead of doing them …
- Very specific: line 66
When all have reported, merge each finished branch in step order.
- Distinctive: line 67
Run the full test command on the merged result.
- Distinctive: line 69
Remove each merged worktree and its branch (git worktree remove, git branch -d).
- Very specific: line 96
Verify keeps failing: after three honest attempts, each on a different hypothesis: mark the step [!] → <issue id>, write an issue entry …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Project Build
Works through docs/current/plan/ one step at a time. The disk is the source of truth: progress is written before and after every step, so a reset at any moment loses at most the conversation.
Follow the conventions in the project-time block of AGENTS.md. If the plan is missing, invoke project-time.
Precondition. The plan should be Status: approved. If it isn't, say so and ask. If the user insists, write a decision entry recording that Gate 1 was skipped and why, and set the plan to Status: approved.
1. Resume
Read plan/INDEX.md and the three memory indexes (general, project, cycle) with their pinned items. Compare the spec's Branch: with the current branch; if they differ, invoke project-time. Then reconcile three sources:
- the INDEX:
Current:, the marks, Last stop; - git log:
git log --oneline --grep '^<slug> step [0-9]'; - the working tree:
git status --porcelain.
| Finding | Do |
| All three agree | Continue |
A single step [~], no parallel run in progress: INDEX says [~] NN but a <slug> step NN commit exists | The reset hit between commit and INDEX update. Mark NN [x], advance Current:, commit the INDEX as <slug>: progress fixed after reset, continue |
Several steps [~] at once, or agent worktrees in git worktree list other than those Last stop names as kept | An interrupted parallel run. For each step, check whether its branch is merged; rebuild its memory candidates from the diff and commit message before marking [x]. Never mark [x] without recording memory |
Current: gate M<n> (pending) | The gate was interrupted or awaits the go-ahead. Run section 4 from the start |
| Last stop starts with "amending spec" or "updating plan" | Invoke project-spec (amend mode) or project-plan (update mode) to finish it |
| Uncommitted changes | Mid-step work. Read Last stop, run the step's tests to see where it stands, continue the step. Never discard uncommitted work |
| Anything else that doesn't line up | Stop. Show the mismatch and ask |
2. Run length
Run step after step through the current milestone and stop at its gate, or earlier on a blocker. If the user asked for one step, or to stop after a given step, do that instead. The user can ask for an extra gate at any point; run section 4 there.
3. Each step
- Start. Mark the step
[~]and setCurrent: step NN (in progress). Last stop: starting.Save it before touching code. - Read the step file and the memory area files it relates to.
- Tests first. Write the tests the step lists. Run them and see them fail for the expected reason. Implement until they pass. Refactor with the tests green. A step with a declared exception skips this and relies on its verify command. If a listed test passes before any implementation, don't skip past it: make sure it can fail (stage the implementation, or briefly break the code path) and record a
discoveryentry saying which tests were born green and why. - Verify. Run the step's verify command and quote its last few lines verbatim in your message, in a code block: a tool call alone isn't showing it. Then run each non-
manual:line under Done when. Never report "should pass". - Memory checkpoint. Was anything decided, discovered, pivoted or pinned during this step, or did an issue come up? Write each as an entry. Then always tell the user in one line:
Memory: nothing new, orMemory: <id> (<type>) <gist>; .... - Finish. Mark
[x], advanceCurrent:to the next step in INDEX order whose needs are done, or togate M<n> (pending)if this was the milestone's last step, or towrapif it was the plan's last step, and commit code, plan and memory together as<slug> step NN: <name> (<AC ids>).
When pausing mid-step, or after a milestone inside a long step, update Last stop with one concrete line: what's done, what's next.
4. Gate
At the end of each milestone except the last one. Call it the Milestone N gate.
- Run the full test command from the INDEX header and quote its summary lines verbatim.
- Check each acceptance criterion this milestone covers against the running code, with an input that would fail if the criterion were broken. Show the command and its output for each one, or name the test that covers it.
- List every
manual:item from the milestone's steps for the user to check. - Memory sweep. Anything decided or learned since the last gate that isn't recorded? An index getting long, or an area file past about 200 lines? Split it and update the index.
- Recap in a few bullets: what works now, deviations from the plan, memory entries added, the memory sweep result (even "nothing unrecorded"), open issues.
- Wait for the user's go-ahead. On approval, mark the milestone
✅ gate passed <YYYY-MM-DD>, advanceCurrent:to the next milestone's first step, and commit as<slug>: gate M<n> passed.
The last milestone has no gate here: when its last step is done, set Current: wrap and invoke project-wrap. Its final gate runs the same checks for the whole cycle.
5. Parallel mode
When the INDEX mode is parallel where possible and the next steps are marked ∥ with all their needs done, orchestrate instead of doing them yourself. If the user asked for sequential this time, or sub-agents with worktree isolation aren't available, run them one by one.
- Mark each step in the group
[~], setCurrent: steps NN, MM (parallel, in progress), and commit the INDEX as<slug>: start steps NN, MM (parallel). - Dispatch one sub-agent per step, each in its own git worktree (the Agent tool with worktree isolation), all in one message, with the prompt below.
- When all have reported, merge each finished branch in step order. Resolve a trivial conflict. For a non-trivial one, abort that merge, remove its worktree and branch, set the step back to
[ ]with a note in Last stop, and run it sequentially afterwards. - Run the full test command on the merged result.
- Record memory from each report's candidates, after checking they hold. Mark done steps
[x]and blocked ones[!]with an issue entry. Commit as<slug>: record steps NN, MM. - Remove each merged worktree and its branch (
git worktree remove,git branch -d). Keep a blocked step's worktree and name it in Last stop.
Sub-agent prompt:
You are implementing one step of a plan, alone, in your own git worktree.
<the full step file>
Context: <memory entries this step relates to>. Other steps running in parallel touch <their Files touched>; don't edit those files. Keep scratch files inside the worktree.
Rules:
- Do not create or modify anything under docs/. Report instead.
- Tests first: write the listed tests, run them and see them fail, implement until they pass, refactor. If the step declares an exception, rely on its verify command. If a listed test passes before any implementation, make sure it can fail and report it as a memory candidate.
- Run the verify command and keep its real output.
- Commit your work in this worktree as: <slug> step NN: <name> (<AC ids>)
Report exactly:
Status: done | blocked
Branch and commit: <branch> <sha>
Verify output: <last 30 lines>
Memory candidates: one per line, "<decision|discovery|issue> · <fact> · Why: <reason>"
Notes: anything that affects other steps6. When things go wrong
- Verify keeps failing after three honest attempts, each on a different hypothesis: mark the step
[!] → <issue id>, write anissueentry with what was tried and what was observed, stop and report. Suggest instrumenting the code (instrument-time) or systematic debugging rather than more guessing. - The spec is wrong, or the user changes their mind: invoke
project-specin amend mode. It updates the plan throughproject-planand comes back here. - The plan is wrong (a step too big, a missing dependency): invoke
project-planin update mode. - A pivot during a step: record it in memory before continuing, never after.
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.

