agentleFS
code-katzcode-katz/claude-plans-skill/skills/plans/SKILL.md

plans

Skill0 starsChanged 4 months agoMITView on GitHub

Archive finalized Claude Code implementation plans to named, project-local files with a global index at ~/.claude/plans/INDEX.md. Use this skill whenever the user says "archive this plan", "save this plan", "/plans", "/plans archive", "finalize plan", or "this plan is done". Also use for "what plans do I have", "show archived plans", "plans list", "find the plan for [project]". Trigger proactively at the end of any plan-mode session that produced a finalized implementation plan — suggest archiving before the session ends. Works globally across all projects — not tied to any specific repo or git workflow.

6 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions6 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 6

    1. Ezra144israel/agent-teamwork-kit★ 24same name
    2. Ezra144israel/governed-agent-skills★ 24same name
    3. PanPanFR/oh-my-openkilo★ 9same name
    4. brettatoms/agent-skills★ 3same name
    5. agentstation/skills★ 1same name
    6. futex-ai/skills★ 1same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repositoryOne other file it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

21 rules. 0 are common, 12 are distinctive, and 9 are very specific to this project.

  • 0

    Common

    Most of the 6 edited versions we read keep these.

  • 12

    Distinctive

    This author's own choices. Worth a look.

  • 9

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Do NOT trigger proactively for exploratory or in-progress plans, partial outlines, or plans explicitly marked as drafts.

    line 88
  2. Distinctive:

    Never write files before user confirms.

    line 129
  3. Very specific:

    Create <project>/plans/ directory if it doesn't exist.

    line 133
  4. Distinctive:

    Write plan content to the local plan file.

    line 134
  5. Very specific:

    If the source was a random-slug file, include the full slug name (e.g., misty-conjuring-hammock) — this is the fun part, keep it.

    line 149
  6. Very specific:

    Read existing ~/.claude/plans/INDEX.md (create it if it doesn't exist).

    line 151
  7. Distinctive:

    No git commit. No push.

    line 159
  8. Distinctive:

    When the user asks "what plans do I have" / "plans list" / "show archived plans":

    line 165
  9. Distinctive:

    Read INDEX.md and find matching rows (case-insensitive, partial match OK)

    line 175
  10. Distinctive:

    No match: report not found, offer to search by date or keywords

    line 178
  11. Distinctive:

    Update INDEX.md: change the plan's status column.

    line 198
  12. Very specific:

    Update the plan file's > Status: header line to match (e.g., > Status: \executed\`).

    line 199
  13. Distinctive:

    When a session begins on a known project:

    line 207
  14. Very specific:

    Check INDEX.md for an active plan for this project.

    line 208
  15. Distinctive:

    If found, read it silently — let it inform your work.

    line 209
  16. Distinctive:

    If the match is uncertain, ask: "I found a recent plan that might be for this project — [title] from [date].

    line 210
  17. Very specific:

    Do NOT read plans with status executed, superseded, archived, or rejected at session start.

    line 211
  18. Distinctive:

    When you encounter a plan file path in a devlog entry, roadmap reference, conversation, or any other context:

    line 215
  19. Very specific:

    If status is executed, superseded, archived, or rejected: note the status and do not treat this as the current approach.

    line 218
  20. Very specific:

    If status is active: treat as the current plan.

    line 219
  21. Very specific:

    If no > Status: line exists (legacy plan file without the marker): check INDEX.md for the plan's status before acting on it.

    line 220

“Common” is measured: kept by at least 6 in 10 of the 6 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Plans Archive Skill

This skill archives finalized Claude Code implementation plans to project-local plans/ directories with a global index at ~/.claude/plans/INDEX.md. Plans stay with their projects. The index is the cross-project lookup.

This skill is global — it works across all projects and requires no Git repo or commit workflow.

Why This Matters

Claude Code auto-saves plan mode output to ~/.claude/plans/<random-slug>.md. These files accumulate with no project association, no index, and no way to retrieve "what was the plan for project X last month?" Plans capture the full rationale and constraints of an implementation effort. They pair naturally with DEVLOG.md: plans capture the "how before execution," devlog captures the "what was decided and why."


File Layout

~/.claude/plans/
  INDEX.md                              — Global lookup: slug ↔ project-local plan file
  misty-conjuring-hammock.md            — Claude Code auto-generated plan (random slug, do not modify)
  vast-coalescing-cookie.md             — Another auto-generated plan
  ...

<project-directory>/plans/
  2026-03-21-marketing-messaging.md     — Named plan copy, references slug file
  2026-03-21-product-analysis.md        — Another named plan
  ...
  • ~/.claude/plans/<slug>.md — Claude's auto-generated plans. Never modify these.
  • <project>/plans/<date-name>.md — Named, project-local copies with a reference back to the slug file.
  • ~/.claude/plans/INDEX.md — Master lookup table mapping slugs to project-local files.

INDEX.md Format

Lives at ~/.claude/plans/INDEX.md.

# Plans Index

| Date | Slug | Project | Title | Local Plan | Status |
|---|---|---|---|---|---|
| 2026-03-21 | `misty-conjuring-hammock` | code-katz | Marketing & Messaging Plan | `code-katz/plans/2026-03-21-marketing-messaging.md` | `active` |
| 2026-03-21 | `misty-conjuring-hammock` | d20m | Product Analysis & Roadmap | `d20m/plans/2026-03-21-product-analysis.md` | `active` |

Newest row first. Multiple plans can reference the same slug (when one slug file contains plans for multiple projects). Status values:

StatusMeaning
activeCurrent plan for this project, being executed against
archivedSuperseded by a newer plan after execution work began
supersededReplaced before execution started
executedFully implemented and delivered
rejectedCreated but never acted on; no longer relevant

Local Plan Filename Format

YYYY-MM-DD-plan-slug.md — date of archiving, 3-5 word lowercase-hyphenated slug derived from the plan title.

Examples:

  • 2026-03-21-marketing-messaging.md
  • 2026-03-21-product-analysis.md
  • 2026-02-10-auth-redesign.md

Trigger Conditions

Explicit

  • "archive this plan" / "save this plan" / "plans save"
  • /plans / /plans archive
  • "finalize plan" / "this plan is done" / "this plan is final"
  • "plans list" / "what plans do I have" / "show archived plans"
  • "find the plan for [project]" / "show me the plan for [project]"

Proactive

At the end of a plan-mode session that produced a finalized implementation plan — before the user moves to execution — suggest: "This plan looks finalized — want me to archive it to <project>/plans/?"

Do NOT trigger proactively for exploratory or in-progress plans, partial outlines, or plans explicitly marked as drafts.


Workflow: Archiving a Plan

Step 1: Locate Plan Content

In order:

  1. Random-slug file — If the current plan slug is known, read ~/.claude/plans/<slug>.md directly. Preferred.
  2. Conversation extraction — Extract the most recent structured implementation plan from the thread.
  3. Ask — "Where is the plan? I can read ~/.claude/plans/<slug>.md if you have the filename, or extract it from this conversation."

Step 2: Determine Project and Title

Extract the plan title from the first H1 heading. Derive:

  • Project directory — the project root where the plan will be saved (e.g., code-katz/, d20m/)
  • Project name — short human-readable identifier for INDEX.md (e.g., "code-katz", "d20m")
  • Short slug — lowercase-hyphenated, 3-5 words from the title, for the filename

Suggest and confirm: "I'll save this as code-katz/plans/2026-03-21-marketing-messaging.md — correct?"

Step 3: Show the User (before writing anything)

Here's what I'm about to do:

1. Create <project>/plans/ directory (if needed)
2. Write plan to <project>/plans/YYYY-MM-DD-plan-slug.md
3. Update ~/.claude/plans/INDEX.md
   — New row: date | slug | project | title | local path | active
   — Previous active plan for this project (if any) → archived

Plan starts with:
---
[first 8-10 lines of plan content]
---

Proceed?

Never write files before user confirms.

Step 4: Write Files

  1. Create <project>/plans/ directory if it doesn't exist.
  2. Write plan content to the local plan file. Prepend a header block:
> Source: `~/.claude/plans/<random-slug-name>.md`
> Archived: YYYY-MM-DD · Project: [project name]
> Status: `active`
> Maintained by [claude-plans-skill](https://github.com/code-katz/claude-plans-skill).

---

[verbatim plan content]

The > Status: line is the in-file status marker. It must always match the plan's status in INDEX.md. When a plan's status changes, update both INDEX.md and this header line. This ensures that if Claude reads a plan file directly (via a path in a devlog, roadmap, or conversation), the status is immediately visible without consulting INDEX.md.

If the source was a random-slug file, include the full slug name (e.g., misty-conjuring-hammock) — this is the fun part, keep it. If the plan was extracted from conversation with no slug, use Source: conversation instead.

  1. Read existing ~/.claude/plans/INDEX.md (create it if it doesn't exist). Update the previously-active row for this project to archived or superseded. Update the corresponding plan file's > Status: header line to match. Prepend new row with status active.
  2. Review other active plans for this project. Scan INDEX.md for any other active plans for the same project. If found, flag them to the user: "There are N other active plans for [project]. Should any of these be marked as executed, superseded, or rejected?" List the plans with their titles and dates. User decides per-plan; update both INDEX.md and file headers accordingly. This prevents stale active plans from accumulating.

Step 5: Confirm

"Saved to <project>/plans/YYYY-MM-DD-plan-slug.md and indexed in ~/.claude/plans/INDEX.md."

No git commit. No push.


Workflow: Listing Plans

When the user asks "what plans do I have" / "plans list" / "show archived plans":

  1. Read ~/.claude/plans/INDEX.md
  2. Display the full table — never truncate
  3. Offer to load any plan: "Want me to read any of these?"

Workflow: Retrieving a Plan

  1. Read INDEX.md and find matching rows (case-insensitive, partial match OK)
  2. One match: read and display the local plan file
  3. Multiple matches: show matching rows and ask which
  4. No match: report not found, offer to search by date or keywords

Workflow: Changing Plan Status

Any plan's status can be changed at any time. Both INDEX.md and the plan file's > Status: header line must be updated together.

Triggers

User saysNew status
"mark the plan executed" / "we shipped it" / "the plan is done"executed
"this plan is superseded" / "we replaced this plan"superseded
"reject this plan" / "we're not doing this" / "this plan is dead"rejected
"archive this plan" (when a newer plan exists)archived

Steps

  1. Identify the plan (by title, slug, or context). If ambiguous, ask.
  2. Update INDEX.md: change the plan's status column.
  3. Update the plan file's > Status: header line to match (e.g., > Status: \executed`). If the plan file has no > Status:line (legacy file), add one after the> Archived:` line.
  4. Confirm: "Marked [title] as [new status] (was [old status])."
  5. For executed status specifically, suggest a devlog entry: "Want to log a devlog milestone entry referencing this plan?"

Session Start Behavior

When a session begins on a known project:

  1. Check INDEX.md for an active plan for this project.
  2. If found, read it silently — let it inform your work. Do not summarize unless the user asks.
  3. If the match is uncertain, ask: "I found a recent plan that might be for this project — [title] from [date]. Should I load it as context?"
  4. Do NOT read plans with status executed, superseded, archived, or rejected at session start. These are historical context only.

Reading Plan Files Directly

When you encounter a plan file path in a devlog entry, roadmap reference, conversation, or any other context:

  1. Check the > Status: line in the file header first. This is the authoritative in-file status marker.
  2. If status is executed, superseded, archived, or rejected: note the status and do not treat this as the current approach. It is historical context only. If the user is asking about it for research purposes, provide it with the status clearly noted.
  3. If status is active: treat as the current plan.
  4. If no > Status: line exists (legacy plan file without the marker): check INDEX.md for the plan's status before acting on it. If it appears in INDEX.md as non-active, treat accordingly. If it does not appear in INDEX.md, ask the user.

Error Handling

  • Slug file not found — Fall back to conversation extraction. Notify the user.
  • INDEX.md missing — Create it fresh.
  • INDEX.md unexpected format — Show the user and ask whether to overwrite or manually merge.
  • Title/project ambiguous — Always ask before archiving with incorrect metadata.
  • Project directory unclear — Ask the user: "Which project directory should this plan live in?"

Style Guidelines

  • Local plan filenames use the date of archiving (not plan creation or delivery date)
  • Short-title slugs should be meaningful when scanning <project>/plans/ — not generic
  • INDEX.md is always newest-first
  • Preserve plan content verbatim — no reformatting, no summarizing
  • Project names in INDEX.md should be consistent across rows
  • One slug can map to multiple project-local plans (when a plan file covers multiple projects)

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.