tag-picklisted
Install: claude install-skill ztnkv/personal-operating-system
# tag-pick
Service skill — picks tags for a memory entry. Called from `memory-write`.
## Main job
Prevent logical and lexical duplicates in the tag dictionary. Anti-examples: `psychology` and `psychotherapy`, `work` and `career`, `sport` and `training`, `food` and `nutrition`. Each such pair is either two different meanings (and then they need an explicit "not to be confused with") or the same meaning (and then one is redundant).
## Tag hierarchy
The `tags.md` dictionary is a **three-level tree**:
- **L1** — top category (psychology, family, work, hobby, …). Few of them, ~10.
- **L2** — sub-category inside an L1 (scripts, fear, side-project, games, books, …).
- **L3** — concrete object (a specific game title, a specific book, …). Optional. Appears only when a specific entity recurs.
In an entry's `frontmatter`, tags are stored as a **flat array** — the hierarchy lives only visually in `tags.md`.
An entry usually covers **at least two levels**: L1 + something specific (L2 or L3). L1 only is too broad; L2/L3 only loses the top-level slice.
Example: an episode of fear before a client request in a side-project → `[psychology, fear, work, side-project]` — two L1s and two L2s, four tags total.
## Algorithm
### Step 1. Read the dictionary in full
Read `memory/tags.md` end-to-end. Do not use grep, do not match by substring — you need to see the whole tree to catch semantic overlaps.
### Step 2. Pick candidates
Based on the title, body, and dialog context, pick 2–5 tags: