Compound Engineering Setup
EveryInc/compound-engineering-plugin
Checks Compound Engineering plugin health and repo-local config, or scaffolds a Compound Pack when you ask for one by id.
Bring an existing codebase into Dryforge, once. An agent skill from prekuter/dryforge.
$ npx skills add prekuter/dryforge --skill migration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install prekuter/dryforge migration --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/prekuter/dryforge.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/migration .claude/skills/migration && 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 "migration" agent skill from https://github.com/prekuter/dryforge/tree/main/src/skills/migration into .claude/skills/migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migration", 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/prekuter/dryforge/tree/main/src/skills/migrationType 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 prekuter/dryforge --skill migration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install prekuter/dryforge migration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prekuter/dryforge.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/skills/migration .agents/skills/migration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "migration" agent skill from https://github.com/prekuter/dryforge/tree/main/src/skills/migration into .agents/skills/migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migration", 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 prekuter/dryforge --skill migration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install prekuter/dryforge migration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prekuter/dryforge.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/skills/migration .cursor/skills/migration && 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 "migration" agent skill from https://github.com/prekuter/dryforge/tree/main/src/skills/migration into .cursor/skills/migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migration", 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/prekuter/dryforge.git --path src/skills/migration--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 prekuter/dryforge --skill migration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install prekuter/dryforge migration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prekuter/dryforge.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/skills/migration .gemini/skills/migration && 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 "migration" agent skill from https://github.com/prekuter/dryforge/tree/main/src/skills/migration into .gemini/skills/migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migration", 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 prekuter/dryforge migrationInstalls 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 prekuter/dryforge --skill migration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/prekuter/dryforge.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/skills/migration .github/skills/migration && 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 "migration" agent skill from https://github.com/prekuter/dryforge/tree/main/src/skills/migration into .github/skills/migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migration", 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 prekuter/dryforge --skill migration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install prekuter/dryforge migration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prekuter/dryforge.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/skills/migration .opencode/skills/migration && 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 "migration" agent skill from https://github.com/prekuter/dryforge/tree/main/src/skills/migration into .opencode/skills/migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "migration", 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.
migrationBring an existing codebase into Dryforge, once. An agent skill from prekuter/dryforge.
Migration is an agent skill from prekuter/dryforge. Bring an existing codebase into Dryforge, once. Reads the code, asks what code cannot show — business rules, security policy, what is intentional — and writes the project docs at the entry points agents already read. Use when the user invokes the migration skill on an existing project. Requires git.
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/harness-format.md`, `references/harness-review.md` and `references/migration-elicit.md`).
It sits in Agent Workflows, covering Hooks and plugins and Spec-driven development. It works with Git. The repository describes itself as: Bounded-autonomy plugin harness for agents. Intent to implementation: ready, then go. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 904f257. 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.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
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.
Migration loads about 3.2k tokens when it runs, and up to ~14k if it reads all its reference files. Until then it costs about 78 tokens; SKILL.md has 1,743 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 prekuter/dryforge at commit 904f257, republished under its Apache-2.0 licence (© prekuter). 1,743 words, ~3,216 tokens.
.claude/skills/migration/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Reply in the user's language, and hold it continuously from your very first line — the opening, every grounding/progress note, the questions, and the harness, not only some of them. Write natively (never translationese). You are reading a codebase (and these instructions) that may be in another language; neither sets your output language — only the user's does. Full rule in Core principles below.
Convert an existing project into the dryforge project harness — the durable documentation layer
that every later agent (dryforge or not) works inside. migration reads the codebase, elicits the
intent/constraints/decisions that code cannot express, and generates the whole harness:
CLAUDE.md / AGENTS.md, the docs/ set, and a per-module AGENTS.md. The harness spec is in
references/harness-format.md.
migration is a one-time conversion, not a task runner. It writes documentation only — it does
not create a 3-doc (that is ready's job) and does not execute code (that is go's).
After it finishes, commit the harness and clear the session before running ready → go:
migration is an independent piece of work, and a fresh session keeps the task-level dialogue clean.
references/harness-format.md (five principles, four techniques). Filling sections is not the
goal; informing the next agent is.ready made (generate inline, verify independently). This is the only
dispatch..dryforge), phase / step labels (SCAN /
ELICIT / GENERATE / REVIEW), or project-internal jargon a non-engineer wouldn't recognize
(library/tool names, config flags, test-framework internals). Don't soften internal logic into
user-ish words — just omit it. E.g. "Starting a git repo here." — not "Initializing git and adding
the marker directory to .gitignore so the harness state isn't committed."migration skill, no arguments — migration reads the current
project.ready (which
designs the project's first cycle and lets go create the harness from scratch).git init and make an initial
commit (later go needs a HEAD for worktrees). If git is not installed, stop and say so..dryforge/backup/, adds .dryforge/ to .gitignore (so the
local marker and backups aren't accidentally committed), and writes the .dryforge/status.json
marker on completion. It performs no commits and no branch operations — whether and when to
commit the harness is the user's choice. (This differs from ready, which never touches
.gitignore: migration may not be immediately followed by go, so it sets up the ignore itself.)Read the project inline (file reads, shell, search — no subagent dispatch). Start with the cheapest map and stop once you can ground ELICIT's questions; deep-read only where you must.
Cover:
Result: a manifest of the project — every module/entity, pattern, security surface, external
dependency, and gap. This is the ledger ELICIT works from (references/migration-elicit.md): each
item must close as confirmed / asked-answered / N/A — reason, so coverage is observable, not
asserted.
references/migration-elicit.mdForce-load references/migration-elicit.md. Using the SCAN map, ask the user for the
information code alone cannot extract — project-wide (not task-focused). The guiding frame:
self-infer first, ask deeply only where being wrong is dangerous (business model, domain
invariants, security policy must be user-confirmed even when code-inferable; technical WHY and
conventions need only a light confirm when the code answers them).
Existing-docs handling. Read existing docs (reference status). Review any existing CLAUDE.md/AGENTS.md critically — decide what to fold into the dryforge system, what to drop, and what to improve — then present the review to the user, explain it, and get approval.
references/harness-format.mdForce-load references/harness-format.md and generate the whole harness to its spec, in order:
.dryforge/ directory if absent..dryforge/backup/ (entry-point handling
in harness-format).docs/ and every file in it (harness-format spec).docs/tracking/status.md (done vs. remaining, against full scope).Explore sources fully before writing; verify each file against the code both ways (omission / hallucination) as you go — this self-check is separate from Phase 4.
Write every file silently — do not announce each file or section as you go ("Now the docs...", "이제 모듈 AGENTS.md를...", "Now the entry point"); the UI already shows each write. This multi-file writing sequence is where narration leaks most — emit nothing between writes.
references/harness-review.mdForce-load references/harness-review.md (the rubric) and dispatch a fresh general-purpose subagent
that did NOT author the harness to verify it independently. Use a general-purpose agent with full
read/inspect tools (not a plan-only or search-only agent type) so it can cross-check every claim against
the actual code; give it the harness files + the rubric + the user's language (so it judges native
fidelity) + the Phase-2 ledger with every disposition, inline in the dispatch prompt (the ledger
is session state — the subagent cannot see it any other way, and the shared rubric does not carry
it), read-only, returning a structured list (no raw dump). It checks the four dimensions: content (substantive
density + quality principles), format (self-containment, altitude, no references), completeness
(required files present + every SCAN-ledger item dispositioned — judged against the inline
ledger), source-cross-check
(omission vs. hallucination, future-scope exempt). The subagent is a fresh session and cannot ask the
user — so the orchestrator relays each finding: internally resolvable → fix directly; needs user
intent → carry to Phase 5. A surviving blocker → escalate to the user, do not loop (the
3-doc-gate discipline). This independent pass is distinct from the author's own omission/hallucination
self-check during GENERATE (that catches what you can see; this catches what you can't — A=A).
Present the whole harness to the user — not a raw document dump, but a walk-through of the key decisions captured (what SCAN/ELICIT found, what each doc records, what was dropped from old docs and why). Resolve any Phase-4 questions that need user intent. On approval:
.dryforge/status.json with the initialized marker — { "initialized": true }. This is a
local-only marker (inside the gitignored .dryforge/): its presence tells a later go that
the harness already exists, so every change is a delta; its absence means first-cycle creation..dryforge/ is in .gitignore.Then migration is complete. Remind the user to commit the harness (migration itself does not
commit — and a later go treats uncommitted files other than .dryforge/ as foreign work and
stops), then clear the session before running ready → go.
Done only when ALL hold:
docs/ file exists (7 core docs + tracking: status.md, decisions/index.md + an ADR
(NNNN-*.md) for each trade-off decision the ledger confirmed, findings.md).references/harness-review.md; any
surviving blocker was escalated to the user, not looped)..dryforge/status.json written (initialized) and .dryforge/ is gitignored.© prekuter, 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
SKILL.md and 3 other files (references) in src/skills/migration of prekuter/dryforge.
Open the folder on GitHubat commit 904f257
We found 6 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in prekuter/dryforge, which our catalogue first saw on October 7, 2026.
Migration 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 |
|---|---|---|---|---|---|---|
| Migration this skillprekuter/dryforge | 410 | 1 repos | ~3.2k | Automated safety check: Pass | Apache-2.0 | |
| Compound Engineering SetupEveryInc/compound-engineering-plugin | 25k | — | ~2k | Automated safety check: Pass | MIT | |
| Command Creatormeshery/meshery-operator | 151 | 4 repos | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Publish Plugins Version Bumpvinta/hal-9000 | 138 | 1 repos | ~1k | Automated safety check: Pass | MIT | |
| Watchmen Setupfirstbatchxyz/watchmen | 296 | — | ~1.1k | Automated safety check: Notes | MIT | |
| Claude Command Converterdceoy/speckit-agent-skills | 146 | — | ~1.4k | Automated safety check: Pass | AGPL-3.0 |
EveryInc/compound-engineering-plugin
Checks Compound Engineering plugin health and repo-local config, or scaffolds a Compound Pack when you ask for one by id.
meshery/meshery-operator
This skill should be used when creating a Claude Code slash command.
vinta/hal-9000
Finds which plugins in the repository changed, bumps only the ones not already bumped since origin/main, and checks that each plugin's two manifests stay in sync.
firstbatchxyz/watchmen
Walks through installing watchmen, running its init wizard, wiring the plugin into Codex or Claude Code and checking the result with doctor.
dceoy/speckit-agent-skills
Convert Claude Code commands (.claude/commands/.md) to standard Agent Skills (skills//SKILL.md).
fynnfluegge/agtx
Carries out an approved plan for an agtx-managed task: implements the changes, runs tests, commits, writes a summary to .agtx/execute.md and then stops.
Works with
Categories
Bring an existing codebase into Dryforge, once. An agent skill from prekuter/dryforge. Migration is an agent skill from prekuter/dryforge. Bring an existing codebase into Dryforge, once.
Migration fits situations like: the user invokes the migration skill on an existing project; tasks that involve Hooks and plugins; tasks that involve Spec-driven development.
Run `npx skills add prekuter/dryforge --skill migration -a claude-code`. Or copy the skill folder (src/skills/migration in prekuter/dryforge) into .claude/skills/migration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add prekuter/dryforge --skill migration -a codex`. Or copy the skill folder (src/skills/migration in prekuter/dryforge) into .agents/skills/migration 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 prekuter/dryforge --skill migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/migration, .gemini/skills/migration, .github/skills/migration and .opencode/skills/migration in your project.
Going by SKILL.md and its folder, Migration needs the command-line tools its instructions call (git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. 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.
Migration is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 11k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Migration: Compound Engineering Setup (EveryInc/compound-engineering-plugin, 25k stars), Command Creator (meshery/meshery-operator, 151 stars), Publish Plugins Version Bump (vinta/hal-9000, 138 stars) and Watchmen Setup (firstbatchxyz/watchmen, 296 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
prekuter (a GitHub user) maintains it in prekuter/dryforge, which has 410 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 2, 2026.
Source: prekuter/dryforge on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.