skills/plan-mode/SKILL.md
Structured planning mode for AI agents working on coding and development tasks. Produces a comprehensive plan BEFORE any code is written or changed, including task decomposition, architecture decisions, risk assessment, and approval gates. Use this skill whenever the user says "/plan", "plan mode", "plan first", "think before coding", "make a plan", or asks the agent to plan before executing. Also trigger when the user describes a complex multi-step development task and would clearly benefit from structured planning before implementation — especially for tasks involving new features, refactors, migrations, infrastructure changes, or multi-file edits. When in doubt, plan. A few minutes of planning prevents hours of rework.
npx skillsauth add espennilsen/pi plan-modeInstall 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.
When triggered, switch into planning mode: analyze the task, produce a structured plan, and wait for explicit user approval before writing any code or making changes.
The core philosophy: think deeply, communicate clearly, execute only when aligned.
/plan, "plan this", "think first", etc.)Produce a plan with these sections. Adapt depth to task complexity — a small bug fix needs a lighter plan than a new feature.
Restate the task in your own words to confirm understanding. Call out any ambiguities or assumptions you're making. This catches misalignment early.
## Understanding
[Restate the goal in 2-3 sentences]
**Assumptions:**
- [List anything you're assuming that wasn't explicitly stated]
**Open questions:**
- [List anything you need clarified before proceeding]
If there are open questions that would significantly change the approach, STOP here and ask the user before continuing with the plan. Don't build a full plan on shaky assumptions.
For non-trivial tasks, present 2-3 distinct approaches. For simple tasks, present one recommended approach with brief justification.
For each option include:
End with a clear recommendation and why.
## Approach Options
### Option A: [Name]
**Summary:** [One line]
**How it works:** [3-5 bullet points, high-level]
**Pros:** [What's good about this]
**Cons:** [Tradeoffs]
**Effort:** [small / medium / large]
### Option B: [Name]
...
**Recommendation:** Option [X] because [reason tied to project context].
Break the chosen (or recommended) approach into concrete, ordered steps. Each step should be small enough to verify independently. Group related steps into phases.
## Task Breakdown
### Phase 1: [Name, e.g. "Setup / Preparation"]
- [ ] Step 1.1: [Concrete action]
- [ ] Step 1.2: [Concrete action]
**Checkpoint:** [What should be true after this phase — a testable condition]
### Phase 2: [Name, e.g. "Core Implementation"]
- [ ] Step 2.1: [Concrete action]
- [ ] Step 2.2: [Concrete action]
**Checkpoint:** [Testable condition]
### Phase 3: [Name, e.g. "Verification & Cleanup"]
- [ ] Step 3.1: [Concrete action]
- [ ] Step 3.2: [Concrete action]
**Checkpoint:** [Testable condition]
Guidelines for good steps:
Identify what could go wrong and how to mitigate it. Focus on risks specific to this task, not generic software risks.
## Risks
| Risk | Likelihood | Impact | Mitigation |
|------|-----------|--------|------------|
| [Specific thing that could go wrong] | low/med/high | low/med/high | [How to prevent or handle it] |
Always consider:
List the files that will be created, modified, or deleted. This helps the user understand the blast radius.
## Affected Files
- **Create:** `path/to/new-file.ts` — [purpose]
- **Modify:** `path/to/existing-file.ts` — [what changes]
- **Delete:** `path/to/old-file.ts` — [why]
Always end the plan with an explicit request for approval. Never proceed to implementation without it.
## Ready to Execute?
Plan is complete. Please review and let me know:
- ✅ **Approve** — proceed with implementation
- 🔄 **Revise** — adjust the approach (tell me what to change)
- ❓ **Clarify** — answer open questions first
- ❌ **Cancel** — abort this task
After generating the plan, save it to a plans/ directory in the project root before requesting approval.
File naming convention: plans/YYYY-MM-DD-<short-slug>.md
Examples:
plans/2026-02-25-auth-refactor.mdplans/2026-02-25-add-search-endpoint.mdplans/2026-02-25-fix-race-condition.mdThe slug should be a concise, kebab-case summary of the task (3-5 words max).
File contents: The full plan output (all sections) as a markdown document. Add a YAML frontmatter block at the top:
---
task: "[One-line task description]"
status: proposed # proposed → approved → in-progress → completed → cancelled
created: YYYY-MM-DD
approach: "[Name of chosen/recommended approach]"
---
Status updates: Update the status field in the frontmatter as the task progresses. If the plan is revised after feedback, append a ## Revision Log section at the bottom rather than overwriting the original plan — this preserves the decision history.
Create the plans/ directory if it doesn't exist. If a .gitignore exists and the user hasn't indicated whether plans should be tracked in git, ask.
Once approved, follow the task breakdown step by step. After each phase checkpoint:
If during execution you discover something that contradicts the plan (unexpected complexity, a better approach, a blocker), pause and re-plan rather than silently deviating.
Not every task needs a full plan. Scale the depth:
Small tasks (bug fix, config change, typo):
Medium tasks (new endpoint, component, small feature):
Large tasks (new feature, refactor, migration, infrastructure):
handleSubmit function to LoginForm.tsx that validates inputs and calls POST /api/auth" is a step.tools
# pi-a2a Long-Running Tasks Skill ## Overview The pi-a2a extension supports **long-running tasks** that can execute for hours or days without timeouts. This is essential for: - Data processing pipelines - Batch operations - Research and aggregation tasks - External API jobs with unpredictable duration - Any A2A task that exceeds the standard timeout ## When to Use **Use long-running tasks when:** - Task execution time is unpredictable or known to exceed 10 minutes - The remote agent is proc
development
Orchestrate cmux terminal panes — split terminals, run parallel processes, read output from other panes, and use the built-in browser. Use when working inside cmux and you need to run a dev server, watch tests, spawn sub-agents, or preview web pages.
testing
Review UI designs and implementations for accessibility, consistency, usability, and visual quality. Use when asked to review a design, audit accessibility, check UI consistency, compare implementation against mockups, or evaluate a user interface.
tools
Create, review, and improve skills for Pi agents. A skill is a folder with a SKILL.md that teaches an agent specialized workflows, domain knowledge, or tool integrations. Use when asked to create a new skill, improve an existing skill, review a skill for quality, scaffold a skill from a workflow, or convert documentation into a skill. Also triggers on "make a skill for", "build a skill", "skill for [topic]", "teach the agent to", or "package this workflow as a skill".