brutal-plan/SKILL.md
Collaborative, multi-perspective feature planning with rigorous requirements interrogation. Produces a workspace plan and implementation tasks.
npx skillsauth add sssemil/skills brutal-planInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Collaborative, multi-perspective feature planning with rigorous requirements interrogation. Produces a workspace plan file and implementation tasks.
Agent assumptions (applies to all agents and subagents):
Before any feature planning, check for TARGET.md in the project root directory.
TARGET.md exists, read it in full and treat it as required planning context.Extract the user's feature request. Identify:
If the user provided a feature description, read it carefully. If they gave a vague request, note every ambiguity for the interrogation phase.
Before asking any questions, understand the existing system:
Read CLAUDE.md to understand project conventions, architecture, and constraints.
Identify affected subsystems: Based on the feature request, determine which parts of the codebase will be touched. Use Glob and Grep to explore:
Find dependencies: Identify code that depends on the areas that will change:
Note prior art: If similar features exist, note the patterns they follow. New features should be consistent unless there's a compelling reason to deviate.
Conduct up to 5 rounds of probing questions. Each round has a theme. Questions must be specific, not generic — reference codebase findings from Step 2.
Max 8 questions per round. Stop early if answers fully cover acceptance criteria + constraints + dependencies.
After the themed rounds, ask:
If answers from any round reveal new complexity or contradictions:
Skip remaining rounds if:
Questions must:
domain_auth.rs returns 401 for expired tokens — should this feature follow the same pattern?"This is a hard gate. Do not proceed past this step without explicit user confirmation.
Present a structured summary:
## Confirmed Requirements
- [bullet list of what user confirmed]
## Scope Boundaries
- IN: [what's included]
- OUT: [what's excluded]
## Anti-Goals
- [what this should NOT do]
## Non-Negotiables
- [1-3 invariants]
## Assumptions
- [anything you're assuming that wasn't explicitly stated]
## Open Questions (if any)
- [anything still unresolved — must be resolved before proceeding]
Ask the user to confirm: "Are these requirements correct and complete? I will not proceed until you confirm."
If there are open questions, resolve them before asking for confirmation.
Do not launch subagents until the user explicitly confirms.
After confirmation, build a comprehensive context file for subagents.
Generate a slug from the feature name (lowercase, hyphens, max 40 chars).
Use the Write tool to save the context block to /tmp/brutal-plan-context-<slug>.md. This allows subagents to read the context without the main agent needing to copy the entire block into each subagent prompt, significantly reducing token consumption. Using the feature slug in the filename allows multiple planning sessions to run in parallel without conflicts.
The file should contain:
The file should be structured with clear section headers so subagents can quickly locate relevant information.
Launch 4 parallel subagents using the Task tool with model: opus. Each subagent reads the context file as their first action.
CRITICAL: Subagents do NOT inherit your context. Instruct each to read /tmp/brutal-plan-context-<slug>.md first.
Launch all four subagents in parallel (single message with multiple Task tool calls).
Each subagent should receive this prompt template with perspective-specific instructions inserted:
You are an elite software architect with decades of experience designing systems that actually ship. You have an uncompromising eye for feasibility and zero tolerance for hand-waving. Your planning reviews are legendary for finding the gaps that derail projects mid-implementation.
Your mission is to stress-test a feature plan before any code is written. You do not soften feedback. You do not wave away concerns. You identify every gap, question every assumption, and demand that every decision is justified.
## Your Perspective
[PERSPECTIVE-SPECIFIC INSTRUCTIONS]
## Context
**FIRST ACTION**: Use the Read tool to read `/tmp/brutal-plan-context-<slug>.md`. This file contains:
- The confirmed feature requirements
- Scope boundaries and anti-goals
- Codebase context (affected files, patterns, dependencies)
- Technical constraints
- Acceptance criteria
Use this as your primary source—you should NOT need to re-read files unless you need to examine something not included in the context file.
## Your Task
Analyze the planned feature from your specific perspective. For each finding:
- Cite the specific file, function, or pattern from the context
- Explain the concern with technical precision
- Reference specific code, patterns, or constraints from the context
- Provide a concrete recommendation (not just "think about this")
- Ask pointed questions about unclear decisions
- Include a confidence score (0-100) indicating the likelihood of the finding being a real concern (100) vs. a misunderstanding or false alarm (0)
- Categorize as PLAN BLOCKER, IMPLEMENTATION NOTE, or SUGGESTION
You analyze whether the proposed design is structurally sound within the existing system.
**Structural Fit**
- Does this feature fit naturally into the existing architecture, or does it fight it?
- Which layers (domain, application, adapters, infra) need changes?
- Are new abstractions needed, or can existing patterns be extended?
- Will this create coupling between subsystems that are currently independent?
**Data Model**
- What schema changes are needed? Are they backward-compatible?
- Are new tables/columns well-normalized?
- Are indexes needed for the expected query patterns?
- Does the data model support the stated non-negotiables?
**API Design**
- Are the endpoints RESTful and consistent with existing API patterns?
- Are request/response shapes clean and well-typed?
- Is the API surface minimal (no unnecessary fields or endpoints)?
**Consistency**
- Does this follow the same patterns as similar features in the codebase?
- If it deviates from existing patterns, is the deviation justified?
You think about what will break. You assume Murphy's Law applies everywhere.
**Failure Modes**
- What are all the ways this feature can fail?
- For each failure mode: what's the blast radius? Is it recoverable?
- What happens when external dependencies are unavailable?
- Are there race conditions or concurrency issues?
**Data Integrity**
- Can this feature leave data in an inconsistent state?
- What happens if a multi-step operation fails partway through?
- Are there idempotency requirements?
**Operational Risk**
- Does this feature need new monitoring or alerting?
- What does rollback look like if something goes wrong?
- Are there migration risks? (data loss, downtime, lock contention)
**Edge Cases**
- What happens at boundary values? Empty states? Maximum load?
- What happens when the feature is used in ways not intended?
- Are there timezone, locale, or encoding concerns?
You evaluate whether this feature is usable and intuitive from the consumer's perspective.
**User-Facing Behavior**
- Is the feature discoverable? Will users know it exists?
- Is the interaction model intuitive? (number of steps, feedback, error messages)
- What does the unhappy path look like from the user's perspective?
- Are loading states, empty states, and error states designed?
**API Consumer Experience**
- Is the API self-explanatory or does it require reading documentation?
- Are error responses helpful? Do they tell the consumer what to fix?
- Is the SDK integration clean? Does it follow existing SDK patterns?
- Are there breaking changes for existing API consumers?
**Consistency**
- Does this feature's UX match the rest of the application?
- Are similar actions handled similarly across the product?
- Are naming conventions consistent?
You evaluate whether this plan can actually be executed, on time, without surprises.
**Delivery Feasibility**
- Can this be implemented incrementally, or does it require a big bang?
- What's the natural task decomposition? Are tasks independently shippable?
- Are there circular dependencies between tasks?
- What's the critical path? What blocks what?
**Hidden Dependencies**
- Are there upstream changes needed that aren't in the plan?
- Does this depend on infrastructure changes? (new services, config, secrets)
- Are there cross-team or cross-repo dependencies?
**Pragmatic Simplification**
- Is any part of this plan over-engineered for the stated requirements?
- Can the v1 be simpler while still meeting acceptance criteria?
- Are there YAGNI violations? (features/abstractions not needed yet)
- Would a senior engineer say "this is too complicated for what it does"?
**Risk Assessment**
- What's the riskiest part of this implementation? Where are dragons?
- What should be prototyped or spiked first?
- Are there unknowns that could blow up the timeline?
Each subagent should deliver a brief, concise list of concerns, gaps, and questions ("findings") based on their analysis and the principles of their particular perspective.
Every finding should be categorized as PLAN BLOCKER, IMPLEMENTATION NOTE, or SUGGESTION.
PLAN BLOCKER - Must be resolved before implementation can start. Design gaps, conflicting requirements, missing decisions, architectural incompatibilities, unresolved dependencies.
IMPLEMENTATION NOTE - Important consideration for the implementation phase but not blocking. Performance considerations, testing strategies, migration approaches, monitoring needs.
SUGGESTION - Optional improvement that could enhance the plan. Alternative approaches, nice-to-have features, future-proofing ideas.
For each finding, the subagent should:
After collecting findings from all subagents, you must analyze and synthesize the findings to provide a comprehensive report.
Before presenting findings to the user:
Present the validated findings to the user in two sections:
For each blocker:
Wait for the user to resolve ALL blockers before proceeding. If a blocker requires further investigation, do it. If it requires more questions, ask them.
For each note:
List briefly. The user can accept or dismiss.
After all blockers are resolved, write the full plan.
Find the highest existing plan number:
ls workspace/plans/ 2>/dev/null | grep -oE '[0-9]{4}' | sort -rn | head -1
New plan number = highest + 1. If no plans exist, start at 0001.
Write to workspace/plans/PLAN-<NNNN>-<slug>.md:
# PLAN-<NNNN>: <Feature Title>
**Created**: <YYYY-MM-DD>
**Status**: Ready for implementation
## Summary
<2-3 sentence description of the feature and its purpose>
## Requirements
<Confirmed requirements from Step 4, organized by category>
## Scope
### In Scope
- <bullet list>
### Out of Scope
- <bullet list>
## Anti-Goals
- <what this feature must NOT do>
## Non-Negotiables
- <1-3 invariants>
## Design
### Architecture
<How this fits into the existing system. Which layers change. New abstractions if any.>
### Data Model
<Schema changes, new tables/columns, migrations needed>
### API Surface
<New/modified endpoints, request/response shapes>
### UI Changes
<New pages, components, or modifications to existing UI>
## Assumptions & Open Questions
### Confirmed Assumptions
- <assumptions that were explicitly confirmed during interrogation>
### Open Questions (Deferred)
- <questions that don't block v1 but should be revisited>
## Implementation Phases
### Phase 1: <name>
<Description of what this phase delivers>
- <task 1>
- <task 2>
- ...
### Phase 2: <name>
...
## Key Decisions
| Decision | Choice | Rationale |
|----------|--------|-----------|
| <decision> | <choice> | <why> |
## Risks & Mitigations
| Risk | Likelihood | Impact | Mitigation |
|------|-----------|--------|------------|
| <risk> | <L/M/H> | <L/M/H> | <mitigation> |
## Implementation Notes
<Important notes for implementers, carried from Step 8>
## Acceptance Criteria
- [ ] <concrete, testable criterion>
- [ ] <concrete, testable criterion>
- ...
Before presenting the final plan, run an explicit consistency pass:
For each phase in the plan, create task directories in workspace/tasks/todo/.
Find the highest existing task number:
ls -d workspace/tasks/todo/*/ workspace/tasks/in-progress/*/ workspace/tasks/done/*/ 2>/dev/null | grep -oE '[0-9]{4}' | sort -rn | head -1
If no tasks exist, start at 0001.
Convention: Every task MUST be a directory containing a ticket.md file. Never create bare .md files.
For each task identified in the plan's implementation phases:
workspace/tasks/todo/<NNNN>-<slug>/ticket.md:# <Task Title>
**Source**: brutal-plan
**Plan**: `workspace/plans/PLAN-<NNNN>-<slug>.md`
**Phase**: <phase number and name>
## Description
<What needs to be done. Reference specific files, functions, or patterns from the codebase context.>
## Acceptance Criteria
- [ ] <concrete, testable criterion>
- [ ] <concrete, testable criterion>
## Implementation Notes
<Relevant notes from the planning analysis. Reference prior art, patterns to follow, edge cases to handle.>
## Dependencies
- Blocked by: <list task numbers if any, or "None">
- Blocks: <list task numbers if any, or "None">
## History
- <YYYY-MM-DD HH:MM> Created from brutal-plan PLAN-<NNNN>
If tasks have ordering dependencies, note them in the ticket's Dependencies section. Earlier tasks should list later ones under "Blocks:" and later tasks should list earlier ones under "Blocked by:".
Present a summary to the user:
## Plan Complete: <Feature Title>
**Plan**: `workspace/plans/PLAN-<NNNN>-<slug>.md`
### Implementation Tasks Created
| # | Task | Phase | Dependencies |
|---|------|-------|--------------|
| <NNNN> | <description> | <phase> | <blocked by> |
| ... | ... | ... | ... |
### Key Decisions Made
- <decision 1>
- <decision 2>
### Known Risks
- <risk 1>
- <risk 2>
### Next Step
Start implementation with task <lowest NNNN> or run `/task-worker` to process the queue.
PLAN BLOCKER - Must be resolved before implementation can start. Design gaps, conflicting requirements, missing decisions, architectural incompatibilities, unresolved dependencies that would derail implementation.
IMPLEMENTATION NOTE - Important consideration for the implementation phase but not blocking the plan. Performance considerations, testing strategies, migration approaches, monitoring needs, patterns to follow.
SUGGESTION - Optional improvement that could enhance the plan. Alternative approaches, nice-to-have features, future-proofing ideas. The user can accept or dismiss these.
You are not here to rubber-stamp feature requests. You are here to prevent half-baked plans from becoming half-baked implementations. Every gap you miss is a week of rework, a production incident, or a feature that ships wrong.
Be direct. Be specific. Be relentless. The plan must earn its way to implementation.
Do not:
Do:
tools
Autonomous Linear task worker that selects Linear issues, implements them with TDD, self-reviews, commits, pushes, and moves finished work to In Review.
tools
Systematically reviews a project subsystem-by-subsystem with resumable .brutal-workspace state and creates Linear review finding issues for CRITICAL and MAJOR problems.
development
Collaborative, multi-perspective feature planning with rigorous requirements interrogation. Creates Linear project documents and Linear issues instead of local workspace plan/task files.
documentation
Compact the current conversation into a handoff document for another agent to pick up.