Cc-skills glossary-management
Manage terminology glossary with Vale. TRIGGERS - sync terms, glossary validation, add terms, Vale vocabulary.
git clone https://github.com/terrylica/cc-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/terrylica/cc-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/doc-tools/skills/glossary-management" ~/.claude/skills/terrylica-cc-skills-glossary-management && rm -rf "$T"
plugins/doc-tools/skills/glossary-management/SKILL.mdGlossary Management
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
Overview
Manage the global terminology glossary (
~/.claude/docs/GLOSSARY.md) and its Vale integration. The glossary is the Single Source of Truth (SSoT) for terminology across all projects.
When to Use This Skill
Use when:
- Manually syncing glossary to Vale vocabulary files
- Validating glossary format and structure
- Checking for duplicate or conflicting terms across projects
- Adding new terms programmatically
- Troubleshooting Vale terminology warnings
Quick Commands
# Manual sync to Vale bun ~/.claude/tools/bin/glossary-sync.ts # Check for duplicates/conflicts across projects (invokes terminology-sync hook) bun ~/eon/cc-skills/plugins/itp-hooks/hooks/posttooluse-terminology-sync.ts <<< '{"tool_name":"Edit","tool_input":{"file_path":"/tmp/test-CLAUDE.md"}}'
Architecture
┌─────────────────────────────────────────────────────────────────┐ │ GLOSSARY.md (SSoT) │ │ ~/.claude/docs/GLOSSARY.md │ └─────────────────────────┬───────────────────────────────────────┘ │ ┌───────────────┼───────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌───────────┐ ┌────────────────────┐ │ accept.txt │ │ Term.yml │ │ Project CLAUDE.md │ │ (Vale vocab) │ │ (subs) │ │ (bidirectional) │ └─────────────────┘ └───────────┘ └────────────────────┘
SCAN_PATHS Configuration
The terminology sync hook uses
SCAN_PATHS to discover project CLAUDE.md files. This is configured via an HTML comment in GLOSSARY.md:
<!-- SCAN_PATHS: - ~/eon/*/CLAUDE.md - ~/eon/*/*/CLAUDE.md - ~/.claude/docs/GLOSSARY.md -->
Format rules:
- Must be an HTML comment starting with
<!-- SCAN_PATHS: - Each path on its own line with
prefix- - Supports glob patterns (
,*
)** - Paths are relative to home directory (
)~
Default paths (if not specified):
- Top-level project CLAUDE.md files~/eon/*/CLAUDE.md
- Package-level CLAUDE.md files~/eon/*/*/CLAUDE.md
Table Schema (5 Columns)
Every term in GLOSSARY.md follows this 5-column format:
| Column | Required | Description | Example |
|---|---|---|---|
| Term | Yes | Bold term name () | |
| Acronym | Yes | Abbreviation (or if none) | |
| Definition | Yes | Clear, concise definition | |
| Unit/Range | Yes | Measurement unit or valid range | , , |
| Projects | Yes | Comma-separated project names | |
Example row:
| **Time-Weighted Sharpe** | TWSR | Sharpe ratio for variable-duration bars using time weights | annualized ratio | alpha-forge |
Automatic Sync (Hooks)
Two PostToolUse hooks handle automatic sync:
| Hook | Trigger | Action |
|---|---|---|
| Edit | Sync to Vale vocabulary |
| Edit project | Merge terms → GLOSSARY.md, detect conflicts |
Manual Operations
Sync Glossary to Vale
When automatic sync fails or you need to force a refresh:
bun ~/.claude/tools/bin/glossary-sync.ts
Output:
=== Glossary Bidirectional Sync === Source: /Users/you/.claude/docs/GLOSSARY.md Found 25 acronyms, 24 substitutions Updated: .vale/styles/config/vocabularies/TradingFitness/accept.txt Total terms: 27 Updated: .vale/styles/TradingFitness/Terminology.yml Substitution rules: 24 Updated timestamp: 2026-01-22T00:00:00Z === Sync Complete ===
Validate Glossary Format
Check that GLOSSARY.md follows the correct table format:
# Check required columns grep -E '^\| \*\*[^|]+\*\* \|' ~/.claude/docs/GLOSSARY.md | head -5 # Verify table structure (should have | Term | Acronym | Definition | Unit/Range | Projects |) head -25 ~/.claude/docs/GLOSSARY.md
Expected format:
| Term | Acronym | Definition | Unit/Range | Projects | | ------------------------ | ------- | --------------------------- | ---------- | ----------- | | **Time-Weighted Sharpe** | TWSR | Sharpe ratio for range bars | ratio | alpha-forge |
Check for Duplicates
Scan all project CLAUDE.md files for terminology conflicts:
# Full duplicate check (scans ~/eon/*/CLAUDE.md) bun ~/eon/cc-skills/plugins/itp-hooks/hooks/posttooluse-terminology-sync.ts <<< '{"tool_name":"Edit","tool_input":{"file_path":"/tmp/test-CLAUDE.md"}}'
Conflict types detected:
- Definition conflict: Same term, different definitions
- Acronym conflict: Same term, different acronyms
- Acronym collision: Same acronym used for different terms
Add New Term
To add a new term to the glossary:
-
Edit GLOSSARY.md directly:
| **New Term** | NT | Definition of the new term | - | project-name | -
Sync will auto-trigger via
hookposttooluse-glossary-sync -
Verify Vale recognizes it:
echo "The NT is important" | vale --config=~/.claude/.vale.ini
Vale Integration
Files Generated
| File | Purpose |
|---|---|
| Accepted terms (won't be flagged) |
| Substitution rules (suggests canonical form) |
Running Vale
# Check a single file (run from file's directory for glob patterns to match) cd ~/eon/trading-fitness && vale --config=~/.claude/.vale.ini CLAUDE.md # Check all CLAUDE.md files find ~/eon -name "CLAUDE.md" -exec sh -c 'cd "$(dirname "$1")" && vale --config=~/.claude/.vale.ini "$(basename "$1")"' _ {} \;
Important: Vale glob patterns in
.vale.ini (like [CLAUDE.md]) are relative to cwd. Always run Vale from the file's directory or use absolute paths with matching glob patterns.
Troubleshooting
Terms Not Being Recognized
-
Check sync timestamp:
grep "Last Sync" ~/.claude/docs/GLOSSARY.md -
Force manual sync:
bun ~/.claude/tools/bin/glossary-sync.ts -
Verify Vale config path:
cat ~/.claude/.vale.ini | grep StylesPath
Hook Not Triggering
-
Check hook is registered:
grep "glossary-sync" ~/.claude/settings.json -
Verify hook file exists:
ls -la ~/.claude/plugins/marketplaces/cc-skills/plugins/itp-hooks/hooks/posttooluse-glossary-sync.ts
Vale Output Shows "0 files" But File Exists
This happens when Vale's glob patterns don't match the file path. The
posttooluse-vale-claude-md.ts hook handles this by:
- Walking up from the file's directory to find
.vale.ini - Changing to the file's directory before running Vale
- Stripping ANSI escape codes for reliable output parsing
If running Vale manually, ensure you're in the file's directory:
# Wrong - may show "0 files" vale --config=/path/to/.vale.ini /absolute/path/to/CLAUDE.md # Correct - cd first cd /absolute/path/to && vale --config=/path/to/.vale.ini CLAUDE.md
Duplicate Vocabulary Directories
If you see Vale inconsistencies:
# Check for duplicate vocab dirs (should only have config/vocabularies/) ls -la ~/.claude/.vale/styles/ # Remove any stale Vocab/ directory rm -rf ~/.claude/.vale/styles/Vocab/
References
- Vale Documentation
- GLOSSARY.md:
(local file)~/.claude/docs/GLOSSARY.md - itp-hooks CLAUDE.md
Post-Execution Reflection
After this skill completes, check before closing:
- Did the command succeed? — If not, fix the instruction or error table that caused the failure.
- Did parameters or output change? — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
- Was a workaround needed? — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.
Only update if the issue is real and reproducible — not speculative.