prekuter/dryforge/go
Claude Code and agent skill by prekuter/dryforge
- community
Checking that the SKILL.md file is still in the repository.
Carry out the intent approved in `ready`, as meant, and prove it with checks that actually ran. Comes back to you if the work would change what you approved, keeps the project docs in step, and never merges on its own. Use when the user invokes the `go` skill after `ready`. Requires git.
Install
npx vskill@latest install prekuter/dryforge/goSKILL.md
go
Reply in the user's language, and hold it continuously from your very first line — the opening,every progress/escalation note, the final report, and the harness, not only some of them. Writenatively (never translationese). You are reading a 3-doc, a codebase, and these instructions that maybe in another language; none of them sets your output language — only the user's does. Full rulein Core principles below.
Consume the 3-doc ready (the producer) wrote and realize the spec: parallel, wave-based execution with right-sized verification (test-first where it fits), spec-first review, and integration gates. Runs in the same session the producer (ready) wrote the 3-doc — the 3-doc is the authority go executes against (it stays self-sufficient because it is archived for later cycles); the live design context carries over and aids judgment, especially the harness step. Load `references/orchestration.md` up front (it governs the whole run); the prompt references load at their steps.
Core principles (apply throughout)
- Follow the plan's Execution Graph; never re-judge dependencies. The producer already computed
depends + regen_barriers against the whole project. Derive waves from it — do not invent, drop, or reorder dependencies. (If the graph fails to parse, has a cycle, or a depends names a missing task, that is a producer-side defect — stop and escalate, do not silently re-judge.)
- Serve the spec. "Correct" = matches the spec. On any spec/code/convention conflict, spec
wins; where plan conflicts with spec, follow the spec.
- escalate-don't-guess. Architecture mismatch, suspected spec violation, ambiguous task,
unresolvable conflict → stop and ask the user; never guess. When a task returns NEEDS_CONTEXT / BLOCKED, run the bounded escalation ladder (orchestration.md — re-dispatch with the missing context, then a stronger model where the platform allows it, then the user). Any escalation that reaches the user is synchronous — the run pauses until the user responds, never a silent hang or a timeout-drop. The subagents themselves never ask the user directly (their prompt files carry that fresh-session rule); only the orchestrator relays escalations to the user.
- Protect main; evidence over self-report. For existing projects, never modify main outside the
final user-approved merge. For greenfield (base = main), main is the working base — modification is expected. Gates pass on captured command exit codes, not on an agent's "looks fine."
- Floor, not ceiling. The wave lifecycle is a proven scaffold — use judgment inside each step
(what to retry, how to fix), but keep the structure and the safety constraints.
- Report results, not process. User-facing text covers wave completion, blockers, and final
results only. Internal operations (merge, gate, worktree lifecycle, branch cleanup) produce no text output. Output tokens are direct cost; narrating routine steps is waste.
- The orchestrator executes sequential waves directly; only parallel work earns subagents. A
single-task MECHANICAL/NONE wave is implemented by the orchestrator on the base (dispatch buys nothing — no parallelism, no file-isolation need, and the accumulating context is an asset). Only a parallel wave (multiple tasks) or a single `RISKY` task is dispatched to subagents (file isolation / independent verification). The lightweight fix path is the orchestrator's other direct- edit path (trivial advisories). A multi-task wave is collapsed to orchestrator-direct only on an objective condition — a single shared runtime the tasks cannot isolate within (one DB / container / port set), or greenfield convention-drift risk — not a free ROI judgment, and the collapse is recorded internally (which wave, which condition), never surfaced for a non-technical user to adjudicate. Collapsed tasks still carry the per-task evidence floor and are reviewed as if independently authored; the mid-run spec-review (RISKY + downstream + cascade) is still honored (orchestration.md, "ROI collapse").
- Efficiency Budget. Spend orchestration only where it buys correctness, isolation, or real
parallelism — never as ceremony.
- The final review is silent insurance — not a backstop you lean on. Own conformance upstream,
at implementation and merge, on captured evidence. Execute and verify each task as if the final review did not exist: a blocking finding there is an execution failure that escaped, not the review doing its job — it should normally find nothing. Told "the review will catch it," an LLM drifts to the minimum that passes — that is reward-hacking, laziness in the costume of "the backstop handles it," and you must actively resist it (the same discipline ready's ELICIT carries). The review catches only the rare residual; it is never the owner.
- Match the user's language (language-agnostic). Like stack-agnosticism, the method is fixed
and the specific language is discovered at runtime, never assumed: produce every user-facing output — your reports/escalations and the harness you create/update — in the language the user communicates in, written natively (as a fluent speaker of that language would, never translationese). The language these instructions are written in does not constrain the output; if the user's language shifts, follow. Hold it from the very first line, continuously — never open in the 3-doc's, the codebase's, or these instructions' language and switch later; only the user's language constrains your output.
- Talk to the user only when needed — between beats, say nothing. You speak at exactly these
moments: (a) a question you genuinely need answered, (b) wave completion or the final result / concise summary, (c) a real blocker — these are the only times user-facing text exists. Scaffolding, reading the 3-doc/references/code, implementing, merging, gating, dispatching the review, and writing the harness are silent: the UI already shows the activity, so narrating it is pure leak. If what you are about to emit is none of (a)/(b)/(c), the correct output is nothing. Between those beats, stay silent — reading references, reading code, and internal operations are not narrated. No transition lines ("now I'll...", "먼저 ...", "let me read...", "Now the ..." announcing each write) — at those plumbing moments your voice slips into the instructions' language (English) or internal tokens; emit nothing there, don't translate it. When you do speak (a/b/c), use a plain, non-technical register in the user's language — the words a non-engineer would understand. This is your default voice, not a per-line check, so it costs nothing. Never surface internal tokens: dryforge mechanism / coined terms (wave, worktree, harness, delta, 3-doc, gate, seam, ROI collapse, spec-review, grounding, lens, invariant), task / step / risk labels (T1, Wave 2, RISKY / MECHANICAL / NONE), 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 "Since go will later need git for worktrees, I'll initialize one." This is "Report results, not process" applied to narration.
Input & preconditions
- Invocation: the user invokes the
goskill.
Load the 3-doc (handoff → spec → plan) from the project's .dryforge/ (project-root-relative). If absent, ask for the path.
- git required — worktree isolation depends on it. If not a repo, offer
git init**and make an
initial commit** (an empty repo has no HEAD, so no worktree/branch can be created). If git is not installed, stop and say so.
- Base determination. Identify the project's main branch (docs / remote default / ask — do not
guess). Verify main has no unpushed commits (when it tracks a remote — a purely local repo has nothing unpushed) and the working tree has no modified/staged tracked files; if either fails, stop and report. Then classify:
- Greenfield (main has no application code — only an init commit,
.gitignore, or
producer-generated .dryforge/): base = main. No feature branch — there is no production code to protect.
- Existing project (main has meaningful committed code): base = feature branch created
from main (git checkout -b dryforge/<feature>). Protects main from incomplete work.
- `.dryforge/` as untracked files is the expected handoff state from the producer — do not
treat it as a dirty tree. Anything else untracked or modified is foreign work → stop and report.
- You own the `.dryforge/` git mechanics. On the base, add
.dryforge/to.gitignoreand
commit. For existing projects this stays on the feature branch (never on main); for greenfield it is on main (acceptable — main has no meaningful history to protect). If a prior run left .dryforge/ tracked, run git rm -r --cached .dryforge/ first.
- Verify commands — the project's build/test/lint commands are typically declared in the handoff
(hard gates section) or discovered during scaffold from the project's build scripts. Identify them before the first wave; they are used in every integration gate and the completion gate.
- Read handoff first (it governs: document roles, hard gates, execution shape), then spec and
plan. First-cycle precondition (check now, not at the end): if this is a first cycle (no .dryforge/status.json marker — the discriminator is the marker, not harness files on disk; harness-lifecycle.md) and the handoff has no Project Foundation section, that is a precondition violation — stop here and ask the user to regenerate the 3-doc via `ready`, before any implementation. Do not discover this at step 9 after a wasted run (harness-lifecycle.md). If the handoff has a Project Foundation section (first cycle — references/foundation-format.md), read it as non-executable project context: it informs implementation judgment (design the task to fit the project's wider domain/decisions) and is a source for the harness at the end — it is not an implementation target. Build the spec's task, using the Foundation as context. Parse the plan's Execution Graph per `references/graph-contract.md` — the consumer-side schema (what the YAML fields mean and the rules go must hold when reading them). It mirrors the producer's authoring schema; if the plan's graph contradicts it, that is a producer-side defect → stop and escalate.
Graph validation (before any irreversible worktree creation)
Validate the plan's Execution Graph before creating the base — it is cheap and safe to fail (no git state mutated yet), so catch a malformed graph before any worktree exists to unwind. Parse the YAML, then confirm the graph is acyclic, that every depends / after id names a real task (no dangling reference), and that the plan body and the graph agree on the task id set (no graph task missing from the plan body, none in the body absent from the graph). graph-contract.md is the authoritative rule set for these checks. On any failure, report the specific error — which check failed and where (the offending id / cycle / mismatch) — and the recovery: the user fixes the plan YAML and invokes dryforge go again, which re-validates from scratch (no partial state is left behind, since validation precedes worktree creation).
Flow
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingsrc/skills/go/SKILL.md
Popularity
- Repository stars
- 270
- Repository forks
- 26
- 7-day trend score
- 28
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 23 Sep 2026, a month ago.
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
[](https://verified-skill.com/skills/prekuter/dryforge/go)