Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when a repo has a legacy AIBOARDING.md (v1 layout) and should move to the standard AGENTS.md + CLAUDE.md layout with the .aiboarding/state.json sidecar. One-shot, preview-first migration that preserves the existing onboarding content and rewires the hooks.
.claude/skills/hashgraph-online-migrate-aiboarding/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 57% | 0% |
One-shot migration from the v1 custom-injection layout to the standard-files layout. The onboarding knowledge in AIBOARDING.md is an investment - carry it over; never regenerate from scratch and never delete anything without approval.
Announce at start: "Using migrate-aiboarding to move this repo to the AGENTS.md layout."
Precondition: AIBOARDING.md exists at the repo root. If it does not, stop and suggest create-agent-onboarding. If AGENTS.md also already exists, stop and ask the user which file is authoritative before writing anything.
Read the AIBOARDING.md frontmatter (aiboarding_version, generated, last_synced_commit). These seed .aiboarding/state.json:
aiboarding_version: 2generated: today's datelast_synced_commit: carried over verbatim (empty stays empty - the repairsemantics of an empty pointer are preserved).
Map the three v1 H1 sections onto the v2 schema (see create-agent-onboarding's Shared contracts for the exact section list and order):
| v1 source | v2 target sections | | :--- | :--- | | # 1. Engineering Basics | Stack and Runtime, Build, Test, Run, Architecture Map | | # 2. Domain & Business Logic | Project Purpose, Domain Model | | # 3. AI-Specific Context | Agent Guardrails, Known Failure Modes |
Preserve the compressed density of the source text; split it, don't rewrite it. Backtick-quote any command, identifier, path, or error string that isn't already.
Two v2 sections have no v1 source: Verification Before Completion and Escalation - Ask the User When. Run a short, scoped grilling pass (the one-question-at-a-time style from create-agent-onboarding) ONLY for these gaps.
Follow create-agent-onboarding Phase 6: CLAUDE.md (@AGENTS.md + fenced Claude-notes block), state.json, config.json, .aiboarding/.gitignore, the six hook files, and the three tools. Runtime awareness applies (hook/settings steps are Claude Code-only).
In <repo>/.claude/settings.json:
SessionStart full-injection entry with the current template's entry(the modern session-start is a fallback warner, not an injector).
PreToolUse[Task] entry (pre-task is retired - SubagentStartis native now).
PostToolUse entry so it dispatches drift-check (not post-commit).SubagentStart and InstructionsLoaded entries from the template.Delete <repo>/.aiboarding/hooks/pre-task and <repo>/.aiboarding/hooks/post-commit. All edits idempotent: match aiboarding entries by command containing .aiboarding/hooks/run-hook.cmd; never duplicate; leave non-aiboarding hooks alone.
Ask the user to choose (default: archive):
AIBOARDING.md to docs/archive/AIBOARDING.mdunchanged. Git history preserves it either way; nothing at the root keeps stale onboarding discoverable by tools.
AIBOARDING.md in place and prepend a deprecationbanner via inject-fenced AIBOARDING.md deprecation <banner-file> pointing to AGENTS.md. The drift hook keeps honoring the legacy layout only when state.json is absent, so with both present the sidecar wins. Never delete AIBOARDING.md outright unless the user explicitly asks.
Before writing ANYTHING, present the full migration plan in one preview: every file to be created, modified (with the settings diff), moved, or deleted. One approval covers the whole batch; a rejection means nothing was touched.
Run create-agent-onboarding's Phase 7 validation gate, then audit-agent-onboarding if available. Report the file-by-file outcome, and remind the user to commit the new layout (the drift hook stays silent for onboarding-only commit ranges).
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | fail→pass | 9,888 | 8,937 | -10% | 1 | 1 | 0% | 1,657 | 1,655 | -0% | 0 | 0 | — |
case-01 | fail→fail | 14,188 | 7,856 | -45% | 1 | 1 | 0% | 213 | 1,448 | +580% | 0 | 0 | — |
case-02 | fail→fail | 17,153 | 8,779 | -49% | 1 | 1 | 0% | 2,146 | 1,593 | -26% | 0 | 0 | — |
case-03 | fail→fail | 8,661 | 4,858 | -44% | 1 | 1 | 0% | 283 | 1,745 | +517% | 0 | 0 | — |
case-04 | fail→pass | 10,501 | 9,641 | -8% | 1 | 1 | 0% | 1,836 | 1,755 | -4% | 0 | 0 | — |
case-10 | fail→pass | 11,826 | 2,131 | -82% | 1 | 1 | 0% | 1,675 | 1,439 | -14% | 0 | 0 | — |
case-05 | fail→pass | 14,042 | 4,254 | -70% | 1 | 1 | 0% | 1,974 | 1,822 | -8% | 0 | 0 | — |
case-06 | fail→pass | 5,431 | 7,432 | +37% | 1 | 1 | 0% | 948 | 1,484 | +57% | 0 | 0 | — |
case-07 | fail→pass | 11,004 | 3,281 | -70% | 1 | 1 | 0% | 1,670 | 1,671 | +0% | 0 | 0 | — |
case-08 | pass→pass | 14,640 | 7,892 | -46% | 1 | 1 | 0% | 1,592 | 1,510 | -5% | 0 | 0 | — |
case-11 | fail→fail | 9,133 | 9,320 | +2% | 1 | 1 | 0% | 1,206 | 1,779 | +48% | 0 | 0 | — |
case-12 | pass→pass | 10,989 | 3,762 | -66% | 1 | 1 | 0% | 1,063 | 1,666 | +57% | 0 | 0 | — |
case-13 | pass→pass | 18,099 | 7,596 | -58% | 1 | 1 | 0% | 3,561 | 1,639 | -54% | 0 | 0 | — |
case-14 | fail→pass | 16,975 | 1,565 | -91% | 1 | 1 | 0% | 2,058 | 1,367 | -34% | 0 | 0 | — |
case-15 | pass→fail | 14,284 | 2,378 | -83% | 1 | 1 | 0% | 1,723 | 1,415 | -18% | 0 | 0 | — |
case-16 | fail→pass | 22,327 | 7,853 | -65% | 1 | 1 | 0% | 2,319 | 1,620 | -30% | 0 | 0 | — |
case-17 | pass→pass | 15,617 | 6,488 | -58% | 1 | 1 | 0% | 1,885 | 1,360 | -28% | 0 | 0 | — |
case-18 | fail→pass | 9,190 | 8,631 | -6% | 1 | 1 | 0% | 1,613 | 1,636 | +1% | 0 | 0 | — |
case-19 | fail→fail | 5,340 | 2,837 | -47% | 1 | 1 | 0% | 752 | 1,576 | +110% | 0 | 0 | — |
case-20 | fail→fail | 14,837 | 9,000 | -39% | 1 | 1 | 0% | 1,485 | 1,712 | +15% | 0 | 0 | — |
case-21 | pass→fail | 14,918 | 10,513 | -30% | 1 | 1 | 0% | 1,707 | 2,202 | +29% | 0 | 0 | — |
case-22 | fail→fail | 26,250 | 18,270 | -30% | 1 | 1 | 0% | 457 | 1,485 | +225% | 0 | 0 | — |
case-23 | pass→fail | 11,996 | 12,199 | +2% | 1 | 1 | 0% | 950 | 1,570 | +65% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 19 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +26 percentage points is the difference between those two pass rates over the 19 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.