A living record of architectural decisions, milestones, key insights, and strategic direction. Auto-maintained via claude-devlog-skill. Entries are reverse-chronological.
Category: feature
Tags: status-markers, rejected, plan-review, context-management, skill-behavior
Risk Level: med
Breaking Change: yes
Added > Status: line to plan file headers so Claude can identify stale plans when reading files directly. Added "rejected" as a fifth status value. Expanded status change workflow and added active-plan review during archiving.
- Added
> Status: \active`` line to plan file header template, between Archived and Maintained lines - Status in file header must always match INDEX.md; both are updated together on any status change
- Added
rejectedstatus: "Created but never acted on; no longer relevant" - Replaced narrow "Marking a Plan Executed" workflow with general "Changing Plan Status" workflow covering all transitions (executed, superseded, rejected, archived) with trigger phrases for each
- Added "Reading Plan Files Directly" section: check
> Status:line first, treat non-active plans as historical only, handle legacy files without status lines by checking INDEX.md - Added plan review step to archiving workflow (Step 4): when archiving a new plan, scan INDEX.md for other
activeplans in the same project and prompt user to update stale ones - SKILL.md grew from 227 to 253 lines (+26)
- Status in file header (not just INDEX.md): INDEX.md is the master index, but plans are often referenced by file path in devlogs, roadmaps, and conversations. If Claude reads the file directly, the in-file status prevents acting on a stale plan.
- "rejected" over "abandoned" or "cancelled": "Rejected" is precise: the plan was evaluated and not adopted. "Abandoned" implies work started and stopped. "Cancelled" implies external force.
- Plan review piggybacked on archiving: Rather than a separate manual audit, the review triggers automatically when archiving a new plan.
- Plan:
code-katz/claude-plans-skill/plans/2026-03-29-plans-status-markers.md - Companion change: claude-devlog-skill deprecation markers (same session)
Category: feature
Tags: lint, code-quality, skill-behavior, cross-tool
Risk Level: low
Breaking Change: no
Added a "Lint Check" subsection after Session Start Behavior, requiring the skill to verify the target project has a linter configured when identifying a project for plan archiving.
- New subsection placed after "Session Start Behavior", before "Error Handling"
- Framed as "when identifying the project for plan archiving" since the plans skill has no formal Project Context section
- Checks for stack-appropriate lint config: Ruff (Python), ESLint/Biome (JS/TS), SwiftLint (Swift), golangci-lint (Go), clippy (Rust), pre-commit (general)
- Part of a cross-tool effort to standardize lint checks across all code-katz tools
- After Session Start Behavior rather than at the top — plans skill discovers its project during archiving, not at session start like devlog/roadmap, so the check belongs where project identification actually happens
Category: refactor
Tags: plan-skill, skill-design, v2, architecture
Risk Level: med
Breaking Change: yes
Redesigned the plans skill from a centralized global archive (~/.claude/plans/archive/) to a project-local model where plans live in <project>/plans/ with a global lookup index at ~/.claude/plans/INDEX.md.
The v1.0 design stored all archived plans in a single global directory (~/.claude/plans/archive/). While functional, this decoupled plans from their projects — browsing a project directory didn't reveal its plans, and plans weren't co-located with the code they described.
The v2.0 design:
- Plans are saved to
<project-directory>/plans/YYYY-MM-DD-slug.md - Each plan file includes a header referencing back to the original
~/.claude/plans/<random-slug>.mdsource - A global
~/.claude/plans/INDEX.mdserves as a cross-project lookup table mapping slugs → project-local files - INDEX.md columns: Date, Slug, Project, Title, Local Plan path, Status
The global INDEX.md replaces the per-archive INDEX.md. Plans are now discoverable both locally (browse the project) and globally (search the index).
- Project-local over centralized archive — Plans are project artifacts, not tool config. They belong with the project they describe. The v1.0 "plans are tool config" framing was wrong.
- Global INDEX.md at
~/.claude/plans/(notarchive/) — The index is the only global artifact. Archive subdirectory is eliminated. - Slug column in INDEX.md — One slug file can produce multiple project-local plans (e.g.,
misty-conjuring-hammockcontained both a Code Katz and d20m plan). The slug column captures this relationship. - Source reference in plan header — Each local plan file references its original slug file, preserving the breadcrumb back to Claude's auto-generated output.
- [2026-03-20] claude-plan-skill v1.0 — initial design and release (superseded by this entry)
- First plans archived under v2.0:
code-katz/plans/2026-03-21-marketing-messaging.md,d20m/plans/2026-03-21-product-analysis.md
Category: milestone
Tags: plan-skill, skill-design, v1
Risk Level: low
Breaking Change: no
Designed and built the first version of the plans archiving skill. Archives finalized Claude Code plan mode output to a global named archive at ~/.claude/plans/archive/ with an INDEX.md index table.
Motivation: Claude Code accumulates random-slug plan files in ~/.claude/plans/ with no index or project association. A previous /plans skill existed but used a repo-based / git-commit design — plans are Claude config artifacts, not project source files. This skill uses a global archive with no git dependency.
The skill pairs with devlog-skill: plans capture the "how before execution," devlog captures the "what was decided and why."
A small but notable design touch: the original random-slug filename (e.g., vast-coalescing-cookie) is preserved in the header of each archived plan file as a breadcrumb back to the source.
- Global archive (
~/.claude/plans/archive/) over per-project repo — plans are tool configuration, not source code. The previous skill's repo-based design was the wrong model. - No git/commit requirement — simpler, works without any repo context, appropriate for a global config artifact
- Two statuses for replaced plans:
archived(saw implementation work) vssuperseded(replaced before that). Default toarchivedwhen unsure. - Prefer reading from
~/.claude/plans/<slug>.mdover conversation extraction — it's the canonical plan mode output - Proactive suggestion at plan finalization, not automatic archiving — user makes the "this is final" call
- Preserve original slug in archive header — the random slug names are fun and serve as a breadcrumb to the source file