build
Use this skill during Phase 4 implementation whenever Claude is about to write or modify code. Validates the work item (requirement ID for new builds, issue ticket for fixes, signed CR for change requ
SKILL.mdskills/build/SKILL.md
GitHubBuild (Phase 4)
Implement from approved plans and specs with surgical edits and work-item traceability.
Prerequisite
.claude/sdlc/gates/design-<task-slug>.md must exist and be signed. (For fixes under the /fix --fast path, a compressed gate is acceptable — see commands/fix-fast.md.)
Step 1 — Validate the work item
Before any Edit/Write, confirm based on the plan's classification:
- New build → the code change must reference at least one
REQ-<n>ID from.claude/sdlc/requirements/<task-slug>.md. If none, halt and ask. - Fix → the change must reference an issue ticket. Detect the ticket system from
.claude/sdlc/env.json:- GitHub/GitLab/Bitbucket Issues → require an issue URL or number
- Jira/Linear (via MCP) → require an issue key
- No ticket system detected → require a local ticket file under
.claude/sdlc/tickets/usingtemplates/ticket.md
- Change request → the change must reference a CR with a sign-off artifact under
.claude/sdlc/sign-offs/CR-<n>.md. No sign-off → halt.
The work-item-validation.sh hook enforces this at the tool level.
Step 2 — Implement with surgical-edit discipline
Delegate the how of editing to the surgical-edit skill, which enforces:
- Smallest diff that satisfies the plan
- Only files in the plan's in-scope list
- Only functions in the plan's in-scope list (no adjacent-function edits)
- No speculative refactoring, renaming, or "while I'm here" cleanups
- Unrelated bugs →
.claude/sdlc/followups/<task-slug>.md, not fixed in this change
The diff-scope-check.sh and adjacent-function-detector.sh hooks enforce these post-write.
Step 3 — Validate against specs
After writing, run a conformance pass:
- Code shape matches the tech spec (API signatures, error modes, side effects)
- NFRs addressed (or explicitly deferred with justification)
- Security controls from the security architecture are in place for the modified surface
If the build touched a frontend surface, run the UX conformance checklist against the rendered UI (screenshots live under .claude/sdlc/test/ux/).
Step 4 — Unit tests for MODIFIED CODE ONLY
Extract the list of functions modified from git diff. For each modified function:
- Add or update its unit test(s) under
.claude/sdlc/test-scripts/(mirroring source tree) - Tests reference the test cases from Design and, through them, the REQ IDs
Do not rewrite tests for unmodified functions. The modified-code-test-gate.sh hook verifies the test-to-function mapping.
Step 5 — Deployment scripts and pipeline
If the change requires:
- New env var → update the deployment script and the pipeline config in the same commit
- New secret → update the secrets management doc and the pipeline; never commit the secret
- New service, queue, bucket → update infra-as-code
- New test gate → update the pipeline
Deployment updates ride with the code change. Never defer.
Human gate
Summarize: files modified, functions modified, tests added/updated, pipeline changes, UX conformance status. Sign-off goes to .claude/sdlc/gates/build-<task-slug>.md.
References
skills/surgical-edit/SKILL.mdskills/minimal-code/SKILL.mdskills/security-review/SKILL.mdhooks/work-item-validation.sh,hooks/diff-scope-check.sh,hooks/adjacent-function-detector.sh,hooks/modified-code-test-gate.shtemplates/ticket.md,templates/change-request.md,templates/sign-off.md
Next step hint
After writing the gate file, pipe the next_suggestions conditions to skills/_shared/next-hint.sh and print any output:
printf '%s\n' \
'build_gate_signed|run /test to execute tests and record defects' \
'pending_signoff_for_current_user|write your sign-off at sign-offs/<REQ-ID>-<role>.md, then /test when all roles are covered' \
| bash skills/_shared/next-hint.sh
Print any output verbatim. If the script outputs nothing, add nothing.