Task Observer
rebelytics/one-skill-to-rule-them-all
Monitors task execution for skill improvement opportunities.
Audits your installed Claude skills and commands for quality, with a quick mode for recently changed skills and a full mode that evaluates all of them through subagents.
$ npx skills add affaan-m/ECC --skill skill-stocktake -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install affaan-m/ECC skill-stocktake --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/affaan-m/ECC.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/skill-stocktake .claude/skills/skill-stocktake && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "skill-stocktake" agent skill from https://github.com/affaan-m/ECC/tree/main/skills/skill-stocktake into .claude/skills/skill-stocktake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-stocktake", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/affaan-m/ECC/tree/main/skills/skill-stocktakeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add affaan-m/ECC --skill skill-stocktake -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install affaan-m/ECC skill-stocktake --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/affaan-m/ECC.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/skill-stocktake .agents/skills/skill-stocktake && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "skill-stocktake" agent skill from https://github.com/affaan-m/ECC/tree/main/skills/skill-stocktake into .agents/skills/skill-stocktake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-stocktake", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add affaan-m/ECC --skill skill-stocktake -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install affaan-m/ECC skill-stocktake --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/affaan-m/ECC.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/skill-stocktake .cursor/skills/skill-stocktake && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "skill-stocktake" agent skill from https://github.com/affaan-m/ECC/tree/main/skills/skill-stocktake into .cursor/skills/skill-stocktake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-stocktake", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/affaan-m/ECC.git --path skills/skill-stocktake--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add affaan-m/ECC --skill skill-stocktake -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install affaan-m/ECC skill-stocktake --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/affaan-m/ECC.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/skill-stocktake .gemini/skills/skill-stocktake && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "skill-stocktake" agent skill from https://github.com/affaan-m/ECC/tree/main/skills/skill-stocktake into .gemini/skills/skill-stocktake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-stocktake", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install affaan-m/ECC skill-stocktakeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add affaan-m/ECC --skill skill-stocktake -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/affaan-m/ECC.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/skill-stocktake .github/skills/skill-stocktake && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "skill-stocktake" agent skill from https://github.com/affaan-m/ECC/tree/main/skills/skill-stocktake into .github/skills/skill-stocktake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-stocktake", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add affaan-m/ECC --skill skill-stocktake -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install affaan-m/ECC skill-stocktake --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/affaan-m/ECC.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/skill-stocktake .opencode/skills/skill-stocktake && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "skill-stocktake" agent skill from https://github.com/affaan-m/ECC/tree/main/skills/skill-stocktake into .opencode/skills/skill-stocktake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skill-stocktake", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skill-stocktakeAudits your installed Claude skills and commands for quality, with a quick mode for recently changed skills and a full mode that evaluates all of them through subagents.
This slash command, /skill-stocktake, reviews the skills in ~/.claude/skills/ and, when run from a project root, the project's .claude/skills/ folder as well. It combines a quality checklist with an AI judgment of each skill, and it starts by listing which paths it found and scanned.
Quick Scan is the default when a results.json cache exists: quick-diff.sh finds the skills changed since the last run, only those are re-evaluated, unchanged results carry forward and the output shows only the difference. Full Stocktake runs when the cache is missing or you pass full. There scan.sh lists the skill files, reads their frontmatter and collects modification times, and the evaluation runs in sequential subagent batches. save-results.sh writes the cache to ~/.claude/skills/skill-stocktake/results.json. A quick scan takes about 5 to 10 minutes and a full one 20 to 30.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2d515e4. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
bashjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Skill Stocktake loads about 3.1k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 1,206 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from affaan-m/ECC at commit 2d515e4, republished under its MIT licence (© affaan-m). 1,206 words, ~3,090 tokens.
.claude/skills/skill-stocktake/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Slash command (/skill-stocktake) that audits all Claude skills and commands using a quality checklist + AI holistic judgment. Supports two modes: Quick Scan for recently changed skills, and Full Stocktake for a complete review.
The command targets the following paths relative to the directory where it is invoked:
| Path | Description |
|---|---|
~/.claude/skills/ | Global skills (all projects) |
{cwd}/.claude/skills/ | Project-level skills (if the directory exists) |
At the start of Phase 1, the command explicitly lists which paths were found and scanned.
Directories named .trash are excluded from both scan modes: archived skills are not part of the live inventory. If an older results.json contains .trash entries, start a new Full Stocktake using the cache initialization below before resuming Quick Scan. An ordinary save merges entries and does not remove archived records.
To include project-level skills, run from that project's root directory:
cd ~/path/to/my-project
/skill-stocktakeIf the project has no .claude/skills/ directory, only global skills and commands are evaluated.
| Mode | Trigger | Duration |
|---|---|---|
| Quick Scan | results.json exists (default) | 5–10 min |
| Full Stocktake | results.json absent, or /skill-stocktake full | 20–30 min |
The shell scripts require Bash, Node.js, and jq on PATH.
Results cache: ~/.claude/skills/skill-stocktake/results.json
Re-evaluate only skills that have changed since the last run (5–10 min).
~/.claude/skills/skill-stocktake/results.jsonbash ~/.claude/skills/skill-stocktake/scripts/quick-diff.sh \ ~/.claude/skills/skill-stocktake/results.json
(Project dir is auto-detected from $PWD/.claude/skills; pass it explicitly only if needed)[]: report "No changes since last run." and stopbash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \ ~/.claude/skills/skill-stocktake/results.json <<< "$EVAL_RESULTS"Run this entire block in one Bash invocation. It prints the inventory for the agent and initializes a new full run only when there is no unfinished run to resume:
(
set -euo pipefail
SCAN_JSON=$(bash ~/.claude/skills/skill-stocktake/scripts/scan.sh)
printf '%s\n' "$SCAN_JSON"
RESULTS_JSON=~/.claude/skills/skill-stocktake/results.json
CACHE_STATUS=""
if [[ -f "$RESULTS_JSON" ]]; then
CACHE_STATUS=$(jq -r '.batch_progress.status // ""' "$RESULTS_JSON")
fi
if [[ "$CACHE_STATUS" == "in_progress" ]]; then
RESUMED_RESULTS=$(jq --slurpfile saved "$RESULTS_JSON" '
. as $inventory | $saved[0]
| .skills = (.skills | to_entries
| map(.key = (.value.path // .key))
| map(select(. as $entry
| $entry.value.mtime != null
and any($inventory.skills[];
.path == $entry.key and .mtime == $entry.value.mtime)))
| from_entries)
| .mode = "full"
| .batch_progress = {
total: ($inventory.skills | length),
evaluated: (.skills | length), status: "in_progress"
}
' <<< "$SCAN_JSON")
bash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \
"$RESULTS_JSON" --replace <<< "$RESUMED_RESULTS"
else
INITIAL_RESULTS=$(printf '%s\n' "$SCAN_JSON" | jq '{
mode: "full", skills: {},
batch_progress: {total: (.skills | length), evaluated: 0, status: "in_progress"}
}')
bash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \
"$RESULTS_JSON" --replace <<< "$INITIAL_RESULTS"
fi
)The script enumerates skill files, extracts frontmatter, and collects UTC mtimes.
Project dir is auto-detected from $PWD/.claude/skills; pass it explicitly only if needed.
Present the scan summary and inventory table from the script output:
Scanning:
✓ ~/.claude/skills/ (17 files)
✗ {cwd}/.claude/skills/ (not found — global skills only)| Skill | 7d use | 30d use | Description |
|---|
Usage counts come from the optional ~/.claude/observations.jsonl file (overridable with SKILL_STOCKTAKE_OBSERVATIONS), which Claude Code does not create by default. When the file is absent, use_7d and use_30d are JSON null; display them as unmeasured in inventory and summary tables. A numeric 0 means the file exists but contains no matching Read observations in that window. Missing usage data is never evidence for retiring a skill.
--replace writes a complete cache snapshot. A new run starts with an empty evaluation; a resumed run instead keeps a saved evaluation only when its path is still live and its saved, non-null mtime matches the fresh inventory. Changed skills and entries without an mtime require re-evaluation. It removes archived/deleted entries and refreshes the progress counts even when no new batch remains. Existing name-keyed entries are normalized using their saved path. Never use the empty initialization payload for a resume. Later chunks, completion updates, and Quick Scans must omit --replace so they merge into the current run instead of losing earlier results.
Launch an Agent tool subagent (general-purpose agent) with the actual JSON emitted by Phase 1 and the checklist below. Copy the inventory values into the prompt itself; shell variables do not carry over into Agent calls. Include the full inventory for overlap checks and explicitly identify the paths in the current batch to evaluate. Do not send literal inventory or checklist placeholders.
The subagent reads each assigned skill, applies the checklist, and returns a JSON object with a skills map keyed by the inventory path. Each entry includes its path, scanned mtime, verdict, and self-contained reason. Use the same path keys across all batches so merging results cannot overwrite a different skill with the same name.
Chunk guidance: Process ~20 skills per subagent invocation to keep context manageable. After each chunk, wrap its returned skills map with mode: "full" and batch_progress: {total, evaluated, status: "in_progress"}. Set total to the inventory size and evaluated to the cumulative number of distinct evaluated paths, including saved batches. Assign this JSON to CHUNK_RESULTS and run the following command in the same Bash invocation as that assignment:
bash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \
~/.claude/skills/skill-stocktake/results.json <<< "$CHUNK_RESULTS"After all skills are evaluated, persist completion before proceeding to Phase 3:
(
set -euo pipefail
RESULTS_JSON=~/.claude/skills/skill-stocktake/results.json
COMPLETED_RESULTS=$(jq -e '
if (.skills | length) == .batch_progress.total then
{skills: {}, mode: "full", batch_progress: (.batch_progress + {
evaluated: (.skills | length), status: "completed"
})}
else error("Inventory still has unevaluated skills") end
' "$RESULTS_JSON")
bash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \
"$RESULTS_JSON" <<< "$COMPLETED_RESULTS"
)Resume detection: If status: "in_progress" is found on startup, run Phase 1 to reconcile the saved results with the fresh inventory, then evaluate only paths absent from the reconciled skills map. If none remain, persist completion immediately. Completed evaluations are preserved only for surviving paths with matching, non-null mtimes; new or changed skills and entries without an mtime require evaluation.
Each skill is evaluated against this checklist:
- [ ] Content overlap with other skills checked
- [ ] Overlap with MEMORY.md / CLAUDE.md checked
- [ ] Freshness of technical references verified (use WebSearch if tool names / CLI flags / APIs are present)
- [ ] Usage frequency considered when measured; missing observations marked unmeasured, not treated as zeroVerdict criteria:
| Verdict | Meaning |
|---|---|
| Keep | Useful and current |
| Improve | Worth keeping, but specific improvements needed |
| Update | Referenced technology is outdated (verify with WebSearch) |
| Retire | Low quality, stale, or cost-asymmetric |
| Merge into [X] | Substantial overlap with another skill; name the merge target |
Evaluation is holistic AI judgment — not a numeric rubric. Guiding dimensions:
Reason quality requirements — the reason field must be self-contained and decision-enabling:
"Superseded""disable-model-invocation: true already set; superseded by continuous-learning-v2 which covers all the same patterns plus confidence scoring. No unique content remains.""Overlaps with X""42-line thin content; Step 4 of chatlog-to-article already covers the same workflow. Integrate the 'article angle' tip as a note in that skill.""Too long""276 lines; Section 'Framework Comparison' (L80–140) duplicates ai-era-architecture-principles; delete it to reach ~150 lines.""Unchanged""mtime updated but content unchanged. Unique Python reference explicitly imported by rules/python/; no overlap found."| Skill | 7d use | Verdict | Reason |
|---|
~/.claude/skills/skill-stocktake/results.json:
evaluated_at: Must be set to the actual UTC time of evaluation completion.
Obtain via Bash: date -u +%Y-%m-%dT%H:%M:%SZ. Never use a date-only approximation like T00:00:00Z.
{
"evaluated_at": "2026-02-21T10:00:00Z",
"mode": "full",
"batch_progress": {
"total": 80,
"evaluated": 80,
"status": "completed"
},
"skills": {
"~/.claude/skills/skill-name/SKILL.md": {
"path": "~/.claude/skills/skill-name/SKILL.md",
"verdict": "Keep",
"reason": "Concrete, actionable, unique value for X workflow",
"mtime": "2026-01-15T08:30:00Z"
}
}
}© affaan-m, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (scripts) in skills/skill-stocktake of affaan-m/ECC.
Open the folder on GitHubat commit 2d515e4
We found 10 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 5 other GitHub owners. This page covers the copy in affaan-m/ECC, which our catalogue first saw on October 9, 2026.
Skill Stocktake next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Skill Stocktake this skillaffaan-m/ECC | 277k | 5 repos | ~3.1k | Automated safety check: Pass | MIT | |
| Task Observerrebelytics/one-skill-to-rule-them-all | 3.2k | 1 repos | ~11k | Automated safety check: Pass | CC-BY-4.0 | |
| Kimi Code DelegationCherryHQ/cherry-studio | 53k | — | ~504 | Automated safety check: Pass | AGPL-3.0 | |
| Dotagentsgetsentry/dotagents | 251 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Subagentethanhq/cc-fleet | 216 | — | ~4.3k | Automated safety check: Pass | Apache-2.0 | |
| Teamethanhq/cc-fleet | 216 | — | ~3.4k | Automated safety check: Pass | Apache-2.0 |
rebelytics/one-skill-to-rule-them-all
Monitors task execution for skill improvement opportunities.
CherryHQ/cherry-studio
Delegates one bounded repository task to Kimi Code in non-interactive prompt mode and reads back the final result from its JSON event stream.
getsentry/dotagents
Manage dotagents dependencies and runtime config. An agent skill from getsentry/dotagents.
ethanhq/cc-fleet
Run a one-shot or flat parallel batch of provider LLM subagents (headless cc-fleet subagent) that return a result.
ethanhq/cc-fleet
Spawn long-lived provider LLM teammates in tmux panes that you message via the native agent-team tools — multi-turn, collaborative, watchable.
ethanhq/cc-fleet
Orchestrate a MULTI-PHASE, dependent, or resumable run over many provider subagents from a JS script, off the main context (cc-fleet workflow).
affaan-m/ECC
Ingests, indexes, searches, edits and monitors video, audio and live streams through the VideoDB Python SDK, returning stream links, clips and timestamps.
affaan-m/ECC
Route broad documentation-governance requests to existing ECC skills and run an opt-in, read-only audit of mapped documentation roles, links, ADR indexes, and evidence references.
affaan-m/ECC
Scans installed skills for principles that recur across them and proposes rule-file changes: append, revise, add a section, create a file or leave as covered.
affaan-m/ECC
Builds DRAFT counterparty agreements from one markdown template and a small JSON spec per party, with clauses picked by the party's role.
affaan-m/ECC
Set an ECC-specific frontend design direction for production UI work.
affaan-m/ECC
Measures whether agents actually follow a skill, rule or agent definition by generating scenarios at three strictness levels and scoring tool-call traces.
Works with
Categories
Audits your installed Claude skills and commands for quality, with a quick mode for recently changed skills and a full mode that evaluates all of them through subagents. claude/skills/ folder as well. It combines a quality checklist with an AI judgment of each skill, and it starts by listing which paths it found and scanned.
Skill Stocktake fits situations like: reviewing the quality of every skill and command you have installed; re-checking only the skills that changed since the last audit; running a periodic review of a project's .claude/skills folder.
Run `npx skills add affaan-m/ECC --skill skill-stocktake -a claude-code`. Or copy the skill folder (skills/skill-stocktake in affaan-m/ECC) into .claude/skills/skill-stocktake in your project. Claude Code loads it when a task matches its description.
Run `npx skills add affaan-m/ECC --skill skill-stocktake -a codex`. Or copy the skill folder (skills/skill-stocktake in affaan-m/ECC) into .agents/skills/skill-stocktake in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add affaan-m/ECC --skill skill-stocktake -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skill-stocktake, .gemini/skills/skill-stocktake, .github/skills/skill-stocktake and .opencode/skills/skill-stocktake in your project.
Going by SKILL.md and its folder, Skill Stocktake needs a shell for the scripts in its folder and the command-line tools its instructions call (bash and jq). Our summary lists: Bash, to run the bundled scan.sh, quick-diff.sh and save-results.sh scripts; Skills installed under ~/.claude/skills/.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Skill Stocktake is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Skill Stocktake: Task Observer (rebelytics/one-skill-to-rule-them-all, 3.2k stars), Kimi Code Delegation (CherryHQ/cherry-studio, 53k stars), Dotagents (getsentry/dotagents, 251 stars) and Subagent (ethanhq/cc-fleet, 216 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
affaan-m (a GitHub user) maintains it in affaan-m/ECC, which has 276,673 GitHub stars. The repository holds 683 skills in this directory. The repository was last updated on October 11, 2026.
Source: affaan-m/ECC on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.