By Temikus
Auto-analyze Claude Code sessions by auditing conversation goals against actual git changes, flagging unmet objectives and code quality issues without external API calls.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
verbosePrepend a diagnostics header (raw/condensed size, tool use count, user messages) to every condensed transcript and add truncation notices when applicable
${user_config.verbose}Uses power tools
Uses Bash, Write, or Edit tools
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
disabledSet to true to disable automatic session analysis
${user_config.disabled}min_tool_usesSkip analysis if the session delta has fewer tool calls than this. Default is 8
${user_config.min_tool_uses}cooldown_secondsMinimum seconds between analyses for the same session. Set to 0 to disable. Default is 600 (10 minutes)
${user_config.cooldown_seconds}max_transcript_bytesMaximum size of the condensed transcript sent to the analyzer, in bytes. Larger values give the analyzer more context but increase processing time. Default is 51200 (50 KB)
${user_config.max_transcript_bytes}local_session_storageStore condensed session transcripts under .claude/tmp/claude-watchdog/ in the project directory instead of the global plugin data path. Eliminates Read permission prompts in auto mode. Requires .claude/ in .gitignore. Default is true
${user_config.local_session_storage}interactive_recommendationsAfter session analysis, present actionable recommendations as an interactive multi-select prompt so you can choose which items to address. Selected items are saved to .claude/watchdog-todo.md
${user_config.interactive_recommendations}A Claude Code plugin that runs a critical post-mortem on every Claude session, automatically.
When Claude finishes a turn, claude-watchdog spawns a session-analyzer subagent that cross-checks what you asked for against what actually changed in the repo (via git diff) and delivers a blunt, structured review:
The analysis happens in-session, using your existing Claude Code credentials — no external API calls, no extra API keys, no telemetry.
Long coding sessions drift. Claude will sometimes claim a task is done when it isn't, silently drop requirements, or agree too easily. claude-watchdog gives you a second pair of eyes on every session without you having to remember to ask.
the go vet failures I dismissed as "pre-existing" are not pre-existing — openrouter_test.go:263 references FundsRemaining, which was deleted in the same working tree diff. Those are broken tests from the cost_limit migration, not noise.
Context7 docs lookup was never completed. I said "Let me confirm exact CLI syntax from Jamf docs" but the resolve-library-id call only returned Jamf Protect (wrong product), and I proceeded without retrying or using WebFetch. This violates the global context7.md rule.
The claims that reason= is mandatory and that the URL scheme exists were stated confidently but not doc-verified — treat them as hypotheses until you test.
Integration test still unexecuted. snapshotReader.test.ts has never actually run — better-sqlite3 is absent from node_modules.
Live/snapshot path inconsistency. health.ts:401 still slices the overview to team.repos.slice(0, 3) on the live (non-snapshot) path. Now that snapshots return all repos, the two paths diverge — users who bypass the cache with ?fresh=1 see a smaller dataset than the snapshot they just replaced. Either align the live path to return all repos, or document why the slice exists (likely: live scoring is expensive; 3 repos keeps the cold-path responsive).
Goals: Neither achieved — no branch was created, no code changed.
In Claude Code:
/plugin marketplace add Temikus/claude-plugins
/plugin install claude-watchdog@temikus
That adds my personal plugin marketplace (which also hosts any future plugins) and installs claude-watchdog from it.
Run a short session and end Claude's turn. You should see output like:
[node session-analysis.mjs]: Please spawn a session-analyzer agent...
…followed by the analysis. If nothing appears, check ~/.claude/logs/claude-watchdog.log — every hook invocation is logged with the reason it ran or skipped.
| Component | Path | Purpose |
|---|---|---|
| Stop hook | hooks/session-analysis.mjs | Preprocesses the transcript, triggers the analyzer |
| SubagentStop hook | hooks/persist-analysis.mjs | Persists the analyzer's output to disk (no UI noise) |
| Subagent | agents/session-analyzer.md | Reads the transcript + git diff, writes the review |
| Slash command | skills/analyze-session/SKILL.md | /analyze-session for on-demand analysis mid-conversation |
git diff to compare intent vs. reality — sessions in non-git dirs still get a transcript-only review)Only when all of these are true — otherwise it exits silently and Claude stops normally:
CLAUDE_WATCHDOG_DISABLED=1).claude-watchdog-skip file exists in the project rootstop_reason == "end_turn" (skips compaction, tool_use pauses, max_tokens cutoffs)Every decision is logged to ~/.claude/logs/claude-watchdog.log.
The three main settings are configured via the plugin's user config — Claude Code
prompts for these values when you enable the plugin, and you can change them later
with /plugin configure claude-watchdog:
npx claudepluginhub temikus/claude-plugins --plugin claude-watchdogUltra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Memory compression system for Claude Code - persist context across sessions
Harness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses