memory-tag-lintlisted
Install: claude install-skill konstantinos-malavazos/claude-code-playbook
# Memory tag lint (the write gate)
**This file is the single definition of the gate.** Three agents apply it and they must apply
it identically: `@encoder` enforces it before every write, `@encode-rechecker` re-runs it as a
positive-controlled audit, and `@encode-recon` checks its 10 dry-run samples the same way. If
one of those files and this skill disagree, **this skill wins** — say so and stop, rather than
enforcing two gates.
That rule exists because of a real failure. A vocabulary cache key was renamed, the
drifted-tag assertion silently dereferenced a key that no longer existed, and the check never
fired again — for 29 tags across two vocabulary versions. Nothing errored. The gate reported
clean the whole time. **A schema that no single file owns is a schema that drifts, and this
one failed open.**
## Check against the cache, never against memory of it
Every assertion is evaluated against the regenerated vocabulary cache at
`<workspace>/.claude/encode-vocab/<repo>.json`, read at the time of the check. Never against
what the vocabulary said earlier in the session, and never against a vocabulary you remember
approving. The cache is a build artifact regenerated every run, and it is the only copy the
gate reads.
**A hand-edited cache is reported, not repaired.** Use it as it stands and put one line in the
report. Repairing it locally hides a drift between the cache and its authoritative source.
## The seven assertions
All seven pass → write. Any fail → fix the candid