--- name: creating-stakeholder-packet description: Use when a delivery run needs a Stakeholder Input Packet and none exists or the existing one has gaps, OPEN items, hedges, or contradictions — e.g., the project idea lives in a conversation, loose notes, or a short brief. Required before the requirements-analyst agent (and therefore the whole pipeline) can run. --- # Creating the Stakeholder Input Packet ## Overview The packet (template: `templates/stakeholder-input-packet.md`, sections §1–§17) is the sole source of business truth for the entire agent pipeline. Core principle: **nothing enters the packet that the stakeholder did not say or explicitly confirm.** This skill extracts the packet through an interview. It never authors business truth — a drafted rule the stakeholder never confirmed is corrupted input that every downstream agent will faithfully build on. ## When to Use - New project: the idea exists only in someone's head, chat messages, or a short brief. - An existing packet draft has `OPEN` items, hedges ("maybe", "I think"), or contradictions to resolve. **Do NOT use for:** - A complete, confirmed packet → invoke the `delivery-orchestrator` agent directly. - A mid-run scope change → write a packet **amendment** per the Agent Handoff Protocol §3.3. Never edit the frozen copy under `runs//00-packet/`, never restart the interview. ## The Interview Loop ```dot digraph interview_loop { "Intake: map input to §1–§17" [shape=box]; "Any section EMPTY/PARTIAL, hedge, or contradiction?" [shape=diamond]; "Interview round (≤4 questions)" [shape=box]; "Read back §5, §8, §13, §15 for confirmation" [shape=box]; "Completeness gate passes?" [shape=diamond]; "Save packet, hand off to pipeline" [shape=box]; "Intake: map input to §1–§17" -> "Any section EMPTY/PARTIAL, hedge, or contradiction?"; "Any section EMPTY/PARTIAL, hedge, or contradiction?" -> "Interview round (≤4 questions)" [label="yes"]; "Interview round (≤4 questions)" -> "Any section EMPTY/PARTIAL, hedge, or contradiction?" [label="update map"]; "Any section EMPTY/PARTIAL, hedge, or contradiction?" -> "Read back §5, §8, §13, §15 for confirmation" [label="no"]; "Read back §5, §8, §13, §15 for confirmation" -> "Completeness gate passes?"; "Completeness gate passes?" -> "Save packet, hand off to pipeline" [label="yes"]; "Completeness gate passes?" -> "Interview round (≤4 questions)" [label="no — gaps remain"]; } ``` ## Phase 1 — Intake & Mapping 1. Read the template `templates/stakeholder-input-packet.md` in full first — its prompts AND its worked example set the expected level of detail. 2. Collect whatever input exists. Quote-map every stakeholder statement to a section §1–§17. 3. Mark each section: **FILLED** = its template prompt could be answered without further asking; **PARTIAL** = statements map to it but fall short of the template's detail; **EMPTY** = nothing maps. List every hedge and contradiction separately — each must be resolved by a question, never hardened into a fact. 4. Persist the map, the hedge/contradiction lists, and the pending question queue to `packet-interview-state.md` next to the intended packet destination. This file is working state, never the packet; resume an interrupted interview from it. An unconfirmed packet is never saved as the packet — if the stakeholder becomes unavailable, the work stays in this file. ## Phase 2 — Interview Rounds - **≤4 questions per round.** Plain language only — the stakeholder is non-technical; no schema/auth/API vocabulary. - Use `AskUserQuestion` when available (concrete options + free-text always possible); otherwise numbered questions in chat. - **Priority order:** §1–§5 (identity, roles, journeys, features, rules) → §6–§9 (data, touchpoints, permissions, privacy) → §10–§15 → §16–§17. - One topic per question. Show the expected detail level by borrowing from the template's worked example. - "I don't know" is a valid answer → mark `OPEN` with enough context for the Requirements Analyst to form a clarification question. **`OPEN` is permitted only after the stakeholder was actually asked.** - Convert every relative date to an absolute date (today + offset). Collect domain words for §17 as they appear. - Money, identity, and irreversibility hide the biggest gaps: if anything is charged, paid, refunded, deleted, or restricted, drill until the rule is a single testable sentence (amount, boundary moment, who can override). Per-section question bank and gap probes: see interview-guide.md in this directory. ## Phase 3 — Draft & Read-Back Draft each section in the stakeholder's own words. Then read back **verbatim for explicit confirmation** the four normative sections: | Section | Becomes | |---|---| | §5 Business Rules | system invariants + automated safety tests | | §8 Permissions | the enforced permission matrix | | §13 Acceptance Examples | the release gate | | §15 Out of Scope | orphan detection; unlisted = excluded by default | A "yes, that's right" from the stakeholder is required per section. Unconfirmed drafts of these sections may not ship in the packet. When you reword a vague answer into a testable sentence (common for §5 rules and §13 examples), the reworded sentence you read back and the stakeholder confirms **becomes** their wording. §17 glossary definitions are confirmed the same way. ## Phase 4 — Completeness Gate All must hold before saving: - [ ] All 17 sections present; each FILLED or carrying explicit `OPEN` items. - [ ] §2: every role has who / approximate count / needs. §8 covers **every** §2 role with can / can-never. - [ ] §3: 3–7 journeys, each with at least one thing-goes-wrong path. - [ ] §4: every feature tagged MUST / SHOULD / LATER. No effort or time estimates anywhere in the packet (an absolute deadline date in §14 is a constraint, not an estimate). - [ ] §5: each rule is one testable plain sentence. - [ ] §13: 5–10 concrete, checkable statements. - [ ] §16: a named human decision-maker with response expectations. - [ ] No unconfirmed hedges, no relative dates, every contradiction resolved or `OPEN`. - [ ] Spot-check against the template's traceability appendix: each section's consuming agents could act on what is written. ## Phase 5 — Save & Hand Off 1. Confirm the file destination with the operator running the session. Default: `runs/-/00-packet/stakeholder-input-packet.md` (the frozen copy per the Agent Handoff Protocol §1). Content confirmations always come from the stakeholder; file-location and process confirmations come from the operator — these may be different people. 2. Delete or archive `packet-interview-state.md` once the packet is saved. 3. Recommend the next step: invoke the `delivery-orchestrator` agent for a full run, or the `requirements-analyst` agent directly for a packet dry-run before committing to a run. ## Common Mistakes | Mistake | Reality | |---|---| | Drafting the whole packet from the brief, flagging gaps as `OPEN` without asking | That is the Requirements Analyst's failure mode inverted. This skill exists to ASK. `OPEN` only after the question was put to the stakeholder. | | Hardening hedges ("maybe WhatsApp" → "WhatsApp notifications: MUST") | A hedge is a question, not a decision. Ask, or carry the hedge as `OPEN`. | | Inventing journeys, permissions, or acceptance examples "as a starting point" and moving on | Proposing options inside a question is fine. Recording them as packet content without a "yes" is fabrication. | | Firehosing 15 questions at once | Stakeholders abandon long questionnaires. ≤4 per round, highest-priority gaps first. | | Leaving "in three months" in the packet | Downstream agents cannot resolve it. Write the absolute date. | | Treating "I don't know" as failure | It is signal. Mark `OPEN`; the analyst batches it for the decision-maker. | | Skipping the read-back because answers were clear | §5/§8/§13/§15 become tests, gates, and enforcement. Confirmation is the contract. | ## Red Flags — Stop and Return to the Loop - You are writing a §5 rule or §8 permission the stakeholder never stated. - You are about to save with a section you never asked about. - A question round contains technical vocabulary. - "The example packet had X, so this project probably needs X too" — the worked example calibrates detail, it does not supply content.