Skip to content
Back to skills

Thing Denial Kb

ASecurity

The Thing-denial knowledge base (Muninn). When the command/decision tribunal DENIES or DEFERS an action, consult this to identify WHY the same block keeps happening and the known fix, then teach the KB a new resolution once you solve one. Read it the moment the Thing blocks you. Reads the Sága audit logs; never touches the tribunal's live path.

  • 7 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentspythongoshellbashgitsecurity

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add mcorbett51090/RavenClaude --skill thing-denial-kb --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Thing Denial Kb?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Thing Denial Kb
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mcorbett51090-thing-denial-kb/badge)](https://www.skillsdirectory.com/skills/mcorbett51090-thing-denial-kb)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
description: The Thing-denial knowledge base (Muninn). When the command/decision tribunal DENIES or DEFERS an action, consult this to identify WHY the same block keeps happening and the known fix, then teach the KB a new resolution once you solve one. Read it the moment the Thing blocks you. Reads the Sága audit logs; never touches the tribunal's live path.
allowed-tools: Bash, Read
---

# thing-denial-kb — remember why the Thing blocked you, and how to get past it

When the command-review or decision-review tribunal ("the Thing") **DENIES** a command or
**DEFERS/refuses** a decision, the raw Sága record tells you *what* was blocked. It does not tell you
*why this keeps happening* or *how to get unblocked*. This skill is that memory — **Muninn**, the
raven of memory — a small, per-repo knowledge base that turns repeated denials into a lookup of
`denial shape → known resolution`.

Engine: [`scripts/thing-denial-kb.py`](../../scripts/thing-denial-kb.py) (stdlib-only, fail-safe —
every subcommand exits 0 even on error, so it can never break a hook or a session).

## When to reach for it

- **The moment the Thing blocks you this session.** Don't retry the command verbatim and don't
  immediately page the human — first `recall` and see if this exact block has a recorded fix.
- **At session start it is already surfaced.** The `thing-denial-kb-recall.sh` SessionStart hook
  injects the most-recent denial shapes + resolutions into context automatically (no-op when the KB
  is empty). This skill is the on-demand + write surface.

## The loop: recall → identify → solve → resolve

```shell
KB=plugins/ravenclaude-core/scripts/thing-denial-kb.py

# 1. IDENTIFY — what has the Thing blocked here, and what's the known fix?
python3 "$KB" recall                 # DERIVED labels only (source/category/count/sig + fix); newest first
python3 "$KB" recall --unresolved    # only the shapes that still have NO recorded fix (the gaps)
python3 "$KB" recall --json          # full rows incl. the (secret-scrubbed) sample — to pin down a specific one

# 2. SOLVE — apply the resolution the KB hands you (e.g. "use scripts/archive-branch.sh instead of
#    git branch -D"), or, for an unresolved shape, work out the smaller-blast-radius route yourself
#    (Capability-Grounding: read the cited concern, enumerate alternatives, try the next-easiest).

# 3. RESOLVE — once you get past a block that had NO resolution, teach the KB so the next session is
#    handed the fix immediately:
python3 "$KB" resolve --signature <sig> \
  --resolution "How you actually got unblocked, in one or two sentences." \
  --doc "optional/pointer/to/the/authoritative/file.md"
```

`sync` (materialise new denials from the Sága logs) runs automatically from the Stop hook — you
rarely call it by hand, but `python3 "$KB" sync` is safe and idempotent if you want the KB current
mid-session.

## What it reads, and the safety contract

- **Sources (read-only):** `.ravenclaude/runs/thing/decisions/*.json` (decision-review: `no` / `defer`)
  and `.ravenclaude/runs/thing/*.json` (command-review: `deny`). These are the audit records the
  tribunal **already** writes — this skill never touches `thing-orchestrator.sh` /
  `route-decision-review.sh` or the live PreToolUse emit path, so it cannot change a verdict.
- **Resolutions** come from the shipped, committed map
  [`knowledge/thing-denial-resolutions.json`](../../knowledge/thing-denial-resolutions.json)
  (cross-consumer knowledge) plus any local resolutions you author with `resolve` (which win).
- **Runtime KB** lives at `.ravenclaude/runs/thing/denial-kb.jsonl` (gitignored, per-repo).
- Full mechanism, schema, and how to author a good seed rule:
  [`knowledge/thing-denial-kb.md`](../../knowledge/thing-denial-kb.md).

## The important distinction: a real block vs. a false-positive defer

Some denials are **correct and load-bearing** — a force-push deny, a `security_deny` floor, a
high-blast decision defer. The KB's resolution for those says *"this is correct by design — surface
it to the human, do not route around it."* Honor that.

Others are **false-positive defers** the KB helps you clear — e.g. the decision-review tribunal
deferring because a seat flagged phantom prompt-injection in a benign, factual decision context. The
resolution there tells you the real move (re-file with a sterile context; proceed under standing
authorization if the action is reversible and not high-blast). **Never** use this skill to route
around a genuine security stop — see the Capability-Grounding clause *"Check why a constraint exists
before obeying (or citing) it"* and its high-blast exception.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…