From productivity-forge
First-class Claim Ledger system for tracking verifiable statements from source to final text. Use when creating, updating, or verifying claim ledgers. Manages JSON-based ledgers with standard and extended schemas, derived calculation tracking, and verification tier enforcement.
npx claudepluginhub ildunari/kosta-plugins --plugin productivity-forgeThis skill uses the workspace's default tool permissions.
The Claim Ledger is a structured artifact that tracks every verifiable statement in a document from its original source through to its final rendered form. It exists because documents have no compiler. Code has test suites, type checkers, and linters that catch errors before shipping. A grant proposal, a financial report, a clinical protocol -- these have nothing. A transposed digit, a stale pe...
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Analyzes competition with Porter's Five Forces, Blue Ocean Strategy, and positioning maps to identify differentiation opportunities and market positioning for startups and pitches.
The Claim Ledger is a structured artifact that tracks every verifiable statement in a document from its original source through to its final rendered form. It exists because documents have no compiler. Code has test suites, type checkers, and linters that catch errors before shipping. A grant proposal, a financial report, a clinical protocol -- these have nothing. A transposed digit, a stale percentage carried forward from a previous draft, a derived ratio computed from the wrong denominator -- these errors are invisible until a reviewer catches them, or worse, until they aren't caught at all.
The ledger is the test suite for documents. Every claim gets an ID, a source, a verified status. Every derived calculation gets a formula, raw inputs, and an independent recomputation. When a value changes upstream, the ledger makes it possible to trace every downstream location that needs updating. When a reviewer questions a number, the ledger provides the audit trail instantly.
Ledgers are stored as JSON files alongside the documents they track. The scripts/claim_ledger.py tool manages creation, updates, and verification.
Use for moderate-stakes work with fewer than 10 claims. Covers the essential traceability fields.
{
"ledger_version": "1.0",
"document": "path/to/document.docx",
"created": "2026-03-28T10:00:00Z",
"updated": "2026-03-28T14:30:00Z",
"verification_tier": "standard",
"claims": [
{
"id": "C-01",
"claim_text": "Statement as it appears in the draft",
"raw_value": "41400000",
"display_value": "41.4M particles",
"source_file": "data/experiment_results.xlsx",
"source_location": "Sheet1!B14",
"citations": ["[14]"],
"verification_status": "verified"
}
]
}
Field descriptions:
| Field | Type | Description |
|---|---|---|
id | string | Unique claim identifier, sequential (C-01, C-02, ...) |
claim_text | string | The exact sentence or phrase as it appears (or will appear) in the document |
raw_value | string | The original value from the source, unformatted |
display_value | string | The value as rendered in the document, with rounding and units |
source_file | string | Path to the canonical source file |
source_location | string | Page, table, cell, figure, or section reference within the source |
citations | array | Formal citation keys supporting this claim |
verification_status | enum | One of: verified, flagged, pending, conflict |
Use for high-stakes quantitative work, documents with more than 10 claims, compliance-sensitive content, or cross-document work. Adds fields for derived calculations, conditions, and dependency tracking. See references/schema-extended.md for the full field reference.
python scripts/claim_ledger.py init \
--document path/to/document.docx \
--tier standard \
--output path/to/ledger.json
This creates an empty ledger linked to the document with the specified verification tier. The tier determines how thoroughly claims must be verified before the ledger can be marked complete.
python scripts/claim_ledger.py add \
--ledger path/to/ledger.json \
--claim-text "PEG200k showed the highest transport (41.4M particles, n=3)" \
--raw-value "41400000" \
--display-value "41.4M particles" \
--source-file data/experiment_results.xlsx \
--source-location "Sheet1!B14"
The tool assigns the next sequential Claim ID and sets status to pending. For bulk import from a source file, use the scan subcommand to extract candidate claims from document text and match them against source data.
python scripts/claim_ledger.py verify \
--ledger path/to/ledger.json \
--claim C-01 \
--status verified \
--evidence "Read Sheet1!B14, value is 41400000, matches display_value after rounding"
Every status change requires an --evidence argument explaining what was checked and what the result was. Status transitions:
pending -> verified: Value confirmed against sourcepending -> flagged: Value doesn't match source, or source is ambiguouspending -> conflict: Multiple sources disagree on this valueflagged -> verified: Discrepancy resolved with evidenceverified -> flagged: Upstream change invalidated a previously verified claim# Markdown summary for review
python scripts/claim_ledger.py export --ledger path/to/ledger.json --format markdown
# CSV for spreadsheet analysis
python scripts/claim_ledger.py export --ledger path/to/ledger.json --format csv
# Completion report (for phase reconciliation)
python scripts/claim_ledger.py report --ledger path/to/ledger.json
The report subcommand produces a summary: total claims, verified count, flagged count, pending count, derived calculations verified, and any unresolved conflicts. This feeds directly into the Phase Reconciliation Report in step 9 of the agentic loop.
The tier governs how many claims must be verified and how deeply derived values are checked. The tier is declared at phase start and enforced at the Integrity Gate.
When to use: Discovery, research inventory, internal working notes that will not appear directly in any deliverable.
Requirements:
When to use: Single-section quantitative edits with fewer than 10 claims. The default tier for any phase that changes quantitative content in a final document.
Requirements:
verified status before phase closeWhen to use: Multi-section edits, more than 10 claims, compliance-sensitive content (regulatory filings, grant submissions, audit documents), or cross-document work where the same values appear in multiple files.
Requirements:
pending or conflict status claimsDerived values are the most dangerous site of hallucination in document work. They sound analytically credible, so neither the writer nor the reviewer tends to question them. The ledger makes every derivation auditable.
Core rules:
claim_type: "derived".claim_type: "source-stated" with the source location. This counts as verification without recomputation at Tier 2 (but not at Tier 3 for non-canonical sources).See references/derived-calculations.md for the full protocol, examples, and rounding rules.
The Claim Ledger connects to three points in the agentic loop:
Source Verify (Step 2) creates or updates the ledger. The verification sub-agent reads every canonical source file, extracts values, cross-checks them, and produces the ledger with initial statuses. The orchestrator reviews the ledger before proceeding to drafting.
Integrity Gate (Step 6) reads the ledger and verifies that every Claim ID touched during the phase shows verified status. It checks that derived calculations were independently recomputed, that stale values were swept, and that the declared verification tier was actually executed. If any claim is still pending, flagged, or conflict, the gate fails.
PostToolUse Hook (hooks/scripts/post_edit_integrity.py) runs after document edit operations and performs a lightweight check: did the edit introduce or modify any values that exist in the ledger? If so, it flags the affected Claim IDs for re-verification. This catches accidental value drift introduced by tool operations (rounding changes, encoding issues, formatting side effects).
The ledger is saved alongside the document at the end of each phase (Step 9: Save + Document) and persists across sessions. If work is interrupted and resumed later, the ledger provides the state needed to pick up where verification left off.