Skill Usage Rates — Full-History Session Audit

alignment_status: review

Full-history read of Claude Code and Codex prompt history plus rich assistant transcripts (20,971 user prompts, Dec 10 2025 - Jul 4 2026) answering: with 184 active skills in this repo, at what rates do users invoke skills and how often do agents invoke or recommend them? Headline: direct user usage is still head-heavy (/ship alone is 13.6% of every Claude prompt; the top 3 user commands are 66.5% of all direct user skill invocations), while agents touch a much wider surface: 3,215 user-authored repo-skill invocations versus 9,125 assistant-side skill contract-load events (3,747 distinct session-skill pairs) and 1,267 assistant recommendation/use-reference events. The largest adoption gap remains habit, not coverage: ~550 hand-typed "why is..." prompts shadow /investigate, which was directly invoked 166 times.

Table of Contents

1. Overview Stats

20,971
total user prompts (11,704 Claude / 9,267 Codex)
3,215
direct user repo-skill invocations
9,125
assistant-side skill contract-load events
3,747
distinct assistant session-skill pairs
93
active repo skills never invoked directly by user command
MetricClaudeCodex
Date range2025-12-10 → 2026-07-042026-01-20 → 2026-07-04
User prompts11,7049,267
Slash/command prompts4,779 (incl. built-ins)708
Direct user repo-skill invocations2,714501
Built-in harness cmds (/clear, /usage…)1,502
Manual (non-command) prompts6,9258,559

Method: a user skill invocation is counted as a leading /command (Claude history.jsonl display field) or leading //$command (Codex history.jsonl text field), matched against the 184 active skill directories under packs/*/{claude,codex}/*/SKILL.md. Built-in harness commands (/clear, /usage, /resume, /model, /pack...) are separated out and not counted as repo-skill usage. Agent-side counts come from assistant records in ~/.claude/projects/**/*.jsonl and ~/.codex/sessions/**/*.jsonl: exact skill contract loads are assistant tool-call arguments that read a recognized SKILL.md; recommendations/use-references are assistant-authored text such as "Using the x skill" or "Recommended next skill: /x". Reproduce this snapshot with node scripts/analyze-skill-usage-actors.mjs --cutoff 2026-07-04T20:45:12.007Z; the cutoff prevents this analysis session from changing its own counts during later verification.

1b. User-Invoked vs. Agent-Invoked Skill Counts

The actor split changes the interpretation of "unused." Direct user commands cover 91 of 184 active skills, but assistant-side skill-contract loads touch a much broader slice of the registry, especially orchestration and design-tree skills that are often loaded by the agent during execution rather than typed by the user.

Actor / signalCountMeaningBest use
User-authored direct skill invocations3,215Leading /skill or $skill prompts matched to active repo skillsMeasures user habit and command discoverability
Assistant-side skill contract-load events9,125Assistant tool-call arguments reading a recognized SKILL.mdMeasures agent execution of skill contracts; raw events can include repeated reads in one session
Assistant distinct session-skill pairs3,747Unique source:session:skill pairs with at least one contract loadBest conservative "agent invoked skill in a session" count
Assistant recommendation/use-reference events1,267Assistant-authored text recommending or declaring use of a skillMeasures routing/handoff visibility, not necessarily execution
Top direct user skillsUser invokesTop assistant-loaded skillsContract-load eventsTop assistant recommendationsEvents
ship1,598customer-discovery493exec244
ship-end375user-flow-map482investigate125
investigate166ux-variations479ship86
sync105competitive-analysis436roadmap53
benchmark-test-skill84ui-interview433guide51

Interpretation: "Agent invoked" is not identical to "the user typed a skill." The strongest agent-side signal is a contract-load event because it proves the assistant read a skill contract while acting. The session-skill-pair count is less inflated than raw reads and is the best single count for "agents invoked skills." Recommendation events are reported separately because they may be handoff text rather than actual execution.

2. Top Skills by Invocation (all-time, Claude + Codex)

CommandUses% of Claude promptsCommandUses
/ship1,59813.6%/roadmap73
/ship-end3753.2%/spec-interview53
/investigate1661.4%/exec50
/sync1050.9%/analyze-sessions44
/benchmark-test-skill84Codex-heavy/customer-discovery40
/session-triage77Codex-heavy/plan-phase40
/competitive-analysis29Mixed/benchmark-agent-review33

3. Usage Concentration — Head vs. Dead Tail

The distribution is still skewed, but the actor split matters. For direct user commands, the top 3 (ship, ship-end, investigate) account for 2,139 of 3,215 invocations (66.5%). For assistant contract loads, the top 5 are research/design orchestrators (customer-discovery, user-flow-map, ux-variations, competitive-analysis, ui-interview), which shows agents exercise a different part of the skill surface.

Invocation tierRepo skillsShare of 184
Never invoked directly by user command9351%
Invoked exactly once2916%
Invoked 2–5 times2715%
Invoked more than 5 times3519%

Caveat — "unused" ≠ "dead": the 93-skill tail is measured only as never directly typed by the user. Rich transcript parsing now proves agents do load skill contracts independently, so direct-command absence is not enough to delete a skill. Separating dead from new/library/agent-only/parent-invoked is exactly what a skill-inventory pass would resolve (Rec 2).

Q3 (required) — Do you confirm the concentration reading (spike + dead tail)?

4. Manual Prompts That Shadow Existing Skills

Your follow-up question: cases where I'm manually typing prompts that skills already cover. I scanned all 15,349 manual (non-command) prompts for intents that map to a shipped skill. The finding: the gap is discovery/habit, not missing skills — the skill exists, and the request is still hand-typed. Counts are exact pattern matches (with real examples pulled from history).

Manual intentManual promptsSkill that covers itSkill's actual uses
"why is / investigate X"~550/investigate166
"update docs and push"~258/ship-end, /reconcile-dev-docs375 / 31
"commit & push to github"~211/ship, /ship-end1,598 / 375
"run/start the app / dev server"~61/run121 (in harness)
"update TODO.md / roadmap"~47/roadmap73

4.1 /investigate — the standout gap (~3:1 manual-to-skill)

Every bare "why is X" skips the skill's claim-validation → root-cause → git-history-trace and just gets an ad-hoc answer. This is the largest single shadowed intent and the one where skipping the skill costs the most.

why is onCategoryHover possibly undefined?
why are there version conflicts? Are you referring to between the drizzle orm version used in the pokeapps vs …
investigate, confirm, commit, and then push

4.2 Git / docs / roadmap shipping asks typed as sentences

ok can you push the changes to github with the appropriate commit message?
can you update the documentation and push to github?
update TODO.md
can you pull from master now? (typed 2× → /sync)

Why this is a habit gap, not a skill gap: /ship is muscle memory (1,598 uses) because it's the natural end-of-turn action. The shadowed skills fire from a mid-work realization ("wait, why is this...") where you're already typing a sentence, so the slash prefix never happens. Bare "why is X" also doesn't feel like it needs a skill — but that's exactly /investigate's job.

Count precision: "commit & push" is the tightened count (requires git/github/commit-message/branch context, excludes database/seed pushes). A looser "commit OR push" match returns ~696 but folds in DB-push false positives, so the tightened 211 is the conservative figure. Buckets use first-match keyword classification and are not mutually exhaustive.

5. Claude vs. Codex Personality Split

The two tools are used for different jobs — usage rates reflect that clearly:

6. Token & Cost Check

Actor usage was parsed; token spend was not re-estimated. This question was about invocation rates, and this update parsed rich assistant transcripts for agent-side skill use, but it did not re-run the Codex token/cost rollup. So: Prior analyze-sessions pages hold the Codex token totals (e.g. analyze-sessions-token-spend-value.html, analyze-sessions-skill-gaps-manual-asks.html). Q2 lets you require a token re-parse before acting on any recommendation.

7. Ranked Recommendations

#PatternFrequencyTypeSuggested actionOwner surfaceValidation
1"why is…" typed raw instead of /investigate~550 manual vs 166 skillStanding instruction (hook)UserPromptSubmit hook: detect a bare why (is|does|isn't|won't)… opener and suggest routing through /investigatesettings.json hook (via update-config)fire the hook on a sample "why is X" prompt; confirm suggestion, no false-trigger on /investigate
293 never-directly-user-invoked skills (dead vs new/library/agent-only unknown)51% of 184Inventory auditRun /skill-inventory to classify the tail; prune/archive genuinely dead skills to shrink the registry and improve recallskill-dev pack (installed ✓)inventory output separates dead / new / library / indirect / agent-only
3commit-push / update-docs typed as sentences~470 combinedStanding convention nudgeLightweight CLAUDE.md nudge (+ optional hook) so end-of-turn "push/update docs" reaches for /ship-endCLAUDE.md shared conventionsspot-check the nudge text; measure recurrence next audit

Q4 (required) — Recommendation 1: add the /investigate prompt-nudge hook?

Q5 (required) — Recommendations 2–3 (skill-inventory audit of the dead tail; CLAUDE.md ship-end nudge)?

8. Highest-Impact View (avoided manual prompts)

  1. /investigate prompt-nudge hook — ~550 historical hits, the largest single shadowed intent, and the highest-value one (it restores claim-validation before an answer).
  2. skill-inventory audit — resolves the 93-skill direct-command tail ambiguity in one pass; a smaller and better-labeled registry improves skill recall for every future session.
  3. ship-end / docs nudge — ~470 combined commit-push/update-docs sentences; pure convention change, zero new code.
  4. Already-won baseline: /ship at 1,598 uses is the single largest user-invoked automation in the dataset — proof the head of the distribution is healthy; the opportunity is in the tail, the agent-only surface, and the shadowed mid-work intents.

9. Evidence Matrix

ClaimEvidence (source · observation · date)InferenceConfidenceDecision impact
/ship is 13.6% of all Claude promptshistory.jsonl · 1,594 leading /ship of 11,704 Claude prompts · Dec 2025–Jul 2026Shipping is fully automated and habitualHighNo action on git-flow head
Top 3 user commands = 66.5% of direct user skill invocationshistory.jsonl · ship 1,598 + ship-end 375 + investigate 166 = 2,139 / 3,215 · same windowUser command usage remains a spike, but less extreme after including Codex/user updatesHighFrames the whole audit (Q3)
93 of 184 active repo skills were never directly invoked by a user commandpacks/*/{claude,codex}/*/SKILL.md active inventory (184) ∩ command counts (91 seen) · Jul 2026Over half the surface is not user-discoverable or is agent-only/parent-invokedHigh for direct-command count; Medium for "dead" (agent-only/library/new not separated)Approve/reject skill-inventory audit (Q5)
Agents invoked or touched skills far more often than users typed themrich transcripts · 9,125 assistant-side skill contract-load events; 3,747 distinct session-skill pairs; 1,267 recommendation/use-reference events · Mar-Jul 2026Agent use is broad and should be analyzed separately from user command habitHigh for contract-load count; Medium for recommendations (text-pattern classified)Prevents mislabeling agent-only skills as dead
"why is…" is hand-typed ~550× vs 166 /investigatehistory.jsonl+codex · 550 regex matches over 15,349 manual prompts; 166 /investigate invocations · full windowLargest shadowed intent; ~3:1 manual-to-skillMedium-High (keyword classification, not exhaustive)Approve/reject the nudge hook (Q4)
Commit-push typed ~211× despite /shiphistory.jsonl+codex · tightened match (git context, excl. DB) · full windowEnd-of-turn intent occasionally bypasses the skillMedium (looser match = ~696 with false positives)Approve/reject the CLAUDE.md nudge (Q5)
Codex is the skill-dev bench, Claude the shipping surfacecodex history · top direct commands benchmark-test-skill 82, session-triage 65, benchmark-agent-review 32, customer-discovery 32 vs Claude ship/investigate/sync · full windowTool roles are specializedHighContext only; no action

Q1 (required) — Is the evidence base sufficient for these recommendations?

Q2 (required) — Could missing context change the recommendations? (Rich assistant transcripts were parsed for skill contract loads, but token spend and semantic intent classification were not re-run.)

10. Confidence & Assumption Register

ConclusionStatusWhat would change it
User command usage is head-heavy; top 3 = 66.5%Evidence-backed (exact command counts)Nothing plausible — direct count
93 skills are "unused" by direct user commandProvisional — measured as never typed as a command; rich transcript parsing shows agents load many skills separatelyInventory classification that labels each tail skill as dead, new, library, parent-invoked, or agent-only
Agent-side skill usage is larger than user direct usageEvidence-backed for contract-loads: 9,125 events / 3,747 session-skill pairsDeduping multiple reads inside a session would lower raw events but not erase the session-pair signal
/investigate is the top shadowed intentEvidence-backed (~550 vs 166), keyword-classifiedA stricter classifier that excludes rhetorical "why" questions could lower the 550
Commit-push shadowing volumeProvisional — 211 tightened vs 696 loose; DB false positives in the loose countManual review of the ~485 delta prompts
Codex = skill-dev benchEvidence-backed (command mix)

Alternatives considered

Source coverage gaps

Downstream implications

11. Glossary Additions Gate

Proposed for research/glossary.md (flat repo — single parent glossary). Only approved terms are appended during the confirmed-page write step. Note: "manual ask" / "steering prompt" may already exist from a prior analyze-sessions run — if so, these Approve actions are no-ops.

TermDefinitionSourceCategory
skill shadowingHand-typing a freeform prompt whose intent an existing skill already covers end-to-end (e.g. typing "why is X" instead of invoking /investigate); an adoption/habit gap rather than a coverage gapanalyze-sessions skill-usage-ratesworkflow
dead tailThe set of repo skills that are never (or almost never) invoked, distinct from genuinely dead skills because it can include new, library, or indirectly-invoked skills that no user types as a commandanalyze-sessions skill-usage-ratesworkflow

Q6 (required) — Term: "skill shadowing"

Q7 (required) — Term: "dead tail"

12. Artifact Destination & Proposed File Changes

Already written this run (review-stage): this alignment page; the machine-local insights store update (.session-insights/insights.md + watermark — gitignored, not committed); and the prompt-history log under prompts/analyze-sessions/.

On approval (Stage 3), the proposed canonical writes are:

Q8 (required) — Approve the canonical artifact destination and file-change scope above?

13. Post-Approval Route

If Rec 1 is approved, the natural follow-up is update-config to wire the /investigate prompt-nudge hook. If Rec 2 is approved, route to /skill-inventory (skill-dev pack, installed ✓). Both are available in the active session.

Q9 (required) — Route after this page is confirmed?

14. Compile

Feedback-only path: select emphasize / 👎 / clarify on any section above, add notes, then compile feedback YAML here (or locally under that section) — available even with gate questions unanswered.

Final approval path: answer all 9 required questions, then compile answers.