audit-prompt-schema-drift — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited audit-prompt-schema-drift (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.
A static check across packages/mcp-translation/src/neurodock_mcp_translation/prompts/*.prompt.md and packages/mcp-translation/schemas/*.schema.json to confirm every field the prompt asks the model to produce is a field the schema accepts.
This is the highest-value pre-flight check for the translation server: when a prompt drifts from the schema, the LLM produces a structurally invalid response and the server rejects it — but the failure mode looks like "model is bad" rather than "prompt is out of sync".
*.prompt.md or *.schema.jsonin packages/mcp-translation/.
neurodock-mcp-translation.change.
For each prompt file under packages/mcp-translation/src/neurodock_mcp_translation/prompts/:
(translate_incoming.prompt.md ↔ translate_incoming.schema.json).
(typically inside the prompt's JSON skeleton or its bullet list of keys).
output.properties declares.model output will be rejected.
model will omit it and trigger a required validation error.
There is no scripted runner yet. The check is a structured grep + diff. Suggested invocation pattern:
for prompt in packages/mcp-translation/src/neurodock_mcp_translation/prompts/*.prompt.md; do
tool=$(basename "$prompt" .prompt.md)
schema="packages/mcp-translation/schemas/${tool}.schema.json"
echo "## $tool"
jq -r '.properties.output.properties | keys[]' "$schema" | sort > /tmp/schema-keys
grep -oE '"[a-z_]+"' "$prompt" | tr -d '"' | sort -u > /tmp/prompt-keys
diff /tmp/schema-keys /tmp/prompt-keys
doneReplace with a real script under scripts/audit-prompt-schema-drift.sh when written; the contract above is what it should implement.
Per prompt, one of:
## translate_incoming
ok — 6 fields matchor:
## translate_incoming
DRIFT
prompt asks for: confidence_score
schema declares: confidence
prompt asks for: implicit_meaning
schema declares: likely_subtextExit non-zero on any drift.
over double-quoted lowercase-snake tokens. False positives happen when the prompt embeds a string literal that is not a field name; false negatives happen when the prompt names a field in prose without quotes.
ambiguity.spans[].reason) are not deep-compared— only the top-level keys are diffed. Nested drift still needs eyes.
prompts in markdown; their tool handlers are pure Python and a type checker catches the equivalent class of bug.
Per plan.md §7, every prompt change runs against the eval corpus at packages/evals/corpora/translation/incoming/v0.1.0/general.jsonl. Run this audit first to catch the cheap bugs, then run the evals.
Lead with the drifted field name and the schema's actual field name on adjacent lines. The contributor will fix the prompt by reading those two lines; do not bury the diff under prose.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.