content-library-contradictions — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited content-library-contradictions (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
An AutoRFP.ai content library is the single source of truth that feeds every RFP, DDQ, and security questionnaire response. When two answers in the library disagree with each other, or when an old answer contradicts the company's current state, the response engine can pull the wrong one into a live deal and put incorrect information in front of a buyer. This is one of the highest-impact hygiene problems a content team can fix, and it compounds: every contradiction left in place will be pulled into future deals.
This skill audits the user's library for three classes of contradiction:
The skill flags contradictions; it does not auto-edit content. The output is an Excel file the user reviews to decide which version of each fact is correct.
Trigger whenever the user asks about contradictions, inconsistencies, conflicting answers, or library health. Don't confuse with rfp-contradiction-checker (which scans a finished RFP response, not the library).
Before pulling any data, ask the user clarifying questions using the AskUserQuestion tool. Even if the user's request seems clear, the audit is much more useful when scoped. Ask:
list_tags first to discover the org's actual taxonomy. Then ask: which tag categories matter most for this audit? Use the discovered tags as option labels — don't make up tags that don't exist in the user's library.The first question matters most — without scope, you'll surface noise. The other four make the output sharper.
Always start with list_tags. This tells you what categories the user's org actually uses. You'll need these to scope list_content and search_content calls, and to render meaningful "topic" labels in the output. Don't assume the taxonomy — discover it from the user's actual library.
For each topic area in scope, collect 3-5 "anchor facts" the user has confirmed (from the clarifying questions). For each anchor fact, capture:
If the user can't supply anchors, build a working hypothesis from the 50 most recently updated items in scope — these are the most likely "current truth". Mark this clearly in the output as an assumption.
Use list_content with the scoping filters from Step 1:
tagIds to scope to the user's selected categoriesfileType to focus on Q&A pairs (most contradictions live in answers, not raw documentation)hasAnswer: true to skip blank entriespagination.hasMore)Capture for each item: id, question, answer, fileName, tagIds, updatedAt, usageCount, and `referenceUrl`. The referenceUrl is mandatory — every flagged row in the Excel output must be clickable so the user can jump straight to the item in AutoRFP.ai. Never write id to user-facing output — use referenceUrl for links and question + fileName for human-readable identification.
You won't fit a large library into context. Instead:
search_content with queries that target each anchor fact (e.g. queries like "data center location", "data residency", "where is customer data hosted" for a hosting anchor). Take the top 10-15 ranked results, check each against the anchor for contradictions.Don't try to find every contradiction in one pass. Aim for the top ~30-60 highest-confidence flagged contradictions per audit. A short, sharp list is more useful than an exhaustive one the user won't act on.
For each flagged contradiction, capture:
Risk scoring matters because the user has limited time. A contradiction in content used 30 times is dramatically worse than one in content used once.
Use the bundled script:
python scripts/build_audit_xlsx.py --input <findings.json> --output <path/to/file.xlsx>Pass findings as JSON in the structure described in references/output_format.md. The script produces four sheets:
referenceUrlsreferenceUrlsreferenceUrlsEvery row must include a clickable URL to each item involved. This is non-negotiable — the audit is only useful if the user can jump straight to each item to make a decision.
Save the output to the user's workspace with a filename like content_library_contradictions_<YYYY-MM-DD>.xlsx. Share the file path so the user can open it.
referenceUrl. If you can't link to it, you can't help the user fix it.See references/output_format.md for the exact JSON structure to pass to scripts/build_audit_xlsx.py. See references/methodology.md for deeper notes on clustering, search query patterns, and how to handle edge cases.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.