# Skill Awareness

> Always active. Tracks usage of code-craft skills across sessions. Log skill applications to enable analytics and identify gaps.

- Skill: `yanko-belov/skill-awareness` (Agent Skill)
- Install (CLI): `npx skillmds@latest add yanko-belov/skill-awareness`
- Raw SKILL.md: https://api.skillmd.com/api/skills/yanko-belov/skill-awareness/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: yanko-belov (https://skillmd.com/u/yanko-belov)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/yanko-belov/skill-awareness

---


# Skill Awareness

## Overview

**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.

## The Iron Rule

```
ALWAYS log when applying a code-craft skill. No silent applications.
```

## Usage Log

Append one JSON line to `~/.claude/skills/skill-usage.jsonl`:

```json
{"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) |

## Skill Detection Matrix

| 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` |

## Logging Protocol

After applying a skill:

```bash
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
```

## Analytics Commands

**View total usage:**
```bash
cat ~/.claude/skills/skill-usage.jsonl | jq -s 'group_by(.skill) | map({skill: .[0].skill, count: length}) | sort_by(-.count)'
```

**Recent applications:**
```bash
tail -20 ~/.claude/skills/skill-usage.jsonl | jq .
```

**Underused skills (applied < 3 times):**
```bash
cat ~/.claude/skills/skill-usage.jsonl | jq -s 'group_by(.skill) | map({skill: .[0].skill, count: length}) | map(select(.count < 3))'
```

**Never-used skills:**
```bash
# 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:**
```bash
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}))})'
```

## Available Skills Reference

### SOLID (5)
`single-responsibility`, `open-closed`, `liskov-substitution`, `interface-segregation`, `dependency-inversion`

### Core (6)
`dry`, `yagni`, `kiss`, `composition-over-inheritance`, `law-of-demeter`, `fail-fast`

### Testing (3)
`tdd`, `test-isolation`, `aaa-pattern`

### Security (3)
`input-validation`, `secrets-handling`, `auth-patterns`

### API Design (4)
`rest-conventions`, `error-responses`, `idempotency`, `api-versioning`

### Performance (3)
`n-plus-one-prevention`, `lazy-loading`, `caching`

### Code Quality (3)
`separation-of-concerns`, `encapsulation`, `immutability`

### Error Handling (2)
`exception-hierarchies`, `error-boundaries`

### Concurrency (2)
`race-conditions`, `deadlock-prevention`

## Pre-Completion Checklist

Before finishing any coding task, ask:

1. Which skills from the detection matrix applied?
2. Did I follow them?
3. Did I log each application?
4. Any violations I should flag to the user?

## The Bottom Line

**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.

