agentsclimarketplace

Migrate profile

Skill thettwe/nyann/skills/migrate-profile

Nyann (ငြမ်း) is Burmese for scaffolding. Nyann is a Claude Code plugin that sets up and maintains project governance.

Install
npx -y skills add thettwe/nyann --skill migrate-profile

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

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.

SKILL.md

3.3 KB, as published. Nobody here has run it

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

  1. Run bin/switch-profile.sh --from <source> --to <target> --target . --dry-run.
  2. Show a human-readable table of changes:
    • Hooks added/removed per phase
    • Branching strategy change
    • Extras toggled
    • Convention changes
    • CI configuration changes
  3. Highlight potentially destructive changes (hook removals, strategy changes).

Phase 3: Confirm and apply

  1. Ask: "Apply this migration? This will regenerate CLAUDE.md and update hooks."
  2. 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.
  3. Report what changed.

Phase 4: Post-migration

  1. Suggest running /nyann:doctor to verify the new state.
  2. 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.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.