.agents/skills/build-it/SKILL.md
Implement an architectural specification as working code. Takes the output of the spec skill (from a GitHub issue, conversation context, or pasted text) and produces working TypeScript code following the project's established conventions and the architecture rules. Triggers on phrases like "build this spec", "implement this spec", "build it", "implement the feature", "code this up", or "turn this spec into code". Also invocable via the /tseng:build-it slash command.
npx skillsauth add kagenti/humr build-itInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
echo "Architecture docs: ${CLAUDE_SKILL_DIR}/architecture/"
echo "Version: $(cat "${CLAUDE_SKILL_DIR}/VERSION")"
Implements an architectural specification as working code. Takes a spec produced by the spec skill (from a GitHub issue, conversation context, or pasted text) and translates it into concrete TypeScript modules, services, domain objects, events, and routers — following the project's existing conventions and the architecture rules.
The spec defines what to build and where it belongs. This skill decides how to build it.
Read only the overview to start — load specific docs lazily as implementation demands:
architecture/index.md from the architecture docs directory (shown above). This gives you the map of all topics without the full weight.Do NOT read all architecture files upfront. Instead, load them on-demand during implementation:
| When you need to... | Then read... |
|--------------------------------------------------|-------------------------------|
| Understand stack/dependency requirements | stack.md |
| Implement layer code (routers, services, domain) | slice-composition.md |
| Create or modify modules | modules.md |
| Wire cross-module events | module-boundaries.md |
| Place files or create new packages | project-structure.md |
This keeps context lean. You are the architecture expert — load knowledge just-in-time as the implementation demands it.
Read the project's TSEng context to understand where it stands:
tseng/index.md exists. If it does, read it and follow every link:
tseng/project-structure.md — package layout, names, paths, server runtimetseng/adoption.md — applied, discarded, and remaining changestseng/reviews/index.md — review historysrc/modules/ directories and contract package src/modules/ directories.tseng/vocabulary.md exists. If it does, read it — this is the ubiquitous language that the spec was written against. Use these exact terms throughout implementation.If the project has no tseng/ directory at all, warn the user that project context is missing and suggest running /tseng:adopt first. Do not refuse to proceed — the user may have a good reason — but warn that implementation decisions will be less informed.
Summarize what you found to the user in a brief status:
Ask the user how they want to provide the spec:
How would you like to provide the specification?
- GitHub issue — give me the issue number or URL
- From this conversation — if you just ran /tseng:spec
- Paste it — paste the spec text directly
For option 1: Use gh issue view <number> --json body,title to fetch the issue. Parse the markdown body to extract the spec sections.
For option 2: Look back in the conversation for the spec output from a prior /tseng:spec invocation. If not found, tell the user and ask for an alternative.
For option 3: Accept the pasted text.
Validate the spec. Confirm it contains at minimum:
If sections are missing, ask the user if this is intentional or if the spec is incomplete. A spec without "Domain Events" is valid (single-module feature), but a spec without "Affected Bounded Contexts" is not actionable.
Summarize what you understand from the spec back to the user:
This is where the spec's "what and where" becomes concrete "how". Before writing the plan, discover the project's existing conventions.
Scan existing code in the project for patterns:
If the project has no existing modules, follow the architecture docs' example patterns as the baseline.
For each module in the spec, produce a plan that covers:
File structure — Every file to be created or modified, with full path:
modules/<name>/
domain/
<EntityName>.ts
events/<EventName>.ts
services/<ServiceName>.ts
routers/<RouterName>.ts
index.ts
Domain layer — Entity names, value object names, aggregate roots. Key type signatures. Invariant enforcement strategy. Event type definitions (the type discriminant and payload shape).
Application layer — Service function names and parameters. Which domain objects each service coordinates. External integration points. How events are published.
Validation layer — Router procedure names (query/mutation). Zod schema shapes. How domain errors map to tRPC error codes.
Cross-module wiring — What gets exported from index.ts. Event subscription setup. Import paths for cross-module event types.
Present the plan to the user:
Does this implementation plan look right? Any naming preferences or conventions I should follow differently?
Wait for confirmation before proceeding. This is the single approval gate — once the plan is approved, implementation proceeds without interruption.
Work through the plan one module at a time, in dependency order:
Step 1 — Domain layer:
domain/events/is<EventName> functions)Step 2 — Application layer:
Step 3 — Validation layer:
Step 4 — Module boundary:
index.ts exporting only event types and type guardsStep 5 — Integration:
After each module, briefly report what was created:
Module
ordersimplemented: 3 domain types, 2 events, 1 service, 1 router, index.ts exports wired.
Run three checks:
1. Type check — Run tsc --noEmit (or the project's equivalent type-check script). If it fails, fix the type errors. Report what was fixed.
2. Architecture rule check — For each newly created/modified file, verify:
index.tsindex.ts exports only event types and type guards3. Spec coverage check — Walk through the spec section by section and confirm every element was implemented:
Report the verification results to the user. If anything is missing or broken, fix it.
Present a final summary:
Created/Modified files: (grouped by module)
Modules implemented:
Cross-module wiring:
Conventions followed:
Next steps the user should consider:
tseng/adoption.md shows certain rules were discarded, do not enforce those rules in new code. Follow what the project has actually adopted.tseng/vocabulary.md and the spec. If the spec says "Order", write Order, not Purchase. If the spec says "OrderPlaced", the event is OrderPlaced, not OrderCreated.Result<T, E> = { ok: true; value: T } | { ok: false; error: E } discriminated union.index.ts. Never reach into another module's internals.development
Create a PRD through user interview, codebase exploration, and module design, then submit as a GitHub issue after user approval. Use when user wants to write a PRD, create a product requirements document, or plan a new feature. Always present the PRD for user approval before submitting.
testing
Upgrade a previously bootstrapped or adopted project when the architecture evolves. Diffs the current architecture rules against the project's last locked review, identifies new or changed rules, and proposes incremental changes. Triggers on phrases like "upgrade my project", "sync with latest architecture", "update to new rules", "upgrade tseng", or "architecture changed, update my project". Also invocable via the /tseng:upgrade slash command.
development
Spec out a feature or change with full knowledge of the opinionated TypeScript architecture and the project's adoption state. Conducts a thorough discovery interview to understand domain concerns, bounded contexts, and application services, then produces a high-level architectural specification — never concrete implementation details. Triggers on phrases like "spec this feature", "design this change", "architect this", "help me spec", "what modules do I need", or "think through this feature". Also invocable via the /tseng:spec slash command.
development
Review an existing TypeScript project against the opinionated architecture rules. Use when the user asks to review, audit, check, or validate their project's architecture. Triggers on phrases like "review my project", "check the architecture", "audit my code structure", "validate my project", or "does my project follow the rules". Also invocable via the /tseng:review slash command.