skill-awareness
Always active. Tracks usage of code-craft skills across sessions. Log skill applications to enable analytics and identify gaps.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Always active. Tracks usage of code-craft skills across sessions. Log skill applications to enable analytics and identify gaps.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | skill-awareness |
| description | Always active. Tracks usage of code-craft skills across sessions. Log skill applications to enable analytics and identify gaps. |
Track every skill application to build a practice record.
When you apply any code-craft skill, log it. This creates a persistent record across Claude Code and OpenCode sessions for analytics, identifying underused skills, and measuring improvement.
ALWAYS log when applying a code-craft skill. No silent applications.
Append one JSON line to ~/.claude/skills/skill-usage.jsonl:
{"ts":"2026-01-22T10:30:00Z","skill":"single-responsibility","agent":"opencode","project":"/path/to/project","ctx":"Split UserManager into UserAuth and UserProfile"}
| Field | Value |
|---|---|
ts | ISO 8601 timestamp |
skill | Skill name (kebab-case) |
agent | claude-code or opencode |
project | Working directory path |
ctx | Brief description of application (< 100 chars) |
| If you're doing... | Check these skills |
|---|---|
| Creating/modifying classes | single-responsibility, open-closed, composition-over-inheritance, encapsulation |
| Inheritance hierarchy | liskov-substitution, composition-over-inheritance |
| Adding dependencies | dependency-inversion, interface-segregation |
| Error handling | fail-fast, exception-hierarchies, error-boundaries |
| Writing API endpoints | rest-conventions, error-responses, api-versioning, idempotency, input-validation |
| Database queries | n-plus-one-prevention, caching, lazy-loading |
| Writing tests | tdd, test-isolation, aaa-pattern |
| Handling secrets/auth | secrets-handling, auth-patterns, input-validation |
| Concurrent operations | race-conditions, deadlock-prevention, idempotency |
| Copy-pasting code | dry |
| Adding "future" features | yagni, kiss |
| Complex logic | kiss, separation-of-concerns, law-of-demeter |
| Modifying state | immutability, encapsulation |
After applying a skill:
echo '{"ts":"'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'","skill":"SKILL_NAME","agent":"AGENT","project":"PROJECT_PATH","ctx":"BRIEF_CONTEXT"}' >> ~/.claude/skills/skill-usage.jsonl
View total usage:
cat ~/.claude/skills/skill-usage.jsonl | jq -s 'group_by(.skill) | map({skill: .[0].skill, count: length}) | sort_by(-.count)'
Recent applications:
tail -20 ~/.claude/skills/skill-usage.jsonl | jq .
Underused skills (applied < 3 times):
cat ~/.claude/skills/skill-usage.jsonl | jq -s 'group_by(.skill) | map({skill: .[0].skill, count: length}) | map(select(.count < 3))'
Never-used skills:
# Compare logged skills against all 31
comm -23 <(ls ~/.claude/skills/ | grep -v '\.' | sort) <(cat ~/.claude/skills/skill-usage.jsonl | jq -r '.skill' | sort -u)
Usage by project:
cat ~/.claude/skills/skill-usage.jsonl | jq -s 'group_by(.project) | map({project: .[0].project, skills: (group_by(.skill) | map({skill: .[0].skill, count: length}))})'
single-responsibility, open-closed, liskov-substitution, interface-segregation, dependency-inversion
dry, yagni, kiss, composition-over-inheritance, law-of-demeter, fail-fast
tdd, test-isolation, aaa-pattern
input-validation, secrets-handling, auth-patterns
rest-conventions, error-responses, idempotency, api-versioning
n-plus-one-prevention, lazy-loading, caching
separation-of-concerns, encapsulation, immutability
exception-hierarchies, error-boundaries
race-conditions, deadlock-prevention
Before finishing any coding task, ask:
Every skill application gets logged. No exceptions.
This builds a record of practice, reveals blind spots, and enables continuous improvement. When in doubt about whether a skill applies—log it and note the uncertainty.
Use when writing tests. Use when test structure is unclear. Use when arrange/act/assert phases are mixed.
Use when designing or modifying APIs. Use when adding breaking changes. Use when clients depend on API stability.
Use when implementing authentication. Use when storing passwords. Use when asked to store credentials insecurely.
Use when same data is fetched repeatedly. Use when database queries are slow. Use when implementing caching without invalidation strategy.
Use when tempted to use class inheritance. Use when creating class hierarchies. Use when subclass needs only some parent behavior.
Use when acquiring multiple locks. Use when operations wait for each other. Use when system hangs without crashing.