agentsclimarketplace

House builder

Skill argent-gnome/sdlc-skills/skills/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

Install
npx -y skills add argent-gnome/sdlc-skills --skill house-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

  • 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

  1. 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).
  2. Build with TDD. superpowers:test-driven-development + superpowers:subagent-driven-development (single-session) or superpowers:executing-plans (multi-session) + the stack pro-skills (swiftui-pro/swiftdata-pro/swift-testing-pro/swift-concurrency-pro, or supabase/vercel:*). Enforce the stack gates below as you go.
  3. 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-debugging on 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.
  4. 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.
  5. 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.
  6. 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)

  • iosswift test · SwiftLint · xcodebuild build (+ a Release-build check when DEBUG-only code is involved) · XCUITest against the synthetic harness · XCUITest discriminators must be virtualization-robust — a List virtualizes 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 two xcodebuild UI 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 · the xcodebuild destination 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 @Model schema 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 with gh 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 on main). 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 list empty). Then full local + live verification + the merge-gate GO is the merge bar; gh pr merge needs 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.

Keep looking

Skills are one crate of 326,782. 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.