600 skill improvements, one background hook — task-observer

Background hook parses JSONL transcripts, logs gaps, and queues SKILL.md rewrites — 600+ edits across 40 skills.

600 skill improvements, one background hook — task-observer
Share

Claude Code's Agent Skills gave you a way to teach the model your conventions once and reuse them everywhere. task-observer asks the next question: what if a skill could watch how you actually work and log where every other skill falls short?

What task-observer does: the meta-observer that accumulated 600 SKILL.md observations

task-observer is a single SKILL.md that runs quietly across an active Claude Code session, watching all your other skills and appending structured notes to skill-observations/log.md — without editing any target file until a deliberate review. Each entry is numbered and consistent: date, session context, the skill name (or "New skill candidate"), the issue, a suggested fix with section references, and a generalizable Principle .

The scale claim comes from author Eoghan Henn of Rebelytics, who self-reports logging and applying over 600 refinements across 40 skills in roughly three months — and notes most of those 40 skills began as "new skill candidate" entries the observer itself flagged, not from manual planning . The repo, rebelytics/one-skill-to-rule-them-all, showed roughly 928 stars and 103 forks at retrieval, having crossed 500 stars in mid-May 2026 off an r/ClaudeAI thread .

Mechanically there is nothing exotic here. task-observer reads JSONL session transcripts and appends to Markdown — no extra API calls, no weight changes. It is layered entirely on Anthropic's Agent Skills standard, which launched October 16, 2025 and gained organization-wide management on December 18, 2025 . It watches three signal classes: user corrections that reveal a missing rule, gaps where no existing skill covers the situation, and techniques that worked exceptionally well in that session .

"Self-improvement quality depends entirely on Claude's ability to accurately diagnose why something went wrong," — Eoghan Henn, Rebelytics (source: rebelytics/one-skill-to-rule-them-all).

What to have in place before adding task-observer

600 skill improvements, one background hook — task-observer

Before task-observer can start logging observations, you need Claude Code with Agent Skills support, which Anthropic launched on October 16, 2025 . Skills live as SKILL.md files in a personal directory (~/.claude/skills) and a project-level directory (.claude/skills); Claude auto-discovers both and reads only each file's YAML description field to decide whether to invoke it, loading full instructions on match .

Two more pieces make the loop reliable:

  • A CLAUDE.md at your project root. Description-based matching alone is probabilistic and unreliable for a meta-observer that should run on every session, so you add an explicit invocation instruction here .
  • Two scaffold paths in your workspace root. Create skill-observations/log.md (empty; numbered entries accumulate here) and last-review-date.txt, which controls the 7-day fallback that triggers the weekly review cycle .

Setting up task-observer: reliable activation and the observation log

600 skill improvements, one background hook — task-observer

With activation and scaffold decisions settled, four concrete steps get task-observer running. The mechanism is entirely filesystem-based — it edits SKILL.md text and reads two workspace files — so setup is copy, create, wire, and verify, with no build step and no change to Claude's weights.

  1. Install the skill. Copy the SKILL.md from rebelytics/one-skill-to-rule-them-all into ~/.claude/skills/task-observer/SKILL.md. It ships under CC BY 4.0, so redistribution is fine with attribution .
  2. Create the two state files. In your workspace root, create an empty skill-observations/log.md and a last-review-date.txt. Numbered, structured entries append to the log; the observer reads the date file and, if it shows 7+ days ago, triggers a full weekly review at the next invocation .
  3. Rely on the checkpoint behavior. task-observer flushes observations after every 3rd TodoWrite completion. It pre-reads log.md before each write and re-reads after, so it can detect and resolve duplicate entry numbers when parallel sessions collide .

Wire activation into CLAUDE.md. Add the invocation instruction below. Re-invocation after compaction is mandatory: a previously loaded SKILL.md copy persists in context through compaction, but the running observation count is lost, so numbering drifts unless you re-invoke .

At session start, invoke the task-observer skill.
After any compaction, re-invoke task-observer to restore
continuous entry numbering.

How logged observations become SKILL.md edits depends on which mode you run. Interactive keeps you in the loop; scheduled autonomous mode trades some control for hands-off refinement but deliberately refuses to act unsupervised on high-risk changes.

ModeApplies edits howDrops to report-only for
InteractiveRequires user approval — blanket or entry-by-entry — before any SKILL.md is changedN/A (nothing applies without approval)
Autonomous (scheduled)Auto-applies additive, non-escalated editsNew SKILL.md creation, removals, structural changes, conflicting observations, or self-flagged uncertainty

Confirm setup by running a normal session, then checking that skill-observations/log.md gained numbered entries — a visible sign the observer attached and is watching .

Where task-observer goes quiet: compaction loss and description-match limits

600 skill improvements, one background hook — task-observer

task-observer has four failure modes worth knowing before you trust it. The most common is silent non-activation: Claude decides whether to load a skill by reading only its description, and that match is probabilistic. Without an explicit CLAUDE.md line invoking task-observer at session start, it may simply never attach — the CLAUDE.md instruction is the primary reliability guarantee, not a fallback .

The second is compaction. Once a session compacts, the loaded SKILL.md copy is dropped from context, so observation stops until you re-invoke. Skip the re-invocation and entry numbering in skill-observations/log.md restarts, producing duplicate numbers within the same session — which is why the recommended CLAUDE.md instruction re-invokes after mid-task compaction .

The third is the autonomous-mode escalation list. In scheduled autonomous mode only clean additive edits auto-apply; new SKILL.md creation, removals, restructuring, conflicting observations, or self-flagged uncertainty all downgrade to report-only and wait for human review . Fourth is the context budget: Anthropic recommends keeping each SKILL.md under 500 lines because loaded content stays in the active window, so an observer that has grown through self-editing costs tokens on every invocation .

Then there is the security surface. A July 1, 2026 study of 238 real-world SKILL.md files found over 99% contained at least one "skill smell" , and a June 15, 2026 Dynamic Malicious Skills paper showed natural-language content in a SKILL.md can inject logic into benign skills at runtime, proposing OS-enforced read-only mounts as mitigation . Anthropic's own docs warn that skills can include executable code and command hooks run with your account's full filesystem permissions . Treat any public SKILL.md as executable governance text before loading it.

Beyond task-observer: companion repos once your observation log fills up

Once your log.md starts filling faster than you review it, two lower-risk companions cover the ground task-observer's autonomous mode leaves exposed. TerenceBristol/claude-improve ships an approval-gated /improve slash command that runs a post-session retrospective on demand — manual cadence, no background SKILL.md writes . It is the safer starting point if silent edits feel premature. UniM0cha/claude-self-improving-skills goes further on guarantees: a Stop lifecycle hook delegates to a skill-distiller subagent with backups, validation, provenance stamping, rollback on malformed SKILL.md output, and staleness archival — stronger safety than task-observer's default autonomous path.

Whichever you run, aim it well. Comparable self-improvement loops show a 5–10 run ramp-up before behavior noticeably shifts, and one-off tasks generate observations that compound little . Point the observer at your most-repeated workflows first — planning style, commit conventions, test discipline — where the payoff accrues.

For teams, project-level .claude/skills turns this into shared compounding, but the discipline matters more: review each weekly-review diff before committing any task-observer-edited SKILL.md, so every teammate sees a deliberate, visible change rather than a silent one. The takeaway is simple — keep the loop, but keep every rewrite reviewable.

Frequently asked questions

Does task-observer automatically rewrite my SKILL.md files without me seeing the changes?

No. Observations queue as numbered entries in skill-observations/log.md and are acted on only during a comprehensive weekly review, on explicit user request, or when a skill is actively producing wrong output mid-session, per the task-observer SKILL.md. Interactive mode requires user approval — blanket or selective — before any edit lands. Scheduled autonomous mode auto-applies only additive, non-escalated clarifications and drops to report-only for anything structural: new skill files, removals, restructuring, conflicting observations, or self-flagged uncertainty. Updated files are staged to skill-updates/[date]/[skill-name]/SKILL.md and diffed against the live file, not blindly overwritten.

Why does task-observer sometimes not activate when I start a new session?

Claude decides whether to invoke a skill by matching your session context against each SKILL.md description field, and that match is probabilistic, not guaranteed (source: Claude Code skills docs). Description-based triggering alone is a documented weak point. The fix is to make activation explicit: add a CLAUDE.md instruction such as "At session start, invoke task-observer" as the primary mechanism rather than a fallback (source: rebelytics/one-skill-to-rule-them-all). Re-invoke after any mid-task compaction so the observation log's sequential entry numbering stays continuous.

How many sessions before task-observer noticeably improves my other SKILL.md files?

Expect a ramp-up of roughly 5–10 runs before behavior visibly shifts, in line with comparable learning loops . One-off tasks still accumulate observations but compound little, because the loop only pays off on frequently-run workflows. Point task-observer at your most-repeated patterns — planning style, commit conventions, test discipline — where it gathers enough signal to produce actionable refinements. For context, the maintainer self-reports logging and applying over 600 improvements across 40 skills in about three months of regular use .

Is it safe to drop in a public SKILL.md like task-observer without auditing it first?

No. Treat any SKILL.md as executable governance text, since Claude Code hooks and skill scripts run with your account's full filesystem permissions (source: hooks docs). Security research backs the caution: a May 2026 supply-chain paper found description-only framing drove 77.6% adversarial selection in paired trials , and a June 2026 paper demonstrated runtime injection of malicious logic into benign skills from malicious SKILL.md content . Audit before loading, and prefer repos with a clear license, visible commit history, and an active maintainer.

Can task-observer modify itself?

Yes. It observes all active SKILL.md files, including its own, so the weekly review surfaces self-observations and proposes edits to task-observer's own SKILL.md (source: task-observer SKILL.md). The quality of any self-directed change depends entirely on Claude accurately diagnosing why something went wrong, and it is not always right about its own failures. Keep human review in the loop for self-edits regardless of whether you run interactive or scheduled autonomous mode.

Enjoyed this article? Subscribe to get new stories by email whenever they're published.

Subscribe

AI developer tools and ecosystem news for developers and technical founders

Sign up for insights and ideas

Subscribe for the latest news, stories, tips, and updates.

Subscribe