Agentops autodev
Manage the PROGRAM.md operational contract that bounds autonomous development loops. Use when setting up or validating PROGRAM.md/AUTODEV.md, choosing between autodev and evolve, or turning a repeated postmortem -> analyze -> plan -> pre-mortem -> implement -> validate cycle into the v2 autonomous workflow.
git clone https://github.com/boshu2/agentops
T=$(mktemp -d) && git clone --depth=1 https://github.com/boshu2/agentops "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills-codex/autodev" ~/.claude/skills/boshu2-agentops-autodev && rm -rf "$T"
skills-codex/autodev/SKILL.md$autodev
$autodev manages the repo-local operational contract for autonomous
development. It does not replace $evolve or $rpi.
orPROGRAM.md
defines the contract: mutable scope, immutable scope, experiment unit, validation commands, decision policy, escalation rules, and stop conditions.AUTODEV.md
creates, inspects, and validates that contract.ao autodev
runs the v2 autonomous improvement loop.ao evolve
runs one research -> plan -> implement -> validate lifecycle.ao rpi
Codex Lifecycle Guard
When this skill runs in Codex hookless mode (
CODEX_THREAD_ID is set or
CODEX_INTERNAL_ORIGINATOR_OVERRIDE is Codex Desktop), ensure startup context
before editing or validating the contract:
ao codex ensure-start 2>/dev/null || true
Routing
Use this split when the user asks whether the old evolve flow should become a new command or skill:
| Intent | Action |
|---|---|
| define or repair the repo-local autonomous policy | use and |
| run the autonomous improvement loop | use or |
| run one bounded lifecycle | use or |
PROGRAM.md takes precedence over AUTODEV.md. Treat AUTODEV.md as the
compatibility alias.
Execution Steps
Step 1: Detect the contract
if [ -f PROGRAM.md ]; then PROGRAM_PATH=PROGRAM.md elif [ -f AUTODEV.md ]; then PROGRAM_PATH=AUTODEV.md else PROGRAM_PATH= fi
If a contract exists, validate before using it:
ao autodev validate --json ${PROGRAM_PATH:+--file "$PROGRAM_PATH"}
If no contract exists and the user asked to initialize or define the loop, create one:
ao autodev init "<objective>"
Infer the objective from the user request when it is clear. Ask only when the objective cannot be discovered from repo context and inventing it would make the contract misleading.
Step 2: Repair or explain validation failures
When validation fails, inspect the missing fields and patch the program file if the user asked to create or fix the contract. Required sections:
ObjectiveMutable ScopeImmutable ScopeExperiment UnitValidation CommandsDecision PolicyEscalation RulesStop Conditions
Prefer narrow mutable scope and concrete validation commands. If the needed work crosses immutable scope, create or update a bead instead of silently widening the contract.
Step 3: Hand off to the loop
After
ao autodev validate passes:
- For one lifecycle, run
or$rpi "<goal>"
.ao rpi ... - For the repeated autonomous loop, run
or$evolve
.ao evolve --max-cycles <n> - If both
andPROGRAM.md
exist,GOALS.md
is strategic fitness andGOALS.md
is the operational execution layer.PROGRAM.md
Do not mark an autonomous cycle successful only because the main tests pass. The program validation bundle and stop conditions must also be satisfied.
Examples
User: turn this postmortem/analyze/plan/pre-mortem/implement/validate loop into a v2 command. Agent: Explain that `ao evolve` runs the loop, then create or validate `PROGRAM.md` with `$autodev` so the loop has explicit scope and gates.
ao autodev init "Continuously improve AgentOps skills within explicit scope." ao autodev validate ao evolve --max-cycles 1
Troubleshooting
| Problem | Response |
|---|---|
| Run when setup is requested. |
| validation reports missing sections | Patch the missing required sections, then rerun . |
| requested work is outside immutable scope | Stop direct edits and create a bead or ask for an explicit contract change. |
| user asks "is this evolve?" | Answer: defines the loop contract; runs the loop. |