From refine
Reflect on the current session and refine skills or CLAUDE.md based on patterns observed. Use when the user says "refine", "what did we learn", or at the end of a session to make skills better through use.
How this skill is triggered — by the user, by Claude, or both
Slash command
/refine:refineThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Review this session. Identify patterns worth capturing as new skills, improvements to existing skills, or additions to CLAUDE.md.
Review this session. Identify patterns worth capturing as new skills, improvements to existing skills, or additions to CLAUDE.md.
Identify what happened:
<command-name> tags) or created?If skills were created or edited this session, they're already in your context — no need to re-read them. Evaluate what you already have. If skills were used but not edited, read the actual SKILL.md files to see their current state. Check these locations:
ls -la ~/.claude/skills/ 2>/dev/null
ls -la ~/.agents/skills/ 2>/dev/null
ls -la .claude/skills/ 2>/dev/null
ls -la .agents/skills/ 2>/dev/null
ls -la ~/.refined/ 2>/dev/null
Check the locations your current agent actually discovers. For Codex, user skills live in
~/.agents/skills and repo skills in .agents/skills. For Claude-style setups, look at
~/.claude/skills and .claude/skills.
For each skill, whether from context or from reading, evaluate:
~/.refined/: yours to refine~/.claude/skills/ or .claude/skills/: yours to refine.agents/skills/: repo-owned; edit it in that repo~/.agents/skills/: inspect the target first. Treat it as a discovery surface, not
the source of truth. If it points to ~/.refined/, edit the target in ~/.refined/. If it
points into a plugin cache or managed install, do not edit it.
Also read the project's CLAUDE.md (and ~/.claude/CLAUDE.md if relevant). Check whether what happened in this session — tool preferences, conventions, corrections — is reflected there or should be.After evaluating skills and CLAUDE.md, ask three questions: Existing skills — for each one you read:
~/.claude/CLAUDE.md): who the user is and how they work across all projects — tool preferences, communication style, secret handling, memory conventionsCLAUDE.md or .claude/CLAUDE.md): how this specific codebase works — stack, commands, validation, deploy, commit conventions
If it would be useful in a different repo, it belongs in user CLAUDE.md. If it only makes sense for this project, it belongs in repo CLAUDE.md.
Your default stance should be to create or improve something. Most sessions contain at least one workflow, preference, or piece of knowledge worth capturing. "Nothing to refine" is valid but should be rare — it means you genuinely found no reusable workflow, no skill to improve, and no CLAUDE.md update needed.
Constraints: max 2 skills touched per refine, max 1 new skill per refine.Refining an existing skill: first ls -la to check if it's a symlink.
~/.refined/ → edit the target file in ~/.refined/~/.claude/skills/, .claude/skills/, or repo .agents/skills/ → edit in place~/.agents/skills/ → inspect the target first; if it points to ~/.refined/, edit
~/.refined/, not the discovery link
Creating a new skill: ask the user which scope:~/.refined/<name>/SKILL.md, then symlink it
into each discovery surface the user actually uses (~/.claude/skills/<name> for Claude-style
setups, ~/.agents/skills/<name> for Codex/shared user installs)..claude/skills/<name>/SKILL.md for Claude-style repos, .agents/skills/<name>/SKILL.md for
Codex/shared repos).
Before committing the name, check for clashes:# Ensure no plugin or external skill already uses this name
grep -q '"<name>' ~/.claude/plugins/installed_plugins.json 2>/dev/null && echo 'CLASH: plugin exists'
ls ~/.agents/skills/<name> 2>/dev/null && echo 'CLASH: npx skill exists'
If a clash is found, pick a more specific name (e.g. personal-<name>).
Always ask before editing CLAUDE.md. Show the proposed change and ask the user to confirm.
Two categories of skills are read-only:
Plugin skills (invoked as plugin:skill) — namespaced and versioned by their plugin.
roborev:fix would need a different name. Two similar skills, agent doesn't know which to pick.
Skills installed via npx skills add — managed by the vercel-labs/skills CLI, typically symlinked from .agents/skills/.npx skills update would overwrite your changes.~/.refined/ is itself a valid source for npx skills add ~/.refined — so refined skills can be shared with other agents or users.For each new or modified skill, ask the user whether to git track it (default: yes for user skills, no for local/repo skills).
User skills (written to ~/.refined/):
# Claude-style discovery
ln -sfn "$HOME/.refined/<name>" "$HOME/.claude/skills/<name>"
# Codex/shared user-level discovery
mkdir -p "$HOME/.agents/skills"
ln -sfn "$HOME/.refined/<name>" "$HOME/.agents/skills/<name>"
# Optional: if the user also wants repo-local/shared discovery, add a repo `.agents/skills`
# entry separately. Don't confuse that with the user-level `~/.agents/skills` link above.
# If git-tracked:
git -C "$HOME/.refined" add <name>/ && git -C "$HOME/.refined" commit -m "refine: <what changed and why>"
Local/repo skills (written to the repo's skill directory):
# Commit in the project repo if the user wants
git -C <project-root> add <repo-skill-dir>/<name>/ && git -C <project-root> commit -m "refine: <what changed and why>"
Existing skills (edited in place): commit in whichever repo the file belongs to.
---
name: skill-name
description: >
What this skill does. Be specific — this description decides when
the skill triggers, so vague descriptions mean it never gets used.
allowed-tools:
- Read
- Edit
# only what the skill actually needs
---
The body is the prompt Claude receives when the skill is invoked. Write it as direct instructions.
Some users have auto-memory systems (persistent file-based memory). Refine does NOT touch memory files. The persistence hierarchy is:
npx skills installs) — they get overwritten on update..agents/skills/.One-line summary of what you did (or "nothing to refine").
npx claudepluginhub lucharo/refine --plugin refineCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.