Data Migration
revfactory/harness-100
Full migration pipeline where an agent team collaborates to perform source analysis, schema mapping, transformation script generation, validation query design, and rollback planning.
Code migration specialist covering planning frameworks, strangler fig pattern, compatibility layers, feature flags, database migrations, API versioning, rollback plans, and testing migration…
$ npx skills add FerroxLabs/wayland --skill code-migrator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install FerroxLabs/wayland code-migrator --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator .claude/skills/code-migrator && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "code-migrator" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator into .claude/skills/code-migrator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "code-migrator", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/software-engineering/code-migratorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add FerroxLabs/wayland --skill code-migrator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install FerroxLabs/wayland code-migrator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator .agents/skills/code-migrator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "code-migrator" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator into .agents/skills/code-migrator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "code-migrator", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add FerroxLabs/wayland --skill code-migrator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install FerroxLabs/wayland code-migrator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator .cursor/skills/code-migrator && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "code-migrator" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator into .cursor/skills/code-migrator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "code-migrator", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/FerroxLabs/wayland.git --path src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add FerroxLabs/wayland --skill code-migrator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install FerroxLabs/wayland code-migrator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator .gemini/skills/code-migrator && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "code-migrator" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator into .gemini/skills/code-migrator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "code-migrator", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install FerroxLabs/wayland code-migratorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add FerroxLabs/wayland --skill code-migrator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator .github/skills/code-migrator && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "code-migrator" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator into .github/skills/code-migrator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "code-migrator", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add FerroxLabs/wayland --skill code-migrator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install FerroxLabs/wayland code-migrator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator .opencode/skills/code-migrator && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "code-migrator" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator into .opencode/skills/code-migrator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "code-migrator", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
code-migratorCode migration specialist covering planning frameworks, strangler fig pattern, compatibility layers, feature flags, database migrations, API versioning, rollback plans, and testing migration…
Code Migrator is an agent skill from FerroxLabs/wayland. Code migration specialist covering planning frameworks, strangler fig pattern, compatibility layers, feature flags, database migrations, API versioning, rollback plans, and testing migration completeness. Use when the user asks about code migrator, code migrator best practices, or needs guidance on code migrator implementation. Do NOT use when the user needs a different specialized skill or is asking about an unrelated technology domain.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Databases, covering Database migrations and Code migrations. The repository describes itself as: Wayland - The AI Agent That Perceives. Reasons. Acts. Evolves. The licence is Apache-2.0.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4c030c7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown, python, sql, javascript and typescript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Code Migrator loads about 3.7k tokens when it runs. Until then it costs about 114 tokens; SKILL.md has 1,067 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from FerroxLabs/wayland at commit 4c030c7, republished under its Apache-2.0 licence (© FerroxLabs). 1,067 words, ~3,717 tokens.
.claude/skills/code-migrator/SKILL.md (or your agent's skills folder).You are an expert code migration specialist. Plan and execute migrations that are incremental, reversible, and verifiable. Never attempt big-bang migrations. Every migration step must leave the system in a working state.
| Strategy | Best for | Risk | Duration |
|---|---|---|---|
| Strangler Fig | Replacing system incrementally | Low | Long |
| Branch by Abstraction | Swapping implementations | Low | Medium |
| Big Bang | Small, isolated components | High | Short |
| Parallel Run | Critical systems needing validation | Low | Long |
| Blue-Green | Infrastructure migrations | Medium | Short |
Create a migration checklist with ordered steps:
## Migration: React Class Components -> Hooks
### Pre-migration
- [ ] Audit: List all class components (found: 47)
- [ ] Categorize by complexity (simple: 30, medium: 12, complex: 5)
- [ ] Write integration tests for components without coverage
- [ ] Set up linting rule to warn on new class components
### Migration waves
- [ ] Wave 1: Simple components (no lifecycle, no state) [Week 1-2]
- [ ] Wave 2: Stateful components (useState conversion) [Week 3-4]
- [ ] Wave 3: Lifecycle components (useEffect conversion) [Week 5-6]
- [ ] Wave 4: Complex components (HOCs, render props) [Week 7-8]
- [ ] Wave 5: Shared/library components [Week 9-10]
### Post-migration
- [ ] Remove class component utilities/base classes
- [ ] Update coding standards documentation
- [ ] Enable lint rule to error on class components
- [ ] Remove React.Component from allowed typesThe most reliable migration pattern. Replace old functionality piece by piece while the old system continues to work.
Phase 1: Route traffic through a facade
Client -> [Facade] -> [Old System]
Phase 2: Implement new component, route some traffic to it
Client -> [Facade] -> [New Component A]
-> [Old System (rest)]
Phase 3: Continue until old system has no traffic
Client -> [Facade] -> [New Component A]
-> [New Component B]
-> [New Component C]
-> [Old System (empty)]
Phase 4: Remove old system
Client -> [Facade] -> [New Component A]
-> [New Component B]
-> [New Component C]// Facade: proxy routes to old or new handler
app.all('/api/*', (req, res) => {
const migratedRoutes = ['/api/users', '/api/users/:id'];
if (migratedRoutes.some(r => req.path.match(routeToRegex(r)))) {
return fastifyApp.inject({ method: req.method, url: req.url, payload: req.body })
.then(response => res.status(response.statusCode).send(response.body));
}
return oldExpressRouter.handle(req, res);
});Use when swapping an internal implementation (e.g., replacing an ORM, changing a data store).
# Step 1: Create abstraction
class UserRepository(Protocol):
def get_user(self, user_id: str) -> User: ...
def save_user(self, user: User) -> None: ...
# Step 2: Wrap old implementation
class MySQLUserRepository:
def get_user(self, user_id: str) -> User:
# existing MySQL code
...
# Step 3: Build new implementation
class PostgresUserRepository:
def get_user(self, user_id: str) -> User:
# new PostgreSQL code
...
# Step 4: Switch via configuration
def create_user_repository(config) -> UserRepository:
if config.use_postgres:
return PostgresUserRepository(config.pg_url)
return MySQLUserRepository(config.mysql_url)Use feature flags to control migration rollout and enable instant rollback.
| Flag Type | Use Case | Lifetime |
|---|---|---|
| Release flag | Gate new implementation | Weeks |
| Experiment flag | A/B test old vs new | Days-weeks |
| Ops flag | Kill switch for rollback | Permanent until removed |
| Permission flag | Migrate specific users/tenants first | Weeks |
Day 1: Enable for internal users only (1% traffic)
Day 3: Enable for beta users (5% traffic)
Day 7: Enable for 10% of all users (10% traffic)
Day 10: Enable for 50% (50% traffic)
Day 14: Enable for 100% (100% traffic)
Day 21: Remove flag and old code (cleanup)async function getUser(userId: string): Promise<User> {
if (await featureFlags.isEnabled('use-new-user-service', { userId })) {
return newUserService.getUser(userId);
}
return legacyUserService.getUser(userId);
}Expand phase (backward-compatible):
Contract phase (cleanup): 5. Deploy code that stops writing to old column. 6. Drop old column.
-- Step 1: Expand - add new column
ALTER TABLE users ADD COLUMN full_name VARCHAR(255);
-- Step 3: Backfill
UPDATE users SET full_name = CONCAT(first_name, ' ', last_name) WHERE full_name IS NULL;
-- Step 6: Contract - remove old columns (after code migration complete)
ALTER TABLE users DROP COLUMN first_name;
ALTER TABLE users DROP COLUMN last_name;| Ecosystem | Tool | Notes |
|---|---|---|
| Node.js | Knex, TypeORM, Prisma Migrate | JS-based migration files |
| Python | Alembic, Django migrations | Auto-generated from models |
| Java | Flyway, Liquibase | SQL or XML-based |
| Go | golang-migrate, goose | SQL-based |
| Ruby | ActiveRecord Migrations | Ruby DSL |
| Strategy | Example | Pros | Cons |
|---|---|---|---|
| URL path | /v1/users, /v2/users | Simple, explicit | URL clutter |
| Header | Accept: application/vnd.api+json;version=2 | Clean URLs | Easy to skip |
| Query param | /users?version=2 | Simple | Pollutes query string |
Deprecation: true, Sunset: 2024-06-01.Every migration step must have a documented rollback procedure.
## Rollback Plan: [Migration Step Name]
### Trigger conditions
- Error rate exceeds 1% on affected endpoints
- P95 latency exceeds 500ms (baseline: 200ms)
- Data inconsistency detected between old and new systems
### Rollback steps
1. Disable feature flag `use-new-service` (immediate, < 1 minute)
2. Verify traffic routes to old system (check dashboards)
3. If database migration was applied:
a. Run rollback migration: `migrate down 1`
b. Verify schema matches pre-migration state
4. Notify team in #incidents channel
### Rollback verification
- [ ] Old system handles traffic correctly
- [ ] Error rate returns to baseline
- [ ] No data was lost or corrupted
### Post-rollback analysis
- What caused the rollback?
- What needs to change before retrying?async def get_user_with_verification(user_id):
old_result = await old_service.get_user(user_id)
new_result = await new_service.get_user(user_id)
if old_result != new_result:
logger.error(f"Mismatch for user {user_id}",
old=old_result, new=new_result)
metrics.increment("migration.mismatch")
return old_result # still serve from old system-- Row count comparison
SELECT COUNT(*) FROM old_db.users;
SELECT COUNT(*) FROM new_db.users;
-- Checksum comparison (sample)
SELECT MD5(GROUP_CONCAT(id, email, created_at ORDER BY id))
FROM old_db.users WHERE id BETWEEN 1 AND 10000;Integration test suite: Run the same test suite against both implementations.
Canary analysis: Compare error rates and latency between old and new systems during gradual rollout.
## Migration: [Old Thing] -> [New Thing]
**Timeline**: [Start Date] to [End Date]
**Impact**: [Who is affected and how]
**Action required**: [What consumers need to do]
### Why
[1-2 sentences on motivation]
### What changes
[Specific changes consumers will see]
### Migration steps for consumers
1. [Step 1]
2. [Step 2]
### Support
- Questions: #migration-channel
- Issues: [link to issue tracker]
- Docs: [link to migration guide]Use this skill when:
Do NOT use this skill when:
# Code Migrator Analysis
## Context Assessment
[Situation summary and constraints]
## Recommended Approach
[Primary recommendation with rationale]
## Implementation Steps
1. [Step with specific details]
2. [Step with specific details]
3. [Step with specific details]
## Trade-offs and Considerations
- [Key trade-off 1]
- [Key trade-off 2]
## Next Steps
- [Immediate action item]
- [Follow-up action item]Input: "Help me implement code migrator for a medium-scale production application"
Output: A structured analysis covering current state assessment, recommended code migrator approach with specific patterns, implementation roadmap with milestones, and risk mitigation strategies tailored to the application scale and constraints.
© FerroxLabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator of FerroxLabs/wayland.
Open the folder on GitHubat commit 4c030c7
Code Migrator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Code Migrator this skillFerroxLabs/wayland | 608 | — | ~3.7k | Automated safety check: Pass | Apache-2.0 | |
| Data Migrationrevfactory/harness-100 | 1.3k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Free Willsyahiidkamil/Software-Engineer-AI-Agent-Atlas | 397 | — | ~3.4k | Automated safety check: Pass | None | |
| Reversible MigrationJuliusBrussee/caveman | 110k | 1 repos | ~196 | Automated safety check: Pass | Apache-2.0 | |
| Evolving The Data ModelTriliumNext/Trilium | 38k | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 | |
| Openwrt Package UpdateNethServer/nethsecurity | 191 | — | ~841 | Automated safety check: Pass | Custom licence |
revfactory/harness-100
Full migration pipeline where an agent team collaborates to perform source analysis, schema mapping, transformation script generation, validation query design, and rollback planning.
syahiidkamil/Software-Engineer-AI-Agent-Atlas
Deliberate-choice procedure for a medium-to-high-stakes engineering fork — when the first plausible solution (the instinct, the default next-token pull) would be costly to get wrong.
JuliusBrussee/caveman
Implement reversible compatibility-safe transitions. Use for schema, data, API, protocol, configuration, or dependency migrations requiring rollback and…
TriliumNext/Trilium
A skill your agent uses when adding a DB migration or a new column/field to a Becca entity in Trilium ("add a migration", "new column on notes/attributes", "ALTER TABLE", "add a field to…
NethServer/nethsecurity
A skill your agent uses when updating any forked OpenWrt package in a NethSecurity workspace from the upstream openwrt/packages feed.
saleor/saleor
Forward-ports or backports a single PR or branch onto the currently checked-out Saleor branch, handling GraphQL version markers and migration numbering along the way.
FerroxLabs/wayland
Install, start, connect, and troubleshoot visualization companion projects for Aion/OpenClaw, with Star-Office-UI as the default recommendation.
FerroxLabs/wayland
OpenClaw usage expert: Helps you install, deploy, configure, and use OpenClaw personal AI assistant.
FerroxLabs/wayland
Set up TVControl end to end: install the connector, start TradingView Desktop with its control port open, load a watchlist export, add the indicators they use, and leave a working chart.
FerroxLabs/wayland
End-to-end guide for designing, running, and analyzing A/B tests including experiment design, statistical significance, sample size calculation, common pitfalls, and advanced testing patterns.
FerroxLabs/wayland
Complete academic writing guide covering thesis and dissertation structure, journal article format using IMRaD, literature review methodology, citation management, the peer review process, and…
FerroxLabs/wayland
Web accessibility expertise covering WCAG 2.2 conformance, audit methodology, ARIA patterns, keyboard navigation, screen reader testing, focus management, form accessibility, and automated vs manual…
Categories
Code migration specialist covering planning frameworks, strangler fig pattern, compatibility layers, feature flags, database migrations, API versioning, rollback plans, and testing migration…. Code Migrator is an agent skill from FerroxLabs/wayland. Code migration specialist covering planning frameworks, strangler fig pattern, compatibility layers, feature flags, database migrations, API versioning, rollback plans, and testing migration completeness.
Code Migrator fits situations like: the user asks about code migrator; code migrator best practices; needs guidance on code migrator implementation; the user needs a different specialized skill.
Run `npx skills add FerroxLabs/wayland --skill code-migrator -a claude-code`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator in FerroxLabs/wayland) into .claude/skills/code-migrator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add FerroxLabs/wayland --skill code-migrator -a codex`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/software-engineering/code-migrator in FerroxLabs/wayland) into .agents/skills/code-migrator in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FerroxLabs/wayland --skill code-migrator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/code-migrator, .gemini/skills/code-migrator, .github/skills/code-migrator and .opencode/skills/code-migrator in your project.
SKILL.md names no scripts, command-line tools or credentials: Code Migrator is instructions for the agent only. Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Code Migrator is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Code Migrator: Data Migration (revfactory/harness-100, 1.3k stars), Free Will (syahiidkamil/Software-Engineer-AI-Agent-Atlas, 397 stars), Reversible Migration (JuliusBrussee/caveman, 110k stars) and Evolving The Data Model (TriliumNext/Trilium, 38k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
FerroxLabs (a GitHub user) maintains it in FerroxLabs/wayland, which has 608 GitHub stars. The repository holds 1,194 skills in this directory. The repository was last updated on October 6, 2026.
Source: FerroxLabs/wayland on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.