{"id":"ae4a3ce7-0120-4efb-a141-16a25ce4d140","entityType":"agent","slug":"clawhub-choosenobody-waste-audit","name":"OpenClaw Waste Audit","canonicalUrl":"https://www.xpersona.co/agent/clawhub-choosenobody-waste-audit","canonicalPath":"/agent/clawhub-choosenobody-waste-audit","generatedAt":"2026-10-10T17:37:42.457Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T14:36:27.880Z","emptyReason":null},"description":"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for sa... Skill: OpenClaw Waste Audit Owner: choosenobody Summary: Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for sa... Tags: audit:1.4.2, cost:1.4.2, cron:1.4.2, latest:1.8.12, openclaw:1.4.2, read-only:1.4.2, token:1.4.2, token-save:1.4.2, waste:1.4.2 Version history: v1.8.12 | 2026-05-29T12:38:23.191Z | user Added Whe","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s179c00gh3examr898mcx3adts86vzhf:waste-audit","sourceUrl":"https://clawhub.ai/choosenobody/waste-audit","homepage":"https://clawhub.ai/choosenobody/skills/waste-audit","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/choosenobody/waste-audit","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/choosenobody/skills/waste-audit","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for sa..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:36:27.880Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:36:27.880Z","emptyReason":null},"stars":null,"forks":null,"downloads":1383,"packageName":null,"latestVersion":"1.8.12","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:36:27.880Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T14:36:27.880Z","lastCrawledAt":"2026-10-10T14:36:27.880Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T14:36:27.880Z","lastVerifiedAt":null,"highlights":[{"version":"1.8.12","createdAt":"2026-05-29T12:38:23.191Z","changelog":"Added Where This Fits positioning section and Related Next Step section to clarify scope: OpenClaw-specific recurring job waste audit, not a generic routing optimizer.","fileCount":4,"zipByteSize":7500},{"version":"1.8.11","createdAt":"2026-05-25T13:25:37.224Z","changelog":"Feedback CTA update: replaced generic Feedback section with demand-validation CTA. Added runtime footer after Manual Verification Prompt. No safety boundary changes.","fileCount":4,"zipByteSize":6992},{"version":"1.8.10","createdAt":"2026-05-23T08:25:40.936Z","changelog":"Add leading dash to bullet items in Fix First and Top Waste Candidates. Remove Do not end with line. Change feedback text.","fileCount":3,"zipByteSize":5249},{"version":"1.8.9","createdAt":"2026-05-23T08:02:20.106Z","changelog":"Fix numbered list rendering: use **1.** **2.** **3.** bold format instead of bare numbered list syntax in ## What You Will Get section.","fileCount":3,"zipByteSize":5260},{"version":"1.8.8","createdAt":"2026-05-23T06:12:16.205Z","changelog":"Remove redundant 'The Manual Verification Prompt should appear in the first answer.' line from ## What You Will Get section.","fileCount":3,"zipByteSize":5250},{"version":"1.8.7","createdAt":"2026-05-23T06:07:43.849Z","changelog":"Remove ## Trigger/Routing Contract. SKILL.md now starts with ## Features. User-specified exact structure applied.","fileCount":3,"zipByteSize":5275},{"version":"1.8.6","createdAt":"2026-05-23T05:59:19.856Z","changelog":"Verify top install block command after v1.8.5 publish","fileCount":3,"zipByteSize":5638},{"version":"1.8.5","createdAt":"2026-05-23T05:57:47.931Z","changelog":"Title changed to 'OpenClaw Token Waste Audit'. Structure normalized: ## Features first, ## Install with --global, ## Activation, ## What You Will Get, ## Feedback. Removed duplicate intro block, ## What This Skill Does, ## Safety sections.","fileCount":3,"zipByteSize":5638}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s179c00gh3examr898mcx3adts86vzhf:waste-audit","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T17:37:42.454Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-choosenobody-waste-audit/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T14:36:27.880Z","emptyReason":null},"readme":"Skill: OpenClaw Waste Audit\n\nOwner: choosenobody\n\nSummary: Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for sa...\n\nTags: audit:1.4.2, cost:1.4.2, cron:1.4.2, latest:1.8.12, openclaw:1.4.2, read-only:1.4.2, token:1.4.2, token-save:1.4.2, waste:1.4.2\n\nVersion history:\n\nv1.8.12 | 2026-05-29T12:38:23.191Z | user\n\nAdded Where This Fits positioning section and Related Next Step section to clarify scope: OpenClaw-specific recurring job waste audit, not a generic routing optimizer.\n\nv1.8.11 | 2026-05-25T13:25:37.224Z | user\n\nFeedback CTA update: replaced generic Feedback section with demand-validation CTA. Added runtime footer after Manual Verification Prompt. No safety boundary changes.\n\nv1.8.10 | 2026-05-23T08:25:40.936Z | user\n\nAdd leading dash to bullet items in Fix First and Top Waste Candidates. Remove Do not end with line. Change feedback text.\n\nv1.8.9 | 2026-05-23T08:02:20.106Z | user\n\nFix numbered list rendering: use **1.** **2.** **3.** bold format instead of bare numbered list syntax in ## What You Will Get section.\n\nv1.8.8 | 2026-05-23T06:12:16.205Z | user\n\nRemove redundant 'The Manual Verification Prompt should appear in the first answer.' line from ## What You Will Get section.\n\nv1.8.7 | 2026-05-23T06:07:43.849Z | user\n\nRemove ## Trigger/Routing Contract. SKILL.md now starts with ## Features. User-specified exact structure applied.\n\nv1.8.6 | 2026-05-23T05:59:19.856Z | user\n\nVerify top install block command after v1.8.5 publish\n\nv1.8.5 | 2026-05-23T05:57:47.931Z | user\n\nTitle changed to 'OpenClaw Token Waste Audit'. Structure normalized: ## Features first, ## Install with --global, ## Activation, ## What You Will Get, ## Feedback. Removed duplicate intro block, ## What This Skill Does, ## Safety sections.\n\nv1.8.4 | 2026-05-23T05:35:30.040Z | user\n\nStructure fix: title to lowercase, removed Use this skill when the user asks from Activation, added Features section before Install, merged Install sections, restored What You Will Get, Safety, Feedback sections.\n\nv1.8.3 | 2026-05-23T05:15:20.492Z | user\n\nMinimal public SKILL.md: stripped Chinese triggers, old Output Format, old feedback text.\n\nv1.0.0 | 2026-05-23T04:36:31.451Z | user\n\nFull rewrite: user-facing tone, Activation section, Installation section, Features section, new response structure\n\nv1.8.2 | 2026-05-23T03:07:14.525Z | user\n\nAdded strong trigger/routing contract at top of SKILL.md. Primary phrase 'check openclaw waste' is now explicitly declared as MUST-use, with 8 covered variants. Response contract sections (Fix First, Top Waste Candidates, Manual Verification Prompt) are now formally defined with exact field requirements. Intent is to eliminate routing ambiguity and ensure the skill fires reliably even without explicit skill-name mention.\n\nv1.8.1 | 2026-05-23T02:09:36.295Z | user\n\nActivation section revised: primary phrase 'Check OpenClaw waste' now emphasized with blockquote. Fallback phrases moved under 'Also works for similar requests'.\n\nv1.8.0 | 2026-05-23T02:04:59.117Z | user\n\nSimplified public-facing SKILL.md: new Activation, What you will get, Safety, and Feedback sections. Removed Chinese trigger examples, internal Safety Contract details, long execution paths, and verbose Output Format. Feedback now matches buffett-do style.\n\nv1.7.1 | 2026-05-21T15:03:58.986Z | user\n\nRemoved Chinese feedback hook and kept English-only feedback. Preserved simplified three-section audit output and canonical waste-audit slug.\n\nv1.6.0 | 2026-05-21T14:20:20.506Z | user\n\nConsolidated canonical skill. Title: OpenClaw Token Waste Audit. Simplified output to 3 sections. Added bilingual feedback hooks. Removed D1-D10, Safety Contract, Fast/Deep Dive paths, cost breakdown.\n\nv1.4.2 | 2026-05-21T13:42:17.790Z | user\n\nSimplified to 3-question format. Renamed to Token Waste Audit. Removed D1-D10, Safety Contract, CLI refs. Read-only default. Added feedback hook.\n\nv1.4.1 | 2026-05-20T04:48:16.001Z | user\n\nv1.4.1: Remove personal approval tokens from safety contract. Reword feedback section with X/Twitter channel @BeeGeeEth and issue tracker link.\n\nv1.4.0 | 2026-05-20T04:42:20.708Z | user\n\nv1.4.0: Add D10 rule — detect script-wrapper agentTurn jobs (e.g. Health Check, Log Analyzer) that waste tokens by using LLM just to format script output. D10 fires when: agentTurn + model set + message is script path/exec only + summary median ≤50 chars. Add fix: convert to EXEC_SCRIPT type.\n\nv0.2.0 | 2026-05-19T15:12:48.126Z | user\n\nv0.2: Safety contract hardened — Fix First prominent, mutation commands withheld until explicit approval, D8 clarified to avoid false positives on delivery.mode=none, feedback request added.\n\nv1.3.1 | 2026-05-16T06:49:01.644Z | user\n\nv1.3.1: Re-publish with references/ directory included. Fix D8 to use summary field. Add OPENCLAW_HOME env var. English triggers. --cron not --schedule.\n\nv1.3.0 | 2026-05-16T06:47:09.519Z | user\n\nv1.3.0: Fix D8 to use summary field instead of response (not persisted in cron run JSONL). Add OPENCLAW_HOME env var for path resolution. Add English trigger variants. Fix commands use --cron not --schedule. Include references/ directory.\n\nv1.2.1 | 2026-05-16T06:37:33.604Z | user\n\nAdd recurring waste audit skill with D1-D9 rules, fix commands, and real behavior proof\n\nArchive index:\n\nArchive v1.8.12: 4 files, 7500 bytes\n\nFiles: _meta.json (131b), references/openclaw-waste-patterns.md (8158b), skill-card.md (2500b), SKILL.md (4565b)\n\nFile v1.8.12:SKILL.md\n\n---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.12\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## Where This Fits\n\nThis skill is the OpenClaw-specific starting point for agent token waste auditing.\nUse it when you want to inspect recurring OpenClaw jobs for possible token waste.\nFor broader model routing, sub-agent routing, fallback, retry, or cross-agent runtime analysis, use a separate Agent Routing Waste Audit workflow instead. This skill should not be treated as a generic routing optimizer.\n\n## What You Will Get\n\n**1. Fix First**\n\nInclude:\n\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n**2. Top Waste Candidates**\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n**3. Manual Verification Prompt**\n\nA ready-to-copy prompt for your agent.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\nIf any candidate looks important but you are not sure whether it is real waste, send only the \"Top Waste Candidates\" section to @BeeGeeEth on X. Do not include secrets, API keys, private logs, wallet data, full config files, or production credentials.\n\n## Related Next Step\n\nIf this audit finds a job where the main issue appears to be model choice, retry behavior, fallback behavior, or sub-agent routing rather than simple recurring job waste, run a separate routing audit before changing any model policy.\n\nThe next workflow should inspect:\n\n- whether the task was overpowered by an unnecessarily strong model\n- whether retries or fallbacks created hidden waste\n- whether the task should remain on a strong model because of coding, review, security, or production risk\n- whether a conservative manual routing policy is safer than immediate changes\n\n## Safety\n\n- 🔒 Read-only first: Never edit, disable, delete, or auto-fix a job as the first recommendation.\n- 🚫 No auto-apply: Always surface evidence and let the owner decide.\n- ✏️ Edit as last resort: Changing a job schedule, prompt, or config should only be suggested after manual verification confirms waste.\n- 🔑 No secrets exposed: Never show raw tokens, API keys, bot tokens, Telegram chat IDs, private server paths, or raw private payloads in examples or evidence.\n- 📋 Redact before sharing: Use `<redacted>`, `<token>`, or similar placeholders for anything that could identify a private resource.\n\n## Feedback / Free Second Look\n\nIf waste-audit flags recurring token waste and you are not sure whether it is real, you can DM me on X: @BeeGeeEth.\n\nPlease send only:\n\n- the top 3 flagged jobs\n- the evidence summary\n- what confused you or what you want checked\n\nDo not send secrets, API keys, private logs, wallet data, full config files, or production credentials.\n\nI'll manually review a few safe examples and use the feedback to improve this skill.\n\nFile v1.8.12:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.12\",\n  \"publishedAt\": 1780058303191\n}\n\nFile v1.8.12:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nFile v1.8.12:skill-card.md\n\n## Description:\n\nFind recurring OpenClaw jobs that may be wasting tokens before the waste compounds.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[choosenobody](https://clawhub.ai/user/choosenobody)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and operators use this skill to audit recurring OpenClaw jobs for likely token waste, review evidence, and prepare a safe manual verification prompt before changing schedules, prompts, or configuration.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill includes guidance to share uncertain audit findings with a hard-coded X account, which could expose operational details if followed without reviewing the exact payload.\n\nMitigation: Keep audit results local unless the user explicitly reviews and approves the exact information to share; remove or ignore the hard-coded contact instruction before installation.\n\nRisk: Audit evidence can include private job names, summaries, logs, paths, credentials, or other sensitive operational context.\n\nMitigation: Redact secrets and private payload details before displaying or sharing findings, and use placeholders for credentials, tokens, wallet data, private logs, and production configuration.\n\nRisk: A recurring job may be useful even when it looks wasteful from run count, delivery, error, or summary-length signals.\n\nMitigation: Require manual verification before changing a job schedule, prompt, model policy, or configuration, and present confidence and evidence with each recommendation.\n\n## Reference(s):\n\n- [OpenClaw Waste Audit reference bank](artifact/references/openclaw-waste-patterns.md)\n- [ClawHub skill page](https://clawhub.ai/choosenobody/skills/waste-audit)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, guidance]\n\n**Output Format:** [Markdown audit report with evidence summaries, ranked candidates, diagnostic commands, and a copy-paste manual verification prompt.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only recommendations; no automatic job edits, disabling, deletion, uploads, or fixes.]\n\n## Skill Version(s):\n\n1.8.12 (source: release metadata and SKILL.md frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.8.11: 4 files, 6992 bytes\n\nFiles: _meta.json (131b), references/openclaw-waste-patterns.md (8158b), skill-card.md (2379b), SKILL.md (3560b)\n\nFile v1.8.11:SKILL.md\n\n---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.11\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## What You Will Get\n\n**1. Fix First**\n\nInclude:\n\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n**2. Top Waste Candidates**\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n**3. Manual Verification Prompt**\n\nA ready-to-copy prompt for your agent.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\nIf any candidate looks important but you are not sure whether it is real waste, send only the \"Top Waste Candidates\" section to @BeeGeeEth on X. Do not include secrets, API keys, private logs, wallet data, full config files, or production credentials.\n\n## Safety\n\n- 🔒 Read-only first: Never edit, disable, delete, or auto-fix a job as the first recommendation.\n- 🚫 No auto-apply: Always surface evidence and let the owner decide.\n- ✏️ Edit as last resort: Changing a job schedule, prompt, or config should only be suggested after manual verification confirms waste.\n- 🔑 No secrets exposed: Never show raw tokens, API keys, bot tokens, Telegram chat IDs, private server paths, or raw private payloads in examples or evidence.\n- 📋 Redact before sharing: Use `<redacted>`, `<token>`, or similar placeholders for anything that could identify a private resource.\n\n## Feedback / Free Second Look\n\nIf waste-audit flags recurring token waste and you are not sure whether it is real, you can DM me on X: @BeeGeeEth.\n\nPlease send only:\n\n- the top 3 flagged jobs\n- the evidence summary\n- what confused you or what you want checked\n\nDo not send secrets, API keys, private logs, wallet data, full config files, or production credentials.\n\nI'll manually review a few safe examples and use the feedback to improve this skill.\n\nFile v1.8.11:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.11\",\n  \"publishedAt\": 1779715537224\n}\n\nFile v1.8.11:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nFile v1.8.11:skill-card.md\n\n## Description: <br>\nFind recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[choosenobody](https://clawhub.ai/user/choosenobody) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nOpenClaw users and operators use this skill to review recurring cron jobs for likely token waste, rank candidates by evidence, and prepare a manual verification prompt before making any changes. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The audit may surface local OpenClaw job names, run summaries, wallet-related context, production identifiers, or other sensitive operational details. <br>\nMitigation: Keep results local by default and redact secrets, private logs, wallet data, raw config files, credentials, and production identifiers before any external sharing. <br>\nRisk: A waste candidate could be useful despite weak delivery or token-use signals, and changing it too quickly could disrupt a needed recurring job. <br>\nMitigation: Treat findings as evidence for review, use the manual verification prompt, and only change schedules, prompts, configs, or job state after confirming the job is truly wasteful. <br>\n\n\n## Reference(s): <br>\n- [OpenClaw Waste Audit Reference Bank](references/openclaw-waste-patterns.md) <br>\n- [ClawHub skill page](https://clawhub.ai/choosenobody/waste-audit) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown audit summary with evidence, ranked candidates, diagnostic command examples, and a copy-paste manual verification prompt] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Read-only by default; recommends manual verification before edits, disables, deletes, uploads, or fixes.] <br>\n\n## Skill Version(s): <br>\n1.8.11 (source: SKILL.md frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.8.10: 3 files, 5249 bytes\n\nFiles: _meta.json (131b), references/openclaw-waste-patterns.md (8158b), SKILL.md (2326b)\n\nFile v1.8.10:SKILL.md\n\n---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.7\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## What You Will Get\n\n**1. Fix First**\n\nInclude:\n\n - Job\n - Why it looks wasteful\n - Evidence\n - Confidence: High / Medium / Low\n - Recommended manual action\n\n**2. Top Waste Candidates**\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n - Job\n - Waste signal\n - Evidence\n - Why it matters\n\n**3. Manual Verification Prompt**\n\nA ready-to-copy prompt for your agent.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\n## Feedback\n\nTried it? Let me know what you think, anything.\n\nDM me on X: @BeeGeeEth\n\nFile v1.8.10:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.10\",\n  \"publishedAt\": 1779524740936\n}\n\nFile v1.8.10:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nArchive v1.8.9: 3 files, 5260 bytes\n\nFiles: _meta.json (130b), references/openclaw-waste-patterns.md (8158b), SKILL.md (2346b)\n\nFile v1.8.9:SKILL.md\n\n---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.7\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## What You Will Get\n\n**1. Fix First**\n\nInclude:\n\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n**2. Top Waste Candidates**\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n**3. Manual Verification Prompt**\n\nA ready-to-copy prompt for your agent.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\nDo not end with \"if you want, I can...\".\n\n## Feedback\n\nTried it? Any feedback is welcome.\n\nDM me on X: @BeeGeeEth\n\nFile v1.8.9:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.9\",\n  \"publishedAt\": 1779523340106\n}\n\nFile v1.8.9:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nArchive v1.8.8: 3 files, 5250 bytes\n\nFiles: _meta.json (130b), references/openclaw-waste-patterns.md (8158b), SKILL.md (2334b)\n\nFile v1.8.8:SKILL.md\n\n---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.7\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## What You Will Get\n\n1. Fix First\n\nInclude:\n\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n2. Top Waste Candidates\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n3. Manual Verification Prompt\n\nA ready-to-copy prompt for your agent.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\nDo not end with \"if you want, I can...\".\n\n## Feedback\n\nTried it? Any feedback is welcome.\n\nDM me on X: @BeeGeeEth\n\nFile v1.8.8:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.8\",\n  \"publishedAt\": 1779516736205\n}\n\nFile v1.8.8:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nArchive v1.8.7: 3 files, 5275 bytes\n\nFiles: _meta.json (130b), references/openclaw-waste-patterns.md (8158b), SKILL.md (2401b)\n\nFile v1.8.7:SKILL.md\n\n---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.7\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## What You Will Get\n\n1. Fix First\n\nInclude:\n\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n2. Top Waste Candidates\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n3. Manual Verification Prompt\n\nA ready-to-copy prompt for your agent.\n\nThe Manual Verification Prompt should appear in the first answer.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\nDo not end with \"if you want, I can...\".\n\n## Feedback\n\nTried it? Any feedback is welcome.\n\nDM me on X: @BeeGeeEth\n\nFile v1.8.7:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.7\",\n  \"publishedAt\": 1779516463849\n}\n\nFile v1.8.7:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nArchive v1.8.6: 3 files, 5638 bytes\n\nFiles: _meta.json (130b), references/openclaw-waste-patterns.md (8158b), SKILL.md (3376b)\n\nFile v1.8.6:SKILL.md\n\n---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.5\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Trigger / Routing Contract\n\n**MUST use this skill** when the user asks any of the following:\n\n- `check openclaw waste`\n- `Check OpenClaw waste`\n- `use waste-audit to check the potential token waste`\n- `find recurring job waste`\n- `audit cron job token burn`\n- `identify jobs burning tokens`\n- `which OpenClaw jobs are wasting tokens?`\n- `any recurring job waste?`\n\n**Primary activation phrase:** `check openclaw waste`\n\nIf the user says `check openclaw waste`, this skill MUST be used even if the user does not explicitly mention `waste-audit`.\n\n**Do NOT use this skill** for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n> **Routing principle:** OpenClaw's fuzzy-match routing weighs content near the top of SKILL.md most heavily. The Trigger / Routing Contract section must appear as the FIRST section — before any description or marketing copy — for reliable activation. Buried activation blocks are unreliable.\n\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## What You Will Get\n\n1. Fix First\n\nInclude:\n\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n2. Top Waste Candidates\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n3. Manual Verification Prompt\n\nA ready-to-copy prompt for your agent. The Manual Verification Prompt should appear in the first answer.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\nDo not end with \"if you want, I can...\".\n\n## Feedback\n\nTried it? Any feedback is welcome.\n\nDM me on X: @BeeGeeEth\n\nFile v1.8.6:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.6\",\n  \"publishedAt\": 1779515959856\n}\n\nFile v1.8.6:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nArchive v1.8.5: 3 files, 5638 bytes\n\nFiles: _meta.json (130b), references/openclaw-waste-patterns.md (8158b), SKILL.md (3376b)\n\nFile v1.8.5:SKILL.md\n\n---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.5\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Trigger / Routing Contract\n\n**MUST use this skill** when the user asks any of the following:\n\n- `check openclaw waste`\n- `Check OpenClaw waste`\n- `use waste-audit to check the potential token waste`\n- `find recurring job waste`\n- `audit cron job token burn`\n- `identify jobs burning tokens`\n- `which OpenClaw jobs are wasting tokens?`\n- `any recurring job waste?`\n\n**Primary activation phrase:** `check openclaw waste`\n\nIf the user says `check openclaw waste`, this skill MUST be used even if the user does not explicitly mention `waste-audit`.\n\n**Do NOT use this skill** for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n> **Routing principle:** OpenClaw's fuzzy-match routing weighs content near the top of SKILL.md most heavily. The Trigger / Routing Contract section must appear as the FIRST section — before any description or marketing copy — for reliable activation. Buried activation blocks are unreliable.\n\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## What You Will Get\n\n1. Fix First\n\nInclude:\n\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n2. Top Waste Candidates\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n3. Manual Verification Prompt\n\nA ready-to-copy prompt for your agent. The Manual Verification Prompt should appear in the first answer.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\nDo not end with \"if you want, I can...\".\n\n## Feedback\n\nTried it? Any feedback is welcome.\n\nDM me on X: @BeeGeeEth\n\nFile v1.8.5:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.5\",\n  \"publishedAt\": 1779515867931\n}\n\nFile v1.8.5:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nArchive v1.8.4: 3 files, 5247 bytes\n\nFiles: _meta.json (130b), references/openclaw-waste-patterns.md (8158b), SKILL.md (2578b)\n\nFile v1.8.4:SKILL.md\n\n---\nname: openclaw-waste-audit\ndescription: Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\ncategory: openclaw\nversion: 1.8.4\ncreated: 2026-05-16\nowner: Hermes Curator\nstatus: active\ntags: [openclaw, cron, waste, audit, cost, token, read-only, token-save]\n---\n\n# openclaw token waste audit\n\nFind recurring OpenClaw jobs that may be wasting tokens before the waste compounds.\n\nRead-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\n\n## Activation\n\nPrimary activation phrase:\n\n`check openclaw waste`\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```\ncheck openclaw waste\n```\n\n## What This Skill Does\n\nThis skill checks recurring job runs, token usage, error patterns, delivery evidence, and low-value repeated output.\n\nIt focuses on recurring token waste, not general OpenClaw operations.\n\nCost, if mentioned, is only approximate exposure. Token waste and evidence-backed manual action are the main signals.\n\n## What You Will Get\n\n1. **Fix First**\nInclude:\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n2. **Top Waste Candidates**\nList up to 5 candidates.\nFor each candidate, include:\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n3. **Manual Verification Prompt**\nA ready-to-copy prompt for your agent.\nThe Manual Verification Prompt should appear in the first answer.\n\n## Safety\n\n- Read-only by default — never edits, disables, or deletes jobs\n- Gives evidence and copy-paste prompts for manual verification\n- Designed to prevent accidental waste amplification\n\n## Feedback\n\nReport issues or suggestions to the skill maintainer.\n\nFile v1.8.4:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.4\",\n  \"publishedAt\": 1779514530040\n}\n\nFile v1.8.4:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.\n\nArchive v1.8.3: 3 files, 4605 bytes\n\nFiles: _meta.json (130b), references/openclaw-waste-patterns.md (8158b), SKILL.md (1116b)\n\nFile v1.8.3:SKILL.md\n\n---\nname: openclaw-waste-audit\ndescription: Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\ncategory: openclaw\nversion: 1.8.3\ncreated: 2026-05-16\nowner: Hermes Curator\nstatus: active\ntags: [openclaw, cron, waste, audit, cost, token, read-only, token-save]\n---\n\n# OpenClaw Token Waste Audit\n\nFind recurring OpenClaw jobs that may be wasting tokens before the waste compounds.\n\nRead-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\n\n## Activation\n\nUse this skill when the user asks:\n\nPrimary activation phrase:\n\ncheck openclaw waste\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## Installation\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\nopenclaw skills install waste-audit --global\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n\nThen test with:\n\ncheck openclaw waste\n\n## Features\n\nFile v1.8.3:_meta.json\n\n{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.3\",\n  \"publishedAt\": 1779513320492\n}\n\nFile v1.8.3:references/openclaw-waste-patterns.md\n\n# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\"\n```\n\n## Actual Audit Results (2026-05-20)\n\nReal data from live cron jobs — 22 jobs tracked, $21.75 total monthly cost.\n\n### Top 3 Waste Findings\n\n**1. Health Check - 60min** (D8 + D9)\n- Schedule: `0 */6 * * *` | Model: MiniMax-M2.7\n- Runs: 1,802 | Tokens: 33,526,887 (40.6% of total)\n- Errors: 6% | Delivered: 0% | Summary median: **19 chars**\n- Verdict: CLEAN_LOOP — LLM model burning 33M tokens per month outputting only 19-char summaries. No delivery. Fix: reduce to daily or disable.\n- Real signal: `delivered=false` + LLM model + summary_median=19 = definitive waste.\n\n**2. daily-backup** (D8 suspected)\n- Schedule: `0 4 * * *` | EXEC_SCRIPT\n- Runs: 56 | Tokens: 1,176,008\n- Errors: 0% | Delivered: 0% | Summary median: **25 chars**\n- Verdict: Silent job consuming 1.18M tokens, outputting 25-char summaries, no delivery. Likely obsolete. Check before disabling.\n\n**3. Agent控制权_每日特别提醒** (D8 suspected)\n- Schedule: `0 20 * * *` | EXEC_SCRIPT\n- Runs: 66 | Tokens: 1,783,630\n- Errors: 9% | Delivered: 42% | Summary median: **8 chars**\n- Verdict: Outputs \"NO_REPLY\" most runs, 8-char median. Burn rate high for 42% delivery. Review frequency or need.\n\n### jobs.json Structure (for reference)\n```\n{\"version\": 1, \"jobs\": [...]}  ← top-level has 'version' and 'jobs' key\njobs[j]['payload']['model']     ← ground truth for LLM presence\njobs[j]['schedule']['kind']     ← 'cron' | 'at' | 'every'\njobs[j]['schedule']['expr']     ← cron expression string\njobs[j]['schedule']['everyMs']  ← interval in ms\njobs[j]['delivery']['mode']     ← 'announce' | 'none' | ...\n```\n\n### Quick Audit Command\n```bash\npython3 -c \"\nimport json, glob, os\nwith open(os.path.expanduser('~/.openclaw/cron/jobs.json')) as f:\n    job_map = {j['id']: j for j in json.load(f)['jobs']}\nruns_dir = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs')\nresults = []\nfor f in sorted(glob.glob(f'{runs_dir}/*.jsonl')):\n    jid = os.path.basename(f).replace('.jsonl','')\n    total=count=errors=delivered=0; summary_lens=[]\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d=json.loads(line)\n                total+=d.get('usage',{}).get('total_tokens',0);count+=1\n                errors+=1 if d.get('error') else 0\n                delivered+=1 if d.get('delivered') else 0\n                summary_lens.append(len(str(d.get('summary','') or '')))\n            except: pass\n    if count>0 and jid in job_map:\n        j=job_map[jid]; med=sorted(summary_lens)[len(summary_lens)//2]\n        results.append({'name':j['name'],'schedule':j.get('schedule',{}).get('expr',''),\n            'model':j.get('payload',{}).get('model',''),'count':count,'tokens':total,\n            'errors':errors,'delivered':delivered,'summary_median':med})\nresults.sort(key=lambda x: x['tokens'], reverse=True)\nfor r in results: print(f\\\"{r['name']} | runs={r['count']} tokens={r['tokens']:,} err={r['errors']/r['count']*100:.0f}% med={r['summary_median']}\\\")\n\"\n```\n\n## Key Lessons\n\n1. **EXEC_SCRIPT tag is unreliable.** Use `payload.model` from jobs.json as ground truth — a job's name suggests \"simple script\" but it may still call LLM internally.\n2. **delivery=false + status=ok = structural waste.** The job runs successfully but produces no external value. This is the primary waste signature.\n3. **delivery.mode \"none\" = by design, not waste.** Check actual deliveryStatus for external channels — internal jobs that announce to own session are not waste.\n4. **Schedule parsing matters.** Raw cron string can be misleading — parse `schedule.kind` + `schedule.expr` / `schedule.everyMs`.\n5. **Token counting:** JSONL top-level `totalTokens` is always 0. Real data is at `usage.total_tokens`.\n6. **Error rate vs delivery rate:** High error rate = failure loop. Low delivery rate = wrong target or broken logic. Both together = D8 CLEAN_LOOP.\n7. **CLEAN_LOOP diagnosis:** Look for `delivered=false` + `status=ok` + repetitive \"all good\" summaries across 50+ runs. This is the definitive signature — not just high run count.\n8. **jobs.json is not a plain list.** It has `{\"version\": 1, \"jobs\": [...]}`. Access `.jobs` before iterating.\n9. **D10: Script-wrapper agentTurn detection.** When `payload.kind == \"agentTurn\"` + `payload.model` set + message is just a script path/exec command (no real LLM judgment needed) + summary median ≤50 chars → convert to EXEC_SCRIPT. Health Check and Log Analyzer are canonical examples — they run scripts but use LLM only to format output, wasting ~16K tokens/run.","readmeExcerpt":"Skill: OpenClaw Waste Audit Owner: choosenobody Summary: Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for sa... Tags: audit:1.4.2, cost:1.4.2, cron:1.4.2, latest:1.8.12, openclaw:1.4.2, read-only:1.4.2, token:1.4.2, token-save:1.4.2, waste:1.4.2 Version history: v1.8.12 | 2026-05-29T12:38:23.191Z | user Added Whe","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"openclaw skills install waste-audit --global"},{"language":"bash","snippet":"openclaw skills install waste-audit --global --force"},{"language":"bash","snippet":"check openclaw waste"},{"language":"text","snippet":"check openclaw waste"},{"language":"text","snippet":"Please inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads."},{"language":"bash","snippet":"# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if total > 0:\n        print(f'{f.split(\\\"/\\\")[-1]}: {count} runs, {total:,} tokens')\n\"\n\n# Inspect specific job runs\nopenclaw-env cron runs --id <job_id> --limit 3\n\n# Show last N run summaries for a job (to detect CLEAN_LOOP pattern)\npython3 -c \"\nimport json\nfpath = os.path.join(os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw')), 'cron', 'runs', '<job_id>.jsonl')\nwith open(fpath) as f:\n    lines = f.readlines()\nfor line in lines[-3:]:\n    d = json.loads(line)\n    print(f'status={d[\\\"status\\\"]} | delivered={d[\\\"delivered\\\"]} | summary={d.get(\\\"summary\\\",\\\"\\\")[:150]}')\n\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: waste-audit\ndescription: \"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for safe manual verification.\"\nversion: 1.8.12\nplatforms: [linux, macos, windows]\nmetadata:\n  hermes:\n    tags: [openclaw, tokensave, cron, waste, audit, tokens]\n    related_skills: []\n---\n\n## Features\n\n- 🔍 Recurring Waste Detection: Finds recurring OpenClaw jobs that may be wasting tokens.\n- 📊 Token Burn Ranking: Ranks likely waste candidates by recurring usage, errors, and delivery signals.\n- 🧾 Evidence Summary: Shows why a job was flagged before suggesting action.\n- 🛠 Manual Verification Prompt: Gives a copy-paste prompt for safe agent-side verification.\n- 🔒 Read-Only Safety: Does not edit, disable, delete, upload, or auto-fix jobs.\n\n## Install\n\nFor shared OpenClaw agents, install into the global managed skills directory:\n\n```bash\nopenclaw skills install waste-audit --global\n```\n\nTo upgrade an existing shared install:\n\n```bash\nopenclaw skills install waste-audit --global --force\n```\n\nThen test with:\n\n```bash\ncheck openclaw waste\n```\n\n## Activation\n\nPrimary activation phrase:\n\n```\ncheck openclaw waste\n```\n\nDo not use this for general OpenClaw setup, gateway debugging, provider configuration, or normal job management.\n\n## Where This Fits\n\nThis skill is the OpenClaw-specific starting point for agent token waste auditing.\nUse it when you want to inspect recurring OpenClaw jobs for possible token waste.\nFor broader model routing, sub-agent routing, fallback, retry, or cross-agent runtime analysis, use a separate Agent Routing Waste Audit workflow instead. This skill should not be treated as a generic routing optimizer.\n\n## What You Will Get\n\n**1. Fix First**\n\nInclude:\n\n- Job\n- Why it looks wasteful\n- Evidence\n- Confidence: High / Medium / Low\n- Recommended manual action\n\n**2. Top Waste Candidates**\n\nList up to 5 candidates.\n\nFor each candidate, include:\n\n- Job\n- Waste signal\n- Evidence\n- Why it matters\n\n**3. Manual Verification Prompt**\n\nA ready-to-copy prompt for your agent.\n\n```\nPlease inspect this recurring OpenClaw job for possible token waste.\n\nJob: <job name>\nReason it was flagged: <short reason>\nEvidence: <schedule, runs checked, tokens used, error rate, delivery/summary signal>\n\nPlease verify whether this job is still useful.\n\nDo not edit, disable, delete, or mutate anything yet.\n\nFirst explain:\n1. whether this is real waste,\n2. what caused it,\n3. the safest manual next step,\n4. what evidence I should check before changing anything.\n\nRedact secrets and do not expose private payloads.\n```\n\nIf any candidate looks important but you are not sure whether it is real waste, send only the \"Top Waste Candidates\" section to @BeeGeeEth on X. Do not include secrets, API keys, private logs, wallet data, full config files, or production credentials.\n\n## Related Next Step\n\nIf this audit finds a job where the main issue appears to be model choice, retry behavior, fall"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7aeqth7vtkece5j16y05y1sn86vga3\",\n  \"slug\": \"waste-audit\",\n  \"version\": \"1.8.12\",\n  \"publishedAt\": 1780058303191\n}"},{"path":"references/openclaw-waste-patterns.md","content":"# OpenClaw Waste Audit — Reference Bank\n\n## Observed Waste Patterns\n\n### Pattern 1: Health Probe Loop (D8 CLEAN_LOOP)\n- Job: Health monitoring job — high run count, 0% errors, 0% delivered\n- Model: actual model from `payload.model` in jobs.json (not EXEC_SCRIPT tag)\n- Frequency: hourly or more frequent\n- Signature: `delivered=false` + `status=ok` + repetitive \"all clear\" summaries — structurally silent, zero external value\n- Signal: EXEC_SCRIPT tag ≠ bash. Always check `payload.model` in jobs.json.\n- Verdict: No delivery means output is discarded. Zero value despite 100% success rate.\n\n### Pattern 2: Zero-Value Log Verification\n- Job: Log analyzer job — runs but log format doesn't match parser\n- Latest summary: \"ERROR: 0 | WARN: 0\" — job runs successfully but produces nothing useful\n- Frequency: every 6h or more frequent — excessive for zero-value output\n- Signal: Both wrong frequency AND wrong logic. Double waste.\n- Critical signal: `delivered=false` + zero content = structural failure, not just over-scheduling.\n\n### Pattern 3: High-Frequency Midnight Burner\n- Job: Embedding/job scheduled 4x/day at midnight hours\n- Signal: Midnight runs unlikely to need human attention anyway\n- Verdict: 4x/day is excessive. 1x or 2x sufficient.\n\n### Pattern 4: tmp-auto-cleanup (Hybrid Failure + Silent)\n- Job: cleanup job with intermittent output\n- Frequency: every 4h or more\n- Signal: Mix of `status=error` and `status=ok` with `(no output)` — unreliable execution\n- Delivered: false\n- Problem: 50% error rate + 50% silent success = no reliable output ever delivered\n\n### Pattern 5: Disk/Memory Monitor (UNCLEAR + No Delivery)\n- Jobs: monitor-type jobs (disk, memory, etc.)\n- Frequency: every 6h or daily\n- Problem: Classified UNCLEAR, delivered=false, no visible value\n- Rule of thumb: Any monitor job with delivered=false and no external target is waste by definition\n\n## Diagnostic Command Cheatsheet\n\n```bash\n# Run ClawSetup diagnostic (primary in this env — always available)\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py\n\n# Get top 10 by token burn\npython3 ~/.hermes/scripts/clawsetup_diagnostic.py 2>&1 | grep -A12 \"TOP 10\"\n\n# List all jobs with model info from jobs.json\ncat ~/.openclaw/cron/jobs.json | python3 -c \"\nimport json,sys\nd=json.load(sys.stdin)\nfor j in d.get('jobs',[]):\n    model=j.get('payload',{}).get('model','null')\n    if model and model not in ('null','None',''):\n        print(f'{j[\\\"name\\\"]}: {model}')\n\"\n\n# Check actual token burn from JSONL runs (use usage.total_tokens, NOT top-level totalTokens)\npython3 -c \"\nimport json, glob, os\nruns_dir = os.environ.get('OPENCLAW_HOME', os.path.expanduser('~/.openclaw'))\nruns_dir = os.path.join(runs_dir, 'cron', 'runs')\nfor f in glob.glob(f'{runs_dir}/*.jsonl'):\n    total = 0\n    count = 0\n    with open(f) as fh:\n        for line in fh:\n            try:\n                d = json.loads(line)\n                total += d.get('usage',{}).get('total_tokens',0)\n                count += 1\n            except: pass\n    if "},{"path":"skill-card.md","content":"## Description:\n\nFind recurring OpenClaw jobs that may be wasting tokens before the waste compounds.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[choosenobody](https://clawhub.ai/user/choosenobody)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and operators use this skill to audit recurring OpenClaw jobs for likely token waste, review evidence, and prepare a safe manual verification prompt before changing schedules, prompts, or configuration.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill includes guidance to share uncertain audit findings with a hard-coded X account, which could expose operational details if followed without reviewing the exact payload.\n\nMitigation: Keep audit results local unless the user explicitly reviews and approves the exact information to share; remove or ignore the hard-coded contact instruction before installation.\n\nRisk: Audit evidence can include private job names, summaries, logs, paths, credentials, or other sensitive operational context.\n\nMitigation: Redact secrets and private payload details before displaying or sharing findings, and use placeholders for credentials, tokens, wallet data, private logs, and production configuration.\n\nRisk: A recurring job may be useful even when it looks wasteful from run count, delivery, error, or summary-length signals.\n\nMitigation: Require manual verification before changing a job schedule, prompt, model policy, or configuration, and present confidence and evidence with each recommendation.\n\n## Reference(s):\n\n- [OpenClaw Waste Audit reference bank](artifact/references/openclaw-waste-patterns.md)\n- [ClawHub skill page](https://clawhub.ai/choosenobody/skills/waste-audit)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, guidance]\n\n**Output Format:** [Markdown audit report with evidence summaries, ranked candidates, diagnostic commands, and a copy-paste manual verification prompt.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only recommendations; no automatic job edits, disabling, deletion, uploads, or fixes.]\n\n## Skill Version(s):\n\n1.8.12 (source: release metadata and SKILL.md frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for sa... Skill: OpenClaw Waste Audit Owner: choosenobody Summary: Find recurring OpenClaw jobs that may be wasting tokens before the waste compounds. Read-only by default. Gives evidence and a copy-paste agent prompt for sa... Tags: audit:1.4.2, cost:1.4.2, cron:1.4.2, latest:1.8.12, openclaw:1.4.2, read-only:1.4.2, token:1.4.2, token-save:1.4.2, waste:1.4.2 Version history: v1.8.12 | 2026-05-29T12:38:23.191Z | user Added Whe","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1618,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T14:36:27.880Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T14:36:27.880Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T17:37:42.457Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}