| name | dp-campaign-control |
| description | Operate SPEC-80-style campaign work in dp-codex-aware repositories; trigger on campaign, next goal, recover, block, verify, handoff. |
DP Campaign Control
Respect AGENTS.md and any nested AGENTS.md before using this skill.
Use dp as the campaign control plane. Codex may reason and edit, but dp owns state, evidence,
blocking gates, and recovery artifacts.
Start
- Confirm the repo opts into dp with
.beads/, dp-policy.json, or repo instructions.
- Run
dp doctor --json.
- If a Beads issue is the intake surface, run
dp task claim --json or claim the known issue.
- If a campaign is the intake surface, run
dp campaign recover docs/campaigns/<campaign>.json --json.
- For the next campaign goal, prefer
dp campaign run docs/campaigns/<campaign>.json --driver codex --supervised --managed --json.
The managed campaign run claims at most one goal, emits the handoff package, and stops. It does not
spawn Codex, execute evidence, or mark work complete.
Work a Goal
- Read the handoff's
read_first files before editing.
- Start the goal with
dp goal start docs/goals/<goal>.json --agent codex --json.
- Stay inside the handoff boundaries and GoalContract allowed paths.
- Run the smallest relevant check first.
- Repair local failures before broadening to
make check.
- Use
dp evidence run docs/evidence/<evidence>.json --output docs/evidence-runs/<run>.json --json when the goal has an evidence plan.
- Use
dp verify --goal docs/goals/<goal>.json --evidence docs/evidence-runs/<run>.json --json before claiming completion.
- Use
dp campaign sync-beads docs/campaigns/<campaign>.json --write --json when campaign state needs to reconcile back to Beads.
Block or Release
Block through dp when a required spec, decision, validator, or scope change is missing:
dp goal block docs/goals/<goal>.json --reason needs_decision --write-artifact --json
Use the GoalContract blocker routes: needs_specification, needs_decision, needs_validator,
unsafe_scope, or budget_exhausted.
Release the goal instead of leaving an invisible claim when stopping without completion:
dp goal release docs/goals/<goal>.json --reason "context reset" --json
Close Out
Before ending the session:
- Run the focused tests for the changed slice.
- Run
make check.
- Run
dp doctor --json.
- Run
bd --readonly status --json.
- Close or update the Beads issue with evidence.
- Commit and push.
- Confirm
git status reports the branch is up to date with origin.
Boundaries
Do not mark completion from agent narration.
Do not execute raw shell from generated JSON.
Do not call an LLM from hooks, validators, evidence assertions, or CI.
Do not spawn Codex from dp in this workflow.
Do not replace Beads with campaign files; synchronize through explicit dp or bd commands.