plan-normalization

A process for rewriting a reviewed plan into one self-contained final version before approval. It removes review-history notes and keeps only the currently agreed decisions.

In plain words
What is it for?
It is for normalizing plan.md after review changes, checking the required plan structure, and preparing a clean handoff before human approval.
Why use it?
It prevents an implementation plan from depending on a trail of earlier edits and helps keep its fixed approval hash consistent.

Skill for Claude CodeCodex

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 skills/s977043/plangate/plan-normalization
Any agent
npx skills add s977043/PlanGate --skill plan-normalization
Clone the repo
git clone --depth 1 https://github.com/s977043/PlanGate

Made for: Claude Code, Codex.

Per session 92 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,482 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.00092 $0.03482
Opus 5 $0.00046 $0.01741
Sonnet 5 $0.00018 $0.00696
Haiku 4.5 $0.00009 $0.00348

Measured 2d ago against content hash 40d782f2c4df, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

plan-normalization 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 2d ago.

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.

.agents/skills/plan-normalization/SKILL.md · 251 lines

How it starts

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

Plan Normalization

レビュー履歴を追記した Plan を、現在の最終合意状態だけで自己完結する Canonical Plan に再構成する。

重要: PlanGate は C-3 で plan_hash を固定し、exec 時に EH-3 が照合する。したがって正規化は C-3 承認前に行う。C-3 後の plan.md 書き換えは禁止。

適用位置

C-2 external review
  ↓
R-NNN 確定反映
  ↓
Plan Normalization  ← 本 skill
  ↓
簡易 C-1 再実行
  ↓
C-3 human approval / plan_hash 固定
  ↓
exec

適用範囲(この Gate が掛かる対象)

本 Gate は これから normalization を通す Plan にだけ適用する。既存の docs/working/TASK-XXXX/plan.md 全体を後から一括で検査する lint ではない。

対象 扱い
本 skill を通して正規化する Plan(C-2 反映後・C-3 前) 適用(checker 必須)
既に C-3 承認済み / 完了済みの過去 Plan 対象外(遡って是正しない。C-3 後の書き換えは plan_hash を壊すため禁止)
C-2 を実施せず修正履歴も無い light / ultra-light の Plan N/A(実施しない。ただし C-1 / C-3 の既存条件は緩和しない)

理由: checker の必須見出しは docs/working/templates/plan.md 系の Canonical Plan 構造を前提としており、過去に別テンプレートで書かれた Plan は構造的に 一致しない。既存資産を一括で違反判定にしないため、適用対象を「正規化を通す Plan」に限定する。過去 Plan を canonical 化したい場合は、その Plan を本 skill に通す時点で初めて対象になる。

Read First

  1. docs/working/TASK-XXXX/plan.md
  2. docs/working/TASK-XXXX/pbi-input.md
  3. docs/working/TASK-XXXX/test-cases.md
  4. docs/working/TASK-XXXX/todo.md
  5. docs/working/TASK-XXXX/review-external.md(存在すれば)
  6. docs/working/TASK-XXXX/review-self.md
  7. docs/working/TASK-XXXX/decision-log.jsonl
  8. docs/ai/plan-normalization-gate.md(上流リポジトリで参照可能な場合。本 Skill が正本であり、当該 docs は上流向けの概要と入口)

参照解決順(docs/** / 導入先で必ずこの順に探す): 本 Skill が参照する docs/** は上流リポジトリ基準の相対パスであり、install.sh --claude / plugin(Claude marketplace)/ Codex の 3 経路とも配布対象外(解決不可)。(1) 導入先リポジトリの同名パスを探す → (2) 見つからなければ 「正本 <path> を参照できなかった」と明示し、本 Skill 内の記述を代替正本として扱い、推測で内容を補わない。plugin root 配下の探索は docs/** には適用しない: plugin が配布するのは agents / commands / skills / rules 等の定義ディレクトリのみで docs/ を配布対象として認識せず、plugin root 配下に相当する配布物が存在しないため、plugin root 段を置いても必ず空振りする(クラス A の rules 参照が plugin root 配下で解決できるのは rules/ が実際に配布されるからであり、この非対称を docs/** に持ち込まない)。

出力契約

正規化後も成果物の正本は plan.md のままとする。canonical-plan.md を別に増やさない。

理由:

Read the full file on GitHub · 251 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. 2d ago First seen · 251 lines · 92 tokens per session scan A 40d782f2c4df

Subscribe to this mod's changes

plan-normalization is a skill published in the GitHub repository s977043/PlanGate (2 stars, last pushed 2d ago), licensed MIT. It adds 92 tokens to every session and 3,482 once invoked, about $0.0005 per session on Opus 5. 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.