---
name: encod3d-sec/campaign-health
source: https://app.decimal.ai/s/encod3d-sec-campaign-health@1/SKILL.md
source_sha256: e176ba6458ab
---

# campaign-health

The vault syncs across machines; `~/.claude` (hook registration, skill symlinks, deps) does **not**.
So "it works here" does not mean "it works there". This skill confirms both halves before you rely on
`bb-workflow` / `pt-workflow` / `ctf-workflow` on this machine.

## Run it

```
python3 scripts/campaign-doctor.py            # summary (only WARN/FAIL shown)
python3 scripts/campaign-doctor.py --verbose   # every check
```

Exit 0 = all green. Exit 1 = at least one FAIL; the driver will not run correctly here until fixed.

## What it checks

- **A. vault content** - the driver's scripts exist, every campaign JSON is valid, each type's
  `approach` exists in `playbook.json` and `coverage-classes.json`, the two hook edits (recon-capture
  emits `spec['tools']`, tool-telemetry logs binaries) are present, all 69 `wiki/tools/` pages carry
  `phase:`, and `campaign.tool_index()` resolves an invocation for every tool.
- **B. machine wiring** - the three workflow skills are authored and symlinked into `~/.claude/skills`,
  hooks are registered (via `check-hooks.py`), and `_engagement` imports.
- **C. live smoke test** - `init -> board -> next` against a throwaway copy of the fixture, asserting
  the board writes rows and `next` withholds the exploit at G1.

## Fixing what it reports

- **WARN (machine wiring)** - usually one setup script the doctor names:
  `bash setup/install-skills.sh` (skills) or `bash setup/install-hooks.sh` (hooks).
- **FAIL (vault content)** - a stale sync or a partial edit. Re-pull the vault; if a tool page lost
  its `phase:`, re-run `python3 scripts/tool-phase-backfill.py --write`.

Run this first on any new machine, and after every vault sync, so all machines run the same driver.