The agent-facing half of naysay.
naysay is split in two by audience:
| repo | audience | what it is |
|---|---|---|
naysay |
the human | the CLI: premortem, check, spec, postmortem, decision memory |
naysay-agent (this repo) |
the coding agent | the in-loop constraint: a skill now, hooks and a plugin later |
The split exists because a CLI cannot intercept the moment that matters. The expensive mistake is an agent creating something unnecessary while it works — by the time a human remembers to run a command, the code is already written and already in the next agent's context. The constraint has to live inside the agent's loop, which is what this repo is for.
skills/naysay/SKILL.md the pre-existence check — advisory, deterministic,
no API key, no network
hooks/ (planned) a PreToolUse gate for the mechanical part
plugins/ (planned) the distribution container for both
Before creating a new file, module, tool, dependency or abstraction, the agent
runs a three-lookup check — this repo, the installed dependencies, PATH — and
answers one of REUSE / REDUCE / BUILD / DON'T BUILD with evidence. Before a
non-trivial edit it writes the acceptance condition and the thing that must not
change.
It is deliberately cheap: three tool calls, then decide. A check that costs more than the task is worse than no check.
mkdir -p ~/.agents/skills
cp -r skills/naysay ~/.agents/skills/naysay~/.agents/skills/ is read by ZCode, Claude Code and Codex, so one copy covers
all three. To remove it: rm -rf ~/.agents/skills/naysay.
The skill is the only implemented piece. Its own premortem — run through
naysay check — twice returned VERDICT: DON'T BUILD for the broader
"AI behaviour corrector" idea; the surviving version is the narrow, deterministic
check that shipped. Hooks and the plugin wait until the skill has evidence of
being skipped: a hook that fires when nothing is wrong is pure maintenance cost.
MIT