| name | discuss |
| description | Facilitate design discussion — research context, clarify requirements, draft RFC/ADR |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep, TodoWrite |
| argument-hint | <topic-or-question> |
/discuss — Design Discussion Workflow
Facilitate a design discussion about: $ARGUMENTS
Purpose: Understand a design problem, research existing governance context, and produce draft RFC or ADR artifacts. This workflow is for the spec phase — no implementation, no work items.
Outputs: Draft RFC and/or proposed ADR, then handoff to /spec or /gov as appropriate.
Artifact roles: RFCs define obligations, ADRs explain decisions, and work items track execution. Keep those authority boundaries intact while drafting.
QUICK REFERENCE
govctl status
govctl rfc list
govctl adr list
govctl rfc new "<title>"
govctl clause new <RFC-ID>:C-<NAME> "<title>" -s "<section>" -k <kind>
govctl clause edit <RFC-ID>:C-<NAME> text --stdin <<'EOF'
clause text here
EOF
govctl adr new "<title>"
govctl adr set <ADR-ID> context --stdin <<'EOF' ... EOF
govctl adr add <ADR-ID> alternatives "Option: Description"
govctl adr add <ADR-ID> alternatives "Other option: Description" --reject-reason "Why it was not chosen"
govctl adr tick <ADR-ID> alternatives --at 1 -s rejected
govctl adr tick <ADR-ID> alternatives --at 0 -s accepted
govctl adr set <ADR-ID> decision --stdin <<'EOF' ... EOF
govctl adr set <ADR-ID> consequences --stdin <<'EOF' ... EOF
govctl adr add <ADR-ID> refs RFC-0001
govctl check
CRITICAL RULES
- Discussion-first — Understand the problem before proposing solutions
- Research existing context — Check what RFCs/ADRs already exist and reference them
- Draft only — Never finalize RFCs or accept ADRs in this workflow
- No work items — This is spec phase; work items come later with
/gov
- Ask when unclear — If requirements are ambiguous, ask clarifying questions
- Quality over speed — Produce complete, well-structured drafts
- Reference format — Always use
[[artifact-id]] syntax when referencing artifacts (e.g., [[RFC-0001]], [[RFC-0001:C-FOO]]) — in content fields AND code comments
- No lifecycle verbs —
accept, finalize, advance, and bump belong to /spec or /gov
- No raw VCS here — If draft artifacts should be recorded, hand off to
/commit
- Keep artifact roles clean — RFCs describe externally relevant behavior and constraints, ADRs describe trade-offs and rationale, and work items do not belong in this workflow
PHASE 0: CONTEXT DISCOVERY
0.1 Survey Existing Governance
Before discussing, understand what already exists:
govctl status
govctl rfc list
govctl adr list
0.2 Identify Relevant Artifacts
Based on $ARGUMENTS, identify RFCs and ADRs that might be relevant:
- Related RFCs: Specifications that touch the same domain
- Related ADRs: Previous decisions that constrain options
- Superseded artifacts: Old decisions that may need updating
Read relevant artifacts to understand existing constraints and decisions.
0.3 Note Project Configuration
Read gov/config.toml to understand project-specific settings that may affect the design.
PHASE 1: CLASSIFICATION & DISCUSSION
1.1 Classify the Topic
Parse $ARGUMENTS and classify:
| Type | Indicator | Output |
|---|
| New capability | "How should X work?", "Design Y feature" | RFC |
| Design choice | "Should we use A or B?", "Decide between..." | ADR |
| Clarification | "What does RFC-NNNN mean by...?" | Discussion only (no artifact) |
| RFC clarification | "Clarify RFC-NNNN", "Tighten clause wording" | RFC update (spec-only) |
| Amendment | "RFC-NNNN should change because..." | RFC amendment |
| Deprecation | "Deprecate X", "Remove Y behavior" | RFC amendment |
| Both | Complex feature with architectural decisions | RFC + ADR(s) |
Use the authority test when drafting:
- If the statement answers "what must be true?" -> RFC
- If it answers "why this option?" -> ADR
- If it answers "what are we doing right now?" -> not this workflow; that belongs in a work item
1.2 Discussion Phase
If requirements are clear: Proceed to Phase 2.
If requirements are ambiguous: Ask clarifying questions before proceeding.
Questions to consider:
- What problem are we solving?
- Who are the users/consumers?
- What are the constraints (performance, compatibility, complexity)?
- What are the trade-offs we're willing to make?
- Are there existing patterns we should follow or deviate from?
Do not invent requirements. If something is unspecified, ask.
1.3 Design Exploration
For complex topics, explore the design space:
- Identify options: What are the possible approaches?
- Analyze trade-offs: What does each option make easier/harder?
- Check constraints: What do existing RFCs/ADRs require or prohibit?
- Recommend: Which option best fits the project's needs?
If the decision is high-risk (2+ competing options with non-obvious trade-offs, irreversible change, or cross-cutting impact), follow the decision-analysis skill for a structured premortem/backcast analysis. The analysis output maps directly to ADR fields — see the skill's "Output → ADR Mapping" section.
Document this exploration — for ADRs, it should first become alternatives and only later become the final decision.
PHASE 2: DRAFT ARTIFACTS
2.1 RFC Drafting (if needed)
For structure, templates, and quality guidelines, follow the rfc-writer skill.
govctl rfc new "<title>"
govctl clause new <RFC-ID>:C-<NAME> "<title>" -s "<section>" -k <kind>
govctl clause edit <RFC-ID>:C-<NAME> text --stdin <<'EOF'
clause text
EOF
2.2 ADR Drafting (if needed)
For structure, templates, and quality guidelines, follow the adr-writer skill.
govctl adr new "<title>"
govctl adr set <ADR-ID> context --stdin <<'EOF' ... EOF
govctl adr add <ADR-ID> alternatives "Option: Description"
govctl adr tick <ADR-ID> alternatives --at 1 -s rejected
govctl adr tick <ADR-ID> alternatives --at 0 -s accepted
govctl adr set <ADR-ID> decision --stdin <<'EOF' ... EOF
govctl adr set <ADR-ID> consequences --stdin <<'EOF' ... EOF
govctl adr add <ADR-ID> refs RFC-NNNN
In this sequence, alternative 0 is the chosen option and alternative 1 is explicitly rejected.
ADR drafting order:
- Write
context
- Add and discuss
alternatives
- Mark rejected and accepted alternatives
- Only then write
decision
- Finish with
consequences
Historical backfills are the exception: if alternatives cannot be reconstructed, say so explicitly in context and write the best supported decision.
2.3 RFC Amendment (for changes to existing specs)
When existing RFC needs modification:
govctl clause edit <RFC-ID>:C-<NAME> text --stdin <<'EOF'
Updated specification text.
EOF
Note: Amendments to normative RFCs require careful consideration. Document the rationale for the change.
Clarification-only RFC updates that do not require implementation should hand off to /spec.
Behavior-changing amendments, including feature deprecations or removals, should hand off to /gov.
2.4 Validate Drafts
After creating artifacts:
govctl check
Fix any validation errors before proceeding.
2.5 Review Drafts
Invoke the appropriate reviewer agent on each draft artifact:
- RFC drafted → invoke the rfc-reviewer agent
- ADR drafted → invoke the adr-reviewer agent
Address Critical issues before handoff.
2.6 Record (Optional)
If draft artifacts should be recorded, use /commit with docs(rfc): draft <RFC-ID> for <summary> or docs(adr): draft <ADR-ID> for <summary>.
PHASE 3: HANDOFF
3.1 Summary Report
Present the discussion results:
=== DISCUSSION COMPLETE ===
Topic: $ARGUMENTS
Artifacts created:
- RFC-NNNN: <title> (draft, spec phase)
- ADR-NNNN: <title> (proposed)
Key decisions:
- <summary of main design choices>
Open questions:
- <any unresolved issues>
Related artifacts referenced:
- RFC-XXXX: <title>
- ADR-YYYY: <title>
3.2 Next Steps
Prompt the user for next action:
Ready to proceed?
Options:
1. /gov "<summary>" — Start governed implementation workflow
- Creates work item
- Finalizes RFC (with permission)
- Implements, tests, completes
2. /spec "<summary>" — Maintain governance artifacts without implementation
- Accepts ADRs with permission
- Clarifies or amends RFCs without code changes
- Validates and renders governance output
3. Continue discussing — Refine the drafts further
- Ask follow-up questions
- Add more clauses or detail
4. Pause — Save drafts, return later
- Drafts can be recorded with `/commit` and resumed later
If the only follow-up is standalone non-behavioral cleanup unrelated to the drafted RFC/ADR (for example, wording-only docs cleanup), `/quick` may be used separately. Do not use `/quick` to implement behavior from these drafts.
ERROR HANDLING
When to Stop and Ask
- Conflicting requirements — existing RFCs/ADRs contradict each other
- Scope unclear — cannot determine what's in/out of scope
- Missing context — need information not available in codebase
- Breaking change — proposal would break existing normative behavior
When to Proceed
- Minor ambiguity — make reasonable assumption, document it
- Style questions — follow existing patterns in the codebase
- Optional details — defer to implementation phase
CONVENTIONS
Artifact References
Use [[artifact-id]] syntax for inline references in content fields:
# Good - expands to clickable link when rendered
context = "Per [[RFC-0001]], all RFCs must have a summary clause."
# Also good for clauses
decision = "Follow [[RFC-0001:C-SUMMARY]] structure."
# Bad - plain text, not linked
context = "Per RFC-0001, all RFCs must have a summary clause."
Also use in source code comments for implementation traceability:
fn validate() { ... }
This enables govctl check to validate all references exist and are not deprecated.
For RFC 2119 keywords and clause conventions, see the rfc-writer skill.
For ADR structure and field conventions, see the adr-writer skill.
DISCUSSION CHECKLIST
BEGIN DISCUSSION NOW.