hooks — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited hooks (Hook) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center">
Ground-first reflex for Claude Code & Grok — agent safety and grounding. The agent judges complexity from its own training, grounds before acting, and is hard-blocked from irreversible steps until it has.
</div>
[!IMPORTANT] The core insight, after an adversarial review that killed the naive version: an agent's training is always stale. The reflex does not use recall as the answer — it uses recall to generate the list of things to verify, then runtime overrides recall. That reframing is what makes grounding help instead of hurt.
/plugin marketplace add 88plug/claude-code-plugins
/plugin install trigger-my-training@88pluggrok plugin marketplace add 88plug/claude-code-plugins
grok plugin install trigger-my-training@88plug --trustThe hard gate and the ground-first skill work immediately. Optional status-line badge (⏚ TMT:armed / :grounded):
bash /path/to/trigger-my-training/install.shFull install and config: docs.
Ask an AI coding agent to "deploy a VM to Proxmox" and it tends to barrel into qm create — stale defaults, skipped prerequisites. This plugin intercepts that pattern with agent guardrails and live verification:
ground-first skill, model-elected) — the agent judges, fromits own understanding, whether a request is complex/irreversible enough to ground — in any domain, not a keyword list. (Measured: precision 1.0 / recall 0.97 across infra + diverse domains, vs a keyword classifier's 0.28 recall off-infra.)
Grounding Brief (decision points, silent failure modes, unknowns tagged PROBE / ASK / ASSUME), and verify your three riskiest assumptions.
PreToolUse hook, self-arming) — a destructive action isdenied until grounding is recorded with tmt-ground commit. No detector arms it; read-only probes and ordinary file edits are never blocked.
[!NOTE] The trigger is the model's judgment (no hand-authored keyword list — that would be the static domain knowledge this plugin replaces). The gate stays deterministic: a safety floor must not depend on the model it is gating.
| Component | Surface | Role |
|---|---|---|
ground-first | skill (+ 6 reference packs) | Soft trigger — model-elected, keyword-free; holds the Grounding Brief procedure |
tmt_enforce.py | PreToolUse hook | Hard deny on the irreversible step |
tmt_reconcile.py | PostToolUseFailure hook | On tool failure, reconcile the falsified assumption (predict-then-check) |
tmt_log.py / tmt_session.py | PostToolUse / SessionStart | Record probes / prune stale state |
tmt-ground | bin CLI | Release the gate after probing |
grounding-investigator | agent | Isolated live-probing pass for CRITICAL tasks |
tmt_statusline.sh | status line | ⏚ TMT:armed / ⏚ TMT:grounded badge |
/status /ground /reset /brief /explain /doctor | commands | Inspect / force / disarm / brief / explain / health-check |
The advisory/hard split is deliberate: the nudge raises the odds the agent grounds; the PreToolUse deny is the lever that actually holds.
gate_mode | Hard gate | Typical use |
|---|---|---|
full (default) | on | production — brief + gate |
gate | on | gate only (eval / ablation) |
brief | off | soft reflex only |
stale | off | eval ablation arm |
off | off | hard path disabled |
| option | default | effect |
|---|---|---|
hard_gate | true | false makes the gate advisory-only (keeps the skill, drops the block) |
[!WARNING] Defaults are the hard deny. Self-arm is lazy and detector-free: the first mutating tool call is denied and marks the sessionrequired. Read-only probes and local file edits always pass.tmt-ground commitrefuses without probe evidence (use--forceonly when probing is impossible). Details: Architecture — self-arm · Configuration.
Plugins can't register a main statusLine, so the badge ships in bin/ and is wired via install.sh — see docs.
Built falsification-first. Full ledger: EXPERIMENTS.md.
edit-intent on a 28-task labelled corpus — precision/recall 1.0, 0 false positives (in-sample; real-world calibration is known debt).
edits, releases after grounding — 7/7.
on claude-haiku-4-5 —
| arm | catch-rate | vs baseline |
|---|---|---|
| no plugin | 0.181 | — |
| compact Pre-Mortem Brief | 0.386 | ~2.1× |
| + Staleness Axiom alone | 0.156 | worse (axiom alone does nothing) |
| enriched (4 composed inventions) | 0.258 | worse than the plain brief |
The campaign falsified its own maximalist hypothesis: a one-line "your training is stale" axiom does nothing, and composing more proven cognitive scaffolds (Tetlock calibration tags + Deming predict-then-check + Deutsch hard-to-vary) regressed the gain. The active ingredient is one 3-line structural trigger — Klein's pre-mortem + Popper's "enumerate how it breaks." Adding cognitive mass crowds it out. That result survived replication across 12 domains; an exciting single-run "win" for the enriched slate did not (Twyman's law). Honest accounting of "10×": the replicated grounding number is ~2.1×; the only literal ≥10× is the poka-yoke gate taking irreversible-action interception from ~0 to ~1.0. Full ledger: EXPERIMENTS.md, invention slate: INVENTIONS.md.
bash evals/run.sh # all three experiments
python3 evals/detector_eval.py # free deterministic detector evalThree independent refuters killed the maximalist pitch; the design reflects it:
stale; that is the whole point.
it grounds the understanding layer.
preflight prior art) — the contribution is the packaging and the harness-enforced gate.
.claude-plugin/ plugin.json, marketplace.json
bin/ enforcer, probe-log, tmt-ground state machine, lib
hooks/ hooks.json (SessionStart, PreToolUse, PostToolUse, PostToolUseFailure)
skills/ground-first/ SKILL.md + reference packs
agents/ grounding-investigator.md
commands/ status, ground, reset, brief, explain, doctor
evals/ detector_eval.py, gate_unit_test.sh, tasks.jsonl
docs/ MkDocs Material site (this repo's GitHub Pages)
EXPERIMENTS.md the falsification ledgergate_mode / hard_gateLocal checkout (no marketplace):
claude --plugin-dir /path/to/trigger-my-trainingbash tests/run.sh # unit tests
bash evals/run.sh # the experiments
claude plugin validate . # manifest check
mkdocs build --strict # docs siteSee CONTRIBUTING.md for the bin/hook architecture, CHANGELOG.md, and SECURITY.md.
FSL-1.1-ALv2 © 2026 88plug — Functional Source License; converts to Apache 2.0 two years after each release.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.