Agent skill
guard-writer
Write well-structured Verification Guards. Use when: (1) Creating a new guard, (2) Editing guard check commands or patterns, (3) User mentions guard, verification, or check
Install this agent skill to your Project
npx add-skill https://github.com/govctl-org/govctl/tree/main/.claude/skills/guard-writer
SKILL.md
Guard Writer
Write Verification Guards — reusable executable completion checks per [[RFC-0000:C-GUARD-DEF]].
Invocation Mode
This helper skill may be used standalone or by /gov or /spec.
It is responsible for guard definition and validation, not for deciding which workflow should execute the guard in day-to-day implementation.
Quick Reference
govctl guard new "<title>"
govctl guard list
govctl guard show GUARD-ID
govctl guard set GUARD-ID command "new command"
govctl guard set GUARD-ID timeout_secs 600
govctl guard set GUARD-ID pattern "regex pattern"
govctl guard add GUARD-ID refs RFC-NNNN
govctl guard delete GUARD-ID
Guard Structure
Every guard is a TOML file under gov/guard/ with two sections:
[govctl] — Metadata
| Field | Required | Description |
|---|---|---|
id |
yes | Unique ID, format GUARD-UPPER-CASE |
title |
yes | Human-readable description |
refs |
no | Array of artifact references |
[check] — Execution
| Field | Required | Description |
|---|---|---|
command |
yes | Shell command, runs from project root |
timeout_secs |
no | Max seconds before failure (default: 300) |
pattern |
no | Regex matched case-insensitively against output |
Examples
Basic test guard
#:schema ../schema/guard.schema.json
[govctl]
id = "GUARD-CARGO-TEST"
title = "cargo test passes"
refs = ["RFC-0000", "RFC-0001"]
[check]
command = "cargo test"
timeout_secs = 300
Guard with output pattern
#:schema ../schema/guard.schema.json
[govctl]
id = "GUARD-NO-FIXME"
title = "No FIXME comments in source"
[check]
command = "! grep -r FIXME src/"
pattern = "^$"
Lint guard
#:schema ../schema/guard.schema.json
[govctl]
id = "GUARD-CLIPPY"
title = "clippy passes with no warnings"
refs = ["RFC-0000"]
[check]
command = "cargo clippy --all-targets -- -D warnings"
timeout_secs = 300
Writing Guidelines
- ID format:
GUARD-prefix followed by uppercase alphanumeric with hyphens - Commands must be non-interactive: No prompts, no TTY requirements
- Commands run from project root: Use relative paths accordingly
- Keep commands simple: Prefer single commands; use
bash -c '...'for pipelines - Set timeouts intentionally: Long builds may need more than the 300s default
- Use
patternsparingly: Only when exit code alone is insufficient - Add
refs: Link guards to the RFCs/ADRs they verify
Integration with Work Items
Guards can be required by work items and by project-level config:
# In gov/config.toml — applies to all work items
[verification]
enabled = true
default_guards = ["GUARD-GOVCTL-CHECK", "GUARD-CARGO-TEST"]
# In a work item — additional guards for that item
[verification]
required_guards = ["GUARD-CLIPPY"]
Work items can waive guards with a reason:
[[verification.waivers]]
guard = "GUARD-CARGO-TEST"
reason = "Documentation-only change, no code modified"
Validation
After creating or editing a guard, validate:
govctl check
This verifies:
- Guard schema conformance
- Unique guard IDs
- Valid regex patterns
- All referenced guard IDs in config and work items resolve
If the guard should be committed, hand off to /commit.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
commit
Commit changes with govctl integration — check work item status, update journal or notes, and run govctl check
wi-writer
Write well-structured work items with proper acceptance criteria. Use when: (1) Creating work items, (2) Adding acceptance criteria, (3) User mentions work item, task, WI, or ticket
adr-writer
Write effective Architecture Decision Records. Use when: (1) Creating a new ADR, (2) Recording a design decision, (3) User mentions ADR, decision, trade-off, or alternatives
rfc-writer
Write well-structured RFCs with normative clauses. Use when: (1) Creating a new RFC, (2) Adding or editing RFC clauses, (3) User mentions RFC, specification, or normative requirements
decision-analysis
Stress-test a design decision with premortem/backcast analysis, then produce a risk-calibrated recommendation that maps to ADR fields. Use when: (1) Multiple competing architecture options, (2) Irreversible or high-risk design choices, (3) /discuss identifies a complex trade-off
migrate
Adopt govctl in an existing project. Discovers undocumented decisions, backfills ADRs/RFCs, annotates source code. Use when: (1) Project has no governance yet, (2) User mentions migrate, adopt, onboard, or brownfield
Didn't find tool you were looking for?