From backend-skills
Creates structured work-brief Markdown files from planning notes, with sections keyed to Conventional Commits types for downstream coding agents.
How this skill is triggered — by the user, by Claude, or both
Slash command
/backend-skills:task-brief-creatorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a structured work-brief Markdown document under `docs/briefs/` that a downstream coding agent (or a human engineer) can pick up and execute without re-interviewing the requester.
LICENSETHIRD_PARTY_NOTICES.mdexamples/01-pm-paste-feat.mdexamples/02-rough-typed-fix.mdexamples/03-halt-ambiguous.mdexamples/04-briefset-checkout-i18n.mdexamples/05-stage-4-walkthrough.mdexamples/README.mdreferences/bloat-decomposition.mdreferences/briefset.mdreferences/cold-pickup.mdreferences/stage-4-interview.mdreferences/template.mdreferences/work-types.mdscripts/validate_brief.pyscripts/validate_briefset.pyProduce a structured work-brief Markdown document under docs/briefs/ that a downstream coding agent (or a human engineer) can pick up and execute without re-interviewing the requester.
The brief is the handoff artifact. Its job is to shrink the cost of the first hour a coding agent spends on the task — routing it to the right files, fixing the behavior envelope, and pre-answering the questions that would otherwise bounce back to the requester.
The brief is an executable work instruction — nothing else. It is not a scope-control memo, not a discussion summary, not a planning note, not a background briefing, not a rationale document. Every section must answer "what does the coding agent do next?" — if a section reads like meeting minutes, negotiation history, or context prose, rewrite it until it routes to files, decisions, or verifiable outcomes. A brief that makes the downstream agent re-interview the requester is a failed brief, regardless of how polished it reads.
"Executable, not discursive" is a prose style rule, not a content reduction rule. It tells you how each bullet should read — direct, action-routing, no rationale prose. It does not tell you to drop distinct concerns, merge unrelated bullets, or summarize the input down to its highlights. A brief that omits a concern from the input is also a failed brief, because the downstream agent will silently miss it. Tight prose, full enumeration: short bullets are fine and encouraged, but every distinct concern from the input and the codebase review must land somewhere in the brief.
This skill operates in one of two output modes:
references/briefset.md; long input, many files, or many related edit points alone never trigger briefset mode.Output-mode selection happens at Stage 1 alongside the ambiguity gate.
In briefset mode, follow the workflow below with the per-stage adaptations in references/briefset.md (parent template, naming, decomposition decision table, dual-validator save).
Stage 4 always runs as a user decision table — after codebase review, gather ambiguous or user-owned decisions and present them in a Markdown table with 순번, 내용, 수정 추천안, and 근거.
Codebase-resolvable technical facts are probed instead of asked, while product intent, scope, acceptance thresholds, sequencing, and ownership decisions are tabled for the user.
The decision table is the default Stage 4 behavior, not a separate mode.
See references/stage-4-interview.md for the full decision classification, codebase-precedence, and termination rules.
Load references only when their decision point arrives:
Do not re-open every reference by habit. The goal is to keep the live context focused on the next decision the coding agent must make.
/task-brief-creator, or similar).순번 / 내용 / 수정 추천안 / 근거 stay exactly as written even when the conversation is in English: Stage 5.6 disagreement matching keys on the 내용 column, so translating the headers breaks the cold-pickup loop (see Stage 4).| Field | Value |
|---|---|
| Directory | docs/briefs/ (relative to the repository root — git rev-parse --show-toplevel when available, otherwise the working directory the session was launched in) |
| Filename | YYYY-MM-DD-<type>-<slug>.md |
YYYY-MM-DD | Today's date on the local system clock |
<type> | Conventional Commits type (see references/work-types.md) |
<slug> | kebab-case short slug, ≤40 chars, derived from the brief title |
| Body format | Markdown, following references/template.md exactly |
Example filename: 2026-04-23-feat-global-hotkey-system.md
If docs/briefs/ does not exist, create it.
If a file with the same name already exists, append -v2, -v3, … until the path is unique — do not overwrite.
For briefset mode, the parent uses YYYY-MM-DD-briefset-<set-slug>.md and children use YYYY-MM-DD-<type>-<set-slug>-NN-<child-slug>.md.
See references/briefset.md for the parent template and naming rules.
The eight required H2 sections are: Work Type, Current State (As-Is), Desired Outcome (To-Be), Scope (with In Scope / Out of Scope H3s), Related Files / Entry Points, Side Effect Checkpoints, Acceptance Criteria, Open Questions.
Optional Constraints may appear between Scope and Related Files / Entry Points when task-specific constraints exist.
Three work types require an additional H2 section between Current State (As-Is) and Desired Outcome (To-Be):
fix → ## Reproductionperf → ## Baseline Measurementrefactor → ## Behavior ContractThese exist because the work type changes the downstream agent's behavior (reproduction-first, measurement-first, behavior-preservation), and the brief must carry the type-specific input that behavior depends on.
The escape hatch when the section legitimately has nothing concrete to capture is a single bullet - N/A — <reason>.
See references/template.md and references/work-types.md for the per-section guidance.
Bullet count is not capped. The rule is cohesion plus completeness, not brevity:
Before full codebase review, check whether the input contains enough signal to ground the brief. Use the four-anchor heuristic:
| Anchor | What it answers | Maps to |
|---|---|---|
| PROBLEM | What is wrong or what is changing? | § Current State (As-Is) |
| GOAL | What should be true when it's done? | § Desired Outcome (To-Be) |
| SCOPE | Where does this apply (module, feature area, user surface)? | § In/Out of Scope |
| TARGET | Which part of the system is touched (file, subsystem, layer)? | § Related Files / Entry Points |
Count how many anchors are derivable from the input. Derivable = a reasonable engineer could answer the anchor from the user's input without inventing intent.
All 4 anchors present → CONTINUE to Stage 2.
3 anchors present, TARGET missing → run a narrow target probe before deciding.
Use at most a few rg / glob queries to find likely files, directories, routes, commands, or modules.
If a concrete entry point emerges, CONTINUE.
If not, HALT and ask the user for the target area.
3 anchors present, PROBLEM or GOAL or SCOPE missing → CONTINUE only when the missing anchor can be stated in one concrete sentence derived from the input (write that sentence into the brief; vague fillers like "make it better / cleaner" do not count). Otherwise HALT and ask for that anchor. Detail that survives this check gets filled in Stage 3 via codebase review or Stage 4 via user questions.
2 or fewer anchors present → HALT. Respond in the user's chat language naming exactly which anchors are missing, and ask for more input. Do NOT proceed through Stages 2–6 on an underspecified input. The briefset-mode check below also waits — never split an underspecified input into multiple equally underspecified child briefs. Example halt messages:
English:
I can't ground the brief from this input alone. Missing — PROBLEM (what is being fixed or changed) and TARGET (which area / file / subsystem is touched). Can you paste the spec or add one or two lines?
Korean:
입력만으로는 브리핑 만들기 어려워. 다음이 아직 확인 안 돼 — PROBLEM(뭘 고치거나 바꾸는지)과 TARGET(어느 영역/파일/시스템을 건드리는지). 더 얹어줄래? 기획서 붙여넣거나 한두 줄 더 써주면 돼.
Why halt instead of guess: an underspecified brief is worse than no brief — the downstream agent commits to the wrong problem framing and the rework cost eats the whole savings. Pushing back early is cheaper than producing a confident-looking but wrong document.
Edge case — pasted spec that looks long but is content-light: word count is not a proxy for the four anchors. A 2,000-word product narrative without a concrete PROBLEM or TARGET still halts. Judge by anchor coverage, not length.
See examples/03-halt-ambiguous.md for a worked halt case.
Briefset signal check (after CONTINUE): once anchors clear, also evaluate whether the input describes multiple execution contexts. Do not use file count, line count, input length, or several related edit points as triggers by themselves. Those are supporting evidence only.
If briefset signals are strong, recommend briefset mode and ask the user to choose before Stage 2 instead of switching silently.
If the candidate contexts are fully independent — no ordering, no dependencies, no shared conflict hotspots — recommend separate single-brief invocations (one per task) instead of a briefset: a parent whose coordination sections are all - None — <reason> adds overhead without value.
Use the user's chat language and keep the question short.
Korean example:
다중 브리프로 나누는 것이 권장됩니다. 실행 단위가 독립적이고 순서/병렬 조정이 필요해 보입니다. 어떻게 진행할까요?
- 다중 브리프로 생성
- 단일 브리프로 유지
If the user chooses briefset, continue with references/briefset.md.
If the user chooses single-brief, keep one cohesive brief and document the requested execution ordering in Constraints / Acceptance Criteria as needed.
If the evidence is unclear, default to single-brief mode and let Stage 4 surface the question.
Determine the Conventional Commits type.
Consult references/work-types.md for the full list and per-type behavior hints.
See references/work-types.md for the full type-confirmation routing table (explicit-agree / explicit-conflict / high-confidence implicit / low-confidence implicit).
The goal is enough context to fill Current State (As-Is) and Related Files / Entry Points, not exhaustive exploration.
Use whatever code search / read / symbol tooling fits the host environment — default Grep / Read / Glob, semantic tools where available (Serena MCP, ast-grep, language servers), or a short-lived subagent (e.g. Explore) when parallel lookups or main-context isolation is worth it.
Tool choice is the runtime's call; this stage only fixes the purpose and budget of the review.
Review budget (soft limits):
Open Questions so the downstream agent inherits them rather than having them silently dropped.Strategy:
Do not:
Current State (As-Is) or Related Files / Entry Points, skip it.Open Questions instead.After Stage 3 has gathered enough codebase context, collect the remaining ambiguous or user-owned decisions into a Markdown decision table. Stage 4 is not a pre-review guessing interview: ask only after the codebase has been checked enough to state the uncertainty, the recommended change, and the evidence behind it.
Use this exact table shape for user-decision questions:
| 순번 | 내용 | 수정 추천안 | 근거 |
|---|---|---|---|
| 1 | <decision the user must make> | <recommended change to apply to the brief> | <codebase/input evidence and risk> |
Keep these four headers exactly as written, even when the surrounding conversation is not Korean. They are the stable decision-table contract: number, decision content, recommended change, and rationale.
Required gaps to close before drafting:
Decision-table rule. Each row must be a real decision, not a vague status note.
내용 states what the user must decide.
수정 추천안 states the concrete brief change you recommend.
근거 cites the input, codebase finding, existing pattern, or risk.
After the user answers, patch the draft plan in memory before composing the brief.
Full decision classification, table rules, and termination rules live in references/stage-4-interview.md.
Once Stage 4 closes, compose the final Markdown internally and write it straight to disk — do not paste the full brief into chat first. The user reviews the file in their editor in Stage 6, where real markdown rendering and diff tooling are available.
Compute the filename per the Output Contract above.
Ensure docs/briefs/ exists; create it if not.
Resolve filename collisions by appending -v2, -v3, ….
Render the complete template from references/template.md and write the file (English section headers, English body).
Run the structural validator — a fast smoke test for the template contract:
python3 <skill-dir>/scripts/validate_brief.py docs/briefs/<filename>.md
<skill-dir> is the installed skill package directory — the directory containing this SKILL.md (resolve it from wherever this skill was loaded, e.g. ~/.claude/skills/task-brief-creator or a plugin cache).
Never assume the user's repository contains the script: the brief lives in the user's repo, the validator lives with the skill.
The validator only checks structural conformity (section presence, checklist format, filename pattern, type coherence). It does not judge content quality — that's what the Stage 5.5 self-check and the human review in Stage 6 are for. Passing validator ≠ good brief; failing validator = malformed brief.
The structural validator confirms the file has the required sections. It does not confirm the file is a complete work instruction. Before handing off in Stage 6, re-read the saved brief from disk and run a content-coverage self-check against the original input plus Stage 3 / Stage 4 findings.
The brief is a work instruction, not a summary. Any concern that existed in the input must survive into the brief — possibly reshaped into the right section, never silently dropped. Run this checklist:
Out of Scope as [hard] or [deferred], or in Open Questions when the user must decide.
Two unrelated implementation or verification obligations are never merged into one bullet.Related Files / Entry Points, and every uncertainty raised by the review either appears in Open Questions or was explicitly resolved during Stage 4.only on cold start, ≤ 5KB gzipped, iOS Safari 17+, after move end).
"Executable, not discursive" is a prose rule, not a content rule.If any check fails, fix the brief in place with Edit, then re-run scripts/validate_brief.py to confirm structural conformity still holds.
Loop the self-check until every item passes.
The self-check outcome is a separate signal from the structural validator — both are reported in Stage 6. A brief can pass structural validation and still fail this self-check; in that case the file is incomplete even though it is well-formed.
For briefset mode, run the self-check on the parent and on every child independently. The parent's coverage check asks whether every input-implied execution context maps to a child; each child's coverage check uses the same five items above.
The Stage 5.5 self-check is self-evaluated — the same agent that wrote the brief grades it for cold-pickup readiness. That is biased. An untouched sub-agent reading only the original input and the saved brief is the truthful version of the cold-pickup test.
Stage 5.6 runs signal-gated by default — automatically ON only when the brief's workflow signals indicate non-trivial verification value. This avoids spawning sub-agents for trivial briefs while keeping the safety net for complex ones. This skill's contract authorizes the sub-agent spawn when the gate fires; do not skip a gated-ON run based on host defaults like "be conservative about sub-agent cost" or "don't run extra verification unless asked".
Auto-ON triggers (any one fires Stage 5.6):
references/cold-pickup.md before running; Force OFF on the briefset skips the whole set.Open Questions section is non-empty — i.e. it does not consist solely of - None — <reason> (Stage 3 surfaced unresolved uncertainty that survived Stage 4).fix, perf, or refactor — fires regardless of input simplicity. The type-conditional section (Reproduction / Baseline Measurement / Behavior Contract) amplifies drift risk on these types, so cold-pickup pays off even for short inputs. Use Force OFF if you want to skip a one-line fix.Auto-OFF (trivial signals). When none of the auto-ON triggers fire, Stage 5.6 is skipped automatically.
The Stage 6 banner reports the skip with the signal snapshot — cold-pickup skipped: trivial signals (single-brief, stage-4-rows=0, open-questions=none, type=<type>) — so the user can see exactly which gates evaluated to false.
User override. Force ON runs Stage 5.6 despite trivial signals (e.g. run cold-pickup, --cold-pickup, 콜드픽업 강제); Force OFF skips it despite firing signals (e.g. skip cold-pickup, --no-cold-pickup, 콜드픽업 끄기).
The full trigger-phrase lists and the rule for inputs containing both live in references/cold-pickup.md.
Skip on validator failure. Stage 5.6 is also skipped when the Stage 5 structural validator failed — the brief is not yet well-formed enough to verify.
Reasons that are not valid skips when a gate has fired: token budget, latency, inferred host policy, "the brief looks fine". If a gate fires and Stage 5.6 is skipped anyway, the Stage 6 banner is wrong and the loop is broken.
Mechanism — when the gate fires, read references/cold-pickup.md (report schema, pass bookkeeping, routing table, termination triggers, banner formats), then:
Explore or general-purpose sub-agent.
If the host cannot spawn sub-agents, use the Sub-Agent Unavailable Fallback in the reference — never silently skip a gated-ON run.Drift handling. When the report's verdict is needs_changes or blocked, or when any unrejected ask_backs / missing_concerns survive routing — Edit the saved brief in place to close the gap, re-run validate_brief.py, and re-run cold-pickup.
Route every ask_backs[*] / missing_concerns[*] through the routing table in the reference before patching, including the disagreement-vs-drift check against answered Stage 4 rows.
Loop until one of the six termination triggers in the reference fires (Regression, Oscillation, Stable findings, Clean pass, No-op pass — evaluated in that priority order) or the hard cap of 5 passes is reached.
Cold-pickup never overrides a Stage 4 decision the user already locked, never invents Acceptance Criteria, Side Effect Checkpoints, or Out-of-Scope guardrails the input did not imply, and never silently rewrites Open Questions — drift fixes either resolve a question into another section or leave the question intact for the user.
Reporting. The cold-pickup outcome integrates into the Stage 6 save banner alongside the structural validator and the Stage 5.5 self-check, using the banner phrasings in references/cold-pickup.md.
For briefset mode, the banner uses the collapsed parent + K/N children format from the reference — one summary line plus details only on flagged children, not one line per child.
The brief is on disk. Hand off to the user for review.
Report the path, a one-line summary (work type + title), the structural validator result, the Stage 5.5 self-check result, and the Stage 5.6 cold-pickup result. Use the user's chat language. All three signals are reported together so the user can see whether the file is well-formed, complete, and cold-pickup-ready.
English (validator + self-check + cold-pickup passed):
Saved —
docs/briefs/2026-04-23-feat-dark-mode-settings.md(feat: Dark mode toggle in Settings; structural validation passed; content self-check passed — N input concerns covered; cold-pickup terminated withclean_passafter 1 pass (no ask-backs, no missing concerns)). Open it and let me know if anything needs editing.
Banner termination trigger reflects the actual loop outcome — clean_pass (normal), regression, oscillation, stable_findings, no_op, or hard_cap. Any non-clean_pass trigger means residual concerns must follow in the banner as bullet items.
Korean (validator + self-check + cold-pickup passed):
저장 완료 —
docs/briefs/2026-04-23-feat-dark-mode-settings.md(feat: Dark mode toggle in Settings; 구조 검증 통과; 내용 자체 검증 통과 — 입력 항목 N개 모두 매핑됨; cold-pickupclean_pass로 1회 만에 종료 (ask-back 없음, missing 없음)). 파일 열어보고 고칠 부분 있으면 알려줘.
English (validator + self-check passed, cold-pickup auto-skipped on trivial signals):
Saved —
docs/briefs/2026-04-23-feat-dark-mode-settings.md(feat: Dark mode toggle in Settings; structural validation passed; content self-check passed — N input concerns covered; cold-pickup skipped: trivial signals (single-brief, stage-4-rows=0, open-questions=none, type=feat)). Tell merun cold-pickupor--cold-pickupif you want the sub-agent verification anyway.
English (validator failed):
Saved —
docs/briefs/2026-04-23-feat-dark-mode-settings.md, but the structural validator flagged 2 issue(s): ✗ ✗ The file is on disk. Want me to patch these, or will you edit directly?
Mirror any banner into the user's chat language as the Korean example above shows — translate the prose, keep paths, filenames, and technical fields (trivial signals (...), termination triggers, validator messages) verbatim.
When the structural validator fails, Stage 5.5 and Stage 5.6 are skipped — the brief is not yet well-formed enough to run content or cold-pickup checks against.
The banner stays as shown; do not append self-check skipped / cold-pickup skipped lines in this case.
If the structural validator passed but the Stage 5.5 self-check surfaced gaps that you fixed in place, mention what you patched so the user knows the brief was tightened before handoff (e.g., "self-check found 2 input concerns missing from In Scope; added them, re-validated").
If Stage 5.6 patched the brief after cold-pickup drift, report it the same way (e.g., cold-pickup flagged 2 gap(s); patched in place).
If the user used Force OFF triggers, report cold-pickup skipped per user request.
If Stage 5.6 was auto-skipped because no auto-ON trigger fired, report cold-pickup skipped: trivial signals (...) with the signal snapshot shown in the banner case above.
If the user requests changes, apply them with Edit against the on-disk file.
Do not re-render the full brief into chat — that defeats the point of save-then-review.
Re-run the validator after each edit pass and report the delta.
If the saved single brief contains Open Questions that require a user decision (after any Stage 5.6 patches have landed), present them immediately after the save report using the same four-column decision table from Stage 4:
| 순번 | 내용 | 수정 추천안 | 근거 |
|---|---|---|---|
| 1 | <Open Question requiring user decision> | <recommended patch to apply to the brief> | <why this cannot be delegated safely> |
After the user answers, patch the saved brief in place, move resolved questions into the appropriate sections, leave only genuinely unresolved or delegated questions in Open Questions, and re-run the validator plus Stage 5.5 self-check.
The user owns "done." Do not stage or commit the file. Loop on Stage 6 until they explicitly stop.
Why save-then-review: an earlier iteration rendered the full brief in chat for approval before writing to disk.
In hands-on use that flooded the conversation with markdown that renders poorly inside a code fence and was awkward to edit conversationally.
Writing to disk first lets the user review in their editor (real markdown, real diff tools, real inline edits) and lets the validator surface structural issues immediately.
The tradeoff — a file briefly on disk before approval — is neutral: docs/briefs/ is the intended home for these files, and the commit step stays with the user.
See references/template.md for:
The emitted brief is in English. Chat interaction language follows the user's input.
See references/work-types.md for:
See examples/ for worked end-to-end scenarios (input → codebase review → interview → output).
Start with examples/README.md for the index.
scripts/validate_brief.py is a stand-alone Python 3 script (no external deps) that verifies structural conformity of a saved brief.
It runs as step 5 of Stage 5 (save + validate) but can also be run ad-hoc against any existing brief.
Always resolve the script path against <skill-dir> — the installed skill package directory containing this SKILL.md — never against the user's repository:
python3 <skill-dir>/scripts/validate_brief.py \
docs/briefs/2026-04-23-feat-global-hotkey-system.md
Exit codes: 0 pass, 1 structural failure, 2 file I/O error.
Scope of the validator (deliberately structural only):
In Scope / Out of Scope H3s; duplicate H2 sections are rejected.Reproduction / Baseline Measurement / Behavior Contract) present and populated for the matching type.- [ ] format in checklist sections; populated Open Questions with - None — <reason> when no questions remain.Related Files / Entry Points resolve on disk (skipped when the bullet carries the exact literal token (proposed)).Constraints heading shape.Out of Scope bullets without [hard] or [deferred] classification.
The validator does not judge whether the classification is semantically correct.Out of scope (still on the human): concreteness of bullets, whether Out-of-Scope entries are real guardrails vs. filler, whether entry points are good (the path-existence check only catches fabricated paths, not poorly-chosen ones), whether Acceptance Criteria are measurable, whether the type-conditional section's content is sufficient.
For briefset mode, use scripts/validate_briefset.py on the parent file — it validates the parent structure and re-runs validate_brief.py's checks transitively on every referenced child brief, so one invocation covers the whole set:
python3 <skill-dir>/scripts/validate_briefset.py \
docs/briefs/2026-04-30-briefset-checkout-i18n.md
Same exit codes.
See references/briefset.md for what the parent validator checks and what stays on the human reviewer.
Related Files / Entry Points is mandatory because it is the downstream agent's starting route.
If the codebase review does not surface at least one concrete file, directory, route, command, module, related brief, or confirmed proposed path, ask the user to provide or confirm the entry point before saving the brief.PaymentService interface" is a real guardrail.Out of Scope tells the downstream coding agent what not to do.
Put bounded implementation choices in Constraints, and user-owned unresolved choices in Open Questions.references/briefset.md).
Briefset mode is the supported way to handle multi-context work — do not stuff multiple unrelated tasks into a single brief unless the user explicitly chooses single-brief after the recommendation, and do not nest briefsets (a child cannot become a parent).
When the contexts share no dependency, no ordering, and no conflict hotspot, recommend separate single-brief invocations instead of a briefset (see Stage 1).references/stage-4-interview.md for the table rules and termination conditions.Self-check before invoking Write in Stage 5.
The structural validator catches format errors after the fact; this list catches content gaps it cannot see.
YYYY-MM-DD-<type>-<slug>.md.<type> is one of the ten Conventional Commits types.# [<type>] <title>.Current State (As-Is) and Desired Outcome (To-Be) are both populated and distinguishable.fix / perf / refactor, the type-conditional section (Reproduction / Baseline Measurement / Behavior Contract) is present and populated — - N/A — <reason> if genuinely none.Out of Scope has at least one specific entry (or an explicit "None — self-contained." with rationale).
Use [hard] for must-not-touch guardrails and [deferred] for follow-up work when the distinction matters.Acceptance Criteria are measurable (checkable, not aspirational).Related Files / Entry Points entries are existing repo paths, verified references, or confirmed proposed paths.
Paths under inline-code that are not yet created carry the exact literal token (proposed) so the structural validator does not flag them as fabricated — variants like (proposed edit) are not recognized.
Each entry routes the agent's first read or first edit, not just "related file" context.Open Questions uses - None — <reason> only if the brief is genuinely unambiguous; otherwise populate it with real questions.Evaluated after Stage 5.5 / 5.6 have run or been skipped, immediately before reporting the Stage 6 banner — these items cannot be checked before Write.
Open Questions / type ∈ {fix, perf, refactor}) OR the user used Force ON triggers.trivial signals (...) snapshot when no auto-ON trigger fired and no Force ON was used.cold-pickup skipped per user request) when Force OFF was used, even if auto-ON triggers would have fired.npx claudepluginhub buyoung/skills --plugin devops-skillsGenerates structured work-brief Markdown files at docs/briefs/ from planning notes or task descriptions, with brief body in caveman prose. Eight sections keyed to Conventional Commits types. Supports briefset mode for multi-context tasks.
Generates executable Markdown implementation plans for multi-step tasks from context briefs, resolving ambiguities, ordering dependencies, and enabling parallel worker execution.