Skip to content
Development
Skill

/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

From plugin
nyann
641 skills41 commands3 hooks
Install
$ npx -y skills add thettwe/nyann --skill migrate-profile --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/migrate-profile

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

migrate-profile.SKILL.md
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.

Read more
Ships withnyann

ငြမ်း 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

Get the whole plugin

Other skills on nyann.