Skill ninja logger
Capture friction observations from coding sessions into a structured gap log at ~/.agents/skill-gaps.md. Use when the user says "log a skill gap", "this should be a skill", "I keep doing this manually", "log this gap", "add to gap log", "this is repetitive", or any phrase that signals they noticed a recurring manual task that could be automated by a skill. Also passively detects specific patterns during sessions: when Claude reads ≥3 source files to locate one symbol, when the user manually formats the same data shape multiple times, when the user repeats a multi-step manual workflow. Writes one structured entry per invocation. Do not duplicate entries — check the log for similar gaps before adding new ones.From its SKILL.md
npx -y skills add made-on-weekends/vibe-code-ninja --skill skill-ninja-loggerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.0 KB, ~1.5k tokens by cl100k_base, as published. Nobody here has run it
skill-ninja-logger
Captures friction observations into a structured log at ~/.agents/skill-gaps.md. Each entry is a short, structured record of a moment where the user (or Claude itself) noticed a manual workflow that could become a skill.
This skill is half of a pair. skill-ninja-review reads the log weekly and graduates recurring patterns into actual skills.
When to invoke
Explicit triggers (user-initiated)
- "log a skill gap"
- "this should be a skill"
- "I keep doing this manually"
- "log this gap"
- "add to gap log"
- "this is repetitive"
Passive triggers (Claude-initiated)
Claude self-invokes the logger when any of these patterns occur in a session:
- Multi-file symbol lookup: Claude reads ≥3 source files to locate one symbol whose location wasn't in the user's prompt. (This is the specific pattern that determines whether
code-graph-ninjashould be built.) - Repeated data-shape transformation: the user has Claude format the same data shape (CSV columns, API response, config file) ≥2 times in one session.
- Multi-step manual workflow: the user walks through the same N-step process across ≥2 sessions in the past 7 days (use
recent_chatsto detect). - Tool gap: Claude attempts a task and finds no relevant skill or MCP available, and the task is something that could plausibly be skill-ified.
For passive triggers, Claude should ask once: "This looks like a recurring pattern — should I log it as a skill gap?" Don't log silently; the user's confirmation is part of the signal.
What gets logged
Each entry has a fixed structure. Append to ~/.agents/skill-gaps.md (create the file if it doesn't exist).
## YYYY-MM-DD HH:MM — <one-line description>
**Project:** <project name from cwd or "global">
**Trigger:** <explicit | passive-symbol-lookup | passive-data-shape | passive-workflow | passive-tool-gap>
**Pattern:**
<2–4 sentences describing what the user was trying to do, what was missing, and what they did instead>
**Frequency signal:** <first-time | seen-before-in-this-session | seen-in-prior-sessions>
**Sensitivity flag:** <none | contains-project-noun | contains-pii-or-secret>
**Cross-project applicability:** <single-project | likely-multi-project | unknown>
How to determine each field
Project
Use the current working directory's basename. Example: working from ~/projects/troopersdesk → project is troopersdesk. If the session is not inside a project directory, use global.
Trigger
explicit— user said one of the trigger phrasespassive-symbol-lookup— Claude detected the multi-file lookup patternpassive-data-shape— user repeated a transformationpassive-workflow— user walked through same multi-step processpassive-tool-gap— no available skill/MCP fit the task
Pattern
2–4 sentences. Concrete and specific. Bad example: "User wants help with data." Good example: "User pasted a Mercury bank CSV export and asked to format it into the chart-of-accounts schema. Claude wrote a one-off transformation. The user mentioned this is the third Mercury export this month."
Frequency signal
first-time— no similar entry exists in the logseen-before-in-this-session— same pattern happened earlier in this conversationseen-in-prior-sessions— search the log first; if a similar entry exists, mark this. (This is the signal that matters most for graduation thresholds.)
Sensitivity flag
Critical for filtering during review:
none— generic pattern, no project-specific or sensitive contentcontains-project-noun— refers to specific project artifacts (table names, component names, internal terminology). May still graduate as project-specific skill.contains-pii-or-secret— pattern involves real user data, credentials, financial details, or other sensitive content. NEVER auto-graduate to a skill. Manual review only.
Cross-project applicability
single-project— the pattern is specific to one codebaselikely-multi-project— the pattern would plausibly apply to other projectsunknown— not sure yet; review will decide
Workflow
Step 1 — Check for duplicates
Before adding a new entry, read the existing log (or use grep for keyword overlap). If a substantively similar entry exists from the last 30 days:
- If the new occurrence is from a different project than the existing one → add a new entry; cross-project recurrence is a strong signal
- If the new occurrence is the same project, same pattern → don't duplicate; instead, append a one-line note to the existing entry:
Reoccurred YYYY-MM-DD
Step 2 — Write the entry
Append to ~/.agents/skill-gaps.md using the exact template above. Don't reformat or get creative.
Step 3 — Confirm to the user
Output a one-line confirmation:
Logged skill gap: <one-line description>. (See ~/.agents/skill-gaps.md)
No more than that. The skill should add minimal flow tax — capturing should be cheap.
Log file format
The log file lives at ~/.agents/skill-gaps.md. If it doesn't exist, create it with this header:
# Skill Gap Log
Captured friction observations from coding sessions. Reviewed weekly by `skill-ninja-review`.
## How to read this log
- Each entry is a structured observation, not a task.
- Entries with `Frequency signal: seen-in-prior-sessions` are graduation candidates.
- Entries with `Sensitivity flag: contains-pii-or-secret` go through manual review only.
- Entries are appended in time order; do not edit past entries except to add `Reoccurred YYYY-MM-DD` notes.
---
Then append entries below the ---.
Token-waste prevention
This skill should be cheap to invoke. Rules:
- Don't summarize the entire conversation when logging — capture only the pattern, not the context.
- Don't add suggestions for the skill to be created. That's
skill-ninja-review's job. - Don't read the entire log file every invocation. Use
grepor read only the last 50 entries when checking for duplicates. - Don't ask follow-up questions beyond the one duplicate-check confirmation when relevant.
What this skill does NOT do
- Does not create skills (that's
skill-ninja-review) - Does not analyze patterns (that's review's job)
- Does not interrupt flow with long prompts
- Does not log generic complaints — only structured patterns
What ships with it: 1 file
1.7 KB alongside SKILL.md
- README.md1.7 KB