Skip to content

/craft-planning

Feature roadmap and planning. Manage initiatives, concepts, open questions, and story creation from planning.

From plugin
craft
7377 skills27 agents77 commands7 hooks
+1
> /plugin marketplace add drobins25/craft
> /plugin install craft@craft

Command definition

craft-planning.md
name: planning
description: "Feature roadmap and planning. Manage initiatives, concepts, open questions, and story creation from planning."
aliases:
  - planning

Craft Planning

You are managing the project's **feature roadmap** - the strategic planning layer that sits above cycles and stories. This is the PM's wiki for tracking what's coming, what's active, and what questions remain open.

Project Root

Set `PROJECT` to `${CRAFT_PROJECT_ROOT:-.}`. Set `PLANNING` to `$PROJECT/.craft/planning`.

Entry Flow

When `/craft:planning` is invoked, check state and route.

Step 1: Check if planning exists

Use **Glob** to check if `$PLANNING/active.md` exists.

**If NOT found** -> Go to **Setup Flow** (Step 2). **If found** -> Go to **Active Flow** (Step 3).

Step 2: Setup Flow (first time)

No planning folder exists yet. Help the user create one.

> "No planning folder found. Let's set up your roadmap."

Use **AskUserQuestion**:

question: "How would you like to start?"
header: "Setup"
options:
  - label: "Generate from input (Recommended)"
    description: "Feed me a transcript, doc, or spec and I'll extract concepts for your review"
  - label: "Start from scratch"
    description: "Describe what you're building and I'll structure it"
  - label: "Import from existing backlog"
    description: "Turn existing backlog stories into a planning roadmap"

**If "Generate from input"** -> Go to **Add From Input** (Step 5). **If "Start from scratch"** -> Go to **Conversational Setup** (Step 6). **If "Import from existing backlog"** -> Go to **Import Flow** (Step 7).

After setup completes, create the folder structure:

mkdir -p "$PLANNING"

Write `README.md` and `active.md` using templates from `${CLAUDE_PLUGIN_ROOT}/templates/planning/`. Replace template variables with actual values.

Step 3: Active Flow (planning exists)

Read the current state and suggest the most useful next action.

Use **Read** to read `$PLANNING/active.md`. Extract `last_updated` from frontmatter. Extract the Focus section (content between `## Focus` and the next `---` divider).

Use **Read** to read `$PLANNING/README.md`. Parse the Roadmap table to get concept names, statuses, and files.

**Assess what's most useful:**

1. **Concepts with non-empty `pending_decisions[]`** -> Suggest resuming alignment ("Concept X has N deferred decisions to resume"). This is the top recommendation because the user explicitly asked to be brought back to those items. 2. **Stale active.md** (last_updated >7 days) -> Suggest reviewing and updating 3. **Open questions exist** -> Mention count, offer to review 4. **Concepts with status `open` and no blockers** -> Suggest fleshing out or creating stories 5. **Concepts with status `planned` and all stories complete** -> Prompt completion confirmation 6. **Nothing urgent** -> Show full roadmap and offer menu

Present the assessment and menu:

> "[Focus section content]" > > [Assessment: e.g., "4 open questions across 3 concepts. 'CDB Mapping' is ready for stories."]

Use **AskUserQuestion**:

question: "What would you like to do?"
header: "Planning"
options:
  - label: "[Most useful action] (Recommended)"
    description: "[context-specific description]"
  - label: "Add concept or input"
    description: "Add a new concept or feed new input to existing ones"
  - label: "Review open questions"
    description: "See all unanswered questions across concepts"
  - label: "Create stories from a concept"
    description: "Turn a mature concept into cycle stories"

Route based on selection -> the flows below.

**If the selected action is "Resume deferred decisions on [concept]":** Invoke the [Alignment Walkthrough](#alignment-walkthrough) for the named concept. The walkthrough's resume behavior regenerates `pending_decisions[]` items as TaskTool tasks first, then derives any new candidates from current concept state.

Step 4: Update active.md

**Call this after any write to a planning file.** This keeps `last_updated` current automatically.

Read $PLANNING/active.md
Update `last_updated:` in frontmatter to today's date (YYYY-MM-DD)
Write $PLANNING/active.md

If the current focus has changed (e.g., a new concept was activated, a concept was completed), also update the `## Focus` section and `current_concept:` in frontmatter.

---

Flows

Step 5: Add From Input

The user provides a transcript, doc, spec, or other input. Craft extracts candidate concepts and confirms with the user before writing anything.

**5a. Gather input**

Use **AskUserQuestion**:

question: "What input should I work from?"
header: "Input"
options:
  - label: "Paste or describe now"
    description: "I'll type or paste the content in my next message"
  - label: "Read a file"
    description: "Point me to a file path to read"
  - label: "Read from conversation"
    description: "Use what we've discussed in this session"

If file path provided, use **Read** to read it. If the file is a transcript, treat it as raw discovery material.

**5b. Extract candidate concepts**

Analyze the input and identify distinct features, initiatives, or work items. For each candidate, note:

  • Suggested name (slug-friendly)
  • One-line description
  • Scope classification (core, stretch, deferred, external)
  • Key open questions from the input
  • Any dependencies on other candidates

**5c. Confirm with user (MANDATORY)**

Present the extracted candidates via **AskUserQuestion** with multiSelect:

question: "I found [N] potential concepts. Which ones are real work you intend to do?"
header: "Confirm"
options:
  - label: "[Concept 1 name]"
    description: "[one-line description] (scope: [classification])"
  - label: "[Concept 2 name]"
    description: "[one-line description] (scope: [classification])"
  - label: "[Concept 3 name]"
    description: "[one-line description] (scope: [classification])"
multiSelect: true

**Only confirmed concepts get written.** Unselected candidates are dis

Read more
@drobins25
Ships withcraft

Stop Vibing. Start Crafting.

7311 skills27 agents1 MCP
Get the whole plugin, auto-invoked

Stars on GitHub

Momentum

stars in total
73
Star history of drobins25/craft on GitHub, a chart by star-history.com

Other commands on craft.

craft-analyze
Auto-invoked

craft-analyze

Command

Post-cycle analysis — QA, UX, Creative, and Style audits using MCP browser tools.

@drobins25@drobins25Install Command
craft-annotate
Auto-invoked

craft-annotate

Command

Point at anything in a live browser tab - every pin gets a live attempt on the page the moment you SEND it, and the session keeps…

@drobins25@drobins25Install Command
craft-ask
Auto-invoked

craft-ask

Command

Consult a craft agent. Routes your question to the best mind in the workshop - not a menu, a recommendation.

@drobins25@drobins25Install Command
craft-become
Auto-invoked

craft-become

Command

Agent crystallization command. Studies a tool, role, or person and produces a portable 9-section agent that inhabits the domain -…

@drobins25@drobins25Install Command
craft-bugs
Auto-invoked

craft-bugs

Command

File a bug without fixing it, from a person mid-conversation or an agent mid-run. One door, a complete record on disk, nobody…

@drobins25@drobins25Install Command

More commands from other plugins.

build
Auto-invoked

build

Command

Implement tasks incrementally — build, test, verify, commit. Add "auto" to run the whole plan in one approved pass.

@addyosmani@addyosmaniInstall Command