From cappy-toolkit
Claim registration and citation rules for CAPPY investigations — enforces the ICFP v2.0 protocol, ensures every claim has a file:line citation, and maintains the verified claim registry.
npx claudepluginhub thelightarchitect/cappy-toolkit --plugin cappy-toolkitThis skill uses the workspace's default tool permissions.
<!-- Copyright (C) 2025-2026 Kevin Francis Tan (github.com/theLightArchitect) | SPDX-License-Identifier: AGPL-3.0-or-later -->
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Version: 1.0.0 Component: ICFP v2.0 Protocol Management Purpose: Knowledge holder for CAPPY (singleton agent) Created: 2026-02-05
This skill contains complete ICFP v2.0 (Investigation Claim Flow) protocol specifications. CAPPY (singleton agent) reads this skill to intelligently manage the 8-step claim registration and verification process.
When Invoked: By CAPPY (singleton agent) after each phase (2-7) Output: Claims registered in inv_context.json with verification status and audit trail
These are reasoning steps, not callable functions. Work through them mentally for every claim.
Pull each factual claim from the phase output. A claim is any statement that asserts a fact about the customer's environment, logs, or behavior.
<claim id="C-{N}">
STATEMENT: "{the claim}"
SOURCE: {file:line | HAR:entry_N | log:timestamp | field:value}
</claim>
Verify each claim has a traceable citation. Acceptable formats:
file:line — e.g., demisto.log:234field:value — e.g., mem_limit: 2gHAR:entry_N — e.g., HAR:entry_145timestamp — e.g., 2026-01-15T14:35:51ZIf no citation can be found, the claim is UNVERIFIED. Do not fabricate citations.
Does the cited source actually support the claim?
<claim id="C-{N}">
STATEMENT: "{the claim}"
SOURCE: {citation}
<verify>
Q: Does {citation} contain evidence for "{claim}"?
A: {yes — quote exact text/value | no — reject}
Q: What would contradict this claim?
A: {check performed} → {found | not found}
</verify>
STATUS: VERIFIED | REJECTED | UNVERIFIED
</claim>
inv_context.json → claims[]Only VERIFIED claims may appear in customer-facing deliverables.
ALL customer-facing deliverables MUST include a CITATIONS section at the bottom.
Inline References: Use [1], [2], [1][2] format in body text
Citations Section (MANDATORY at bottom of every deliverable):
---
CITATIONS
[1] HAR:GET /api/endpoint - description of evidence
[2] Screenshot: "filename.png" - what it shows
[3] Log:demisto-server.log:line_123 - specific entry
[4] Bundle:env.log - configuration detail
| Claim Type | Source Format |
|---|---|
| API responses | HAR:GET/POST/DELETE /endpoint - status, data |
| Errors | HAR:entry_N - HTTP status, error message |
| Timestamps | HAR:entry_N - ISO timestamp |
| UI observations | Screenshot: "filename.png" |
| Log entries | Log:filename.log:line_N |
| Config values | Bundle:env.log - key=value |
| Patterns | Pattern:P-PRODUCT-NNN - pattern name |
[N] must have corresponding entry in CITATIONS sectionWhen curating for Phase 7:
[N] inline reference[N] maps to valid evidence sourcePhase claims are CURATED when:
✅ All claims extracted with citations ✅ All claims pass 3-pass validation ✅ All file/line citations verified to exist ✅ Timeline merged from all sources ✅ Identifiers extracted and linked ✅ Unverified claims queued with research direction ✅ Complete audit trail created ✅ inv_context.json updated ✅ Deliverables include CITATIONS section at bottom
Skill Version: 1.1.0 Last Updated: 2026-02-14 Status: Ready for CAPPY (singleton agent) implementation Changes: Added Deliverable Citation Requirements mandate (NON-NEGOTIABLE)