Non-negotiable rules:
- Read
references/claude-agent-runtime.md before planning or rewriting.
- Default to
--mode plan unless the user explicitly asks for rewrite now.
- Keep the body lean because the full markdown body becomes the agent system prompt.
- Use frontmatter for runtime controls before adding more prose.
- Never preload large skills into agent frontmatter unless they have already been slimmed and justified.
- Never add skill-only frontmatter to an agent.
allowed-tools, argument-hint, arguments, when_to_use, disable-model-invocation, user-invocable, context, agent, shell, and paths belong to skills, not agents.
Normalize Agent For Claude
Inputs
$target: Agent directory or direct path to AGENT.md
$mode: Optional. plan or rewrite. Default: plan
Goal
Produce a Claude Code optimized agent that carries role identity and constraints cleanly, uses frontmatter intentionally, and avoids wasting prompt budget on procedural bulk that belongs in skills or shared rules.
Step 1: Resolve the target
- Accept either an agent directory or a direct
AGENT.md path.
- Normalize to the agent root and confirm
AGENT.md exists.
- Determine mode:
--mode rewrite means plan first, then rewrite in the same run
- missing mode means
plan
- Inventory the current agent:
- line count of
AGENT.md
- existing frontmatter fields
- section map of the body
- obvious duplicated global policy or giant knowledge catalogs
Success criteria: You know the exact target agent, target mode, and the current prompt-shape risks.
Step 2: Load the Claude Code agent runtime anchors
Read references/claude-agent-runtime.md fully before making any recommendation.
Extract these constraints from the reference:
- agent
description becomes whenToUse
- the whole markdown body becomes the system prompt
- Claude supports richer agent frontmatter than most custom agents use
- agent
skills: preloads full skill content
- tool allow and deny lists are enforced at runtime
- repo-wide project rules already have a separate instruction hierarchy
- agent rewrites must use agent-native frontmatter only, not skill-native headers
If this repository contains claude-code-source/, use the exact source files named in the reference to verify unusual frontmatter or isolation decisions.
Success criteria: Every planned change is backed by specific Claude runtime behavior.
Step 3: Audit the current agent against Claude's runtime
Evaluate the target agent using this checklist:
- Identity vs procedure
- What content is true role identity? (role definition, expertise bullets, decision heuristics, domain knowledge, traits)
- What content is actually workflow and should live in skills? (step-by-step procedures, shell commands, templates, checklists)
- Role-specific expertise lists and decision heuristics are
IDENTITY — they stay in the body. Only move procedure into skills or references.
- Prompt mass
- Which large sections exist only because the current agent is compensating for missing skills or shared rules?
- Frontmatter opportunities
- Would
disallowedTools, skills, initialPrompt, hooks, permissionMode, maxTurns, background, memory, or isolation improve runtime behavior?
- Are there any skill-only headers that must be removed or explicitly avoided?
- Tool surface
- Is the tool list broader than the role actually needs?
- Skill preload risk
- Would adding a skill to frontmatter create prompt bloat because the skill is still too large?
- Instruction duplication
- Are repo-wide rules duplicated here even though Claude already loads project memory separately?
Classify each issue:
PROMPT: body is too large or carries the wrong content
RUNTIME: missing or misused Claude frontmatter
TOOLS: tool exposure is too broad or too vague
DUPLICATION: project policy is duplicated in agent body
EXTRACTION: content should move into skills or references
Success criteria: You have a concrete, source-backed explanation of what should stay, move, or shrink.
Step 4: Write the per-agent DAG plan
Create both of these artifacts:
.ulpi/plans/agents/<agent-name>-normalize-for-claude.md
.ulpi/plans/agents/<agent-name>-normalize-for-claude.json
The plan must include:
- Current state
- line count
- current frontmatter
- oversized sections
- duplicated global policy
- Claude runtime findings
- each finding mapped to source references from
references/claude-agent-runtime.md
- Target state
- final frontmatter shape
- body sections to keep, delete, or move
- skills or references the agent should depend on instead
- DAG tasks
- frontmatter rewrite
- prompt-body reduction
- procedure extraction into skills or references
- tool-surface tightening
- validation
- Guardrails
- what identity must stay
- what must move out
- what must not be preloaded
- Validation
- concrete checks to confirm the final agent is structurally sound
Each DAG task should include:
id
title
rationale
filesToModify
filesToCreate
dependencies
validation
Success criteria: The markdown and JSON plans describe the same safe sequence of work.
Step 5: Rewrite only if requested
If mode is plan, stop after writing the DAG artifacts.
If mode is rewrite:
- Rewrite the frontmatter first.
- Reduce the body to:
- role and expertise (specific domain knowledge and capability claims)
- scope
- decision heuristics (how to choose between approaches)
- failure boundaries
- output contract
- brief skill handoff guidance
- Move repeated procedures and large examples out of the agent. Keep role expertise bullets and decision heuristics — these are identity, not procedure.
- Add Claude-native frontmatter only when it changes runtime behavior materially.
- Keep the result role-specific, not generic.
Preferred rewrite outcomes:
- agent
description becomes a strong whenToUse
- body becomes much smaller and more identity-focused
disallowedTools and tighter tools are used where appropriate
skills: is used sparingly and only for already-slim skills
- duplicated project rules are removed from the body
- no skill-only headers are introduced into the rewritten agent
Success criteria: The rewritten agent is thinner, more precise, and better aligned to Claude's runtime model.
Step 6: Validate the result
After planning or rewriting:
- Re-read the final
AGENT.md.
- Confirm the frontmatter reflects real runtime decisions.
- Confirm the body is mostly identity, scope, heuristics, and boundaries.
- Confirm no skill-only headers were introduced.
- Confirm large procedure blocks are gone or explicitly moved.
- Confirm the summary names the Claude source anchors that drove the major changes.
Success criteria: The output can be used immediately without re-interpreting why the structure changed.
Output Contract
Always report:
Agent: target path and normalized root
Mode: plan or rewrite
Top runtime issues: the highest-value Claude mismatches
Artifacts: exact plan or rewritten file paths
Guardrails applied: 3 to 5 bullets tied to Claude runtime behavior
If rewrite mode was used, also report:
- which sections were removed or moved
- which frontmatter fields were added, removed, or intentionally omitted
1---2name: normalize-agent-for-claude3description: Convert a local AGENT.md into a Claude Code optimized agent — an AUDIT-then-rewrite that ties every change to real Claude agent-runtime behavior, not taste. Inventories the agent, checks it against the runtime reference (the whole body becomes the system prompt; role identity stays, procedure moves to skills), writes a per-agent DAG rewrite plan with source-backed guardrails, and — only when asked — rewrites the frontmatter and prompt body thinner and more role-specific. Defaults to PLAN mode, never a blind rewrite, uses agent-native frontmatter only, and grounds each decision in the runtime source rather than inventing conventions. Use to migrate or thin an AGENT.md for Claude's agent runtime.4---5
6<EXTREMELY-IMPORTANT>
7Every rewrite decision must be tied to Claude Code's agent runtime.
8
9Non-negotiable rules:
101. Read `references/claude-agent-runtime.md` before planning or rewriting.
112. Default to `--mode plan` unless the user explicitly asks for rewrite now.
123. Keep the body lean because the full markdown body becomes the agent system prompt.
134. Use frontmatter for runtime controls before adding more prose.
145. Never preload large skills into agent frontmatter unless they have already been slimmed and justified.
156. Never add skill-only frontmatter to an agent. `allowed-tools`, `argument-hint`, `arguments`, `when_to_use`, `disable-model-invocation`, `user-invocable`, `context`, `agent`, `shell`, and `paths` belong to skills, not agents.
16</EXTREMELY-IMPORTANT>
17
18# Normalize Agent For Claude
19
20## Inputs
21
22- `$target`: Agent directory or direct path to `AGENT.md`
23- `$mode`: Optional. `plan` or `rewrite`. Default: `plan`
24
25## Goal
26
27Produce a Claude Code optimized agent that carries role identity and constraints cleanly, uses frontmatter intentionally, and avoids wasting prompt budget on procedural bulk that belongs in skills or shared rules.
28
29## Step 1: Resolve the target
30
311. Accept either an agent directory or a direct `AGENT.md` path.
322. Normalize to the agent root and confirm `AGENT.md` exists.
333. Determine mode:
34 - `--mode rewrite` means plan first, then rewrite in the same run
35 - missing mode means `plan`
364. Inventory the current agent:
37 - line count of `AGENT.md`
38 - existing frontmatter fields
39 - section map of the body
40 - obvious duplicated global policy or giant knowledge catalogs
41
42**Success criteria**: You know the exact target agent, target mode, and the current prompt-shape risks.
43
44## Step 2: Load the Claude Code agent runtime anchors
45
46Read `references/claude-agent-runtime.md` fully before making any recommendation.
47
48Extract these constraints from the reference:
49- agent `description` becomes `whenToUse`
50- the whole markdown body becomes the system prompt
51- Claude supports richer agent frontmatter than most custom agents use
52- agent `skills:` preloads full skill content
53- tool allow and deny lists are enforced at runtime
54- repo-wide project rules already have a separate instruction hierarchy
55- agent rewrites must use agent-native frontmatter only, not skill-native headers
56
57If this repository contains `claude-code-source/`, use the exact source files named in the reference to verify unusual frontmatter or isolation decisions.
58
59**Success criteria**: Every planned change is backed by specific Claude runtime behavior.
60
61## Step 3: Audit the current agent against Claude's runtime
62
63Evaluate the target agent using this checklist:
64
651. **Identity vs procedure**
66 - What content is true role identity? (role definition, expertise bullets, decision heuristics, domain knowledge, traits)
67 - What content is actually workflow and should live in skills? (step-by-step procedures, shell commands, templates, checklists)
68 - Role-specific expertise lists and decision heuristics are `IDENTITY` — they stay in the body. Only move *procedure* into skills or references.
692. **Prompt mass**
70 - Which large sections exist only because the current agent is compensating for missing skills or shared rules?
713. **Frontmatter opportunities**
72 - Would `disallowedTools`, `skills`, `initialPrompt`, `hooks`, `permissionMode`, `maxTurns`, `background`, `memory`, or `isolation` improve runtime behavior?
73 - Are there any skill-only headers that must be removed or explicitly avoided?
744. **Tool surface**
75 - Is the tool list broader than the role actually needs?
765. **Skill preload risk**
77 - Would adding a skill to frontmatter create prompt bloat because the skill is still too large?
786. **Instruction duplication**
79 - Are repo-wide rules duplicated here even though Claude already loads project memory separately?
80
81Classify each issue:
82- `PROMPT`: body is too large or carries the wrong content
83- `RUNTIME`: missing or misused Claude frontmatter
84- `TOOLS`: tool exposure is too broad or too vague
85- `DUPLICATION`: project policy is duplicated in agent body
86- `EXTRACTION`: content should move into skills or references
87
88**Success criteria**: You have a concrete, source-backed explanation of what should stay, move, or shrink.
89
90## Step 4: Write the per-agent DAG plan
91
92Create both of these artifacts:
93
94- `.ulpi/plans/agents/<agent-name>-normalize-for-claude.md`
95- `.ulpi/plans/agents/<agent-name>-normalize-for-claude.json`
96
97The plan must include:
98
991. **Current state**
100 - line count
101 - current frontmatter
102 - oversized sections
103 - duplicated global policy
1042. **Claude runtime findings**
105 - each finding mapped to source references from `references/claude-agent-runtime.md`
1063. **Target state**
107 - final frontmatter shape
108 - body sections to keep, delete, or move
109 - skills or references the agent should depend on instead
1104. **DAG tasks**
111 - frontmatter rewrite
112 - prompt-body reduction
113 - procedure extraction into skills or references
114 - tool-surface tightening
115 - validation
1165. **Guardrails**
117 - what identity must stay
118 - what must move out
119 - what must not be preloaded
1206. **Validation**
121 - concrete checks to confirm the final agent is structurally sound
122
123Each DAG task should include:
124- `id`
125- `title`
126- `rationale`
127- `filesToModify`
128- `filesToCreate`
129- `dependencies`
130- `validation`
131
132**Success criteria**: The markdown and JSON plans describe the same safe sequence of work.
133
134## Step 5: Rewrite only if requested
135
136If mode is `plan`, stop after writing the DAG artifacts.
137
138If mode is `rewrite`:
139
1401. Rewrite the frontmatter first.
1412. Reduce the body to:
142 - role and expertise (specific domain knowledge and capability claims)
143 - scope
144 - decision heuristics (how to choose between approaches)
145 - failure boundaries
146 - output contract
147 - brief skill handoff guidance
1483. Move repeated procedures and large examples out of the agent. Keep role expertise bullets and decision heuristics — these are identity, not procedure.
1494. Add Claude-native frontmatter only when it changes runtime behavior materially.
1505. Keep the result role-specific, not generic.
151
152Preferred rewrite outcomes:
153- agent `description` becomes a strong `whenToUse`
154- body becomes much smaller and more identity-focused
155- `disallowedTools` and tighter `tools` are used where appropriate
156- `skills:` is used sparingly and only for already-slim skills
157- duplicated project rules are removed from the body
158- no skill-only headers are introduced into the rewritten agent
159
160**Success criteria**: The rewritten agent is thinner, more precise, and better aligned to Claude's runtime model.
161
162## Step 6: Validate the result
163
164After planning or rewriting:
165
1661. Re-read the final `AGENT.md`.
1672. Confirm the frontmatter reflects real runtime decisions.
1683. Confirm the body is mostly identity, scope, heuristics, and boundaries.
1694. Confirm no skill-only headers were introduced.
1705. Confirm large procedure blocks are gone or explicitly moved.
1716. Confirm the summary names the Claude source anchors that drove the major changes.
172
173**Success criteria**: The output can be used immediately without re-interpreting why the structure changed.
174
175## Output Contract
176
177Always report:
178
1791. `Agent:` target path and normalized root
1802. `Mode:` `plan` or `rewrite`
1813. `Top runtime issues:` the highest-value Claude mismatches
1824. `Artifacts:` exact plan or rewritten file paths
1835. `Guardrails applied:` 3 to 5 bullets tied to Claude runtime behavior
184
185If rewrite mode was used, also report:
186- which sections were removed or moved
187- which frontmatter fields were added, removed, or intentionally omitted