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