Skills¶
Skills are shared workflow definitions that Claude Code loads from
the plugin. Each skill is a directory under skills/ containing a
SKILL.md file with frontmatter and structured instructions. All
skills are namespaced under vergil and invoked as
/vergil:<skill-name>.
Each entry below covers what the skill does, when to use it, and its current status — including any tracked work that will substantially change it.
Execution doctrine — Front-Loaded Judgment, Trusted Execution¶
Human judgment is spent up front (brainstorm → spec pushback rounds → plan → plan pushback rounds → alignment rounds) and at the hard gates (PR submit, merge, release). Between those, agents run these skills by the most efficient means available — sub-agents are encouraged for research fan-out and parallel work — and only stop mid-flight for a problem they cannot resolve. The plugin no longer tunes agent behavior for continuous human observability; that older "Continuous Oversight" model is retired. The never-fabricate and never-suppress-a-gate rules are unaffected.
paad review rounds: what a session needs¶
epic-create's design-review rounds run paad in its unattended mode,
through paad's
unattended runner, paad:paad-delegate
(doctrine §1.8).
- The delegate is required. Upstream's released paad has no
delegate. The fleet installs paad from the vergil fork
(
wphillipmoore/paadat refdevelop), which tracks upstream, runs a patch or two ahead of it and has one. A session without it runs no review round:epic-createstops and tells the human, and the message names the fix. No other agent type stands in for the delegate. - Getting it. Every box, Lima or cloud, gets the delegate through the
ordinary plugin refresh. The host's
~/.claude/settings.jsonnames the fork in itsextraKnownMarketplaces.paadentry;vrg-host pluginsinstalls it on the host andvrg-vm update --allon every running VM. A box without the delegate is misconfigured. The settings entry, the rebase process and the rules for changing the fork are in paad-policy §10. - Where agent state lives. Private review material that must outlive
a session or a VM rebuild (security details, a kept scratch copy) is kept in
the main clone's ignored
build/.vergil-state/, never in a worktree (doctrine §1.5). The worktree convention keeps the main worktree read-only for source and allows ignored scratch in itsbuild/;build/.vergil-state/is the namespace for agent state there.
Skill catalogue (at a glance)¶
| Skill | Purpose | Status |
|---|---|---|
| epic-create | USER agent: the run-once entry point for non-trivial work — brainstorm → spec pushback rounds → plan → plan pushback rounds → alignment rounds, create the epic and seed its bookend tasks | Current (2.1) |
| epic-implement | USER agent: drive an epic's tasks to their human gates — resume from the epic issue + plan, work the runnable frontier (sub-agents encouraged), batch what needs the human; drafts the terminal retrospective for the human to submit | Current (2.1) |
| epic-retrospective | USER agent: the run-once terminal finishing gate — draft the epic's backward-looking retrospective, whose docs PR closes the epic | Current (2.1) |
| issue-implement | USER agent: implement an issue, validate to green, record the PR metadata, hand off to the human | Current (2.1) |
| issue-deploy | USER agent: run a deployment task — install/sync merged changes so they're usable, then record the outcome as a comment |
Current (2.1) |
| issue-validate | USER agent: run a validation task — a live check whose acceptance is a recorded PASS/FAIL comment, not a code change |
Current (2.1) |
| pr-watch | USER agent: monitor the open PR through CI/review and reconcile feedback until mergeable | Current (2.1) |
| deprecation-triage | Triage deprecation warnings into tracking issues | Current (reviewed 2026-04-23, no changes) |
| summarize | Decision / operation / stream-of-consciousness summaries; SOC mode is the canonical capture for the fleet | Current |
| intake-capture | Capture an uncurated idea/bug/to-do into the intake queue with vrg-intake-create — no kind or category step — paraphrasing voice-to-text into clean prose |
Current (2.1) |
| intake-review | Review the intake queue oldest first in batches of 4 and route each item (drop, defer to the deferred queue, one-off, split, planning) with vrg-intake-route |
Current (2.1) |
| deferred-review | Review the deferred queue in batches of 4 — re-check each item's revival conditions against the current state and recommend keep, refresh, revive, or drop | Current (2.1) |
| planning-review | USER agent: rank the planning queue with the human and pick what to expand next with epic-create; defer, drop, or leave the rest with vrg-intake-route. Core rule: plan only what you mean to implement soon |
Current (2.1) |
| steering-audit | Review the Claude Code steering and settings files against the ownership model: re-verify its platform facts, run mechanical checks and a findings-only /paad:pushback, then walk each finding with the human. steering-audit user reviews the user-level files read-only |
Current (2.1) |
The three epic-* skills form the epic lifecycle: epic-create (run once) →
epic-implement (run N times) → epic-retrospective (run once — the terminal
gate that closes the epic).
epic-create¶
What it does. USER-identity skill and the entry point for non-trivial
work. It opens into brainstorming, runs the front-loaded pipeline
(brainstorm → spec pushback rounds → writing-plans → plan pushback rounds →
alignment rounds), creates the finite epic in its resolved home, seeds the bookend tasks — documentation,
documentation-review, and the terminal retrospective — and publishes the
spec + plan as a docs PR. Each design-review round is a fresh review-only
subagent; the main session walks the human through its findings and records the
round on the planning issue, and the human decides every further round. The
rules are mode 1 of the
paad review doctrine,
and each round needs paad's delegate
(paad review rounds).
Every run is tracked in a planning issue (an open
child of the planning epic): it is entered from a planning issue, an intake
issue (pulled into planning), a deferred issue (pulled back into planning after
its Revisit when: conditions are checked), a free-text idea (a new planning
issue), or with no argument (a vrg-queue planning summary). It labels the item in-progress,
records progress comments with the Epic: / Docs task: / Tasks filed: yes
markers, and closes the planning issue once the epic is fully expanded (docs PR
merged, tasks filed). For a security planning issue, it hands each advisory
to the task or tasks that fix it or, for a design-only finding, the
documentation task, with one vrg-security-record retarget per advisory,
before posting Tasks filed: yes, and the planning issue cannot close until
every advisory is handed off (see
Security items in planning).
When to use. At the start of significant work — "let's build X", "start an epic for this" — or to resume a paused planning session. If the work collapses to a single PR, it is a task, not an epic.
Status. Current (Vergil 2.1).
epic-implement¶
What it does. USER-identity skill and the epic-level driver above
the issue-* skills. Given an epic, it reconstructs state from the epic
issue and its referenced plan (the authoritative driver), works every
currently-runnable task to its gate — routing by kind to
issue-implement / issue-validate / issue-deploy, and dispatching
parallel sub-agents where efficient — then batches everything needing
the human once and stops. It is stateless by design: re-invoking after a
lost or compacted session re-derives position from GitHub.
When to use. In the user-agent session, to start or resume work on an epic as a whole rather than one issue at a time — "implement epic #N", "pick up epic X where we left off".
Boundaries. It never opens PRs, never merges, and never runs pr-watch
(a human-triggered exception). It drafts the terminal retrospective via
epic-retrospective but never submits or merges its PR — the retrospective's
docs PR is the final gate, and PR submit/merge stays a human gate.
Status. Current (Vergil 2.1). First exemplar of the Front-Loaded Judgment, Trusted Execution doctrine.
epic-retrospective¶
What it does. USER-identity skill and the terminal finishing gate of the
epic lifecycle. Run once, at the end: its preflight refuses to run until every
other child of the epic is closed, then it sweeps the epic's tasks, their PR
reviews and the planning issue for review findings that were never tracked
(each is found, filed with vrg-intake-create or dropped by the human, and
the result goes in §4), then it drafts retrospective.md — the
backward-looking record that partners the spec and plan (spec → plan →
retrospective) — from the execution history, runs a draft → review loop with the
human, and hands off the closing docs PR whose merge closes the epic.
When to use. To finish an epic — "run the retrospective", "close out this epic", "we're done with this epic".
Status. Current (Vergil 2.1).
issue-implement¶
What it does. USER-identity skill. Implements a GitHub issue on
its feature branch, validates to green via vrg-validate, then records
the PR metadata (.vergil/pr-workflow.json) with
vrg-pr-workflow report-ready for vrg-submit-pr to consume.
report-ready also pushes the branch to origin, so there is no separate
push step. A run-and-done hand-off: it publishes the branch, records the
metadata, and the human opens the PR. It refuses an issue whose native parent is the intake,
planning or deferred epic (route it with intake-review, expand it with
epic-create, or revive it with deferred-review first), mirroring the
PR tooling's refusal.
When to use. In the user-agent session, to take an issue from
implementation through the point where the human opens the PR, in a
Lima or a cloud session alike. report-ready pushes a
world-readable relay ref carrying the ready-state, so the Mac does
not need the session's filesystem, and the human opens the PR
worktree-free with vrg-submit-pr <branch> [<branch> …]. (This retired
the former issue-localize skill, which reconstructed the ready-state
locally before the relay existed — epic
vergil-project/.github#148.)
Status. Current (Vergil 2.1). Requires the 2.1 tooling CLIs
(vrg-pr-workflow, etc.) at runtime.
issue-deploy¶
What it does. USER-identity skill. Runs a deployment-labelled task
end to end: installs or syncs the merged change so it is actually usable
(install / sync / release-then-install), then records the result as an
Outcome: comment on the issue. It is run, not built — there is no PR,
and the deployment tooling refuses one.
When to use. When the human asks to deploy, install, roll out, or sync merged work, or when a later task needs a change deployed and usable rather than merely merged.
Status. Current (Vergil 2.1).
issue-validate¶
What it does. USER-identity skill. Runs a validation-labelled task
whose acceptance is a live check, not a code change — a cold rebuild, a
live-lab check, a post-deploy smoke test — and records PASS/FAIL as an
Outcome: comment. Like deployment, it is run, not built: no PR.
When to use. When the human asks to validate, verify, or run the checklist on a validation issue.
Status. Current (Vergil 2.1).
pr-watch¶
What it does. USER-identity post-PR loop, emitted by
vrg-submit-pr. Monitors the open PR via vrg-pr-await and
reconciles failing CI checks and human review feedback, pushing
fixes until the PR is mergeable.
When to use. Run the emitted /vergil:pr-watch <PR_URL> line in
the USER agent session after the human opens the PR.
Status. Current (Vergil 2.1).
deprecation-triage¶
What it does. Applies the deprecation-warning triage policy:
search for an existing issue matching the warning, create a
tracking issue if none exists using the standard template,
attempt a code-only fix, decide fix-now vs defer-to-next-cycle,
and document any suppression with removal criteria. Paired with
the detect-deprecation-warnings PostToolUse hook.
When to use. When a deprecation warning surfaces during test output, CI, or regular work. The partner hook triggers this flow automatically when it catches warnings.
Status. Current. Reviewed for currency on 2026-04-23 as part of plugin#59; no changes needed.
summarize¶
What it does. Produces a concise, structured summary in one of three modes:
- decisions — summary of decisions made during a session (what, why, alternatives considered, next step)
- operations — summary of operations performed (what was touched, what happened, what remains)
- soc — stream-of-consciousness capture for context offloading
between sessions (triggered by
Enter SOC/End SOC)
When to use. When the user explicitly asks for a structured summary, invokes SOC capture, or the skill is invoked via handoff protocols.
Status. Current. Decision A from
plugin#58:
this skill's SOC mode is the canonical SOC capture mechanism for
the fleet. Repo-local references to soc-capture or
summarize-soc as skill names are stale pointers — splitting
SOC into its own skill was rejected because capture and summary
are intertwined here (End SOC triggers the structured summary).
The cross-repo references in the-infrastructure-mindset are
tracked for cleanup in
the-infrastructure-mindset#165.
intake-capture¶
What it does. Captures an uncurated idea, bug, or to-do into the intake
queue so it is never lost. It runs vrg-intake-create, which files one issue
in the current repo's queue home (the org .github for a public repo, the repo
itself for a private one) and links it under that home's intake epic as it is
created. There is no kind or category step: membership in the intake queue is
the item's state. Voice-to-text input is paraphrased into clean written prose.
Renamed from the triage capture skill in epic
vergil-project/.github#176.
When to use. Whenever the human says "don't forget X", "capture this", "note a todo", or riffs an idea to come back to later — especially mid-task or via voice.
Status. Current (Vergil 2.1).
intake-review¶
What it does. Reviews the intake queue and routes every item into the
epic/task model. It lists the queue with vrg-queue intake (oldest first),
checks each item's current state (an overlapping or closed issue, a bug that is
already fixed), and presents batches of 4 with one paragraph per item and a
recommended route. The human confirms each batch in one reply, and the agent
applies it with vrg-intake-route: drop, defer (move the item to the
deferred queue with a required reason and revival conditions, for
deferred-review to bring back), one-off (move into
a repo's ad-hoc or finite epic, transferring the issue or recreating it when
GitHub refuses the transfer), split (into tasks made with
vrg-issue-create), or planning (hand to epic-create). The agent closes
dropped and split items itself. Leaving an item in intake for the next review
is also an outcome, for items that will be ready within days. Renamed from the
triage review skill in the same epic.
When to use. For the periodic intake pass — "review intake", "groom the backlog", "process the intake queue", "what's in intake" (and the older "review triage" phrasings).
Status. Current (Vergil 2.1).
deferred-review¶
What it does. Reviews the deferred queue, where evaluated items wait for
their revival conditions. It lists the queue with vrg-queue deferred (least
recently deferred first), rereads each item's latest deferral comment, and
actually checks its Revisit when: conditions against the world — release
pages, issue and PR states, dates, upstream status. It presents batches of 4,
each item with what was checked, what was found, and one recommended outcome:
keep (no change), refresh (re-defer in place with an updated reason and
conditions), revive (to intake, planning, or a one-off, guided by the
Deferred from: line), or drop. The human confirms each batch in one
reply, and the agent applies it with vrg-intake-route. A condition it cannot
verify is reported as such, with a keep recommendation. Added in epic
vergil-project/.github#508.
When to use. For the periodic deferred pass — "review deferred", "what's deferred", "revisit the backlog", "process the deferred queue".
Status. Current (Vergil 2.1). Requires the deferred-queue tooling
(vrg-queue deferred, and vrg-intake-route with defer --revisit-when and
the intake route) at runtime.
planning-review¶
What it does. Decides, with the human, what to plan next. It lists the
planning queue with vrg-queue planning, surfaces in-progress items first
(each with its latest progress note, offering to resume it with epic-create
or defer it), then ranks the waiting items by priority and importance in
conversation with the human. There is no scoring formula. Each item gets one
outcome: pick (hand to epic-create <ref>), defer
(vrg-intake-route <ref> defer --reason … --revisit-when …, refused when an
Epic: marker is recorded), drop (vrg-intake-route <ref> drop --reason …),
or leave (for items expected to be ready within days or a week).
Its core rule is the planning doctrine: plan an epic only when you mean to implement it soon. A plan left sitting goes stale and needs a conceptual rebase onto everything built since, so the skill discourages picking more than near-term capacity allows.
When to use. "review planning", "what should we plan next", "prioritize the
planning queue". To work one known item, go straight to epic-create <ref>.
Status. Current (Vergil 2.1), added in epic vergil-project/.github#508. It starts simple and is expected to evolve with use.
steering-audit¶
What it does. The judgment layer of the recurring steering review, checked
against the
Claude config ownership model
(the nightly vrg-github-repo-config audit is the mechanical layer). It
inventories the files, re-verifies the model's platform facts against the live
Claude Code docs and reports any drift first, then runs its own mechanical
checks: the config audit (repo scope), every named path exists, every named
command resolves, the CLAUDE.md line count, and the ownership rules. It runs
/paad:pushback on each steering file as a findings-only review (no edits, no
report files), then walks every finding one at a time. The human picks one
disposition for each: keep, edit, move to a named managed home,
delete, or (repo scope only) file to intake.
It has two scopes:
- repo (
/vergil:steering-audit, the default): the repo'sCLAUDE.md,.claude/rules/,.claude/settings.json, anyAGENTS.md, and the.claude/settings.local.jsoncopies Claude Code may load. Edits go through the normal worktree and PR flow. - user (
/vergil:steering-audit user):~/.claude/CLAUDE.mdand~/.claude/settings.json, once per cycle. Read-only and interactive only: the skill writes no file of any kind, the human makes every change on the host, and findings never go to GitHub or intake. The only public record is the date and counts.
It does not read or depend on memory, and it does not run /doctor
prompt-audit, which stays an optional check the human can run by hand.
When to use. At least quarterly, and whenever a Claude Code release changes settings or instruction-file behavior — "audit steering files", "review CLAUDE.md", "review Claude settings", "steering audit".
Status. Current (Vergil 2.1), added in epic vergil-project/.github#558.
How skills work — technical¶
Each skill is a directory under skills/ containing:
SKILL.md— required. Frontmatter withnameanddescription, followed by the skill's body (context, workflow, templates, etc.).- Optional supporting files (templates, examples) referenced from
SKILL.md.
The plugin's skills/ directory is loaded on session start. The
skill name in the frontmatter plus the plugin's namespace
(vergil) determines the invocation: a skill named
issue-implement in this plugin is invoked as
/vergil:issue-implement.
Skills are documentation-as-config, not executable scripts. They tell Claude Code how to run a workflow; Claude Code executes the flow using whatever tools the user has granted.