owner-signofflisted
Install: claude install-skill hsb3/dotfiles-agents
# Owner sign-off form (HTML Q/A loop)
Standing pattern (owner-ratified 2026-07-18: "this is a good pattern to adopt in
general — will help us go faster"). Instead of a wall of chat questions, serve a
form; the owner answers inline at their own pace; the answers land in a file; the
session reads the saved answers after the server exits.
## The loop
1. **Write the spec** — a YAML or JSON file in a dated batch dir under the project's
batch root: `<batch-root>/YYYY-MM-DD-<topic>/signoff.yaml`. Ask for the root instead
of assuming it (from the project root):
```bash
python3 <skill-dir>/scripts/build_signoff.py --batch-root
```
It prints the root and builds nothing: `_meta/signoff` unless the project sets a
`signoff:` key in `.claude/owner-signoff.local.md` (project-relative; blank, absent,
or outside the project root leaves the default in force). Schema below. Never
hand-write the HTML.
2. **Build the form** (foreground, so validation errors surface immediately):
```bash
python3 <skill-dir>/scripts/build_signoff.py <batch-dir>/signoff.yaml
```
Validates the spec and writes `index.html` next to it; on schema errors it prints
every problem and exits 1 — fix the spec and rerun.
3. **Start the one-shot server** as a managed long-running process:
```bash
python3 <skill-dir>/scripts/serve_signoff.py <batch-dir> [port]
```
Claude Code uses a background Bash task (`run_in_background: true`). In Codex, use
`exec_command` wit