Skip to content
Back to skills

Using Planning Tools

ASecurity

This skill should be used when the user invokes any /plan-* command from the planning-tools plugin (/plan-context, /plan-master, /plan-open-questions, /plan-verify, /plan-tick, /plan-progress, /plan-delete), asks how Claude Code's plan files work, asks where plans are stored, asks to author or audit a multi-phase master planning document, asks how to walk through open questions interactively (from a plan, a scope report, or the conversation itself), asks how to write progress entries, or ment...

  • 34 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 26, 2026
ai-agentsgogit

Works with

  • claude code
  • terminal

Security analysis

A100/100

Scanned October 26, 2026

npx -y skills add oborchers/fractional-cto --skill using-planning-tools --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Using Planning Tools?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Using Planning Tools
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/oborchers-using-planning-tools/badge)](https://www.skillsdirectory.com/skills/oborchers-using-planning-tools)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: using-planning-tools
description: "This skill should be used when the user invokes any /plan-* command from the planning-tools plugin (/plan-context, /plan-master, /plan-open-questions, /plan-verify, /plan-tick, /plan-progress, /plan-delete), asks how Claude Code's plan files work, asks where plans are stored, asks to author or audit a multi-phase master planning document, asks how to walk through open questions interactively (from a plan, a scope report, or the conversation itself), asks how to write progress entries, or mentions ~/.claude/plans/ or .claude/planning-tools.local.md. Provides the index of planning-tools commands, the master-plan workflow lifecycle, the v0.3.0+ list-shape mandate (phases and questions as headings + bulleted scope items, never tables), the v0.3.2+ plain-bullet shape (no `- [ ]` checkboxes — heading emoji is the sole tick signal), the v0.8.0 plain-language rule for chat output plus the ID + name rule for every external reference, the progress-entry methodology, and the mechanics of Claude Code's plan-mode file storage."
version: 0.9.0
---

# Planning Tools

This plugin provides two complementary workflows on top of Claude Code's plan mode:

1. **Per-session plan-file management** — Claude Code stores each session's plan at `~/.claude/plans/<slug>.md`. The plugin's `/planning-tools:plan-delete` command cleans these up.
2. **Master-plan authoring** — long, multi-phase planning documents that live in the user's project (e.g., `context/tickets/`, `docs/plans/`) and decompose work into actionable phases. The plugin's `/planning-tools:plan-context`, `/planning-tools:plan-master`, and `/planning-tools:plan-verify` commands cover this lifecycle.

## How to Access Skills

Use the `Skill` tool to invoke any skill by name. When invoked, follow the skill's guidance directly.

## Commands

| Command | Triggers On |
|---------|-------------|
| `/planning-tools:plan-context [topic] [--domains a,b,c]` | Pre-loading context for a future master plan. Stage 1 Triage decides domains, Stage 2 Announce prints them and continues **without asking** (override via `--domains`), Stage 3 dispatches parallel `plan-context-worker` agents (one per domain), Stage 4 verifies findings with direct Reads. Emits a scope report. NO plan file written. |
| `/planning-tools:plan-master <topic> [--context <path>] [--domains a,b,c] [--out <path>]` | Drafting a multi-phase master plan. Reuses a prior `/planning-tools:plan-context` report if `--context` is supplied; otherwise runs the same Triage + Explore + Verify pre-flight (domains decided autonomously, no prompt). Then dispatches `plan-master-architect` (opus) to synthesize. Writes to a project-local path **without asking**: `--out` wins, else the first existing of `context/tickets/`, `docs/plans/`, `.claude/plans/master/` (creates `context/tickets/` if none). Never overwrites silently (`-2` suffix). |
| `/planning-tools:plan-open-questions [path] [question-number]` | Walking through open questions interactively — **from any source**, not just a master plan. Resolves the source via a 4-rung ladder: (1) explicit path, (2) whatever is already in this conversation (a plan read earlier, a `/plan-context` scope report, worker findings, or questions the user typed), (3) branch-matched master plan (only when a git repo exists — skipped silently otherwise), (4) `AskUserQuestion` fallback (`Point me at a file` / `I'll paste the questions` / `Cancel`). **Never hard-fails.** Parses four question shapes (v0.3.0 `- **Q<N> — …:**` bullets, legacy v0.2.x table, scope-report bullets, free-form conversation lists — the last two auto-numbered `Q1..QN`). Per question the main conversation reads up to ~5 cited anchors and prints a **fixed** block: `## Q<N>` → **Why it matters** (1–3 short sentences) → **Where it matters** (concrete anchors, or an honest "Not tied to a specific file yet") → optional one-line **If we get this wrong** → 2–4 options with one Recommended and Defer always last. Then one `AskUserQuestion` per question, never batched. Apply is **source-aware**: a `plan-file` source gets the 3-option gate (Apply / Show me the diff first / Discard) and moves answered questions from `## Open Questions` to `## Resolved Questions`; `report-file` and `conversation` sources get a printed summary and **no write, no gate**. Runs entirely in the main conversation — no subagent dispatch. |
| `/planning-tools:plan-verify [path]` | Auditing a drafted master plan. If no path is supplied, globs candidates and uses binary-confirm (Proceed with most-recent / Cancel) to pick. Dispatches `plan-verifier` agent against the `plan-verification-checklist` skill. Emits Critical/Important/Suggestion findings with a PASS/FAIL verdict. On PASS, optionally appends a `- **Verified:** YYYY-MM-DD` bullet to the plan's context block (a `> **Verified:**` line on legacy blockquote plans). |
| `/planning-tools:plan-tick [phase] [path]` | Auto-ticking provenly-achieved phases in a master plan. **Default (no args):** detects the current branch, resolves the master plan that matches it, runs the audit inline in the main conversation (file existence + branch diff membership + symbol presence), ticks all phases verdicted `ACHIEVED`. **Manual override** `/planning-tools:plan-tick <phase>`: ticks one phase without audit. Both modes are non-interactive — never asks. No subagent dispatched. Works only on plans conforming to `planning-tools:master-plan-methodology` v0.2.1+. |
| `/planning-tools:plan-progress [--final] [--destination <type>:<id>] [--style-from <path>] [--ticket <id>]` | Synthesizing a single dense progress entry for the current branch and applying it at the configured destination (markdown file / Linear comment / GitHub issue/PR comment). Reuses plan-tick's branch + plan resolution. SHA-based idempotency: safe to re-run between phases. Three-way detection on the existing entry: new / in-flight update / completed (3-option refresh prompt). First-run destination selection persists to `.claude/planning-tools.local.md`. `--final` flips to shipped state with `**Shipped <date> via PR #<N>.**` + `✅` heading. Composition runs inline in the main conversation — no subagent dispatched. Style spec, sub-markers, and adapter contracts in `planning-tools:progress-methodology`. |
| `/planning-tools:plan-delete` | Clearing the current session's plan file at `~/.claude/plans/<slug>.md`. Detects the slug via `$CLAUDE_CODE_SESSION_ID` + transcript grep, deletes the file, recreates empty, re-reads. Bootstraps with `EnterPlanMode` → no-op plan → `ExitPlanMode` if the session has never entered plan mode. |

## The 8-step Master Plan Workflow

```
┌───────────────────────────────────────────────────────────────────┐
│  1. /planning-tools:plan-context [topic] [--domains a,b,c]        │
│     Stage 0 (optional ticket-fetch) → Stage 1 Triage → Stage 2    │
│     Announce → Stage 3 Parallel Explore → Stage 4 Verify. Emits a │
│     scope report. No plan file written.                           │
├───────────────────────────────────────────────────────────────────┤
│  2. /planning-tools:plan-master <topic> [--context <report-path>] │
│     Reuses /plan-context report (if --context) or runs the same   │
│     pre-flight. Auto-fetches ticket title + body + all comments   │
│     if topic matches a Linear/GitHub pattern. Dispatches          │
│     plan-master-architect (opus). Writes to a project-local path. │
├───────────────────────────────────────────────────────────────────┤
│  3. /planning-tools:plan-open-questions [path] [Q-number]         │
│     Walk each open question one by one — from a plan, a scope     │
│     report, or the conversation itself. Fixed block per question: │
│     Why it matters / Where it matters / 2–4 options (one          │
│     Recommended, Defer last). One AskUserQuestion per question.   │
│     Plan sources get the apply gate (Open → Resolved); other      │
│     sources get a printed summary only. No subagent dispatch.     │
├───────────────────────────────────────────────────────────────────┤
│  4. /planning-tools:plan-verify <path>                            │
│     Audits the drafted plan. Critical/Important/Suggestion        │
│     findings + PASS/FAIL verdict. Optional Verified callout.      │
├───────────────────────────────────────────────────────────────────┤
│  5. Manual phase iteration (built-in /plan)                       │
│     User copies the next unticked phase from the master plan into │
│     Claude Code's built-in /plan. Plan mode produces the per-     │
│     phase plan at ~/.claude/plans/<slug>.md. User executes.       │
├───────────────────────────────────────────────────────────────────┤
│  6. /planning-tools:plan-tick                                     │
│     Auto-tick: branch-matched plan + auditor-verdicted ACHIEVED   │
│     phases get ✅. Conservative. Manual override: /plan-tick <n>. │
├───────────────────────────────────────────────────────────────────┤
│  7. /planning-tools:plan-progress [--final]                       │
│     Synthesize one dense entry per branch; append/update at the   │
│     configured destination (markdown / Linear / GitHub). SHA-     │
│     based idempotency, three-way entry detection, --final ships.  │
├───────────────────────────────────────────────────────────────────┤
│  8. /planning-tools:plan-delete                                   │
│     Clears the per-session plan file. Loop back to step 5.        │
└───────────────────────────────────────────────────────────────────┘
```

## Ticket-aware planning

`/planning-tools:plan-master` and `/planning-tools:plan-context` accept a ticket URL or ID as their first argument. When matched (Linear `[A-Z]{2,6}-\d+` or `https://linear.app/...`; GitHub `https://github.com/<owner>/<repo>/issues/<N>` or `<owner>/<repo>#<N>`), the plugin fetches the ticket via the source adapter — title, body, and **all comments, no cap** — and propagates the block to Stage 1 Triage + every Stage 3 worker + the architect. The architect emits a `- **Ticket:** <url>` bullet as the first context bullet. Free-text topics still work — on no pattern match, existing behavior is preserved. See `planning-tools:progress-methodology` for the adapter contract.

## Supporting Skills

| Skill | Purpose |
|---|---|
| `planning-tools:master-plan-methodology` | Codifies the master-plan template: universal core sections, trigger-based optional sections, integer-only phase rule, Open Questions at top, status emoji convention, evidence attribution, callouts, cross-references. Read this before authoring or reviewing any master plan. |
| `planning-tools:plan-verification-checklist` | Single owner of the audit dimensions used by `/planning-tools:plan-verify` and the `plan-verifier` agent. Defines severity (Critical/Important/Suggestion) and the PASS/FAIL verdict rule. |
| `planning-tools:plain-language` | Single owner of two rules. **(1) Plain language for chat output** — everything a `/plan-*` command prints into the conversation, written for a reader skimming with low concentration: one idea per sentence, short sentences, everyday words, the point first, each block standing alone. Explicitly does **not** apply to the body of a master plan (which stays detailed) or to progress entries posted to Linear / GitHub (which keep the dense style). **(2) ID + name** — every ticket, ADR, and PR carries its human name alongside its ID (`CI-21 — Add keyboard navigation`), everywhere including inside plan documents; `CI-21 — (title unavailable)` when the title cannot be fetched. `/planning-tools:plan-verify` audits rule 2 as a Suggestion only. |
| `planning-tools:progress-methodology` | Single owner of the progress-entry style (dense paragraph), sub-marker convention (`Piggybacked:` / `Verification:` / `Out of scope:` / `Shipped`), entry-key marker format, SHA-tracking idempotency algorithm, three-way detection rule, comment-fetch policy (all comments, no cap), and the source + destination adapter contracts (markdown / Linear / GitHub). Read this when running or maintaining `/planning-tools:plan-progress`. |

## How Per-Session Plan File Detection Works

For `/planning-tools:plan-delete`: Claude Code stamps every transcript entry with a top-level `"slug"` field once plan mode is entered. That slug equals the plan filename (without `.md`). This is the authoritative source:

1. Read `$CLAUDE_CODE_SESSION_ID` from the environment (the current session's UUID).
2. Compute the transcript path: `$HOME/.claude/projects/<encoded-cwd>/$CLAUDE_CODE_SESSION_ID.jsonl`
   - The encoded CWD replaces both `/` and `.` with `-` (e.g., `/Users/o/Code.nosync/x` becomes `-Users-o-Code-nosync-x`).
3. Extract the slug: `grep -m1 -o '"slug":"[^"]*"' <transcript> | sed 's/"slug":"//; s/"$//'`
4. The plan file is `~/.claude/plans/<slug>.md`.

If the grep returns empty, the session has not entered plan mode yet — bootstrap with `EnterPlanMode` → minimal no-op plan → `ExitPlanMode`, then re-extract.

**Why not "most recently modified file in ~/.claude/plans/"?** Parallel sessions in other terminals/projects write to their own slugs concurrently. mtime is unreliable.

**Why not grep the transcript for `~/.claude/plans/<slug>.md` paths?** That matches any plan path mentioned in conversation (e.g., `ls` output), not just the session's true plan slug. The `"slug"` field is set by Claude Code itself and is unambiguous.

## Why This Plugin Exists

- **Per-session plan files persist by design** — they live outside the context window and survive compaction so they can be re-loaded. The downside: stale content accumulates in the slug file across re-plans, and after compaction Claude often loses awareness of the path. `/planning-tools:plan-delete` solves both.
- **Master plans are a different artifact** — they live in the project (git-versioned), describe a topic in depth across multiple phases, and act as the source of truth for execution. The plugin codifies how they are authored (`/planning-tools:plan-context`, `/planning-tools:plan-master`) and audited (`/planning-tools:plan-verify`), with a strict format-driven methodology so plans are predictable and machine-checkable.

## Conventions That Apply Everywhere

- **Integer phase numbering only** — phases are `1, 2, 3, …`. No decimals, no letter suffixes, no sub-phases. The word "Phase" is reserved for integer-numbered work units inside a master plan.
- **List shape for phases and questions (v0.3.0+, plain bullets v0.3.2+)** — Implementation Phases is a series of `### Phase <N>: <name> <emoji>` H3 headings with `- ` bulleted scope items underneath (plain bullets canonical in v0.3.2+; legacy `- [ ]` / `- [x]` shapes parse silently with no finding). The phase heading emoji is the sole tick signal — per-bullet checkbox state is no longer tracked. Open Questions and Resolved Questions are bulleted `- **Q<N> — <question>:** ...` lines. **No markdown tables for any of these three sections.** `/planning-tools:plan-tick` supports the legacy v0.2.x table shape during a transition window.
- **Per-phase TL;DR (v0.3.1+)** — each phase has a `**TL;DR:**` callout under its heading capturing what the phase does and why, 1–3 sentences. Tooling ignores the line; readers get a glance-able digest. Missing TL;DR = Important finding from `/planning-tools:plan-verify`.
- **No sizing estimates** — phases describe scope, not effort. No XS/S/M/L, no time estimates.
- **Open Questions at the top** — blocking questions appear immediately after the context block, not at the end of the plan.
- **Project-agnostic** — the plugin does not assume any ticket-prefix convention. The architect picks optional sections based on what the work touches, not from a classifier.
- **AskUserQuestion is owned by the main conversation** — never by subagents. The plugin's commands handle all user decision points; agents only fetch, synthesize, or audit.
- **Plain language in chat, detail in documents (v0.8.0+)** — everything a command prints into the conversation is written for a reader skimming with low concentration: one idea per sentence, short sentences, the point first. The master plan `.md` itself stays detailed and citation-heavy, and progress entries posted to Linear / GitHub keep their dense style. Owner: `planning-tools:plain-language`.
- **Every external reference carries its name (v0.8.0+)** — `CI-21 — Add keyboard navigation`, `ADR-28: Session error taxonomy`, `PR #412 — Fix locale fallback`. Never a bare ID; write `CI-21 — (title unavailable)` when the title cannot be fetched. Applies in chat **and** inside plan documents. `/planning-tools:plan-verify` flags violations as a Suggestion — it never blocks a PASS.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.