harness-authoringlisted
Install: claude install-skill JakeSelby/model-citizen
# Harness authoring
Every instruction has exactly one right home. This skill finds it, writes there, and keeps the
harness checkout as the source of truth for everything generic.
## Find the checkout and the caller
```bash
python3 - <<'EOF'
import json, pathlib
m = json.load(open(pathlib.Path.home() / ".local/state/agent-harness/manifest.json"))
print(m["repo"])
EOF
git -C "$(…)" remote -v
```
If the manifest is missing, locate or install the harness before editing managed content.
Do not create a second authority in a runtime configuration directory. If `origin` is a fork and `upstream` is the
harness, you are a **fork user**. Otherwise, if `origin` is `<owner>/model-citizen`, or `<owner>/agent-harness` from
before the rename, and you are that owner, you are the **maintainer**.
## The ladder — first match wins
1. **Must run at a lifecycle point regardless of the model's judgment** (a check before every
commit, a validator after every write) → a shared policy under `policy/hooks/`, dispatched by
`lib/harness_core/lifecycle.py`; native registrations belong in runtime adapters.
2. **Changes tool or editor configuration, not behaviour** → an owned native setting in the relevant
adapter or editor projection, reconciled by the installer. Do not add a second primitive to represent a runtime setting.
3. **True of this user only, a secret, or about one project** → never the harness repo. A
personal preference goes in user configuration or a custom stance root docume