java-migration-skill-registry
Registry of version-scoped migration recipes (jade-recipe-*) and auto-generated migration skills produced by the Skill-Creator agent. Each subdirectory holds versioned skills/recipes for a specific ve
SKILL.md.claude/skills/java-migration-skill-registry/SKILL.md
GitHubJava Migration Skill Registry
Version-scoped migration recipes and auto-generated skills live here, organized by
version jump. Hand-authored pipeline (core) skills live in sibling directories under
.claude/skills/.
What lives here
Two kinds of content share this registry:
- Recipes (
jade-recipe-*) — deterministic transform scripts + their docs. They are invoked as subprocesses byjade-core-rule-dispatcher(never as skills). Nested below the version-jump directory, so they are NOT auto-discovered into the agent skill inventory (OpenCode only discoversskills/*/SKILL.md, one level deep). - Auto-generated skills — improvements produced by the Skill-Creator agent,
benchmarked against
eval_cases.jsonbefore acceptance.
Structure
java-migration-skill-registry/
├── 1.5-to-1.6/ ← Java 1.5 → 1.6 recipes
│ ├── jade-recipe-1.5-1.6-arrays-copyof/
│ │ ├── SKILL.md ← docs + agent-fallback instructions
│ │ └── scripts/apply.py ← deterministic transform
│ ├── ...
│ └── README.md
├── 1.7/ ← Java 1.7 recipes
├── shared/ ← version-agnostic pipeline recipes (noop fallback, dummy E2E)
├── scripts/register_recipe.py ← canonical recipe scaffold + registry updater
└── SKILL.md ← this file
Each recipe directory keeps its SKILL.md (human/agent docs) and scripts/apply.py.
The SKILL.md filename is retained for readability and consistency; because recipes
sit two levels under .claude/skills/, they are outside OpenCode's
skills/*/SKILL.md discovery pattern and never enter the agent's skill list.
How recipes are wired
jade-core-rule-dispatcher/recipe-registry.json maps rule_id to the recipe script
path (relative to repo root). The dispatcher runs
python <script> --file <path> --line <N> as a subprocess — it never loads the
SKILL.md. The SKILL.md only matters for humans and for subagents that need
fallback instructions when a deterministic transform defers a case.
Registering a recipe
Use the deterministic scaffold and registry updater:
python .claude/skills/java-migration-skill-registry/scripts/register_recipe.py \
--recipe-name example --bucket 1.7 --rule-id EXAMPLE_RULE \
--description "Apply the example transform"
The helper validates safe path segments, refuses duplicates unless --force is
given, creates SKILL.md and scripts/apply.py, and atomically updates the
dispatcher registry. Use --source-dir to copy an existing recipe's two files.
How skills enter this registry
- Tester agent collects failure patterns from a migrated workspace
- Skill-Creator generates or improves a skill for the pattern
- Skill is benchmarked against
benchmarks/<version>/eval_cases.json - Pass rate must exceed the previous version's rate to be committed here
Current status
The 1.5→1.6 and 1.7 recipes are hand-authored and live here. The
shared/ bucket holds the version-agnostic noop fallback and dummy E2E recipes.
No auto-generated (Skill-Creator) skills have been committed yet. The registry
remains the source of truth for dispatcher script paths.