From harness-boot
Convert a feature idea into a complete `features[]` entry for `.harness/spec.yaml` — auto-detects shape (UI / sensitive / performance / pure-domain), sizes acceptance criteria to project mode, and emits a paste-ready block for both spec.yaml mirrors. Use only on harness-boot projects (presence of `.harness/spec.yaml`).
How this skill is triggered — by the user, by Claude, or both
Slash command
/harness-boot:feature-authorWhen to use
Trigger when the user describes a feature idea and wants it scaffolded into the spec, in any of these shapes: Korean (most common — natural dev phrasing): - "X 기능 구현해줘", "X 기능 만들어줘", "X 추가해줘", "X 개발해줘" - "로그인 기능 만들자", "결제 붙이자", "회원가입 구현" - "새 피처 추가", "피처 추가하자", "X 작업할게" - "F-N 정의", "이거 spec 으로 등록", "spec.yaml 에 추가" English: - "implement X feature", "build X", "add a X feature" - "draft a feature", "spec out X", "scaffold X" - "register this as F-N", "let's spec X" Also trigger when the user pastes a 1-2 sentence feature description and asks for scaffolding, or types `/harness-boot:work` with feature-creation prose (not lifecycle ops). Do NOT trigger for: lifecycle ops on existing features (gate run, evidence, complete), projects without `.harness/`, or `plan.md` whole-document conversion (that is the `spec-conversion` skill).
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill teaches Claude how to convert a user's idea ("we need a
This skill teaches Claude how to convert a user's idea ("we need a
login flow") into a complete features[] entry in
.harness/spec.yaml. It removes the templating friction that 121
self-dogfood feature additions revealed: every entry needs the same
shape (id · name · type · description · acceptance_criteria), and
the user shouldn't have to remember the shape every time.
Trigger when the user:
/harness-boot:work and the prompt content is
about creating (not lifecycle-managing) a feature.Do NOT invoke when:
/harness-boot:work directly..harness/ directory — there's no spec to
scaffold against.plan.md document — that's the
spec-conversion skill's territory.Read the user's idea and pick exactly one primary shape. The shape determines which adapter to consult and which agents the orchestrator will summon.
| Shape | Signal in user prose |
|---|---|
ui-surface | mentions a screen, page, button, form, dialog, render, layout, component, accessibility, theme, motion, audio cue |
sensitive | mentions auth, login, session, token, password, payment, PII, GDPR, encryption, secrets, OAuth |
performance-budget | mentions latency, throughput, p95, LCP, INP, bundle size, frame rate, memory limit, cold start |
pure-domain | none of the above — pure backend logic, batch, calculation, transform, report, CLI |
If two shapes apply (e.g., a sensitive UI form), pick the stricter
shape: sensitive > performance-budget > ui-surface >
pure-domain. The orchestrator will fan out to multiple agents
regardless; the shape we record drives which adapter we use to
write the entry.
Then load the matching adapter at
skills/feature-author/adapters/<shape>.md. Each adapter provides:
src/... paths to expect).ui_surface.present, sensitive,
performance_budget, etc.).project.mode for AC countOpen .harness/spec.yaml and find project.mode. Two values:
prototype (default for solo / early projects): emit 3-4 ACs.
Tightness over completeness — early features change shape; AC
inflation creates churn.product (mature / external dogfood): emit 6-8 ACs. Iron Law
D requires 3 declared evidences for complete; AC count reflects
the same stricter contract.If project.mode is missing → treat as product (default).
The adapter file in step 1 lists template ACs — pick from those, add 1-2 feature-specific ACs to land in range.
Use skills/feature-author/templates/feature-entry.yaml as the
skeleton. Fill placeholders:
<F_ID> — next free F-NNN number. Read the spec; the highest
existing F-N plus 1.<NAME> — concise human-readable title, ≤ 60 chars, no trailing
period.<TYPE> — almost always "feature". Other values ("chore",
"docs", "refactor") are valid but less common; ask if unsure.<DESCRIPTION> — 4-12 line markdown block. First sentence is the
cycle context (e.g., "Thirty-second cycle. Follow-up to F-114 …").
Body explains user need + scope + non-goals.<AC-LIST> — the AC count from step 2, drawn from the adapter
template plus 1-2 feature-specific ones. Each line - "AC-N: ...".logcat-on ISSUES-LOG return — when free-text fields wrap and a
continuation line starts with { (flow mapping indicator) or contains
: (mapping value indicator), the YAML parser reads them as nested
mappings and harness sync / harness validate abort with PARSE
error. The fix lives at the emitter (you), not the validator —
PARSE failure happens before validation gets a chance.
Rules when filling the template:
description: — always use |- (literal block scalar, strip
trailing newline). Preserves body verbatim regardless of {, : ,
backticks, or ${template} content. Never use plain scalar
(no |-) for multi-line descriptions.acceptance_criteria[] — wrap each AC in double quotes
("AC-N: ..."). Single-line AC entries are fine plain, but
code-flavored content (CSS {...}, JS template literals, :
pairs in URLs) survives only inside "...".statement: (in risks[] if you add them) — same rule: |-
for multi-line, "..." for single line with code content.If unsure, pick |- — it's never wrong, just sometimes verbose.
Shape-specific extras:
ui-surface: include ui_surface: { present: true, platforms: [...], has_audio: <bool> } block.sensitive: include entities: [{ name: "...", sensitive: true }] block when an entity is involved.performance-budget: include performance_budget: { lcp_ms: <int>, inp_ms: <int>, bundle_kb: <int> } block.pure-domain: no extra blocks; description carries the contract.Always end the response with:
The entry above must be appended to BOTH:
1. docs/samples/harness-boot-self/spec.yaml
2. .harness/spec.yaml
self_check.sh enforces lockstep via `diff -q`. Adding to only one
will fail at gate_5.
After paste:
node bin/harness validate docs/samples/harness-boot-self/spec.yaml \
--schema docs/schemas/spec.schema.json
node bin/harness work F-N --harness-dir .harness
(Substitute F-N with the actual id.)
Show the orchestrator routing the user can expect at activate time.
Use the agents/orchestrator.md routing table:
Routing on activate:
shape detected: <shape>
agent chain: <chain from routing table>
This sets expectations so the user knows whether to expect a ux-architect → visual-designer → frontend-engineer cascade or a single backend-engineer pass.
This skill does NOT:
harness validate or activate — those are deterministic CLI
surfaces, not skill territory.If the user wants any of the above, tell them:
harness work F-N --harness-dir .harness."Per Anthropic's skill authoring guidance, sub-files are loaded only when referenced. Load these from inside this skill as you need them:
Shape adapters — read the adapter that matches Step 1's detected shape:
Paste-ready skeleton —
templates/feature-entry.yaml — the
YAML scaffold with placeholder markers (<F_ID>, <NAME>,
<DESCRIPTION>, <AC_N>) and three commented-out shape blocks.
Uncomment the one that matches Step 1's shape.
agents/orchestrator.md — routing table and conflict-resolution
rules.agents/product-planner.md — for the actual AC reasoning that
comes after activate.docs/schemas/spec.schema.json — authoritative spec v2.3.8
schema.docs/samples/harness-boot-self/spec.yaml — 121 worked examples
to draw shape-specific phrasing from.commands/work.md — lifecycle reference for what happens after
the entry is in place.Internal version: 0.1 (not part of Anthropic's frontmatter
contract; tracked here for harness-boot's own change log).
npx claudepluginhub qwerfunch/harness-boot --plugin harness-bootGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.