Every skill that posted to news.py now uses radio.py post, every SendMessage to a peer who must act becomes radio.py send direct --wake (which prints the SendMessage fallback for sessions without a listener), and every request for the chair's grant becomes queue.py hold. kvb-check-gate wraps gate.py run in queue.py hold; the operator sweep is one broadcast without a wake. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.3 KiB
name, description
| name | description |
|---|---|
| kvb-create-requirement | Write a requirement: user story, decisions, Mermaid approach, acceptance criteria, tests. Trigger on "requirement schreiben" or a kvb-think-gaps pick. |
Writes requirements, never implementations. Nothing touches disk before the
operator picks Write it.
Step 1: context
Ask the operator for the context first, in one open question: what should
change, for whom, and why now. A candidate handed over by the
kvb-think-gaps skill already carries it. Read what the answer points to
(code, issues, logs, existing requirements) before the next step.
Step 2: listen
Run the kvb-think-listen skill until scope, constraints, the definition of
done and every operator-only decision are fixed. Its answers become the
Decisions section.
Step 3: brainstorm
Run the kvb-think-brainstorm skill on the approach. The operator's pick
becomes a decision; each rejected option stays there with its reason.
Step 4: draft
Location, filename and numbering follow the project's existing requirement documents; read them first, and ask when there are none. One feature per document: a title that needs "and" is two requirements. Sections in this order:
-
# <number> - <title> -
## User Story: "As a , I want , so that ." -
## Decisions (operator-confirmed <YYYY-MM-DD>; do not re-litigate): numbered, a bold keyword first, rejected alternatives with their reason. -
## Approach: one Mermaidflowchart TDover the whole procedure, onesubgraphper phase with an emoji title and an emoji in every node:flowchart TD subgraph P["🧭 0 · Preparation"] P1["📋 Write requirement"] --> P2{"✅ Operator approves?"} P2 -- "✏️ corrections" --> P1 end P2 -- "🤖 yes" --> A1 subgraph A["🛠️ A · Implementation"] A1["🧩 Change"] --> A2{"🧪 Tests green?"} A2 -- "🔴 no: fix" --> A1 A2 -- "🟢 yes" --> AF{"💬 Operator feedback?"} AF -- "✏️ changes" --> A1 end AF -- "👍 fits" --> D1["🏁 Review, commit with operator OK, hand-over"]Every verifiable stage gets its test loop and an operator feedback checkpoint; a user-visible change shows screenshots at that checkpoint.
-
## Acceptance Criteria: grouped under###per area. Each item is a- [ ]that one check proves or disproves on its own: a command, afile:line, a test name, an observable state. No "should", no "works well". -
### Tests, the last group:Unit,IntegrationandE2E, each with its criteria. A level that cannot apply stays withn/a: <reason>.
Step 5: confirm and write
Show the full draft, then AskUserQuestion: Write it / Revise it /
Discard. Revise loops back to the step the correction touches. Write only
on Write it; lint the file with the project's markdown linter, a light run
that self-admits with
${CLAUDE_SKILL_DIR}/../kvb-org-organize/scripts/watch.py admit --kind test-nostack; a lint through make or Docker runs through queue.py hold
(the kvb-org-queue skill).
Step 6: hand over
Stop after writing. Offer in one line to run the kvb-create-plan skill,
which hands the plan to the kvb-org-robot skill; never start the
implementation without the operator's yes.