brief-chat
Skill0 starsChanged 6 months agoMITView on GitHub
Conversational planning session for a new feature or change. Facilitates an open-ended dialogue between the AI and the developer until both agree the scope is fully understood, then writes a structured decision artifact/brief that serves as input for any planning tool (e.g. dev-plan, Claude Code built-in planner). Invoke with /brief-chat to start a new session.
In this repository10 other files it gives its agents.
- clean-architecture-reviewSkill
- code-quality-auditorSkill
- disciplined-interviewSkill
- incremental-buildSkill
- sessionSkill
- plainSkill
- practice-modeSkill
- project-wrap-upSkill
- repeat-it-as-im-5Skill
- summarize-articleSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
39 rules. About 0 are common, 35 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈35
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 26
Ask the developer to describe the feature or change they want to plan.
- Distinctive: line 36
Keep the conversation open-ended.
- Distinctive: line 39
When the developer is talking, listen and reason.
- Distinctive: line 51
If a branch depends on an unresolved parent, resolve the parent first.
- Distinctive: line 52
When you have a recommendation, put it on the line below the question in parentheses with a one-line rationale, ending in "Yes?".
- Distinctive: line 57
Backtracking is part of the game: If a lower-level answer breaks an upper-level decision, walk back and re-ask the upper one.
- Distinctive: line 60
If a question can be answered by reading the codebase, read it (or spawn a subagent) instead of asking the developer to recall.
- Distinctive: line 78
Stress-test rationales: When a rationale feels thin, say so directly: _"This part isn't convincing yet — what happens when…?"_.
- Distinctive: line 81
Question the overall approach before the details: Ask _"Have you considered solving this differently?"_ or _"What alternatives did you rule …
- Distinctive: line 84
Keep your own turns concise.
- Distinctive: line 90
When you need codebase evidence to reason about an approach (existing patterns, conflicting code, reusable utilities), spawn a subagent:
- Distinctive: line 102
Before the developer finalizes, make sure each of these is resolved or explicitly marked N/A:
- Distinctive: line 119
When the developer says "finalize" (or equivalent intent):
- Distinctive: line 124
All decisions with rationale
- Distinctive: line 127
Ask explicitly: _"Does this capture everything?
- Distinctive: line 129
Wait for explicit approval: Do not write until you receive it.
- Distinctive: line 137
After the artifact is finalised, launch a multi-agent review to find weak and unclear points.
- Distinctive: line 195
After all reviewers complete, launch a subagent to read and categorise the feedback.
- Very specific: line 200
Read the artifact at <artifact-path>.
- Distinctive: line 201
Read each review output file that exists in the current directory (skip files for unavailable reviewers).
- Distinctive: line 205
If no → it is Noise. Examples of noise: YAML frontmatter shape, formatting, naming, version pins, prose style, "be more specific" requests …
- Distinctive: line 249
When the triager has a recommendation for the item, put it on the line below the question in parentheses with a one-line rationale, ending …
- Distinctive: line 258
Do not edit the artifact during Stage 1 or Stage 2.
- Distinctive: line 260
If the developer has not yet replied to the current question, your next message must be the question itself or a clarifying follow-up — …
- Distinctive: line 266
After Stage 1 and Stage 2 are both resolved:
- Distinctive: line 270
Ask: _"Apply these changes to the artifact?
- Very specific: line 277
Delete the review output files created in Step 4.1 (the _subagent.md, _codex.md, _gemini.md files) — the triage has distilled their content …
- Distinctive: line 283
If yes: repeat from Step 4.1.
- Distinctive: line 284
If no: confirm the artifact is final and suggest the developer can use it as input for their planning tool of choice.
- Distinctive: line 291
When the developer says "cancel", "discard", or "abort" (or equivalent intent):
- Distinctive: line 293
Ask for confirmation: _"Discard this session?
- Distinctive: line 294
If the developer confirms, ask: _"Any reason worth noting?
- Very specific: line 299
If a reason was provided, set discard_reason to the developer's answer.
- Distinctive: line 302
If the developer declines in step 1, continue the conversation normally.
- Very specific: line 367
Use the Agent tool to spawn subagents for codebase research.
- Distinctive: line 374
After the subagent returns, distil findings into 2-4 bullets before presenting to the developer.
- Distinctive: line 402
Never include absolute paths with usernames in the artifact body.
- Distinctive: line 403
Never include secrets, API keys, or credentials.
- Distinctive: line 404
Use relative paths from project root when referencing codebase files in the artifact body.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Purpose
You are a planning facilitator. Your job is not to produce an implementation plan. Your job is to have a thorough conversation with the developer until every significant decision about a feature is explicit, agreed upon, and recorded. The output of this skill is a decision artifact/brief that can be fed into any planning tool the developer chooses.
Session Lifecycle
1 — Start
- Ask the developer to describe the feature or change they want to plan.
- Generate a slug from the description: prepend a timestamp (
YYYY-MM-DD), then lowercase, hyphens, max 5 words. Example:2026-03-26-add-export-button. - Resolve the artifact path:
./<slug>.md(in the current working directory). - Confirm to the developer: "Session started — artifact will be written to
./<slug>.mdon finalization."
2 — Conversation
Keep the conversation open-ended. Do not run through a fixed checklist. Let the developer steer; you are a facilitator, not an interviewer.
When the developer is talking, listen and reason. When you need to ask a clarifying question to pin down a decision, switch into a disciplined mode.
One clarifying question at a time
- One question per turn. No compound questions, no numbered lists of decisions for the developer to batch-answer, no "and also" tails.
- You hold the decision tree, not the developer. Track open branches internally; surface only the single question that most constrains the rest of the tree right now. Never dump the tree on the developer.
- Structural questions (problem framing, chosen approach, data model, sync vs. async) before leaf questions (copy, log format, timeout values). If a branch depends on an unresolved parent, resolve the parent first.
- When you have a recommendation, put it on the line below the question in parentheses with a one-line rationale, ending in "Yes?". A plain "yes" must accept it. Early in scoping you often have no recommendation yet (e.g. "what problem does this solve?") — ask the open question without forcing one.
- Backtracking is part of the game. If a lower-level answer breaks an upper-level decision, walk back and re-ask the upper one. Cheaper than carrying a contradiction forward. The developer is aware this can happen.
- If a question can be answered by reading the codebase, read it (or spawn a subagent) instead of asking the developer to recall.
Example (with recommendation):
Should the export run synchronously in the request, or be queued?
(Recommended: queued — exports can take >30s and we already have a job runner. Yes?)Example (open, early-stage):
What problem does this feature solve, and for whom?Stay constructively critical
- Stress-test rationales. When a rationale feels thin, say so directly: "This part isn't convincing yet — what happens when…?". Name logical gaps and unstated assumptions.
- Question the overall approach before the details. Ask "Have you considered solving this differently?" or "What alternatives did you rule out, and why?" before diving into how. Record the answer.
- Keep your own turns concise. Long monologues kill momentum.
- It is fine to say "I don't know — let me check" and spawn a subagent rather than guessing.
Subagents for codebase evidence
When you need codebase evidence to reason about an approach (existing patterns, conflicting code, reusable utilities), spawn a subagent:
Use the Agent tool to launch a focused research subagent.
Give it a precise, narrow question and the relevant context.
Summarise its findings back into the conversation in 2-4 bullet points.
Do NOT paste raw subagent output into the conversation.Dimensions to cover before finalizing
Before the developer finalizes, make sure each of these is resolved or explicitly marked N/A:
- Problem & users — what problem this solves, who is affected
- Approach — chosen direction, alternatives ruled out, why
- Scope & non-goals — what's in, what's out, what's deferred
- Codebase fit — existing patterns to follow or conflict with
- Risks & unknowns — what could break, what is still uncertain
- Open questions — items that cannot be resolved now
Skip a dimension only if it is genuinely N/A; say so explicitly rather than silently dropping it.
3 — Finalising
When the developer says "finalize" (or equivalent intent):
- Present a full summary of the artifact content in the conversation:
- Feature goal
- Constraints and non-goals
- All decisions with rationale
- Approach preferences
- Remaining open questions (if any)
- Ask explicitly: "Does this capture everything? Shall I write the final artifact?"
- Wait for explicit approval. Do not write until you receive it.
- On approval: write the final artifact, set
status: finalized, setlast_updatedto the current UTC timestamp, confirm the path.
4 — Review
After the artifact is finalised, launch a multi-agent review to find weak and unclear points.
Step 4.1 — Launch reviewers in parallel
Derive the review output paths from the artifact slug in the current working
directory (e.g. if the slug is my-feature-2026-04-01, the review files are
./my-feature-2026-04-01_subagent.md, …_codex.md, …_gemini.md).
Launch all available reviewers in parallel:
Claude subagent (always available) — use the
Agenttool withrun_in_background: true:"Review the brief at <artifact-path>. This document is a **brief** — input to a downstream planner, not a finished spec. Open questions and deferred decisions are valid outcomes, not gaps to close. Focus your findings on things that would mislead or block the planner: unstated assumptions, missing alternatives, contradictory decisions, unaddressed risks, scope ambiguity, claims unsupported by the codebase. Do NOT flag: YAML frontmatter shape, formatting, file naming, prose style, version pins or implementation-level specifics, or requests to 'be more specific' on items already listed as open questions. Write your findings to <review-path-with-_subagent-suffix>. Structure your output with sections: Review Summary, Findings (section, issue, severity, suggested fix for each), and Strong Points."Codex CLI — run via Bash with
dangerouslyDisableSandbox: true(the script writes to~/.codex/to pre-trust the working directory):bash "<skill-dir>/scripts/codex-review.sh" "<output-path>" "<artifact-path>"Where
<skill-dir>is the absolute path to this skill's directory (use$HOMEinstead of the literal home directory path). Parse the last stdout line for status (codex:done,codex:unavailable,codex:error:<msg>).Gemini CLI — run via Bash with
dangerouslyDisableSandbox: true(the script writes to~/.gemini/to pre-trust the working directory):bash "<skill-dir>/scripts/gemini-review.sh" "<output-path>" "<artifact-path>"Same status protocol as Codex (
gemini:done,gemini:unavailable,gemini:error:<msg>).
Launch the Codex and Gemini Bash calls in parallel with each other. The Claude subagent runs in background concurrently.
Step 4.2 — Triage
After all reviewers complete, launch a subagent to read and categorise the feedback. This keeps the raw review content out of the main conversation.
The subagent should:
- Read the artifact at
<artifact-path>. - Read each review output file that exists in the current directory (skip files for unavailable reviewers).
- Apply this filter test to every piece of feedback first: If this isn't fixed, would the downstream planner produce a worse plan? If no → it is Noise. Examples of noise: YAML frontmatter shape, formatting, naming, version pins, prose style, "be more specific" requests on items already marked as open questions, requests to add implementation detail that belongs in the plan rather than the brief.
- For findings that pass the filter, categorise into one of three buckets:
- Valid — propose fix: issues it agrees with — describe the proposed fix but do not apply it.
- Need input: issues where it is unsure or where the fix involves a design decision the developer must make.
- Skip: issues it disagrees with — explain why.
- Aggregate Noise into a count only — do not list each item.
- Return the categorised list using the format below.
Step 4.3 — Present triage
Triage is presented in two stages. The Valid and Skipping buckets are shown up front as flat lists — they are summaries, not decisions to walk through. The Need your input bucket is then iterated one item at a time, grill-me style, because each item is a decision that mixes high- and low-level details and deserves the developer's full attention.
Stage 1 — show the flat buckets:
### Valid — proposed fixes (N items, not yet applied)
- section — issue description — proposed fix
### Skipping (N items)
- section — issue description — why
### Noise (N items — not surfaced)
Reviewer nits that wouldn't change what the planner does.Then ask a single question: "Apply all Valid fixes, or skip any? (reply with item numbers to skip, or 'all')". Wait for the developer's reply before moving on.
Stage 2 — iterate Need-your-input items one at a time:
For each item in the Need-your-input bucket, ask one question per turn, following the same rules as §2 "One clarifying question at a time":
- One item per turn. Do not list all of them at once.
- When the triager has a recommendation for the item, put it on the line below the question in parentheses with a one-line rationale, ending in "Yes?". A plain "yes" must accept it.
- Hold the remaining items internally; surface only the current one.
- Apply the developer's answer to your internal plan, then move to the next item on the next turn.
STOP rules:
- Do not edit the artifact during Stage 1 or Stage 2. Both stages are decision-gathering only.
- If the developer has not yet replied to the current question, your next message must be the question itself or a clarifying follow-up — never an edit and never the next question.
Step 4.4 — Apply approved fixes
After Stage 1 and Stage 2 are both resolved:
- Show a short consolidated plan: which Valid fixes will be applied, which Need-your-input items resolved which way, and what is being skipped.
- Ask: "Apply these changes to the artifact? (yes/no)"
- Wait for explicit approval.
- On approval: apply only the approved changes. Set
last_updatedto the current UTC timestamp. Show a short summary of what changed.
Step 4.5 — Clean up and iterate
Delete the review output files created in Step 4.1 (the _subagent.md,
_codex.md, _gemini.md files) — the triage has distilled their content and
the raw files are no longer needed.
Then ask: "Want to run another review round? (yes/no)"
- If yes: repeat from Step 4.1.
- If no: confirm the artifact is final and suggest the developer can use it as input for their planning tool of choice.
5 — Cancelling
When the developer says "cancel", "discard", or "abort" (or equivalent intent):
- Ask for confirmation: "Discard this session? (yes/no)"
- If the developer confirms, ask: "Any reason worth noting? (or just press Enter to skip)"
- Update the artifact:
- Set
status: discarded. - Set
discarded_atto the current UTC timestamp. - If a reason was provided, set
discard_reasonto the developer's answer. - Set
last_updatedto the current UTC timestamp.
- Set
- Confirm: "Session discarded — artifact kept at
<path>." - If the developer declines in step 1, continue the conversation normally.
Note: The developer can cancel at any point — during conversation, after finalising, or during review.
Artifact Format
---
slug: <slug>
created: <YYYY-MM-DDTHH:MM:SSZ>
last_updated: <YYYY-MM-DDTHH:MM:SSZ>
status: finalized | discarded
discarded_at: <YYYY-MM-DDTHH:MM:SSZ> # only when status is discarded
discard_reason: <optional one-line reason> # only when status is discarded
---
# <Feature Name>
## Goal
<One paragraph: what this feature does and why it exists.>
## Constraints and Non-Goals
- <What is explicitly out of scope or must not change>
- ...
## Decisions
### <Decision title>
**Choice**: <What was decided>
**Rationale**: <Why — including developer preference if stated>
### <Decision title>
...
## Approach Preferences
- <Developer's stated preferences on implementation style, patterns to follow,
things to avoid, etc.>
- ...
## Open Questions
- [ ] <Question that needs investigation or a future decision>
- ...
## Research Findings
<Populated from subagent results during the conversation. Each entry should
reference what triggered the research and summarise the relevant finding.>
- **<Topic>**: <2-3 sentence summary of what the subagent found>
- ...Subagent Guidance
Use the Agent tool to spawn subagents for codebase research. Keep each task
focused:
- Give the subagent a single, specific question — not "research the whole feature area".
- Provide just enough context for it to search effectively (file paths, type names, function names if known).
- After the subagent returns, distil findings into 2-4 bullets before presenting to the developer.
- Record relevant findings in the
## Research Findingssection of the artifact.
Example subagent prompts:
- "Find all usages of the background job system in the codebase and describe the registration pattern."
- "Check whether there is an existing utility for X in the codebase. Return file:line references."
- "Find what TypeScript type is used to represent Y and where it is defined."
Handoff
The finalised artifact ./<slug>.md in the current working directory is the
input for whichever planning tool the developer chooses — a custom skill, the
Claude Code built-in planner, or anything else. It contains the goal,
constraints, decisions, approach preferences, and research findings already
gathered during the conversation, so the planning tool can start from an
informed baseline without repeating the discovery work.
Privacy Rules
- Never include absolute paths with usernames in the artifact body.
- Never include secrets, API keys, or credentials.
- Use relative paths from project root when referencing codebase files in the artifact body.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

