Clawdoc

v0.12.0

Diagnose OpenClaw agent failures, cost spikes, and performance issues with 14 pattern detectors. Use when: task failed unexpectedly, costs seem high, agent b...

0· 191·1 current·1 all-time
byAshish Jain@ashishjaingithub

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for ashishjaingithub/clawdoc.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Clawdoc" (ashishjaingithub/clawdoc) from ClawHub.
Skill page: https://clawhub.ai/ashishjaingithub/clawdoc
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required binaries: jq, bash, bc
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install clawdoc

ClawHub CLI

Package manager switcher

npx clawhub@latest install clawdoc
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the requested binaries (bash, jq, bc) and the provided scripts implement 14 detectors for JSONL agent sessions. Nothing requested (no cloud credentials, no unusual binaries) appears unrelated to a local diagnostics tool.
Instruction Scope
SKILL.md instructs running local scripts against explicit session JSONL files or a user-provided sessions directory. The tool only reads session files, produces JSON findings, and — only if opt-in via CLAWDOC_LEARNINGS=1 — writes a local .learnings/LEARNINGS.md file. There are no instructions to contact external endpoints, harvest unrelated config, or automatically search system paths without explicit user input. Note: helper/dev scripts (e.g., convert-claude-sessions.sh) will scan an input directory you provide and may run find/grep on paths you pass — review the path you give to avoid scanning sensitive large trees.
Install Mechanism
No install spec is provided (instruction-only install), and there are no downloads or remote installers referenced. Code is shipped as shell scripts in the package; risk is limited to running those scripts locally. No extract-from-URL or third-party package installs are present.
Credentials
The skill requires no environment variables or credentials to run. The only optional environment flag (CLAWDOC_LEARNINGS=1) enables a local write to .learnings/LEARNINGS.md and is opt-in. No secrets or unrelated environment/config paths are requested.
Persistence & Privilege
always is false and the skill is user-invocable. It does not request persistent platform privileges or modify other skills. The only persistence is an opt-in local write when CLAWDOC_LEARNINGS is set; scripts otherwise operate on files you explicitly pass.
Assessment
This appears to be a legitimate local diagnostics skill. Before running it: (1) Inspect the scripts (they are plain shell + jq) and confirm you trust them in your environment. (2) Run the demo (generate-demo.sh) to see behavior on synthetic data. (3) When diagnosing real sessions, supply explicit paths (avoid passing / or other broad roots to convert or headline scripts). (4) Only set CLAWDOC_LEARNINGS=1 if you want findings written into a local .learnings/LEARNINGS.md file. (5) Ensure dependencies (jq, bash, bc) are installed and run the test suite (make test) if you want extra assurance.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

🩻 Clawdis
Binsjq, bash, bc
latestvk97d4wtv3eng1fq6hmay1wsae98351c8
191downloads
0stars
2versions
Updated 1mo ago
v0.12.0
MIT-0

clawdoc

Examine agent sessions. Diagnose failures. Prescribe fixes.

Invocation modes

/clawdoc (slash command — default: headline mode)

Produces a compact, tweetable health check:

🩻 clawdoc — 3 findings across 12 sessions (last 7 days)
💸 $47.20 spent — $31.60 was waste (67% recoverable)
🔴 Retry loop on exec burned $18.40 in one session
🟡 Opus running 34 heartbeats ($8.20 → $0.12 on Haiku)
🟡 SOUL.md is 9,200 tokens — 14% of your context window

Run: bash {baseDir}/scripts/headline.sh ~/.openclaw/agents/main/sessions

/clawdoc full or "give me a full diagnosis"

Runs all 14 pattern detectors and produces the complete diagnosis report with evidence and prescriptions.

/clawdoc brief or "clawdoc one-liner for daily brief"

Single-line summary for morning cron integration:

Yesterday: 8 sessions, $3.40, 1 warning (cron context growth on daily-report)

Run: bash {baseDir}/scripts/headline.sh --brief ~/.openclaw/agents/main/sessions

Natural language triggers

Also activates when user says: "what went wrong", "why did that fail", "debug", "diagnose", "why was that so expensive", "where are my tokens going", "cost breakdown", "health check", "check my agent", "what's wrong", "examine"

Quick examination — most recent session

Find the most recent session file and run:

bash {baseDir}/scripts/examine.sh <session.jsonl>

This outputs a JSON summary with turns, cost, token counts, tool call frequency, and error count.

Single-session diagnosis

Run all 14 pattern detectors against a specific session file:

bash {baseDir}/scripts/diagnose.sh <session.jsonl> | jq .

Diagnosis with prescriptions

Pipe diagnose output into prescribe for a formatted report with fix recommendations:

bash {baseDir}/scripts/diagnose.sh <session.jsonl> | bash {baseDir}/scripts/prescribe.sh

Cost breakdown

Show per-turn cost waterfall for a session:

bash {baseDir}/scripts/cost-waterfall.sh <session.jsonl> | jq '.[0:5]'

Cross-session pattern recurrence

Analyze pattern recurrence across multiple sessions in a directory:

bash {baseDir}/scripts/history.sh <sessions-dir> | jq .

Full diagnosis

When the user wants a comprehensive diagnosis, run the scripts above and synthesize findings into this report format:

Diagnosis report format

## 🩻 Diagnosis — [date]

### Patient summary
- Sessions examined: N
- Period: [date range]
- Total spend: $X.XX
- Total tokens: XXk in / XXk out

### Findings

#### 🔴 Critical
[Infinite retry loops, context exhaustion, tool-as-text failures]
Each finding includes: what happened, evidence, estimated cost impact, and specific prescription.

#### 🟡 Warning
[Cost spikes, model routing waste, cron accumulation, compaction damage, workspace overhead]

#### 🟢 Healthy
[What's working well — efficient sessions, good model routing]

### Prescriptions (ranked by cost impact)
1. [Highest-impact fix with specific config change or command]
2. [Second highest]
3. [Third]

### Cost breakdown
[Per-day costs for the examination period]
[Top 3 most expensive sessions with root cause]

Pattern reference

#PatternSeverityKey indicator
1Infinite retry loop🔴 CriticalSame tool called 5+ times consecutively
2Non-retryable error retried🔴 HighValidation error → identical retry
3Tool calls as text🔴 HighTool names in assistant text, no toolCall blocks
4Context window exhaustion🟡-🔴inputTokens > 70% of contextTokens
5Sub-agent replay🟡 MediumDuplicate completion messages in parent
6Cost spike🟡-🔴Session cost > 2x rolling average
7Skill selection miss🟢 Low"command not found" after skill activation
8Model routing waste🟡 MediumPremium model on heartbeat/cron
9Cron context accumulation🟡 MediumGrowing inputTokens across cron runs
10Compaction damage🟡 MediumPost-compaction tool call repetition
11Workspace token overhead🟡 MediumBaseline > 15% of context window
12Task drift🟡 MediumPost-compaction directory divergence or 10+ reads without edits
13Unbounded walk🟠 HighRepeated unscoped find/grep -r flooding output
14Tool misuse🟡 MediumSame file read 3+ times without edit, or identical search repeated

Self-improving-agent integration

To enable writing findings to .learnings/LEARNINGS.md, set CLAWDOC_LEARNINGS=1 before running prescribe:

CLAWDOC_LEARNINGS=1 bash {baseDir}/scripts/diagnose.sh <session.jsonl> | bash {baseDir}/scripts/prescribe.sh

Tips

  • Session JSONL files are the ground truth for all diagnostics
  • Use jq -s (slurp) for aggregations across all lines in a session file
  • Filter message.content[] by type=="text" for readable content, type=="toolCall" for tool invocations
  • When prescribing config changes, always show the exact JSON path and value

Comments

Loading comments...