Capture the app people use
Inventory commands, screens, hidden state, errors and persistence instead of translating files line by line.
Skill
Change the language. Preserve the experience.
A whole-application migration skill. Observe how the source behaves, turn it into sequenced stories, and rebuild one complete slice at a time with data, failure and recovery checks.
Fictional story: recover from failed save Given: edited buffer and unwritable destination When: save fails Then: buffer remains; reason is visible; retry is possible Depends on: editor state and file boundary Evidence: source observation + target terminal probe State: inventoried; target implementation pending
Fictional worked example. It illustrates the intended output; it is not a measured result or a real customer story.
Inventory commands, screens, hidden state, errors and persistence instead of translating files line by line.
Use source-derived acceptance criteria while respecting the target language and host architecture.
Keep implemented, independently verified, blocked and cut over as separate states.
The film
In 72 seconds, Wendell the hermit crab, your app, gets copied line by line into a new shell: tests pass, then a save fails and a page of edits vanishes. Migrate starts from the app people use, every command, error and save, including how it fails. Each behavior becomes a story card with a real terminal check, built in the new language’s own style and checked by a verifier blind to the builder’s tests. Captions are on the player; a transcript is below.
Wendell, a hermit crab, is your app. He’s outgrown his shell.
So you copy him across, line by line.
Tests pass. Then a save fails, and a page of edits vanishes.
Migrate starts with the app people use: every command, error and save, including how it fails.
Each behavior becomes a story card, foundations first.
Each card gets a real terminal check first, then a build in the new language’s own style.
A verifier checks it against the old app, blind to the builder’s tests. A miss reopens the card.
This release proves the bookkeeping, not a finished migration. Data and cutover stay your call.
On screen: Move the behavior, not the lines.
Migrate. Change the language without losing the application.
The app and its failure are a fictional example. This release proves the bookkeeping, not a finished migration. The film shows how the skill behaves; it does not report results.
Fictional worked example. It illustrates the intended output; it is not a measured result or a real customer story.
Keep it read-only and describe observed capabilities as dependency-ordered stories with testable criteria.
Write target checks and a real-surface probe first; include data handling and recovery.
Challenge behavior against the source, preserve failures and record migration and rollback status.
Fictional example
The brief A fictional terminal editor is migrating languages; its save dialog preserves an unsaved buffer after a write failure.
Translate the save function and count a successful unit test as parity.
Observe the source failure state, put buffer preservation and recovery in the story, write the terminal probe first, then implement in target idioms.
The observable contract includes failures, state, and recovery—not the source language’s line structure.
Use when behavior, data, interfaces, and deployment must survive a whole-app migration.
The source app must become a rebuildable specification.
Observed surfaces, sequenced story cards, data/interface contracts, and acceptance criteria.
A story’s prerequisites and acceptance are known.
An idiomatic vertical slice with unit and real-surface evidence.
Builder-created checks need an independent challenge.
Source-derived parity findings, bounded reopen decisions, and retained unresolved cases.
Change the language without losing the application.
Migrate the whole application's behavior, not its syntax. The original principles, story format, and runbook preserve the distinct two-phase method and optional native graph interface. Historical model names and “proven” statements are context for that engine, not current requirements or comparative results.
Observe the selected source behavior; distinguish what to preserve from source-language idioms to discard. Write the target acceptance test and real-surface probe before implementation. Rebuild idiomatically, using existing target seams. Deliver feature, tests, normal CI gate, state/data handling, and recovery together. Terminal apps need a real-terminal check; GUI, API, or service surfaces need their corresponding real observable checks. Unit tests alone do not prove parity.
Use an isolated branch; keep protected branches and publication outside the loop until authorized. Bound attempts (the retained engine uses at most three), then record acknowledged blocker with a reproducible case and smallest handoff. Acknowledged is not implemented or verified.
After the builder's checks, derive verification from the source behavior with only the story identity and intended scope—not builder claims, implementation, or builder-authored expected answers. Record the independence actually achieved. A second role using the same model is not independent human evidence. Failed verification reopens the story within a declared bound; preserve findings. If the criterion was wrong, propose and adjudicate a story amendment with evidence; never silently weaken it to pass.
Return inventory coverage, story states, exact unit/real-surface commands and results, data/rollback status, independent findings, blocked stories, and known behavior differences. “Implemented,” “verified,” “acknowledged,” “cut over,” and “accepted by users” are separate states. The repository's ledger/eval self-tests validate mechanics, not a completed migration.
Bring the read-only source, target language and the surfaces that must survive.
The download contains the complete skill folder. Extract it into the skills directory supported by your agent, keeping its references and license together. Or use the source installer below. Python 3.11+ is required for that installer.
git clone https://github.com/michaeljabbour/amplifier-skill-migrate.git
cd amplifier-skill-migratepython3 scripts/capability.py doctor
python3 scripts/capability.py install --dest ~/.agents/skillsamplifier bundle add ./bundle.mdThese commands are for the optional native surface. Follow its installation guide and prerequisites; portable method installation is separate.
Keep the complete skill folder together, including its references and license. The host applies the method in your context; the skill does not start a background service.
Use Migrate to inventory this fictional terminal editor for a Rust rebuild. Keep the Python source read-only. Start with open, edit, save and failed-save recovery; write dependency-ordered story cards and acceptance probes before implementation.Use after installing in a host that loads skill folders. Supply your own task files and review the result.
Read the guide · License · Changes · Release metadata · Install guide · Migration · Validation · Native guide · consolidation
Retained graph syntax, ledger ratchet and sequence fixtures pass, and the portable install is checked. They validate orchestration mechanics; this release does not claim a newly completed app migration or production cutover.
Builder/verifier state regressions rejected and synthetic fixture curve read. These are fixture mechanics, not an app migration or behavioral parity measurement.
All three retained graphs parse. No graph/orchestration changes or paid pipeline execution.
All operations passed. No runtime activation or effectiveness measured.
Skill is valid. This is a structural check, not a behavioral benchmark.
Retained graph syntax, ledger ratchet and sequence fixtures pass, and the portable install is checked. They validate orchestration mechanics; this release does not claim a newly completed app migration or production cutover.
Fictional examples explain the capability. Tests check the stated behavior. Outside-user outcomes need their own evidence.