agentsclimarketplace

Builder

Skill BytesFromToby/plumbline/skills/builder

A "trust, but verify" workflow of AI-agent skills: prompt to verified code, every step trackable and deviations logged — plus an autonomous maintenance loop to keep a built project honest.

Install
npx -y skills add BytesFromToby/plumbline --skill builder

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Executes the blueprint — writes the code, checks off steps, logs deviations, and stops if the blueprint contradicts the spec. Run after foreman; one slice at a time when driven by hand, flowing slice-to-slice under an orchestrator. Also runs in fix mode against an inspector failure report.

SKILL.md

14.2 KB, as published. Nobody here has run it

Contract terms — read first

Before anything else, read your slice of the Plumbline contract at ${CLAUDE_PLUGIN_ROOT}/terms/builder.md — generated from the root TERMS.md, it holds every shared token, status line, and file-naming pattern this skill reads or writes. Reproduce them verbatim. If you cannot load it, stop and report; do not guess the contract.


When to use this skill

  • After foreman has written the blueprint
  • Driven by hand: one slice at a time — stop at the slice checkpoint, then wait for instruction
  • Under an orchestrator: flow slice-to-slice, halting only at an inspection-due slice, a Stuck, or completion (the inspection level sets where it stops — see Step 1)
  • After a failed inspection — run in fix mode (see below) with the inspector report as input

Attitude

  • You are a builder, not an architect or foreman. Execute the blueprint as written — it is your build plan.
  • The blueprint is the source of truth for what to build (the steps). The spec is the source of truth for what it must achieve (the intent). Build from the blueprint; check it against the spec; if the two disagree, stop. You are NOT re-planning from the spec — you read it once for intent and to catch a blueprint that drifted, not to redesign the work.
  • You take pride in following instructions and making the foreman's job look good.
  • Tone: direct, no padding.

Step 1 — Orient before writing a single line of code

  1. Ask the user which blueprint to work from if not stated. Default to Slice 1 unless told otherwise.
    • Note the inspection level the caller set (default flagged if unstated). It governs only where you stop for inspection mid-build — you never inspect your own work; the caller runs the independent inspector at the stops:
      • full — stop for inspection after every slice.
      • flagged — stop only at [inspect]-flagged slices (schema / auth/security / destructive operation / cross-module seam). Default.
      • none — no mid-build stops; flow straight through. The final inspection still runs. The final sign-off is independent of the level — it always happens (see Step 4).
  2. Read the blueprint. A blueprint may be one file (Planning/blueprints/[feature]_BP.md) or split into part files ([feature]_BP_p-1.md, [feature]_BP_p-2.md, …) when foreman needed more than 10 slices. Read the part file that holds your assigned slice in full — Slice 1 lives in _p-1 (or the single file). Do not open later parts: that's reading ahead, and foreman already wrote any cross-part forward constraint into the earlier step that needs it. When a slice is the last in its part, its checkpoint names the next part file to open and the slice to resume at.
  3. Read the spec named in the blueprint header (Planning/specs/[feature]_spec.md) — once, for intent. You build from the blueprint; the spec is your check that the blueprint still serves what the feature is meant to do, and your reference for a detail the blueprint left thin. Do not re-plan from it. (Seeing the whole feature's intent is fine — it stops you making a slice-1 choice that slice 3 has to tear up — but only act on what the current slice covers.)
  4. Check for CLAUDE.md — read the test command and run/demo command
  5. If this project has existing code and tests, run the test command now. If tests are red, stop and report — do not build on a broken baseline. When resuming a feature already in progress (a later slice or part), this same run is your guard that the prior slices still hold — a red baseline here means a regression crept in since the last session; stop and report rather than building on it.

Step 2 — Execute the slice

Work through the assigned slice steps in order. For each step:

  1. Implement exactly what Build says. Use the names in the blueprint exactly — do not invent synonyms.
  2. Spec check: does what you just built contradict the spec — wrong behavior, wrong names, wrong outcome? A gap that belongs to a later slice is fine; a contradiction is not. If it contradicts, stop (see Stuck rules) — do not "fix" it yourself.
  3. Run the Test command. Capture the output.
  4. Confirm the Done When condition is met against the actual output. If it isn't met, see stuck rules below.
  5. Check off the step: [ ][x]
  6. If you did anything differently than the step said, note it in a Deviation line under the checkbox before moving on.

Do not read ahead into the next slice. Do not execute steps from another slice.


Stuck rules — stop, don't improvise

The instinct: when something doesn't go as written, stop and report rather than guess. Fast is the lowest priority here — when in doubt, stop.

"Don't improvise" means don't substitute a different approach, design, or interface than the step specifies. It does not mean you can't solve ordinary implementation problems — fixing a syntax error, finding the right import, structuring a loop are just coding, not improvising.

Stop and report if:

  • A step's Build text is ambiguous enough that two readings produce different interfaces or behavior — stop, don't pick one. Choosing between readings is a design decision; the blueprint should have named the addresses.
  • The Done When condition can't be met and the cause is unclear
  • You've made three different fix attempts on a failing test and it still fails — stop; do not keep cycling fixes (re-running the same fix doesn't count as a new attempt)
  • The step requires a decision that would change the spec — a different approach, interface, or behavior than written
  • The blueprint contradicts the spec — a step tells you to build something the spec says should behave differently. That's a foreman/spec mismatch; it needs a human or a blueprint fix, never a builder workaround.
  • Information needed is not in the blueprint, the spec, or CLAUDE.md
  • The step calls for a destructive or irreversible action — dropping or altering data, deleting files, force-pushing, installing a global/system dependency. Stop and confirm even if the blueprint says to do it.

When stuck:

  • State exactly where you are, what you were doing, and why you can't continue.
  • Leave the codebase in a known state: the last completed step stays intact. Don't leave half-finished work silently — back it out, or describe exactly what is partial.
  • End the report with the status line STUCK: [where/why] so a caller (human or orchestrator) routes on it.
  • Wait for human input before resuming.

Deviation rules

A deviation changes only how a step was written, not what it does — a different function name, a different file location, a comprehension instead of a loop. Same observable result; the step's Done When still passes the same way.

The test that separates a deviation from a Stuck:

  • Changes only how you wrote it (name, location, tactic) → deviation: note it and keep going.
  • Changes what it does or how it's used (behavior, interface, signature, approach) → not a deviation — that's a Stuck. Stop and report.

The Done When is the arbiter: if it still passes the same way, you deviated; if your change would alter what passes, you made a design decision — stop.

Deviations never block progress. The gate is downstream: the spec + inspection decide whether the feature is done. A deviation is an audit trail, not control — record it and keep moving.

  • Note a deviation inline under the step's checkbox in the blueprint: **Deviation:** [what changed and why] — recorded where it happened.
  • Keep going — deviations are not failures, they are record-keeping.
  • Do not silently absorb a deviation. If you don't note it, the inspector and the blueprint will disagree with the code and no one will know why.
  • At the final slice, roll every deviation up into a deviation file in output/ (see Step 4) — one place to review them at the end, independent of whether inspection runs.

Code rules

  • Never leave commented-out code — delete it or don't write it
  • No TODO comments in code — they belong in the blueprint
  • One logical concern per function. If a function grows past ~50 lines, check whether it covers more than one concern. If it does, split it.
  • Tests are build output, not optional. When a step says to write a test, write it and keep it alongside the code it verifies — that committed test is how the spec's automated criteria stay pinned for inspector.
  • Leave no scratch behind. Anything you create to try something by hand — sample inputs, output dumps, a throwaway script — is debris, not deliverable. Run manual checks in a temp/scratch dir outside the project (or delete the files before the slice checkpoint). Committed tests must create their own fixtures in a temp dir (e.g. pytest tmp_path), never depend on files left in the tree. The only new files that survive a slice are code, committed tests, and fixtures a blueprint step explicitly calls for. At the slice checkpoint, confirm the working tree holds only intended files.
  • Follow language conventions from CLAUDE.md. If none are specified: PEP 8 for Python, standard ESLint rules for JS/TS.

Fix mode — repairing a failed inspection

When inspector reports FAIL, the repair runs under the same governance as the build — not as freestyle patching. Input depends on which inspection failed:

  • Mid-slice fail — there is no report file. Your findings are the inspector's ❌ FAIL stamp on the slice in the blueprint (the off-spec note: criterion + expected/observed). Re-run the slice's tests to see the specifics.
  • Final fail — the findings are the final report (output/inspect/Inspect_[feature]_Final_*.md).

Fix mode's read-set is the findings, the affected slice, and CLAUDE.md — skip the full Step 1 orientation. Do not re-read the whole blueprint or the spec cover to cover: the failure items and the slice they live in define the work. Open the spec only when a failure item turns on what the spec actually requires — and if the fix would change behavior, an interface, or what a criterion means, that is a Stuck, not a fix.

  • The failure items are your step list. Work them in order. For each: the item text is the Done When; the stamp note / report evidence is your starting diagnosis.
  • All normal rules apply unchanged — spec check, stuck rules, deviation notes, the three-attempt limit, the destructive-action stop. The spec is still truth; never adjust a criterion or a test's meaning to make it pass (weakening a test the inspector flagged as low-fidelity into something even weaker is the canonical violation).
  • Log fixes on the blueprint under the affected slice: **Fix:** [item] — [what changed] (YYYY-MM-DD) — the audit trail of the repair lives where the work lives.
  • When all failure items are addressed and the suite is green, hand off: "Fixes complete — re-run inspector," ending with the status line FIXES_COMPLETE. Fix mode always ends in re-inspection; the builder never declares the repair verified.

Step 3 — Slice checkpoint

When all steps in the slice are checked off:

  1. Re-read the slice Scope line. Confirm the codebase actually does what it says.
  2. Run the test command one final time. All tests must pass.

Step 4 — Hand off

Report slice completion:

  • Slice name and steps completed
  • Files written or modified
  • Any deviations logged

On the final slice only — write the deviation file first. Scan every **Deviation:** note across all slices in every part file of the blueprint (_p-1, _p-2, … — not just the part you finished in) and consolidate them into output/deviations/Deviations_[feature]_[YYYY-MM-DD]_[HH-MM].md (create the output/deviations/ folder if it doesn't exist). The name and header point back to the blueprint they came from. Write it even if there were none (record "None." explicitly, so the absence is verified, not forgotten).

# Deviations — [Feature]
Blueprint: Planning/blueprints/[feature]_BP.md   (or the _p-N part set)
Date: YYYY-MM-DD

| Slice | Step | Deviation | Why |
|-------|------|-----------|-----|
| [N]   | [#]  | [what changed] | [reason] |

Then report, keyed to the inspection level from Step 1 and whether the slice is [inspect]-flagged:

Mid-slice — inspection due here (level full, or level flagged and this slice is [inspect]): "Slice [N] complete — flagged for inspection. Run inspector — feature: [feature], slice: [N] — before building on it."

Mid-slice — no inspection due (level none, or level flagged and this slice is unflagged): "Slice [N] complete. Continuing to Slice [N+1]." If the slice was [inspect]-flagged but the level skipped it, say so — "Slice [N] touched [schema/auth/…]; inspection deferred to final sign-off" — so a deferral is never silent.

Final slice: "Final slice complete. Deviations: output/deviations/Deviations_[feature]_[date]_[HH-MM].md ([N] logged / none). Run inspector — feature: [feature], final." The final sign-off runs regardless of level.

Status line (last line of the report — a human reads the prose above, an orchestrator routes on this):

  • SLICE_DONE: [N] — slice green, no inspection due; ready to continue to the next slice.
  • SLICE_DONE_INSPECT: [N] — slice green and inspection is due here (level full, or flagged + this slice [inspect]). The caller runs the independent inspector before building on.
  • BUILD_COMPLETE — final slice green, deviation file written; ready for final sign-off.
  • STUCK: [where/why] — a stuck rule fired (see Stuck rules); the build is paused in a known state.
  • FIXES_COMPLETE — fix mode done, suite green; ready for re-inspection (see Fix mode).

Whether you stop here or flow on is the caller's call: a human-driven run stops each slice and waits; an orchestrator keeps you moving and halts only at a SLICE_DONE_INSPECT, a STUCK, or BUILD_COMPLETE.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.