blueprint-plugin/skills/blueprint-autonomy-level3/SKILL.md
Install blueprint autonomy level 3 (ADR-0020): scheduled-autorun + approved-work-order-execution GitHub workflows. Use when enabling out-of-band blueprint automation in a repo.
npx skillsauth add laurigates/claude-plugins blueprint-autonomy-level3Install this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Scaffold the ADR-0020 autonomy level 3 pipeline — the highest rung of the blueprint automation model — into a consumer repo: two GitHub Actions workflows plus the deterministic scripts they call. Level 3 runs blueprint out of band (scheduled cron + a label-triggered executor), where levels 1–2 only run in-session. This repo (claude-plugins) dogfoods at level 1 and cannot exercise level 3 itself; a consumer repo opts in.
| Use this skill when... | Use instead when... |
|------------------------|---------------------|
| A repo wants blueprint bookkeeping + work-order proposals to run on a schedule (no session open) | The in-session ambient pass is enough → /blueprint:autopilot (level 2) |
| A repo wants human-approved work orders executed into PRs automatically | You want to create/execute a work order by hand → /blueprint:work-order, /blueprint:prp-execute |
| Auditing whether an already-scaffolded level-3 repo has drifted from the current templates (--check) | Setting the autonomy level itself → edit docs/blueprint/manifest.json |
bash ${CLAUDE_SKILL_DIR}/../../scripts/get-automation-config.shfind . -maxdepth 3 -path '*/docs/blueprint/manifest.json'find . -maxdepth 3 -path '*/.github/workflows/blueprint-autorun.yml'find . -maxdepth 3 -path '*/.github/workflows/blueprint-wo-execute.yml'Parse $ARGUMENTS:
--check: audit-only. Diff the installed workflows/scripts against the plugin
templates and report PRESENT / DRIFT / ABSENT per file. Make no changes.Execute this level-3 scaffold.
If the Context shows no docs/blueprint/manifest.json, stop with:
Blueprint not initialized — run /blueprint:init first. Nothing else.
Read AUTONOMY_LEVEL and WO_AUTO_EXECUTE from the Context automation config —
these are the activation gate, reported in Step 4. Scaffolding does not flip
them; the workflows stay dormant (the blueprint-wo-guard.sh gate HALTs) until
the human sets them.
--check mode): audit drift, then stopFor each managed file, diff the installed copy against the plugin source and
report one line each:
for pair in \
".github/workflows/blueprint-autorun.yml|${CLAUDE_SKILL_DIR}/../../templates/blueprint-autorun.workflow.yml" \
".github/workflows/blueprint-wo-execute.yml|${CLAUDE_SKILL_DIR}/../../templates/blueprint-wo-execute.workflow.yml" \
".github/blueprint/blueprint-wo-guard.sh|${CLAUDE_SKILL_DIR}/../../scripts/blueprint-wo-guard.sh" \
".github/blueprint/blueprint-wo-packet.sh|${CLAUDE_SKILL_DIR}/../../scripts/blueprint-wo-packet.sh" \
".github/blueprint/blueprint-autorun.sh|${CLAUDE_SKILL_DIR}/../../scripts/blueprint-autorun.sh" \
".github/blueprint/get-automation-config.sh|${CLAUDE_SKILL_DIR}/../../scripts/get-automation-config.sh"; do
dst="${pair%%|*}"; src="${pair##*|}"
if [ ! -f "$dst" ]; then echo "ABSENT $dst"
elif diff -q "$src" "$dst" >/dev/null 2>&1; then echo "PRESENT $dst"
else echo "DRIFT $dst"; fi
done
Report the table and stop. DRIFT/ABSENT → advise re-running without
--check to re-sync (the templates are the source of truth; per
scaffold-fix-backport, a fix to the plugin template re-lands here on re-run).
mkdir -p .github/workflows .github/blueprint
cp "${CLAUDE_SKILL_DIR}/../../templates/blueprint-autorun.workflow.yml" .github/workflows/blueprint-autorun.yml
cp "${CLAUDE_SKILL_DIR}/../../templates/blueprint-wo-execute.workflow.yml" .github/workflows/blueprint-wo-execute.yml
cp "${CLAUDE_SKILL_DIR}/../../scripts/blueprint-wo-guard.sh" .github/blueprint/blueprint-wo-guard.sh
cp "${CLAUDE_SKILL_DIR}/../../scripts/blueprint-wo-packet.sh" .github/blueprint/blueprint-wo-packet.sh
cp "${CLAUDE_SKILL_DIR}/../../scripts/blueprint-autorun.sh" .github/blueprint/blueprint-autorun.sh
cp "${CLAUDE_SKILL_DIR}/../../scripts/get-automation-config.sh" .github/blueprint/get-automation-config.sh
The workflows call the deterministic scripts from .github/blueprint/ (they are
blueprint-plugin scripts, not present on a bare CI runner otherwise). The
agent-judgment halves invoke anthropics/claude-code-action with the
claude-plugins marketplace + blueprint-plugin enabled.
Print a receipt listing exactly what the human must do to activate — scaffolding alone leaves everything dormant:
docs/blueprint/manifest.json:
automation.autonomy_level: 3 (both workflows), andautomation.work_orders.auto_execute: true (executor only).
Report the current values (from Context) and whether the gate is met.
Optional budget caps default to max_per_run 1 / max_per_day 3 /
max_cycles 3 — see REFERENCE.md.CLAUDE_CODE_OAUTH_TOKEN in the repo's Actions secrets.work-order-draft (proposals) and work-order-approved (the
human relabel that triggers execution). Offer to create the approval label:
gh label create work-order-approved --description "Blueprint level-3: execute this approved work order (ADR-0020)" --color 0E8A16.Bash + contents: write (it must, to run the consumer's arbitrary
test suite and push its work branch), and GitHub cannot ref-scope that token
to blueprint/wo-*. So the "human PR review is the final gate" guarantee
rests on the default branch being protected: require a pull-request
review, restrict who can push, and disallow force-push/self-merge. State
plainly that without this, a prompt-injected work order could push to or
self-merge into the default branch. Report whether the default branch is
protected (gh api repos/{owner}/{repo}/branches/{branch}/protection returns
200) and refuse to call the setup "done" until it is.blueprint-plugin
available to claude-code-action (marketplace + .claude/settings.json).State the guarantees in the receipt so the human understands what they are enabling (full detail in REFERENCE.md):
blueprint-wo-guard.sh HALTs every run unless
autonomy_level >= 3 (autorun) and additionally auto_execute: true
(executor). Both default off.work-order-approved, and the gate refuses
any issue that didn't come through the pipeline (no work-order-draft/
work-order label). The protected default branch + human PR review are the
final gate (see requirement 4).RAN_TODAY counted fail-closed)
and "same order attempted max_cycles× → stuck → surface to human"
(loop-integrity).verify job) judge
"done", and each iteration writes a state-packet issue comment.blueprint-wo-packet.sh — never interpolated into a shell command.| Context | Command |
|---------|---------|
| Gate + level check | bash <plugin>/scripts/get-automation-config.sh |
| Drift audit (already installed) | /blueprint:autonomy-level3 --check |
| Verify a packet locally | bash <plugin>/scripts/blueprint-wo-packet.sh --body-file <issue-body> |
| Dry-run the gate | bash <plugin>/scripts/blueprint-wo-guard.sh --mode wo-execute --ran-today N --attempts N |
For the full workflow templates, the manifest gate/budget schema, the state-packet fields, and the security rationale, see REFERENCE.md.
development
Debug HTTP APIs: trace requests, inspect headers. Use when a request fails: check status first.
documentation
Render architecture diagrams from text sources. Use when documenting system topology.
tools
Inspect JSON payloads and extract nested fields. Use when parsing API responses.
tools
--- name: no-description allowed-tools: Read --- # No Description This skill has no description and must be dropped with a warning.