pp-migrate-v2

A migration command for updating an older Project Progress folder layout to a newer one. It combines older project overview files into a new `INDEX.md` and archives files that are no longer part of the newer structure.

In plain words
What is it for?
Use it when `.context/project/` contains the older `STATUS.md`, `CODEBASE.md`, or `CHANGELOG.md` files and needs to move to the newer Project Progress format.
Why use it?
It helps older projects use the current documentation layout without losing their previous status, codebase, or change history.

Command

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/unclecode/claude-code-tools/pp-migrate-v2
Clone the repo
git clone --depth 1 https://github.com/unclecode/claude-code-tools
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,801 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.01801
Opus 5 $0.00000 $0.00901
Sonnet 5 $0.00000 $0.00360
Haiku 4.5 $0.00000 $0.00180

Measured yesterday against content hash 0df460e7e73e, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

pp-migrate-v2 scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/unclecode-cc-toolkit/commands/pp-migrate-v2.md · 263 lines

How it starts

The opening of the file, as written. The whole thing — 263 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Migrate PP v1.0 to v1.1+ Structure

TEMPORARY COMMAND: Upgrades old Project Planning structure (v1.0.0) to new structure (v1.1.0+).

Arguments

None

Purpose

Migrate existing PP projects from old structure (with root STATUS.md, CODEBASE.md, CHANGELOG.md) to new simplified structure (with combined INDEX.md).

Use this if you have projects using the old PP structure that need upgrading.

What Changes

Old Structure (v1.0.0):

.context/project/
├── INDEX.md (old format)
├── STATUS.md ← will be archived
├── CODEBASE.md ← will be archived
├── CHANGELOG.md ← will be archived
├── WORKFLOW.md (old)
└── subproject/

New Structure (v1.1.0+):

.context/project/
├── INDEX.md ← NEW (combines INDEX + STATUS + high-level TODOs)
├── WORKFLOW.md ← UPDATED
├── PRINCIPLES.md
├── LESSONS.md
└── subproject/ ← UNCHANGED

Execution Instructions

Step 1: Detect Old Structure

Check if this is an old PP structure:

ls .context/project/STATUS.md

If STATUS.md doesn't exist:

  • Inform user: "Project already using new structure or not initialized. Nothing to migrate."
  • Exit

If STATUS.md exists:

  • Proceed to Step 2

Step 2: Read Old Files

Read and extract data from old files:

From STATUS.md:

  • Active subproject (section: "## Active Subproject")
  • Subproject summary table (section: "## Subproject Summary")
  • Overall progress (if any)
  • Cross-project dependencies (if any)
  • Recent decisions (if any)

From INDEX.md (old):

  • Project name
  • Project description
  • Created date
  • Subprojects table
  • Environment info

From CODEBASE.md:

  • Check if it had any important root-level file listings
  • (Usually empty or minimal in old structure)

From CHANGELOG.md:

  • Check if it had any cross-project entries
  • (Usually empty or minimal in old structure)

Step 3: Create New INDEX.md

Generate new INDEX.md using the template from pp-init-assets/templates/root/INDEX.md:

Populate with extracted data:

  • {{PROJECT_NAME}} - from old INDEX.md
  • {{PROJECT_DESCRIPTION}} - from old INDEX.md
  • {{DATE}} - original created date from old INDEX.md
  • {{ACTIVE_SUBPROJECT}} - from old STATUS.md
  • {{SUBPROJECT_TABLE}} - from old INDEX.md
  • {{SUBPROJECT_STATUS_TABLE}} - from old STATUS.md
  • {{ENVIRONMENT}} - from old INDEX.md
  • {{TODO_ITEM_1}}, {{TODO_ITEM_2}}, {{TODO_ITEM_3}} - set to "TBD" or extract from context

Read the full file on GitHub · 263 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 263 lines · 0 tokens per session scan A 0df460e7e73e

Subscribe to this mod's changes

pp-migrate-v2 is a command published in the GitHub repository unclecode/claude-code-tools (4 stars, last pushed 9mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,801 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.