junhanliu-dev/espalier-engineering/espalier-migrate

Claude Code and agent skill by junhanliu-dev/espalier-engineering

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Migrate an existing harness/espalier install to the current Espalier version — auto-detects which of v0.1→v0.2, v0.3→v0.4, v0.4→v0.5, the v0.5.3 coder-agent patch, v0.5→v0.6 (Stage 1 grill), v0.6→v0.7 (read-only /espalier-ask lane), v0.7→v0.8 (requirements approval gate), the v0.8.1 impact-analysis agent patch, the v0.8.2 re-review fixpoint loop, the v0.9.0 security audit, the v0.9.1 configurable escalation caps, the v0.9.2 correctness patch, the v0.9.3 skill-clarity patch, the v0.9.4 security-skill patch, the v0.9.6→v0.10.0 push-gate reshape, the v0.10.0→v0.11.0 hook exit-code release, the v0.11.0→v0.12.0 grill blind-spot pass (Stage 1 rules/wiki cross-check), the v0.12.0→v0.13.0 minimalism release (coder Solution Selection Ladder + reviewer advisory Minimalism Review), the v0.13.0→v0.13.1 polish patch (stage-conditional coding guidance + reviewer step-7 abuse-test duty + code-review gate line), the v0.13.1→v0.13.2 readability release (coder clarity-then-brevity tie-break + comment-convention discovery + reviewer advisory Readability Review with the cryptic-public-name P1), the v0.13.2→v0.14.0 Codex platform release (platform-neutral hook wrappers + optional .agents/skills + AGENTS.md + .codex wiring), the v0.14.0→v0.15.0 Copilot platform release (camelCase hook adapter + optional .github/skills + copilot-instructions + .github/agents + .github/hooks wiring), the v0.15.0→v0.16.0 multi-dev maintenance floor (conv_fold conventions reader + maintenance lanes + canonical-ref keys + .gitattributes union entry + optional CODEOWNERS), the v0.16.0→v0.17.0 B-team release (weekly gardener rota + tracked single-line .doctor-stamp with clean/dirty semantics + conventions file-per-key), the v0.17.0→v0.18.0 map-lane release (/espalier-map multi-session planning + map-guard plan-don't-do hook + grill decision mode + greenfield decide-then-bind init), the v0.18.0→v0.19.0 run-lane release (/espalier-maprun map executor — interactive master + headless stage-1–6 workers in push-blocked worktrees + the maprun state engine), the v0.19.0→v0.20.0 slice-PR release (opt-in maprun-pr.sh forge surface — one reviewable slice PR per ticket + final assembly PR + the worktree-scoped push-block fix), and the v0.20.0→v0.21.0 pipeline-speed release (per-change context pack reused by every spawn + delta-scoped re-review rounds + parallel disjoint sub-tasks + push-target pre-authorization + light-tier grill batching — same gates, fewer redundant reads and waits), the v0.21.1 comment-brevity patch (coder/reviewer/coding-standards gain a short-comments default — one plain line, project conventions still outrank it), and the v0.21.1→v0.22.0 pipeline-speed release (speculative Stage 5 — the test-coder rides the round-1 panel, quarantine-on-FAIL keeps every later gate tree clean — + Stage 6 delta re-review rounds + stage-duration stats + the non-critical pre-flight fold + Stage 9 deploy pre-authorization + the Stage 8 CI wait protocol + opt-in parallel push-gate sections and a dependency-audit cache — same gates, fewer waits), and the v0.22.0→v0.22.1 comment-diet patch (coder/reviewer/coding-standards move to a default-NO-comment stance — one plain line only for what the code cannot show; project conventions still outrank it), and the v0.22.1→v0.23.0 round-economy release (the Stage 3/5 fold — tests ride the coder under `test-mode: folded`, the Stage 3 exit gate runs build+lint+scoped tests, the 2-agent panel reviews code+tests in one verdict, Stages 5/6 become the security-contract phase or SKIPPED rows with stage numbers intact; contract-FAIL code fixes route back to a full panel; findings digest + map crispness gate + grill tier verdicts; the speculative dispatch is retired and `test-mode: serial` keeps the pre-v0.22 flow), and the v0.23.0→v0.23.1 class-sweep patch (fix rounds fix the defect CLASS — the coder enumerates and fixes every in-scope sibling of each P0/P1 and reports a `### Class Sweep` block that both panel agents re-verify; `FIX ROUND {n}:` header on every Stage 4 re-spawn), and the v0.23.1→v0.24.0 simplify-lane release (/espalier-simplify — a read-only, evidence-first simplification survey of the existing code that files proven cuts as refactor skeletons the pipeline runs; the coder retires the whole boundary, the reviewer re-proves every retired name, and Completion flags the docs that described it for /espalier-prune), and the v0.24.0→v0.25.0 quality-first context release (every agent works with its instructions at full strength on current inputs, no budget anywhere — coders hand off at clean points with a cited `## Handoff`, the orchestrator archives prior reports to `coding-log/`, offers a fresh session at the Stage 2 / Stage 4 boundaries, runs the exit gate as one `exit_gate` call, extracts the security contract, and names Grep-only files and scoped docs in the pack; the grill's code reads are unlimited; rules get a Writing Contract, a Removed-rules ledger at the prune gate, a doctor contract-drift line, and a `## Not Precedent` anchor; `espalier-stats.sh` reports spawn shape), and the v0.25.1→v0.26.0 turn-economy release (coders write the abuse tests for the fields they classify with the code and verify in one `exit_gate` call; the auditor's contract carries `covered_by:` so a covered contract spawns no contract-phase coder — the delta review still proves every entry; the session-boundary preference is asked once at the approval gate; the orchestrator's retyped bash blocks become helpers — `regression_verify`, `record_commits`, `certificate_write`, `drift_index`, `stage85_drift`, `backlink_all`; `exit_gate` scopes monorepo and uv/poetry test bodies and starts tests as soon as the build is green; the push hook runs build ∥ lint by default), the v0.26.0→v0.27.0 unknowns release (the coder logs every departure from the approved contract under `### Deviations` or stops with `- BLOCKED-ON-REQUIREMENT:` for the human; the panel's Deviation Review; the Stage 10 delivery brief + quiz; the grill's requester brief, shown candidates and `## References`), and the v0.27.0→v0.28.0 ceiling-ledger release (the `ceiling: <limit>; <trigger>` marker at every deliberate shortcut, the reviewer's `[ceiling]` / `[no-trigger]` / `shrink:` P3 rows, the ladder's rung-4 platform-native lookup, the grill's over-specified-mechanism signal, the stats ledger, simplify reads markers as leads), and the v0.28.0→v0.28.1 trim patch (the shipped agent, skill, rule, and stage files say the same rules in fewer lines — contract-equal; the release's exact template diff is applied per file with `git apply`, a customised file is left untouched with a record), the v0.28.1→v0.29.0 PR split (code PR / espalier PR + Stage 7 doc sweep), and the v0.29.0→v0.30.0 human-review lane + outside install (`--simple` on both pipelines — grill, spec, approval, code, review, tests, then stop with the code uncommitted and no record kept; `--outside` on init + `/espalier-repot` — the whole espalier/ tree in a sibling espalier-main/<project>/ with its own local git, nothing tracked by the project repo) you need and applies them in order.

Install

npx vskill@latest install junhanliu-dev/espalier-engineering/espalier-migrate

SKILL.md

Espalier Migration Runner

When to Use

  • "Migrate to Espalier" / "Upgrade my Espalier install"
  • "Upgrade my harness to the latest version"
  • "Rename harness/ to espalier/"
  • "/espalier-migrate"

When NOT to Use

  • Fresh project with no existing harness/ or espalier/ dir → use /espalier-init instead.
  • Already fully up to date — /espalier-migrate detects this itself and exits cleanly with no changes.

Instructions

You are running a migration of an existing install to the current Espalier version. Up to FORTY-ONE migrations may apply, always in this order:

  1. v0.1.x → v0.2.x — typed harness/changes/{type}/{slug}/ layout,

/harness-fix lane, squash-merge decision. Mechanical: scripts/migrate-v0.1-to-v0.2.sh.

  1. v0.3.x → v0.4.0 — harness/ → espalier/ directory + skill rename

(harness-run → espalier, harness-{coding,…} → espalier-*). Mechanical: scripts/migrate-v0.3-to-v0.4.sh.

  1. v0.4.x → v0.5.0 — doc-drift detection: drift hooks, the

/espalier-prune + /espalier-doctor skills, the post-merge dispatcher, .doctor-cadence. Mechanical: scripts/migrate-v0.4-to-v0.5.sh.

  1. v0.5.0–v0.5.2 → v0.5.3 — appends the ## Editing Discipline section to

the coder sub-agent (espalier/agents/harness-coder.md). Mechanical: scripts/migrate-v0.5.2-to-v0.5.3.sh.

  1. v0.5.x → v0.6.0 — Stage 1 grilling: installs the espalier-grill skill,

refreshes the four changed pipeline templates (which also date-prefix change folders). Mechanical: scripts/migrate-v0.5-to-v0.6.sh.

  1. v0.6.x → v0.7.0 — read-only ask lane: installs the espalier-ask skill,

patches CLAUDE.md + espalier/agent.md to mention /espalier-ask. Purely additive — no pipeline change. Mechanical: scripts/migrate-v0.6-to-v0.7.sh.

  1. v0.7.x → v0.8.0 — requirements approval gate: refreshes the three changed

pipeline templates (pipeline.md, espalier, espalier-fix) so both pipelines STOP for explicit user sign-off after the requirement is written + reviewed, before any code is written (no-TTY runs auto-approve). Mechanical: scripts/migrate-v0.7-to-v0.8.sh.

  1. v0.8.0 → v0.8.1 — impact-analysis agent patch: appends a

## Change Impact Analysis section to the coder sub-agent (espalier/agents/harness-coder.md) and a ## Runtime-Surface Review section to the reviewer sub-agent (espalier/agents/harness-reviewer.md). Both make the agents reason about every surface a change touches (admin UIs, API validation, client forms, persisted data, other callers) — not just the programmatic happy path — so a now-derived value left user-required on a UI is caught at coding/review instead of returning as a fix round. Mechanical: scripts/migrate-v0.8-to-v0.8.1.sh.

  1. v0.8.1 → v0.8.2 — re-review fixpoint loop + push-gate certificate: code

review becomes a loop — every coder fix is re-reviewed until a fresh review of the current code returns zero P0 — and the push gate blocks unless the pushed code matches the fingerprint the last review saw. Refreshes the two pure-copy pipeline files (pipeline.md, espalier-fix), appends a ## Re-review Rounds section to harness-reviewer.md, and inserts the certificate check into pre-push-gate.sh. Mechanical: scripts/migrate-v0.8.1-to-v0.8.2.sh.

  1. v0.8.2 → v0.9.0 — security audit + production hardening (one release):

a new harness-security agent joins Stage 4 as a review panel; a security-standards rule + espalier-security skill are added, and the coder/reviewer/testing/push-gate gain security sections. Ships /espalier-audit, the repo-wide audit lane (espalier-audit skill + a Repo-Audit Mode section). Adds an always-loaded production-standards rule (resilience / observability / data-safety, tiered severity) the coder writes to and the reviewer enforces; per-round VERDICT: sentinels + dual-record freshness; a fail-closed push gate (cwd guard) + programmatic build/lint gate; a deploy-aware Stage 9; the TTY→explicit-signal gate fix; and a single shipped scout-prompts file for prune/doctor. Creates the new per-project files, bootstrap --force refreshes the pure-copy pipeline/grill/hooks + copies scout-prompts + symlinks both new rules + runs the 37-check validation, and surgical appends patch the per-project files. Mechanical: scripts/migrate-v0.8.2-to-v0.9.0.sh.

  1. v0.9.0 → v0.9.1 — configurable escalation caps: the review-round +

rollback hard stops move from hardcoded prose into a tracked espalier/.espalier-config (max-req-rounds, max-code-rounds, max-test-rounds, max-rollbacks — all default 3) the orchestrator reads at runtime. Creates the config file if absent (preserved on re-run) and refreshes the three pure-copy pipeline files (pipeline.md, espalier/skills/espalier/SKILL.md, espalier-fix) so their prose reads the config; a customised file is backed up to <file>.pre-v0.9.1.bak. Mechanical: scripts/migrate-v0.9.0-to-v0.9.1.sh.

  1. v0.9.1 → v0.9.2 — correctness patch: the fix lane's late-escalation

gates detect via a marker line (the old text called a shell helper that was never shipped), its back-link reads the real # Bug: title, and its regression verification is scoped + dep-linked (no more false true from a suite that couldn't run); /espalier-audit's fix handoff and /espalier-prune's unattended path key off interactivity_mode; the push gate gates the ACTIVE change (completed changes stop blocking later manual pushes) and parses mocha/rspec/go test counts, preserving the substituted test command; scout 1.11 ships in .scout-prompts.md and prune/doctor map the security/production rules. Backs up customised pure-copy files to <file>.pre-v0.9.2.bak. Mechanical: scripts/migrate-v0.9.1-to-v0.9.2.sh.

  1. v0.9.2 → v0.9.3 — skill-clarity patch; no new lane, no new stage, no

behaviour change to any gate or verdict. espalier-grill (pure-copy) gains an explicit user tier-override, a coverage guard so every counted ambiguity signal ends resolved / scoped-out / recorded in ## Open Questions, and records a non-answer with a named safe default instead of dropping it. espalier-review (substituted) gets its two review loops rewritten as an explicit when / input / do / output / who workflow, stops restating severities in the production-readiness checklist (production-standards.md is the single source), and gains when-to-use + trigger phrases in its frontmatter. Backs both skills up to <file>.pre-v0.9.3.bak. Mechanical: scripts/migrate-v0.9.2-to-v0.9.3.sh.

  1. v0.9.3 → v0.9.4 — security-skill patch; no new lane, no new stage, no

behaviour change to any gate or verdict (the security auditor's catch / false-positive rates are unchanged). The per-project harness-security AGENT and espalier-security SKILL gain when-to-use + the five sensitive axes as frontmatter trigger context, and the agent's P0 rubric and repo-audit "findings do not block" delta stop restating each other's semantics, cross-referencing one source instead. Both are per-project files that bootstrap --force never re-copies, so v0.9.4 shipped these template improvements with no way to reach an existing install. Frontmatter is edited LINE-WISE (an inherit tools-mode install has had its tools: line stripped; re-copying the template's frontmatter would reintroduce it). A body span the project has customised is left alone and reported warn-only. Backs both up to <file>.pre-v0.9.4.bak. Mechanical: scripts/migrate-v0.9.3-to-v0.9.4.sh.

  1. v0.9.6 → v0.10.0 — push-gate reshape. {build_command} / {lint_command} /

{test_command} are now substituted into FUNCTION BODIES (run_build / run_lint / run_tests), so a value may be a single command OR a multi-line block — a repo that must run several suites (one per container in a Docker-first stack, one per workspace in a monorepo) can finally be expressed. Before, {test_command} landed inside a command substitution and had to be one expression. Build and lint also stop discarding stderr: the old template ran <cmd> 2>/dev/null and, on failure, printed BLOCKED: Build fails and nothing else; output is now captured and its tail printed. The migration rewrites those three spans in the installed gate, PRESERVING the commands substituted at init, and handles each span independently (a gate half-migrated by running the v0.9.2 step against a v0.10.0 plugin has run_tests but old build/lint). A gate customised at init past the template shape is left completely untouched and reported, never mangled. Backs up to <file>.pre-v0.10.0.bak. Mechanical: scripts/migrate-v0.9.6-to-v0.10.0.sh.

  1. v0.10.0 → v0.11.0 — hook exit-code release. Claude Code PreToolUse /

PostToolUse hooks block ONLY on exit code 2 with the message on stderr — exit 1 + stdout is a silent no-op, so the old push gate never actually blocked. Rebuilds the gate from the v0.11.0 template preserving the three substituted command bodies (customised gates: skip marker + manual contract), refreshes both wrappers (fail-closed python probe, broader push match), patches check-layer-boundaries.sh to exit 2 + stderr, gives the reviewer/security agents their record-file Write tool, and refreshes pipeline.md + the pure-copy pipeline skills so the Stage 4/6 gates read the verdict WORD (FAIL/ESCALATION_REQUIRED no longer advance as PASS), plus espalier-review/espalier-security with {project} re-substitution. Backs up to <file>.pre-v0.11.bak. Mechanical: scripts/migrate-v0.10.0-to-v0.11.0.sh.

  1. v0.11.0 → v0.12.0 — grill blind-spot pass. Stage 1 grilling now

cross-references the requirement against the project's own espalier/rules/ and espalier/wiki/, not just the requirement text: a new Step 1.5 surfaces a collision — an approach that violates an encoded rule (throw where the repo standardised on Result<T>), a capability the wiki already documents, an unstated downstream ripple — as a Stage 1 question citing the exact rules/<file>#section, and floors the tier so a crisp-but-colliding requirement can't skip grilling. It verifies each doc claim against the code first — a stale doc is flagged (mark_stale), never raised as a false collision — and stays silent when there is no map to collide with. The change is confined to one pure-copy file, so the migration is a single backup-and- refresh of espalier/skills/espalier-grill/SKILL.md. Backs up to <file>.pre-v0.12.bak. Mechanical: scripts/migrate-v0.11.0-to-v0.12.0.sh.

  1. v0.12.0 → v0.13.0 — convention-bounded minimalism. The coder gains a

Solution Selection Ladder (conventions first, correctness within them, brevity only breaks ties: reuse what the project has → the convention-named mechanism → stdlib/native/installed dep → leanest compliant implementation; a NEW dependency needs a requirements.md line). The reviewer gains an advisory Minimalism Review (delete:/stdlib:/native:/yagni: findings capped at P2/P3 so they never re-open the Stage 4 fixpoint loop; ONE P1 exception: a new dependency covering what stdlib / a native feature / an installed dep provides), binds the sentinel's p1= to the P1 row count, and restores the fan-out P1 bullet that had drifted from production-standards.md. All four touched files are per-project (substituted/scout-filled), so the migration is SURGICAL — anchored section inserts, never a template overwrite. Backs up to <file>.pre-v0.13.bak. Mechanical: scripts/migrate-v0.12.0-to-v0.13.0.sh.

  1. v0.13.0 → v0.13.1 — minimalism polish patch; no gate math, sentinel

vocabulary, round-cap, or review-dimension change. The coding skill gains

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
72
Repository forks
9
7-day trend score
21

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/junhanliu-dev/espalier-engineering/espalier-migrate/badge)](https://verified-skill.com/skills/junhanliu-dev/espalier-engineering/espalier-migrate)

Something wrong with this skill or its page? Tell us.