plan

/plan — Create, Update, or List Plans

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "plan" with this command: npx skills add michael-menard/monorepo/michael-menard-monorepo-plan

/plan — Create, Update, or List Plans

Usage

/plan create <file_path> [--prefix=X] [--priority=P1-P5] [--type=X] [--feature-dir=X] /plan update <plan_slug> [--priority=X] [--status=X] [--prefix=X] [--type=X] [--tags=a,b,c] /plan list [args]

Subcommands

/plan create — Create a New Plan

Reads a plan from a text/markdown file, extracts the title, generates metadata, writes the canonical file to ~/.claude/plans/ , and upserts to the KB in one step.

Step 1 — Parse Arguments

Argument Required Description

file_path yes Path to a text or markdown file containing the plan

--prefix=X

no Story prefix (e.g., APIP , DASH )

--priority=P1-P5

no Priority level (default: P3 )

--type=X

no Plan type override (feature, refactor, migration, infra, tooling, workflow, audit, spike)

--feature-dir=X

no Target feature directory

Read the file using the Read tool. The file must exist.

Step 2 — Extract Title

Extract the title from the first # Heading line in the file. If no # heading exists, use the filename (without extension) as the title.

Step 3 — Generate Slug

  • Take the title

  • Lowercase it

  • Replace non-alphanumeric characters with hyphens

  • Collapse multiple consecutive hyphens into one

  • Trim leading/trailing hyphens

  • Truncate to 60 characters

  • Check uniqueness: call kb_list_plans with limit: 100 , scan returned slugs

  • If collision: append -2 , -3 , etc. until unique

Step 4 — Infer Plan Type

If --type was not provided, infer from plan text using keyword matching (first match wins):

Type Keywords

feature new feature , product feature , user-facing , ui component , gallery , dashboard

refactor refactor , restructur , clean up , rename , consolidat

migration migrat , import , move to , port to , convert

infra infrastructure , deployment , docker , aws , lambda , terraform , ci/cd

tooling tooling , developer experience , dx , cli , script , automation

workflow workflow , agent , orchestrat , pipeline , scrum , story generation

audit audit , coverage , gap analysis , review all , assess

spike spike , investigation , experiment , explore , poc , proof of concept

Default to feature if no keywords match.

Step 5 — Infer Tags

Scan the plan text (case-insensitive) for keyword groups. If any keyword in a group matches, include that tag. Deduplicate and take the first 10.

Tag Keywords

database migration , schema , postgres , drizzle , sql

frontend react , component , ui , tailwind , shadcn , page

backend lambda , api , endpoint , handler , server

testing playwright , vitest , e2e , test coverage , cucumber

knowledge-base knowledge base , kb_ , mcp , embedding

story-generation story generation , pm-story , pm-generate , elab

performance token usage , performance , bottleneck , caching , optimiz

worktree worktree , branch , git

Step 6 — Extract Summary

Find the first non-heading, non-empty paragraph in the plan text (skip lines starting with # and blank lines). Join consecutive non-blank, non-heading lines into one string. Truncate to 500 characters.

Step 7 — Extract Additional Metadata

  • story_prefix: If --prefix not provided, scan for the first UPPER-NNN pattern (e.g., WKFL-001 ) and extract the prefix

  • estimated_stories: Scan for patterns like N stories , ~N stories and extract the number

  • feature_dir: If --feature-dir not provided, scan for plans/future/platform/<dir> or plans/future/<dir> patterns

Step 8 — Write Markdown File

Copy the plan content to ~/.claude/plans/{slug}.md using the Write tool.

If the file content did NOT start with a # Title heading, prepend one:

{title}

{file content}

Step 9 — Upsert to KB

Load the kb_upsert_plan MCP tool via ToolSearch, then call it with:

{ "plan_slug": "{slug}", "title": "{title}", "raw_content": "{full markdown content}", "summary": "{extracted summary}", "plan_type": "{inferred or specified type}", "status": "draft", "priority": "{specified or P3}", "tags": ["{inferred tags}"], "source_file": "~/.claude/plans/{slug}.md", "story_prefix": "{if found}", "feature_dir": "{if found}", "estimated_stories": "{if found}" }

Step 10 — Display Confirmation

Output a summary:

Plan created successfully.

Slug: {slug} Title: {title} Type: {plan_type} Priority: {priority} Status: draft Tags: {tags, comma-separated} Source: {original file_path} File: ~/.claude/plans/{slug}.md

Next steps: /plans — verify it appears in the list /pm-bootstrap-workflow {slug} — generate stories from this plan /plan update {slug} --priority=P1 — adjust metadata

/plan update — Update Plan Metadata

Lightweight update of an existing plan's metadata fields.

Step 1 — Parse Arguments

Argument Required Description

plan_slug yes The slug of the plan to update

--priority=X

no New priority (P1-P5)

--status=X

no New status (draft, active, accepted, stories-created, in-progress, implemented, superseded, archived, blocked)

--prefix=X

no New story prefix

--type=X

no New plan type

--tags=a,b,c

no New tags (comma-separated, replaces existing)

--title=X

no New title

--feature-dir=X

no New feature directory (use none to clear)

--estimated-stories=N

no New estimated stories count (use none to clear)

At least one optional argument must be provided.

Step 2 — Call kb_update_plan

Load the kb_update_plan MCP tool via ToolSearch, then call it with the plan_slug and only the provided fields.

For --tags , split on commas and pass as an array. For fields set to none , pass null to clear them.

Step 3 — Display Confirmation

Plan "{plan_slug}" updated.

Changed: {list of changed fields with new values}

/plan list — List Plans

Delegates to the /plans skill. Pass through any arguments.

Run: /plans {args}

MCP Tools Used

  • kb_upsert_plan — Insert or update a plan record (load via ToolSearch first)

  • kb_update_plan — Lightweight metadata update (load via ToolSearch first)

  • kb_list_plans — List plans for slug uniqueness check and listing (load via ToolSearch first)

Important: These tools must be loaded via ToolSearch before calling. Use:

  • ToolSearch({ query: "select:mcp__knowledge-base__kb_upsert_plan" }) for create

  • ToolSearch({ query: "select:mcp__knowledge-base__kb_update_plan" }) for update

  • ToolSearch({ query: "select:mcp__knowledge-base__kb_list_plans" }) for list/uniqueness check

Fallback: If kb_upsert_plan or kb_update_plan are not available in the deferred tools list (MCP server may need restart), inform the user:

The kb_upsert_plan / kb_update_plan MCP tools are not currently available in the deferred tools registry. The MCP server likely needs a restart to pick them up.

To fix: restart the knowledge-base MCP server, then retry this command.

The plan markdown file has been written to ~/.claude/plans/{slug}.md. You can sync it to the DB later with: pnpm tsx apps/api/knowledge-base/src/scripts/migrate-plans-to-kb.ts

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

review

No summary provided by upstream source.

Repository SourceNeeds Review
General

review-draft-story

No summary provided by upstream source.

Repository SourceNeeds Review
General

lint-fix

No summary provided by upstream source.

Repository SourceNeeds Review