/migrate-profile
Switch this repository from one nyann profile to another. TRIGGER ON: 'switch profile', 'migrate profile', 'change this repo profile', 'switch from X to Y', 'change profile to', 'migrate from', 'use a different profile', 'switch to nextjs', 'switch to python'. Computes a diff
Claude Code
$ npx -y skills add thettwe/nyann --skill migrate-profile --agent claude-code
Codex
$ npx skills add thettwe/nyann --skill migrate-profile -a codex -y
Cursor
$ npx skills add thettwe/nyann --skill migrate-profile -a cursor -y
Gemini CLI
$ npx skills add thettwe/nyann --skill migrate-profile -a gemini-cli -y
GitHub Copilot
$ npx skills add thettwe/nyann --skill migrate-profile -a github-copilot -y
OpenCode
$ npx skills add thettwe/nyann --skill migrate-profile -a opencode -y
Windsurf
$ npx skills add thettwe/nyann --skill migrate-profile -a windsurf -y
SKILL.md
migrate-profile.SKILL.mdname: migrate-profile
description: "Switch this repository from one nyann profile to another. TRIGGER ON: 'switch profile', 'migrate profile', 'change this repo profile', 'switch from X to Y', 'change profile to', 'migrate from', 'use a different profile', 'switch to nextjs', 'switch to python'. Computes a diff between source and target profiles, previews all hook/config/convention changes, and applies via bootstrap."
migrate-profile — Switch Between Nyann Profiles
You are the migrate-profile skill. You switch a repository from one nyann profile to another, computing the diff and applying changes safely.
When to trigger
- User asks to switch, migrate, or change the repo's profile
- User says "switch from X to Y" or "use the python profile instead"
- User asks to change the repo's configuration to match a different stack
**DO NOT trigger on:** schema version migration (that's `bin/migrate-profile.sh`), initial bootstrap, or retrofit.
Execution flow
Phase 0: Team profile freshness check (quick, non-blocking)
Run `bin/check-team-staleness.sh` before starting. If it produces output, show the notification to the user (e.g. "Your team profiles have upstream changes. Run `/nyann:sync-team-profiles` to update before migrating, or continue with the current versions."). Do not block — let the user decide whether to sync first.
Phase 1: Identify source and target profiles
1. **Source profile**: resolve from CLAUDE.md markers or preferences. If ambiguous, ask. 2. **Target profile**: from the user's request. If they named a profile, use it. If they described a stack ("switch to Python"), resolve to the matching starter profile. 3. Validate both exist via `bin/load-profile.sh <name>` (positional argument).
Phase 2: Compute and preview diff
4. Run `bin/switch-profile.sh --from <source> --to <target> --target . --dry-run`. 5. Show a human-readable table of changes:
- Hooks added/removed per phase
- Branching strategy change
- Extras toggled
- Convention changes
- CI configuration changes
6. Highlight potentially destructive changes (hook removals, strategy changes).
Phase 3: Confirm and apply
7. Ask: "Apply this migration? This will regenerate CLAUDE.md and update hooks." 8. On confirmation, re-run with `--yes` (and without `--dry-run`). The script refuses to apply without `--yes`; emitting the plan and asking is the human-confirm half of preview-before-mutate. 9. Report what changed.
Phase 4: Post-migration
10. Suggest running `/nyann:doctor` to verify the new state. 11. Suggest committing the changes.
Key constraints
- The script diffs two profiles — it doesn't modify the profile files themselves.
- Bootstrap is re-run with the new profile to regenerate managed files.
- User content outside nyann markers is always preserved.
- If the profiles are identical, report "nothing to migrate" and exit cleanly.
When to hand off
- "Check if the migration worked" → `doctor` skill.
- "Regenerate CLAUDE.md" → `gen-claudemd` skill (if CLAUDE.md wasn't
refreshed during the migration).
- "What does the new profile look like?" → `inspect-profile` skill.
- "Undo the migration" → if not yet committed, restore individual
files with `git checkout -- <file>` for each changed file. If already committed, use the `undo` skill to revert the commit.
Read more
name: migrate-profile description: "Switch this repository from one nyann profile to another. TRIGGER ON: 'switch profile', 'migrate profile', 'change this repo profile', 'switch from X to Y', 'change profile to', 'migrate from', 'use a different profile', 'switch to nextjs', 'switch to python'. Computes a diff between source and target profiles, previews all hook/config/convention changes, and applies via bootstrap."
migrate-profile — Switch Between Nyann Profiles
You are the migrate-profile skill. You switch a repository from one nyann profile to another, computing the diff and applying changes safely.
When to trigger
- User asks to switch, migrate, or change the repo's profile
- User says "switch from X to Y" or "use the python profile instead"
- User asks to change the repo's configuration to match a different stack
**DO NOT trigger on:** schema version migration (that's `bin/migrate-profile.sh`), initial bootstrap, or retrofit.
Execution flow
Phase 0: Team profile freshness check (quick, non-blocking)
Run `bin/check-team-staleness.sh` before starting. If it produces output, show the notification to the user (e.g. "Your team profiles have upstream changes. Run `/nyann:sync-team-profiles` to update before migrating, or continue with the current versions."). Do not block — let the user decide whether to sync first.
Phase 1: Identify source and target profiles
1. **Source profile**: resolve from CLAUDE.md markers or preferences. If ambiguous, ask. 2. **Target profile**: from the user's request. If they named a profile, use it. If they described a stack ("switch to Python"), resolve to the matching starter profile. 3. Validate both exist via `bin/load-profile.sh <name>` (positional argument).
Phase 2: Compute and preview diff
4. Run `bin/switch-profile.sh --from <source> --to <target> --target . --dry-run`. 5. Show a human-readable table of changes:
- Hooks added/removed per phase
- Branching strategy change
- Extras toggled
- Convention changes
- CI configuration changes
6. Highlight potentially destructive changes (hook removals, strategy changes).
Phase 3: Confirm and apply
7. Ask: "Apply this migration? This will regenerate CLAUDE.md and update hooks." 8. On confirmation, re-run with `--yes` (and without `--dry-run`). The script refuses to apply without `--yes`; emitting the plan and asking is the human-confirm half of preview-before-mutate. 9. Report what changed.
Phase 4: Post-migration
10. Suggest running `/nyann:doctor` to verify the new state. 11. Suggest committing the changes.
Key constraints
- The script diffs two profiles — it doesn't modify the profile files themselves.
- Bootstrap is re-run with the new profile to regenerate managed files.
- User content outside nyann markers is always preserved.
- If the profiles are identical, report "nothing to migrate" and exit cleanly.
When to hand off
- "Check if the migration worked" → `doctor` skill.
- "Regenerate CLAUDE.md" → `gen-claudemd` skill (if CLAUDE.md wasn't
refreshed during the migration).
- "What does the new profile look like?" → `inspect-profile` skill.
- "Undo the migration" → if not yet committed, restore individual
files with `git checkout -- <file>` for each changed file. If already committed, use the `undo` skill to revert the commit.
ငြမ်း is Burmese for scaffolding. Nyann is the Claude Code plugin that picks expert git defaults for your stack — branching, working hooks (Husky / pre-commit.com / lefthook), commits, releases, CI, docs — then keeps the repo on those rails through every PR
Other skills on nyann.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about migrate-profile.
- Which coding agents can use migrate-profile?
- migrate-profile installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

