agent-skills/skills/loop-engineering/templates/infra-loop.json
F4473 208af622d9 Add loop-engineering skill (DRAFT): 5-stage pattern + 3 Orchestrator templates with approval gates
No Stripe objects, draft status flag set in SKILL.md frontmatter and index.json.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 15:02:56 +00:00

61 lines
2.5 KiB
JSON

{
"name": "Infra Loop (diagnose -> patch -> verify-on-canary -> approve -> ship -> watchdog -> re-grade)",
"description": "A self-supervising infra-change loop: diagnoses and patches freely against a canary, then stops at a human approval gate before anything reaches a production system. Draft template - wire tool_slug values to your own tools.",
"min_tier": "holdings",
"steps": [
{
"stage": "diagnose",
"tool_slug": "issue-diagnoser",
"params": {"target": "<the failing system>"},
"hil": false,
"note": "Read-only investigation. No side effects."
},
{
"stage": "patch",
"tool_slug": "patch-drafter",
"params": {"backup_suffix": ".pre_change"},
"hil": false,
"note": "Draft the fix locally; always back up what it replaces before touching it."
},
{
"stage": "verify-on-canary",
"tool_slug": "canary-verifier",
"params": {"require_planted_negative_case": true},
"hil": false,
"note": "Prove the fix on one non-production instance first, including a planted case that MUST fail on bad input - a check that can't fail isn't a check."
},
{
"stage": "approve",
"tool_slug": "approval-gate",
"params": {
"surface": "git.push",
"scope": "<name the exact repo/production target>",
"ttl_minutes": 30,
"reason_required": true
},
"hil": true,
"note": "APPROVAL GATE. Reaching a production system is exactly the class of action this template refuses to do unattended - a scoped, short-TTL, human-granted permission is required, named to the exact target, before shipping."
},
{
"stage": "ship",
"tool_slug": "deploy-change",
"params": {"verify_remote_ref_changed": true},
"hil": false,
"note": "Only reachable once approval is live. Verify the change actually landed against the remote/target state itself - a success-looking message is not proof it took effect."
},
{
"stage": "watchdog",
"tool_slug": "post-ship-watchdog",
"params": {"check_process_not_just_file": true, "alert_on_silence_minutes": 30},
"hil": false,
"note": "Check the running process, not just the file on disk - a patched file with a still-running old process is not a shipped fix."
},
{
"stage": "re-grade",
"tool_slug": "verdict-regrader",
"params": {"reapply_current_logic_to_history": true},
"hil": false,
"note": "Revisit whether the fix actually held, under current measurement, not just at ship time."
}
]
}