skills/clarity-gate/SKILL.md
Pre-ingestion verification for epistemic quality in RAG systems. Ensures documents are properly qualified before entering knowledge bases. Produces CGD (Clarity-Gated Documents) and validates SOT (Source of Truth) files.
npx skillsauth add Regtransfers/agency-agents-mcp clarity-gateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
@ Clarity Gate v2.1
Purpose: Pre-ingestion verification system that enforces epistemic quality before documents enter RAG knowledge bases. Produces Clarity-Gated Documents (CGD) compliant with the Clarity Gate Format Specification v2.1.
Core Question: "If another LLM reads this document, will it mistake assumptions for facts?"
Core Principle: "Detection finds what is; enforcement ensures what should be. In practice: find the missing uncertainty markers before they become confident hallucinations."
@ What's New in v2.1
Feature; Description
Claim Completion Status; PENDING/VERIFIED determined by field presence (no explicit status field) Source Field Semantics; Actionable source (PENDING) vs. what-was-found (VERIFIED) Claim ID Format Guidance; Hash-based IDs preferred, collision analysis for scale Body Structure Requirements; HITL Verification Record section mandatory when claims exist New Validation Codes; E-ST10, W-ST11, W-HC01, W-HC02, E-SC06 (FORMAT_SPEC); E-TB01-07 (SOT validation) Bundled Scripts; claimid.py and documenthash.py for deterministic computations
@ Specifications
This skill implements and references:
Specification; Version; Location
Clarity Gate Format (Unified); v2.1; docs/CLARITYGATEFORMAT_SPEC.md
Note: v2.0 unifies CGD and SOT into a single.cgd.md format. SOT is now a CGD with an optional tier: block.
@ Validation Codes
Clarity Gate defines validation codes for structural and semantic checks per FORMAT_SPEC v2.1:
@ HITL Claim Validation (§1.3.2-1.3.3) Code; Check; Severity
W-HC01; Partial confirmed-by/confirmed-date fields; WARNING W-HC02; Vague source (e.g., "industry reports", "TBD"); WARNING E-SC06; Schema error in hitl-claims structure; ERROR
@ Body Structure (§1.2.1) Code; Check; Severity
E-ST10; Missing ## HITL Verification Record when claims exist; ERROR W-ST11; Table rows don't match hitl-claims count; WARNING
@ SOT Table Validation (§3.1) Code; Check; Severity
E-TB01; No ## Verified Claims section; ERROR E-TB02; Table has no data rows; ERROR E-TB03; Required columns missing; ERROR E-TB04; Column order wrong; ERROR E-TB05; Empty cell in required column; ERROR E-TB06; Invalid date format in Verified column; ERROR E-TB07; Verified date in future (beyond 24h grace); ERROR
Note: Additional validation codes may be defined in RFC-001 (clarification document) but are not part of the normative FORMAT_SPEC.
@ Bundled Scripts
This skill includes Python scripts for deterministic computations per FORMAT_SPEC.
@ scripts/claim_id.py
Computes stable, hash-based claim IDs for HITL tracking (per §1.3.4).
# Generate claim ID
python scripts/claim_id.py "Base price is $99/mo" "api-pricing/1"
# Output: claim-75fb137a
# Run test vectors
python scripts/claim_id.py --test
Algorithm:
Test vectors:
@ scripts/document_hash.py
Computes document SHA-256 hash per FORMAT_SPEC §2.2-2.4 with full canonicalization.
# Compute hash
python scripts/document_hash.py my-doc.cgd.md
# Output: 7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730
# Verify existing hash
python scripts/document_hash.py --verify my-doc.cgd.md
# Output: PASS: Hash verified: 7d865e...
# Run normalization tests
python scripts/document_hash.py --test
Algorithm (per §2.2-2.4):
Cross-platform normalization:
@ The Key Distinction
Existing tools like UnScientify and HedgeHunter (CoNLL-2010) detect uncertainty markers already present in text ("Is uncertainty expressed?").
Clarity Gate enforces their presence where epistemically required ("Should uncertainty be expressed but isn't?").
Tool Type; Question; Example
Detection; "Does this text contain hedges?"; UnScientify/HedgeHunter find "may", "possibly" Enforcement; "Should this claim be hedged but isn't?"; Clarity Gate flags "Revenue will be $50M"
@ Critical Limitation
Clarity Gate verifies FORM, not TRUTH.
This skill checks whether claims are properly marked as uncertain—it cannot verify if claims are actually true.
Risk: An LLM can hallucinate facts INTO a document, then "pass" Clarity Gate by adding source markers to false claims.
Solution: HITL (Human-In-The-Loop) verification is MANDATORY before declaring PASS.
@ When to Use
@ The 9 Verification Points
@ Relationship to Spec Suite
The 9 Verification Points guide semantic review — content quality checks that require judgment (human or AI). They answer questions like "Should this claim be hedged?" and "Are these numbers consistent?"
When review completes, output a CGD file conforming to CLARITYGATEFORMATSPEC.md. The C/S rules in CLARITYGATEFORMATSPEC.md validate file structure, not semantic content.
The connection:
Example: If Point 5 (Data Consistency) finds conflicting numbers, you'd mark clarity-status: UNCLEAR until resolved. Rule C7 then ensures can't claim REVIEWED while still UNCLEAR.
@ Epistemic Checks (Core Focus: Points 1-4)
Fails; Passes
"Our architecture outperforms competitors"; "Our architecture outperforms competitors [benchmark data in Table 3]" "The model achieves 40% improvement"; "The model achieves 40% improvement [measured on dataset X]"
Fix: Add markers: "PROJECTED:", "HYPOTHESIS:", "UNTESTED:", "(estimated)", "~", "?"
Fails; Passes
"Revenue will be $50M by Q4"; "Revenue is projected to be $50M by Q4" "The feature will reduce churn"; "The feature is expected to reduce churn"
Fix: Add "projected", "estimated", "expected", "designed to", "intended to"
Fails; Passes
"The system scales linearly"; "The system scales linearly [assuming <1000 concurrent users]" "Response time is 50ms"; "Response time is 50ms [under standard load conditions]"
Fix: Add bracketed conditions: "[assuming X]", "[under conditions Y]", "[when Z]"
Red flag: Tables with specific numbers (89%, 95%, 100%) without sources
Fix: Add "(guess)", "(est.)", "?" to numbers. Add explicit warning: "PROJECTED VALUES - NOT MEASURED"
@ Data Quality Checks (Complementary: Points 5-7)
Red flag: "500 users" in one section, "750 users" in another
Fix: Reconcile conflicts or explicitly note the discrepancy with explanation.
Red flag: "Shorter prompts improve response quality" (plausible but unproven)
Fix: Reframe as hypothesis: "Shorter prompts MAY improve response quality (hypothesis, not validated)"
Red flag: "The system processes 10,000 requests per second" (when it hasn't been built)
Fix: Use future/conditional: "The system is DESIGNED TO process..." or "TARGET: 10,000 rps"
@ Verification Routing (Points 8-9)
Fails; Passes
"Last Updated: December 2024" (when current is 2026); "Last Updated: January 2026" v1.0.0 dated 2024-12-23, v1.1.0 dated 2024-12-20; Versions in chronological order
Sub-checks:
Fix: Update dates, add "as of [date]" qualifiers, flag stale claims
Type; Example; Risk
Pricing; "Costs ~$0.005 per call"; API pricing changes Statistics; "Papers average 15-30 equations"; May be wildly off Rates/ratios; "40% of researchers use X"; Needs citation Competitor claims; "No competitor offers Y"; May be outdated
Fix options:
@ The Verification Hierarchy
Claim Extracted --> Does Source of Truth Exist?
|
+---------------+---------------+
YES NO
| |
Tier 1: Automated Tier 2: HITL
Consistency & Verification Two-Round Verification
| |
PASS / BLOCK Round A → Round B → APPROVE / REJECT
@ Tier 1: Automated Verification
A. Internal Consistency
B. External Verification (Extension Interface)
@ Tier 2: Two-Round HITL Verification — MANDATORY
Round A: Derived Data Confirmation
Round B: True HITL Verification
@ CGD Output Format
When producing a Clarity-Gated Document, use this format per CLARITYGATEFORMAT_SPEC.md v2.1:
---
clarity-gate-version: 2.1
processed-date: 2026-01-12
processed-by: Claude + Human Review
clarity-status: CLEAR
hitl-status: REVIEWED
hitl-pending-count: 0
points-passed: 1-9
rag-ingestable: true # computed by validator - do not set manually
document-sha256: 7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730
hitl-claims:
- id: claim-75fb137a
text: "Revenue projection is $50M"
value: "$50M"
source: "Q3 planning doc"
location: "revenue-projections/1"
round: B
confirmed-by: Francesco
confirmed-date: 2026-01-12
---
# Document Title
[Document body with epistemic markers applied]
Claims like "Revenue will be $50M" become "Revenue is **projected** to be $50M *(unverified projection)*"
---
## HITL Verification Record
### Round A: Derived Data Confirmation
- Claim 1 (source) ✓
- Claim 2 (source) ✓
### Round B: True HITL Verification
| # | Claim | Status | Verified By | Date |
|---|-------|--------|-------------|------|
| 1 | [claim] | ✓ Confirmed | [name] | [date] |
<!-- CLARITY_GATE_END -->
Clarity Gate: CLEAR | REVIEWED
Required CGD Elements (per spec):
<!-- CLARITY_GATE_END -->
Clarity Gate: <clarity-status> | <hitl-status>
Optional/Computed Fields:
Escape Mechanism: To write about markers like (estimated) without triggering parsing, wrap in backticks: (estimated)
@ Claim Completion Status (v2.1)
Claim verification status is determined by field presence, not an explicit status field:
State; confirmed-by; confirmed-date; Meaning
PENDING; absent; absent; Awaiting human verification VERIFIED; present; present; Human has confirmed (invalid); present; absent; W-HC01: partial fields (invalid); absent; present; W-HC01: partial fields
Why no explicit status field? Field presence is self-enforcing—can't accidentally set status without providing who/when.
@ Source Field Semantics (v2.1)
The source field meaning changes based on claim state:
State; source Contains; Example
PENDING; Where to verify (actionable); "Check Q3 planning doc" VERIFIED; What was found (evidence); "Q3 planning doc, page 12"
Vague source detection (W-HC02): Sources like "industry reports", "research", "TBD" trigger warnings.
@ Claim ID Format (v2.1)
General pattern: claim-[a-z0-9._-]{1,64} (alphanumeric, dots, underscores, hyphens)
Approach; Pattern; Example; Use Case
Hash-based (preferred); claim-[a-f0-9]{8,}; claim-75fb137a; Deterministic, collision-resistant Sequential; claim-[0-9]+; claim-1, claim-2; Simple documents Semantic; claim-[a-z0-9-]+; claim-revenue-q3; Human-friendly
Collision probability: At 1,000 claims with 8-char hex IDs: ~0.012%. For >1,000 claims, use 12+ hex characters.
Recommendation: Use hash-based IDs generated by scripts/claim_id.py for consistency and collision resistance.
@ Exclusion Blocks
When content cannot be resolved (no SME available, legacy prose, etc.), mark it as excluded rather than leaving it ambiguous:
<!-- CG-EXCLUSION:BEGIN id=auth-legacy-1 -->
Legacy authentication details that require SME review...
<!-- CG-EXCLUSION:END id=auth-legacy-1 -->
Rules:
Important: Documents with exclusion blocks are not RAG-ingestable. They're rejected entirely (no partial ingestion).
See CLARITYGATEFORMAT_SPEC.md §4 for complete rules.
@ SOT Validation
When validating a Source of Truth file, the skill checks both format compliance (per CLARITYGATEFORMAT_SPEC.md) and content quality (the 9 points).
@ Format Compliance (Structural Rules)
SOT documents are CGDs with a tier: block. They require a ## Verified Claims section with a valid table.
Code; Check; Severity
E-TB01; No ## Verified Claims section; ERROR E-TB02; Table has no data rows; ERROR E-TB03; Required columns missing (Claim, Value, Source, Verified); ERROR E-TB04; Column order wrong (Claim not first or Verified not last); ERROR E-TB05; Empty cell in required column; ERROR E-TB06; Invalid date format in Verified column; ERROR E-TB07; Verified date in future (beyond 24h grace); ERROR
@ Content Quality (9 Points)
The 9 Verification Points apply to SOT content:
Point; SOT Application
1-4; Check claims in ## Verified Claims are actually verified 5; Check for conflicting values across tables 6; Check claims don't imply unsupported causation 7; Check table doesn't state futures as present 8; Check dates are chronologically consistent 9; Flag specific numbers for external check
@ SOT-Specific Requirements
@ Output Format
After running Clarity Gate, report:
## Clarity Gate Results
**Document:** [filename]
**Issues Found:** [number]
### Critical (will cause hallucination)
- [issue + location + fix]
### Warning (could cause equivocation)
- [issue + location + fix]
### Temporal (date/time issues)
- [issue + location + fix]
### Externally Verifiable Claims
| # | Claim | Type | Suggested Verification |
|---|-------|------|------------------------|
| 1 | [claim] | Pricing | [where to verify] |
---
## Round A: Derived Data Confirmation
- [claim] ([source])
Reply "confirmed" or flag any I misread.
---
## Round B: HITL Verification Required
| # | Claim | Why HITL Needed | Human Confirms |
|---|-------|-----------------|----------------|
| 1 | [claim] | [reason] | [ ] True / [ ] False |
---
**Would you like me to produce an annotated CGD version?**
---
**Verdict:** PENDING CONFIRMATION
@ Severity Levels
Level; Definition; Action
CRITICAL; LLM will likely treat hypothesis as fact; Must fix before use WARNING; LLM might misinterpret; Should fix TEMPORAL; Date/time inconsistency detected; Verify and update VERIFIABLE; Specific claim that could be fact-checked; Route to HITL or external search ROUND A; Derived from witnessed source; Quick confirmation ROUND B; Requires true verification; Cannot pass without confirmation PASS; Clearly marked, no ambiguity, verified; No action needed
@ Quick Scan Checklist
Pattern; Action
Specific percentages (89%, 73%); Add source or mark as estimate Comparison tables; Add "PROJECTED" header "Achieves", "delivers", "provides"; Use "designed to", "intended to" if not validated Checkmarks; Verify these are confirmed "100%" anything; Almost always needs qualification "Last Updated: [date]"; Check against current date Version numbers with dates; Verify chronological order "$X.XX" or "~$X" (pricing); Flag for external verification "averages", "typically"; Flag for source/citation Competitor capability claims; Flag for external verification
@ What This Skill Does NOT Do
@ Related Projects
Project; Purpose; URL
Source of Truth Creator; Create epistemically calibrated docs; github.com/frmoretto/source-of-truth-creator Stream Coding; Documentation-first methodology; github.com/frmoretto/stream-coding ArXiParse; Scientific paper verification; arxiparse.org
@ Changelog
@ v2.1.3 (2026-03-02)
@ v2.1.0 (2026-01-27)
@ v2.0.0 (2026-01-13)
@ v1.6 (2025-12-31)
@ v1.5 (2025-12-28)
@ v1.4 (2025-12-23)
@ v1.3 (2025-12-21)
@ v1.2 (2025-12-21)
@ v1.1 (2025-12-21)
@ v1.0 (2025-11)
Version: 2.1.3 Spec Version: 2.1 Author: Francesco Marinoni Moretto License: CC-BY-4.0
tools
Build AI agents that interact with computers like humans do - viewing screens, moving cursors, clicking buttons, and typing text. Covers Anthropic's Computer Use, OpenAI's Operator/CUA, and open-source alternatives.
testing
Generate structured PR descriptions from diffs, add review checklists, risk assessments, and test coverage summaries. Use when the user says "write a PR description", "improve this PR", "summarize my changes", "PR review", "pull request", or asks to document a diff for reviewers.
tools
Use when working with comprehensive review full review
development
You are an expert in creating competitor comparison and alternative pages. Your goal is to build pages that rank for competitive search terms, provide genuine value to evaluators, and position your product effectively.