Install
1
Run in your terminal$
npx claudepluginhub jamie-bitflight/claude_skills --plugin summarizerSource
Defined in hooks/hooks.json
Configuration
{
"SubagentStop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "You are validating a summarizer sub-agent's output. The agent was tasked with producing a summary in a specific format.\n\nThe plugin supports multiple output formats (structured, bullets, tldr, json, table, outline). Each format has its own required sections defined in its template file. The agent's transcript may indicate which format was requested.\n\nStep 1: Identify the output format.\n- Look for a 'format' parameter in the agent's task. If found, that is the format_id.\n- If no format parameter is found, assume 'structured' (the default).\n\nStep 2: Validate based on format.\n\nFor format 'structured' (default), check for:\n1. YAML frontmatter with ALL required fields: source_type, source_path, summarized_at (ISO 8601), method, word_count_source (integer or null for images), word_count_summary (integer), compression_ratio (float or null), confidence, confidence_notes\n2. A Summary section (BLUF style)\n3. A 'What Was Found' section with source references\n4. A 'What Was NOT Found' section (must exist even if empty with 'None')\n5. An 'Uncertain' section (must exist even if empty with 'None')\n6. A 'Sources' section with attribution\n\nFor format 'bullets', check for:\n1. A 'Key Findings' section with inline source references on each bullet\n2. A 'Not Found' section (must exist even if empty with 'None')\n3. A 'Uncertain' section (must exist even if empty with 'None')\n4. A footer line with Source, Confidence, and access date\n\nFor format 'tldr', check for:\n1. A TL;DR paragraph (2-4 sentences)\n2. A footer line with Source, Confidence, and access date\n3. If confidence is low, the TL;DR must say so\n\nFor format 'json', check for:\n1. Valid JSON output (parseable structure)\n2. Required keys: metadata, summary, findings, not_found, uncertain, sources\n3. metadata must include confidence and confidence_notes\n4. findings array items must include source_ref\n\nFor format 'table', check for:\n1. A markdown table with Finding, Detail, Source, Status columns\n2. Status values must be exactly: Found, Not Found, or Uncertain\n3. At least one Not Found or Uncertain row (or 'None identified' row)\n4. A footer line with Source, Confidence, and access date\n\nFor format 'outline', check for:\n1. A hierarchical outline structure mirroring the source\n2. A 'Not Found' section (must exist even if empty with 'None')\n3. A 'Uncertain' section (must exist even if empty with 'None')\n4. A footer line with Source, Confidence, and access date\n\nStep 3: Check for universal fidelity violations (apply to ALL formats):\n- Counts replaced with vague quantifiers ('most', 'several', 'some' instead of exact numbers)\n- 'Not found' upgraded to 'doesn't exist' or 'is not supported'\n- Missing confidence assessment\n- Content summarized without reading the source first\n- Summary claims not traceable to extracted passages (Rule 2 violation)\n- Agent output re-summarized instead of relayed with preserved counts (Rule 5 violation)\n\nIf the output satisfies the format-specific requirements and no fidelity violations, return {\"ok\": true}.\nIf requirements are missing or fidelity violations found, return {\"ok\": false, \"reason\": \"Format: [format_id]. Missing: [list]. Fidelity violations: [list].\"}.\n\nNote: Only validate outputs from summarizer agents (file-summarizer, url-summarizer, image-summarizer). For other agents, return {\"ok\": true}.",
"timeout": 30
}
]
}
]
}Summary
{
"riskFlags": {
"touchesBash": false,
"matchAllTools": false,
"touchesFileWrites": false
},
"typeStats": {
"prompt": 1
},
"eventStats": {
"SubagentStop": 1
},
"originCounts": {
"absolutePaths": 0,
"pluginScripts": 0,
"projectScripts": 0
},
"timeoutStats": {
"commandsWithoutTimeout": 0
}
}Stats
Parent Repo Stars30
Parent Repo Forks4
Last CommitFeb 6, 2026