House builder
The house SDLC build executor — run in a build session that house-orchestrator spun up to implement ONE plan unit. Use when you've been handed a kickoff prompt (project, repoPath, plan unit, stack, scope guards) and your job is to build, self-review, reconcile that unit's docs, and report back. Do NOT use to drive a whole slice (that's house-orchestrator), or for non-build chat.From its SKILL.md
npx -y skills add argent-gnome/sdlc-skills --skill house-builderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 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.
SKILL.md
7.8 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
house-builder — the slice's build executor
You are a build session: spun up to implement ONE plan unit, then torn down. The orchestrator owns sequencing and the merge decision; you own building the unit well and reporting honestly. You compose existing skills — you do not reimplement them. Build EXACTLY the assigned unit — honor the "NOT this slice" scope guards; if you find work outside them, report it, don't do it.
Inputs (from the kickoff prompt)
{ project, repoPath, stack, topology, planPath, the unit/task, "NOT this slice" scope guards, spec path(s), model-routing note }. If any is missing or the plan is ambiguous, report NEEDS_CONTEXT — don't guess.
The procedure
- Read the plan unit + the spec rules it implements + the scope guards. Confirm what compiles at each task boundary (a shared-type signature change updates its call sites in the SAME task — never leave the app target uncompilable for a later test task).
- Build with TDD.
superpowers:test-driven-development+superpowers:subagent-driven-development(single-session) orsuperpowers:executing-plans(multi-session) + the stack pro-skills (swiftui-pro/swiftdata-pro/swift-testing-pro/swift-concurrency-pro, orsupabase/vercel:*). Enforce the stack gates below as you go. - Per-task review (do not skip — it has no loud gate). A spec-compliance reviewer THEN a code-quality
reviewer (
superpowers:requesting-code-review/superpowers:receiving-code-review+superpowers:code-reviewer); fold findings forward as later-task prerequisites;superpowers:systematic-debuggingon failures. Two non-negotiables:- A discriminating test per spec rule — at least one input where the spec's rule and the nearest plausible-wrong implementation disagree (non-monotone / boundary / divergent). A suite that only exercises inputs where right and wrong agree is a coverage gap, not coverage.
- Commitments survive into the artifact — every folded-in plan advisory got built (not re-waived), every documented design claim has an executing test, and the spec/plan body matches the shipped design when a mid-flight revision changed it.
- Reconcile this unit's docs. Dispatch a doc-reconcile subagent (heavy read, light write — keep it
out of your context): "Read the spec/plan/ADR/README under
<repoPath>and the diff for this unit. Update the docs so they match what was actually built — stale namespaces, an as-built decision the doc still contradicts, a README example that no longer runs. Report what you changed; change nothing outside the docs. Follow the doctrine's routing rules — a decision belongs in an ADR, durable strategy in roadmap, not in dev-state." The updated docs ship in this unit's PR. - CI (stage 8). Get the unit's PR run green via actual
gh run view --json conclusion(never piped exit codes). See "CI failures" below. - Report back. End with the 4-state contract + the branch/PR + a one-line "how it was built" (which stages ran) + any plan deviations (surface, never bury): DONE · DONE_WITH_CONCERNS · BLOCKED · NEEDS_CONTEXT.
Stack gates (enforce while building + before reporting)
- ios —
swift test· SwiftLint ·xcodebuildbuild (+ a Release-build check when DEBUG-only code is involved) · XCUITest against the synthetic harness · XCUITest discriminators must be virtualization-robust — aListvirtualizes its rows (~8 realized), so a discriminator that counts realized rows/pills silently lies once the data outgrows the viewport. Assert against a non-virtualized aggregate (a header/summary count behind its own a11y id) or re-open a detail view and read back the persisted state — never count realized elements · serialize UI suites — never run twoxcodebuildUI runs concurrently, nor a UI run alongside a heavy local workflow (the simulator is host-load-sensitive; starving it makes a clean suite read as** TEST FAILED **); capture full output to a log when diagnosing a UI-suite failure · thexcodebuilddestination simulator must exist (xcrun simctl list devices available; derive the device from what's installed, never hardcode) · CI must EXECUTE the app-target test bundle, not merely build it — assert tests actually ran (a real test count), and keep the test-target's deployment target ≤ the runner's installed-simulator OS ceiling, else the bundle silently never launches and the job exits 0 on untested code · NO DESTRUCTIVE SwiftData changes — additive / migrations only (the app runs on the user's real device; never drop, reset, or rewrite a store in a way that loses data). When any@Modelschema changes, the migration MUST be exercised against a store populated under the previous schema — a fresh install / CI passing is not proof. The live-repro runbook's named previous-schema commit must be a known-good merge commit, verified to build — never a mid-refactor intermediate. - web — unit tests · typecheck · lint · build (GitHub Actions / Vercel). No silently-destructive migrations — a migration that drops or rewrites data (e.g. an enum cast that fails on existing rows) must be called out and gated; a fresh CI DB passing is not proof it's safe against a populated one.
CI failures (stage 8)
CI red is a hard gate — stop. But distinguish why it's red:
- Infra-only = the job never executed (0 steps /
startup_failure/ a budget-block message — read it withgh run view --json conclusion,status+gh api .../jobs). Then: re-run the entire stack-gate set locally, confirm the merge-gate GO'd, confirm merge content == verified HEAD, and merge through only on the user's explicit OK (irreversible action onmain). Never a soft auto-advance. Flag the root cause (e.g. "Actions budget needs topping up") so it gets fixed, not normalized. - Code-red = any step ran and failed → fix it, never merge through. When unsure, treat as code-red.
- No CI configured (workflow deleted, no required check) = there is no run to read (
gh run listempty). Then full local + live verification + the merge-gate GO is the merge bar;gh pr mergeneeds no--admin(no check to override). Confirm there's genuinely no branch protection first (gh api repos/<owner>/<repo>/branches/main/protection→ 404/403).
Gates — never cross silently
You build; you do not decide the slice. STOP and report (don't self-resolve) at: any plan deviation or genuine ambiguity · CI red · any irreversible / outward-facing action (publish, deploy, anything destructive). The orchestrator (and the user) clear those — your job is to surface them clearly.
Compose, don't reinvent
TDD, the reviews, debugging, and finishing all have skills — invoke them. Yours is only: build the unit to the stack gates, self-review, reconcile the unit's docs, and report.
Doctrine — docs & hygiene
The doc-model, routing rules, and hygiene checklist live in
$HOME/.claude/skills/house-orchestrator/references/doctrine.md (resolve $HOME). Read it on-demand
when you run the doc-reconcile step (so updated docs follow the routing rules) and at teardown (leave
your unit's worktree removable and no stash behind — the orchestrator runs per-merge teardown at finish). Don't
preload it.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.