Agent skill

smart-reading

Behavioral protocol for reading files or command output of unknown size. Loaded automatically for all file reading operations. Also triggered by: 'this file is huge', 'output was cut off', 'large file', 'how should I read this', 'truncated output', 'missing data from file'.

Stars 5
Forks 2

Install this agent skill to your Project

npx add-skill https://github.com/axiomantic/spellbook/tree/main/skills/smart-reading

SKILL.md

Invariant Principles

  1. No Silent Data Loss - Blind truncation (head, tail -n, arbitrary pipes) creates false confidence. Critical errors often appear at end of output.
  2. Size Before Strategy - Unknown content size requires measurement (wc -l) before deciding read approach.
  3. Intent-Driven Delegation - Subagents read ENTIRE content, return targeted summaries. Specify WHY you need content.
  4. Temp Files Demand Cleanup - Every capture requires explicit cleanup plan. Use $$ for collision-free naming.

The Problem

Claude often pipes output through head -100 to "save tokens." This causes:

  • Silent data loss
  • Missed errors (which often appear at the END)
  • Wrong conclusions based on incomplete information
  • Wasted debugging cycles

Decision Matrix

Check size first, then act:

Line Count Need Exact Text? Action
≤200 Yes (editing) Read directly, full file
≤200 No (understanding) Read directly, full file
>200 Yes (editing specific section) Read directly with offset/limit to target section
>200 No (understanding/analysis) Delegate to Explore subagent with intent

Before Reading Any File

bash
wc -l < "$FILE"  # Get line count first

Command Output Capture

For commands with unpredictable output size, capture to temp file first using tee.

The Pattern

bash
# Capture full output while still seeing it stream
# /tmp/cmd-$$-output.txt — use $$ (process ID) to avoid collisions
command 2>&1 | tee /tmp/cmd-$$-output.txt

# Check size
wc -l < /tmp/cmd-$$-output.txt

# Apply decision matrix (read directly or delegate)
# ...

# ALWAYS cleanup
rm /tmp/cmd-$$-output.txt

When to Capture vs Delegate Entirely

Scenario Approach
Need to see output streaming AND analyze after tee to temp file
Pure analysis, don't need streaming Delegate entire command to subagent
Interactive command or watching for specific event Run directly, no capture

Cleanup Rules

  1. Immediate cleanup after analysis: rm /tmp/cmd-$$-output.txt
  2. Trap-based cleanup for complex flows: trap 'rm -f /tmp/cmd-$$-output.txt' EXIT
  3. Delegate to subagent - subagent handles its own cleanup </CRITICAL>

Capture Examples

Test run with capture:

bash
pytest tests/ 2>&1 | tee /tmp/test-$$-output.txt
wc -l < /tmp/test-$$-output.txt  # Check size
# If >200: delegate analysis of /tmp/test-$$-output.txt
# If ≤200: read directly
rm /tmp/test-$$-output.txt

Build with capture:

bash
npm run build 2>&1 | tee /tmp/build-$$-output.txt
# Analyze...
rm /tmp/build-$$-output.txt

Pure delegation (no capture needed):

Task(Explore): Run `pytest tests/` and extract all failures with
stack traces. Return a summary of what failed and why.

Delegation Intents

When delegating to a subagent, specify WHY you need the file. The subagent reads ENTIRE content and returns a targeted summary.

Intent Subagent Behavior Example Prompt
Error extraction Find all errors, warnings, failures. Return with context. "Read the test output and extract all failures with their stack traces"
Technical summary Comprehensive but condensed overview preserving structure "Summarize this config file's structure and key settings"
Presence check Does concept X exist? Where? "Does this file implement rate limiting? If so, where and how?"
Diff-aware What changed and why does it matter? "Compare these two versions and explain the significant changes"
Structure overview What's in this file, how is it organized "Outline the structure of this module - classes, functions, their purposes"

Delegation Template

Read [file/output] in full. [INTENT STATEMENT]

Return:
- [What you need back]
- [Any specific format requirements]

Do not truncate. Read the entire content before summarizing.

Anti-Patterns

Forbidden:

bash
pytest tests/ 2>&1 | head -100  # WRONG: errors often at end
cat src/large_module.py         # WRONG: might be 2000 lines

Required:

bash
wc -l < src/large_module.py  # Returns: 1847
# Now delegate to subagent for summary, or read specific section
Task(Explore): Run pytest tests/ and analyze the output. Extract all
test failures with their full tracebacks and error messages. Summarize
the failure patterns.

When and How to Read

Situation Use Direct Read Use Delegation
File known small (configs, small scripts) Yes No
Need exact text for editing Yes (offset/limit for large) No
File already in context Yes No
Quick verification of known lines Yes No
Test output (failures cluster unpredictably) No Yes
Build logs (errors often at end) No Yes
Large source file, need understanding No Yes
Multiple files to cross-reference No Yes
Output where you don't know what you're looking for No Yes

Reasoning Schema

Before running command with unpredictable output: 6. Capture with tee for post-analysis? Or delegate entire command? 7. If capturing: cleanup plan exists? 8. If delegating: intent specified clearly?

Self-Check

Before completing:

  • Size checked before reading unknown content
  • No blind truncation used
  • Delegation includes explicit intent if used
  • Temp files cleaned up if created
  • Critical information not lost to truncation

If ANY unchecked: STOP and fix approach.

<BEFORE_RESPONDING> Before reading any file or command output:

  1. Do I know the size? If not, check with wc -l
  2. Is it ≤200 lines? → Read directly
  3. Is it >200 lines AND I need exact text? → Read with targeted offset/limit
  4. Is it >200 lines AND I need understanding? → Delegate with explicit intent
  5. Am I about to use head, tail -n, or a truncating pipe? → STOP. Delegate instead.

Before running a command with unpredictable output:

  1. Should I capture with tee to analyze after? Or delegate the entire command?
  2. If capturing: Did I plan for cleanup?
  3. If delegating: Did I specify the analysis intent clearly? </BEFORE_RESPONDING>

<FINAL_EMPHASIS> You are a Context Guardian. Your obligation: no important information is silently discarded. The critical error lives on line 247. Blind truncation destroys it before you ever see it. Check size. Delegate with intent. Clean up. Never truncate blind. </FINAL_EMPHASIS>

Expand your agent's capabilities with these related and highly-rated skills.

axiomantic/spellbook

spellbook-auditing

Meta-audit skill for spellbook development. Spawns parallel subagents to factcheck docs, optimize instructions, find token savings, and identify MCP candidates. Produces actionable report.

5 2
Explore
axiomantic/spellbook

documentation-updates

Use after modifying library skills, library commands, or agents to ensure CHANGELOG, README, and docs are updated

5 2
Explore
axiomantic/spellbook

project-encyclopedia

[DEPRECATED] Use project-level AGENTS.md files instead. Previously used for first-session codebase onboarding and persistent glossary creation.

5 2
Explore
axiomantic/spellbook

reviewing-impl-plans

Use when reviewing implementation plans before execution. Triggers: 'is this plan solid', 'review the plan', 'check before I start building', 'anything missing from this plan', 'will this plan work', 'audit the implementation plan'. NOT for: reviewing design documents (use reviewing-design-docs) or creating plans (use writing-plans).

5 2
Explore
axiomantic/spellbook

session-resume

Session resume protocol and session repairs handling. Loaded when spellbook_session_init returns resume_available: true, or when session_init returns a repairs array. Triggers: 'resume', 'continue', 'where were we', session resume, session repairs.

5 2
Explore
axiomantic/spellbook

brainstorming

Use when exploring design approaches, generating ideas, or making architectural decisions. Triggers: 'explore options', 'what are the tradeoffs', 'how should I approach', 'let's think through', 'sketch out an approach', 'I need ideas for', 'how would you structure', 'what are my options'. Also invoked by develop when design decisions are needed.

5 2
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results