agentleFS
michele-orsini-71michele-orsini-71/claude-skills/brief-chat/SKILL.md

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.

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
  1. Distinctive:

    Ask the developer to describe the feature or change they want to plan.

    line 26
  2. Distinctive:

    Keep the conversation open-ended.

    line 36
  3. Distinctive:

    When the developer is talking, listen and reason.

    line 39
  4. Distinctive:

    If a branch depends on an unresolved parent, resolve the parent first.

    line 51
  5. Distinctive:

    When you have a recommendation, put it on the line below the question in parentheses with a one-line rationale, ending in "Yes?".

    line 52
  6. Distinctive:

    Backtracking is part of the game: If a lower-level answer breaks an upper-level decision, walk back and re-ask the upper one.

    line 57
  7. Distinctive:

    If a question can be answered by reading the codebase, read it (or spawn a subagent) instead of asking the developer to recall.

    line 60
  8. Distinctive:

    Stress-test rationales: When a rationale feels thin, say so directly: _"This part isn't convincing yet — what happens when…?"_.

    line 78
  9. Distinctive:

    Question the overall approach before the details: Ask _"Have you considered solving this differently?"_ or _"What alternatives did you rule …

    line 81
  10. Distinctive:

    Keep your own turns concise.

    line 84
  11. Distinctive:

    When you need codebase evidence to reason about an approach (existing patterns, conflicting code, reusable utilities), spawn a subagent:

    line 90
  12. Distinctive:

    Before the developer finalizes, make sure each of these is resolved or explicitly marked N/A:

    line 102
  13. Distinctive:

    When the developer says "finalize" (or equivalent intent):

    line 119
  14. Distinctive:

    All decisions with rationale

    line 124
  15. Distinctive:

    Ask explicitly: _"Does this capture everything?

    line 127
  16. Distinctive:

    Wait for explicit approval: Do not write until you receive it.

    line 129
  17. Distinctive:

    After the artifact is finalised, launch a multi-agent review to find weak and unclear points.

    line 137
  18. Distinctive:

    After all reviewers complete, launch a subagent to read and categorise the feedback.

    line 195
  19. Very specific:

    Read the artifact at <artifact-path>.

    line 200
  20. Distinctive:

    Read each review output file that exists in the current directory (skip files for unavailable reviewers).

    line 201
  21. Distinctive:

    If no → it is Noise. Examples of noise: YAML frontmatter shape, formatting, naming, version pins, prose style, "be more specific" requests …

    line 205
  22. Distinctive:

    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 …

    line 249
  23. Distinctive:

    Do not edit the artifact during Stage 1 or Stage 2.

    line 258
  24. Distinctive:

    If the developer has not yet replied to the current question, your next message must be the question itself or a clarifying follow-up — …

    line 260
  25. Distinctive:

    After Stage 1 and Stage 2 are both resolved:

    line 266
  26. Distinctive:

    Ask: _"Apply these changes to the artifact?

    line 270
  27. Very specific:

    Delete the review output files created in Step 4.1 (the _subagent.md, _codex.md, _gemini.md files) — the triage has distilled their content …

    line 277
  28. Distinctive:

    If yes: repeat from Step 4.1.

    line 283
  29. Distinctive:

    If no: confirm the artifact is final and suggest the developer can use it as input for their planning tool of choice.

    line 284
  30. Distinctive:

    When the developer says "cancel", "discard", or "abort" (or equivalent intent):

    line 291
  31. Distinctive:

    Ask for confirmation: _"Discard this session?

    line 293
  32. Distinctive:

    If the developer confirms, ask: _"Any reason worth noting?

    line 294
  33. Very specific:

    If a reason was provided, set discard_reason to the developer's answer.

    line 299
  34. Distinctive:

    If the developer declines in step 1, continue the conversation normally.

    line 302
  35. Very specific:

    Use the Agent tool to spawn subagents for codebase research.

    line 367
  36. Distinctive:

    After the subagent returns, distil findings into 2-4 bullets before presenting to the developer.

    line 374
  37. Distinctive:

    Never include absolute paths with usernames in the artifact body.

    line 402
  38. Distinctive:

    Never include secrets, API keys, or credentials.

    line 403
  39. Distinctive:

    Use relative paths from project root when referencing codebase files in the artifact body.

    line 404

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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

  1. Ask the developer to describe the feature or change they want to plan.
  2. 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.
  3. Resolve the artifact path: ./<slug>.md (in the current working directory).
  4. Confirm to the developer: "Session started — artifact will be written to ./<slug>.md on 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):

  1. 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)
  2. Ask explicitly: "Does this capture everything? Shall I write the final artifact?"
  3. Wait for explicit approval. Do not write until you receive it.
  4. On approval: write the final artifact, set status: finalized, set last_updated to 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:

  1. Claude subagent (always available) — use the Agent tool with run_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."
  2. 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 $HOME instead of the literal home directory path). Parse the last stdout line for status (codex:done, codex:unavailable, codex:error:<msg>).

  3. 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:

  1. Read the artifact at <artifact-path>.
  2. Read each review output file that exists in the current directory (skip files for unavailable reviewers).
  3. 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.
  4. 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.
  5. Aggregate Noise into a count only — do not list each item.
  6. 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:

  1. Show a short consolidated plan: which Valid fixes will be applied, which Need-your-input items resolved which way, and what is being skipped.
  2. Ask: "Apply these changes to the artifact? (yes/no)"
  3. Wait for explicit approval.
  4. On approval: apply only the approved changes. Set last_updated to 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):

  1. Ask for confirmation: "Discard this session? (yes/no)"
  2. If the developer confirms, ask: "Any reason worth noting? (or just press Enter to skip)"
  3. Update the artifact:
    • Set status: discarded.
    • Set discarded_at to the current UTC timestamp.
    • If a reason was provided, set discard_reason to the developer's answer.
    • Set last_updated to the current UTC timestamp.
  4. Confirm: "Session discarded — artifact kept at <path>."
  5. 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 Findings section 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.