Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/chris-peterson/claudewatch/learnnpx skills add chris-peterson/ClaudeWatch --skill learngit clone --depth 1 https://github.com/chris-peterson/ClaudeWatchWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/chris-peterson/claudewatch/learn)<a href="https://agentmods.dev/skills/chris-peterson/claudewatch/learn"><img src="https://agentmods.dev/badge/skills/chris-peterson/claudewatch/learn.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00038 | $0.02017 |
| Opus 5 | $0.00019 | $0.01009 |
| Sonnet 5 | $0.00008 | $0.00403 |
| Haiku 4.5 | $0.00004 | $0.00202 |
Grade B, and why
learn scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
- **User** (`~/.claude/settings.json`) — applies to every session. How it starts
The opening of the file, as written. The whole thing — 176 lines — stays where its author put it; the contents beside it link to each section on GitHub.
ClaudeWatch — learn
ClaudeWatch watches every command and records its decision; this skill is the learn step that turns those recordings into suggestions. You vet a window's worth of accumulated prompts once, as a batch, instead of pressing enter on each one. It is the replacement for the generic transcript-scanning approach: it works from the hook's own decisions, so it knows what ClaudeWatch allowed, asked, and blocked — not just what looked read-only.
0. Prerequisite: a decision log to learn from
Logging is on by default — the hook writes to
~/.claude/claudewatch/decisions.jsonl unless CLAUDEWATCH_LOG is set to an
opt-out value (off, 0, false, none, or empty). Each Bash record stores
the command shape (git push, not the full command with its arguments), never
the raw command, so inline secrets stay out of the plaintext log; the file is
owner-only (0600). Two states block a learn pass; distinguish them before doing
anything else.
First, check whether logging has been turned off:
echo "CLAUDEWATCH_LOG=[${CLAUDEWATCH_LOG:-<unset>}]"
-
off/0/false/none/ empty — logging is disabled. Warn the user loudly that disabling logging disables this skill:/ClaudeWatch:learnhas no data to work from and stays useless until logging is re-enabled. To re-enable, remove the opt-out from theenvblock in theirsettings.json(unset it, or set it back to the default path) and restart their sessions:{ "env": { "CLAUDEWATCH_LOG": "~/.claude/claudewatch/decisions.jsonl" } }Then stop — there is nothing to learn from until logging is back on and sessions have run.
Otherwise logging is on; check whether the log has any records yet:
ls -la "${CLAUDEWATCH_LOG:-$HOME/.claude/claudewatch/decisions.jsonl}"
If the file does not exist, logging is on but no sessions have run with the hook active yet. Tell the user to run some sessions, then stop — there is nothing to learn from until then.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 176 lines · 38 tokens per session scan B 39857739f0c8
learn is a skill published in the GitHub repository chris-peterson/ClaudeWatch (3 stars, last pushed 2d ago), licensed MIT. It adds 38 tokens to every session and 2,017 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
create-site
Creates a new Power Pages code site (SPA) using React, Angular, Vue, or Astro. Guides through the full process from initial concept to deployed site: requirements discovery, scaffolding, component planning, design, implementation, validation, and deployment. Use when the user wants to create, build, or scaffold a new…
google-ads-audit
Google Ads account audit and business context setup. Run this first — it gathers business information, analyzes account health, and saves context that all other ads skills reuse. Trigger on "audit my ads", "ads audit", "set up my ads", "onboard", "account overview", "how's my account", "ads health check", "what should…
review
5-pass structured code review — correctness, security, performance, readability, consistency.
ops-pocket
OPS on-demand: This skill should be used when the user asks to "pocket memos", "voice memo pipeline"…
alive:system-upgrade
Upgrade ALIVE to the current version. Handles v1/v2/v3.x source states, multi-surface aware (alive-mcp / Hermes / Codex), retroactive version detection, partial-failure resume, dry-run previews, and rollback inspection.
extract-resume
Parse a resume's uploaded PDF into structured JSON (basics, experience, projects, skills, education) and save it to the editor.