migrate-skill
Move an agent skill from a local source (toolkit plugin, .claude/skills/, or .claude/commands/) into dogfooded-skills, then import it back as a standalone local skill.
When to Use
- Consolidating a battle-tested skill from claude-toolkit into dogfooded-skills
- Moving a local-only skill into the shared library for reuse across projects
- Replacing a toolkit symlink with a dogfooded-skills copy
Prerequisites
ls ~/Projects/fellowship-dev/dogfooded-skills/skills/ # repo cloned
gh auth status # can push
Workflow
Given <skill-name> as argument:
Find all sources for the skill
# Toolkit plugin skill ls .claude/plugins/claude-toolkit/skills/<skill-name>/SKILL.md 2>/dev/null # Toolkit command ls .claude/plugins/claude-toolkit/commands/<skill-name>.md 2>/dev/null # Local skill (may be symlink) ls -la .claude/skills/<skill-name>/ 2>/dev/nullRead all sources — merge the command (thin wrapper) and skill (full content) into a single SKILL.md. Follow the
skill-builderstandard: frontmatter, one-line purpose, When to Use, Prerequisites, Workflow with real commands, Decision Tables, Error Handling, Critical Rules.Write to dogfooded-skills
mkdir -p ~/Projects/fellowship-dev/dogfooded-skills/skills/<namespace>/<skill-name>Write the merged
SKILL.mdto~/Projects/fellowship-dev/dogfooded-skills/skills/<namespace>/<skill-name>/SKILL.md.Update dogfooded-skills README — add a row to the appropriate category table in
README.md.Commit and push
cd ~/Projects/fellowship-dev/dogfooded-skills git add skills/<namespace>/<skill-name>/SKILL.md README.md git commit -m "feat: add <skill-name> skill — migrated from claude-toolkit" git push origin mainWrite a cleanup script to
/tmp/migrate-<skill-name>.shand execute it. This bypasses sandbox restrictions on.claude/paths.#!/usr/bin/env bash set -e BUDDY=<project-root> TOOLKIT="$BUDDY/.claude/plugins/claude-toolkit" DOGFOOD=~/Projects/fellowship-dev/dogfooded-skills # Remove from toolkit rm -rf "$TOOLKIT/skills/<skill-name>" rm -f "$TOOLKIT/commands/<skill-name>.md" # Remove stale symlink or old local copy rm -rf "$BUDDY/.claude/skills/<skill-name>" # Import from dogfooded-skills mkdir -p "$BUDDY/.claude/skills/<skill-name>" cp "$DOGFOOD/skills/<namespace>/<skill-name>/SKILL.md" "$BUDDY/.claude/skills/<skill-name>/SKILL.md" echo "Done: <skill-name> migrated"bash /tmp/migrate-<skill-name>.shVerify — confirm the skill loads:
ls -la .claude/skills/<skill-name>/SKILL.md head -6 .claude/skills/<skill-name>/SKILL.md
Critical Rules
- Always read the skill-builder standard first — the merged skill must meet dogfooded-skills quality bar
- Cleanup script in /tmp — only way to bypass sandbox on
.claude/paths - Never leave orphan symlinks — remove before creating the new directory
- Commit toolkit changes separately if the toolkit is a submodule with its own remote