ocd-decision-finalizer-d8e66c — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ocd-decision-finalizer-d8e66c (Agent Skill) 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.
This skill responds to repeat re-validation of an already-made decision by surfacing the prior decision verbatim from the cognitive graph and declining to re-analyse it until the user supplies new information. It is a workflow tool, not a clinical intervention. The user remains the authority and can override at any time.
mcp-guardrail.check_rumination is shipped, this skill will defer count-keeping to that server and only handle the response shape.Activate only when all of the following are true:
profile.identity.neurotypes contains "ocd". If the user has not self-IDed OCD, this skill does not run. Never infer the neurotype from the user's text.should I really, is this okay, am I sure, should we revisit.Do not activate if the user's message includes an explicit override token (see step 5).
Follow these steps in order. Do not improvise extra tool calls.
mcp-cognitive-graph.recall_entity(name_or_alias=<the named thing>). If entity is null or entity.type is not decision, fall through to step 2. Otherwise remember decision_id = entity.id.mcp-cognitive-graph.recall_decisions(project=<the project the user is working in>, since=<14 days ago, ISO date>). Match the decision the user is asking about by string similarity against decisions[].name. If no match crosses 0.6 similarity, do not activate — respond normally and note "I do not have a prior decision record matching this; treating it as a fresh question." Stop.facts array on a recall_entity(name_or_alias=decision_id) call, count facts where predicate == "tagged" and object.literal == "re-validated", scoped to the current local day. Call this count N.this is new, since I last asked, new information, update:, or a clearly novel fact not present in the existing facts — treat this as fresh context. Skip finality. Record the new fact: record_fact(subject={type: "decision", id: decision_id}, predicate="mentioned_in", object={literal: <the new fact, verbatim, max 200 chars>}, source="ocd-decision-finalizer", confidence=0.8). Then respond normally. Stop.--override "fresh-context" (or any --override "<reason>" form), respect it. Record the override locally only: record_fact(subject={type: "decision", id: decision_id}, predicate="tagged", object={literal: "override:<reason>"}, source="ocd-decision-finalizer", confidence=1.0). Respond normally. The override is not transmitted; it is a local audit row. Stop.record_fact(subject={type: "decision", id: decision_id}, predicate="tagged", object={literal: "re-validated"}, source="ocd-decision-finalizer", confidence=1.0). This call must happen on every activation that reaches this step so a future call sees the correct N.N is less than 3 (i.e. before this call there were fewer than 2 prior re-validations today): respond normally to the user's question, with one extra sentence: This is the Nth time we have revisited this today; previously concluded: <decision.name> on <decided_on>. Stop.N is 3 or greater: enter decision-finality mode below.Render the following four-section response, in this order. Plain prose. No headers above the first section other than a one-line opener.
Opener (≤ 80 chars): direct, factual, names the decision and the count.
### What was decided
> "<decision.name>"
Decided on <decided_on>. Confidence at recording: <confidence with two decimals>.
Attribution: <decided_by[*].name comma-separated, or "unattributed">.
Source: <source verbatim if non-null, otherwise omit this line>.
### What you weighed
<Up to 5 bullets from facts on the decision entity where predicate is "mentioned_in"
and object.literal contains a trade-off marker (e.g. "trade-off:", "vs", "weighed").
Quote each literal verbatim. If no such facts exist, write the single line:
"No trade-offs recorded against this decision in the graph.">
### The grounded reply
I will not re-analyse this decision unless you give me new information. If something has changed, tell me what changed.
### Override
If you want me to run the analysis again anyway, repeat the message with `--override "fresh-context"` appended. The override is logged locally only.Rules:
recorded_at and append one closing line (<M> further trade-off facts in the graph; ask for them if you want the full list.)This is not a clinical intervention. It is not a refusal to help. It is not a judgement about the user. It surfaces prior reasoning from the graph and asks the user to add new information before more analysis. The user is the authority on whether to override. There is no diagnosis here, no treatment claim, no implication that the user is doing something wrong.
rumination, anxiety, obsessive, compulsive, spiral, loop, executive function, neurodivergent, executive dysfunction, or intrusive in user-facing output.recall_decisions returned none. Fall through to normal response."ocd" is absent from profile.identity.neurotypes. The skill is opt-in by neurotype self-ID.record_fact more than twice per activation (one re-validation tag, optionally one fresh-context fact). Extra writes pollute the graph.See tests/01-fourth-revalidation-same-day.md, tests/02-new-information-resets-counter.md, and tests/03-explicit-override.md for full invocation traces.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.