Save Session as Agent
Generate a reusable agent file from the current conversation and save it to .claude/agents/ .
Instructions
Step 1: Generate the agent file
Analyze the entire conversation — the original task, every user correction, every tool call, and the final output — then distill it into a reusable agent file. The agent file is NOT a session log. It is a system prompt that a subagent will receive with no prior context.
Key priorities:
-
User corrections are the most important signal. Every correction implies a rule the agent got wrong initially. Each correction MUST become an explicit rule.
-
Only capture what worked. If approach A failed and approach B worked — only document approach B.
-
Generalize — replace session-specific values (file names, URLs, credentials) with descriptive placeholders. The agent must work for similar tasks, not just this exact one.
-
Keep it concise — this is a system prompt for a subagent. Shorter is better.
Output the agent file with YAML frontmatter followed by a system prompt body:
name: "<kebab-case-name>" description: "<one-liner, max 200 chars>" tools: Read, Glob, Grep, Bash, Write, Edit model: sonnet
You are an agent that <role description — what this agent does>.
Behavior
- <First step the agent should take>
- <Next step>
- <...>
Rules
- <Rule derived from user correction or session learning>
- <Another rule>
Output
<What the agent should produce — format, structure, location.>
Frontmatter Constraints
-
name — required, kebab-case, max 100 characters
-
description — required, max 200 characters
-
tools — required, comma-separated list of tools the agent needs (choose from: Read, Glob, Grep, Bash, Write, Edit, WebFetch, WebSearch)
-
model — required, use sonnet unless the task clearly needs stronger reasoning (then use opus )
Body Constraints
-
Start with a one-sentence role description: "You are an agent that..."
-
Behavior section: numbered steps describing what the agent does, in order
-
Rules section: bullet list of constraints and guidelines — every user correction from the session MUST appear here
-
Output section: what the agent produces and in what format
-
All sections are required
Guidelines
-
Write natural language instructions, not formal SHALL/MUST requirements
-
Be specific — "Use openpyxl for Excel files" not "Use the right tool"
-
Do NOT include session-specific details (specific file names, URLs, credentials, data values from this run)
-
DO generalize patterns — replace specific values with descriptive placeholders like <input-file> , <target-url>
-
Only include steps that succeeded, not failed attempts
-
The agent file MUST be self-contained — the subagent needs nothing beyond this prompt and its input
Step 2: Save the agent file
After generating the agent file content (starting with --- ):
Extract the name from the YAML frontmatter. Use it as the slug directly (it's already kebab-case).
Create the .claude/agents/ directory if it doesn't exist:
mkdir -p .claude/agents
Write the agent file content to .claude/agents/{name}.md using the Write tool.
Step 3: Display the result
Tell the user the agent was saved to .claude/agents/{name}.md . Let them know they can invoke it with @{name} in any conversation. Since the agent lives in the repo, it's automatically shared with anyone who has access to the repository.