From project-plan
Manage project plans synced with Claude's plan mode. Trigger on "/project-plan" commands, and also when the user says things like "save this plan", "load the auth plan", "list plans", "what plans do we have", "save this plan to the project", or refers to plans in the plans/ directory.
How this skill is triggered — by the user, by Claude, or both
Slash command
/project-plan:project-planThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Synchronise Claude plan mode plans with markdown files in the project. Plans default to a `plans/` directory but any path is accepted.
Synchronise Claude plan mode plans with markdown files in the project. Plans default to a plans/ directory but any path is accepted.
Plan files are markdown with optional YAML front matter. The only recognised front matter field is status:
---
status: draft
---
Valid statuses: draft, rejected, implemented. Omitting status entirely is fine.
All paths handled by this skill must be validated before any file I/O:
/)../../etc/passwd resolving above the root)<file> — Load a plan file into Claude plan mode[path] — Show available plans with their status and titleIf no command is clear from context, ask the user which operation they want.
Find the current plan. The plan file path appears in the plan mode system message — it will be under ~/.claude/plans/. Read that file. If no plan file is apparent or it's empty, ask the user to confirm which plan to save.
Parse metadata. Check for a <!-- project-plan-source: ... --> comment at the top. If present, extract the original path and status as defaults, then strip the comment from the content.
Choose defaults.
plans/<heading-in-kebab-case>.md.draft.Validate the path. Apply the path safety rules — reject absolute paths or any path that resolves outside the project root.
Single confirmation. Present the proposed path and status together and ask the user to confirm or adjust. Example:
Save as
plans/add-auth.mdwith statusdraft? (Confirm, or specify changes)
Check for overwrites. If the target file already exists and this isn't a re-save of the same file, warn the user and confirm before proceeding.
Ensure the target directory exists. Create it if needed.
Write the file. Add or update YAML front matter with the status field (if a status was chosen), then write the file.
Confirm with the saved path and status.
Resolve the file path. The user may provide:
plans/foo.md or docs/plans/foo.md — use directlyfoo.md — resolve to plans/foo.mdfoo — resolve to plans/foo.mdIf no file is specified, list available plans in plans/ and ask the user to pick one.
Validate the path. Apply the path safety rules — reject absolute paths or any path that resolves outside the project root.
Read and check status. If the plan has status rejected, warn and confirm before proceeding. If implemented, inform the user.
Prepare plan content for plan mode.
# heading exists. If missing, derive one from the filename: strip .md, convert kebab-case to title case (e.g., add-auth.md → # Add Auth). This heading influences the name Claude Code shows in its status line, so it matters.<!-- project-plan-source: <relative-path>, status: <status-or-none> -->
For example: <!-- project-plan-source: plans/add-auth.md, status: draft -->
Store the relative path (not just filename) so non-default locations survive round-trips.<!-- reminder: This plan was loaded from a project plan file. After implementing this plan, save it back to the project with `/project-plan save` and update its status to `implemented`. -->
Write to the plan mode file (the path from the plan mode system message under ~/.claude/plans/). Order: metadata comment, then heading, then plan body. Display the plan content to the user (without the metadata comment) and tell them they can now review, modify, or approve it in plan mode.
Validate the scan path. If a custom path was provided, apply the path safety rules — reject absolute paths or any path that resolves outside the project root. The default plans/ path is always safe.
Scan the plans/ directory (or the validated path) for .md files.
For each file, read the YAML front matter status (if any) and the first markdown heading.
Display a list showing filename, status, and title. For example:
plans/add-auth.md [draft] Add Authentication
plans/migrate-db.md [implemented] Migrate Database to Postgres
plans/new-api.md — New API Design
If no plans exist, suggest saving one with /project-plan save.
npx claudepluginhub grahamcarlyle/claude-code-plugins --plugin project-planMulti-project Manus-style planning with coordinator pattern. Supports project switching, separate planning/source paths, and cross-machine sync via git. Creates task_plan.md, findings.md, and progress.md.
Creates file-based project plans and tracks progress across complex tasks using task_plan.md, findings.md, and progress.md. Activates on planning requests, multi-step work, or research requiring over 5 tool calls.
Uses persistent markdown files (task_plan.md, findings.md, progress.md) as working memory on disk, helping Claude maintain context across complex tasks by writing down decisions, discoveries, and progress.