code-hardcode-audit
Detect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.
glossary-management
Manage terminology glossary with Vale. TRIGGERS - sync terms, glossary validation, add terms, Vale vocabulary.
Full skill instructions
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.
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.
Use when:
# 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"}}'
┌─────────────────────────────────────────────────────────────────┐
│ GLOSSARY.md (SSoT) │
│ ~/.claude/docs/GLOSSARY.md │
└─────────────────────────┬───────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌───────────┐ ┌────────────────────┐
│ accept.txt │ │ Term.yml │ │ Project CLAUDE.md │
│ (Vale vocab) │ │ (subs) │ │ (bidirectional) │
└─────────────────┘ └───────────┘ └────────────────────┘
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:
<!-- SCAN_PATHS:- prefix*, **)~)Default paths (if not specified):
~/eon/*/CLAUDE.md - Top-level project CLAUDE.md files~/eon/*/*/CLAUDE.md - Package-level CLAUDE.md filesEvery term in GLOSSARY.md follows this 5-column format:
| Column | Required | Description | Example |
|---|---|---|---|
| Term | Yes | Bold term name (**Term**) | **Time-Weighted Sharpe** |
| Acronym | Yes | Abbreviation (or - if none) | TWSR |
| Definition | Yes | Clear, concise definition | Sharpe ratio for range bars |
| Unit/Range | Yes | Measurement unit or valid range | ratio, [0, 1], - |
| Projects | Yes | Comma-separated project names | alpha-forge, trading-fitness |
Example row:
| **Time-Weighted Sharpe** | TWSR | Sharpe ratio for variable-duration bars using time weights | annualized ratio | alpha-forge |
Two PostToolUse hooks handle automatic sync:
| Hook | Trigger | Action |
|---|---|---|
posttooluse-glossary-sync | Edit ~/.claude/docs/GLOSSARY.md | Sync to Vale vocabulary |
posttooluse-terminology-sync | Edit project CLAUDE.md | Merge terms → GLOSSARY.md, detect conflicts |
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 ===
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 |
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:
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 posttooluse-glossary-sync hook
Verify Vale recognizes it:
echo "The NT is important" | vale --config=~/.claude/.vale.ini
| File | Purpose |
|---|---|
~/.claude/.vale/styles/config/vocabularies/TradingFitness/accept.txt | Accepted terms (won't be flagged) |
~/.claude/.vale/styles/TradingFitness/Terminology.yml | Substitution rules (suggests canonical form) |
# 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.
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
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
This happens when Vale's glob patterns don't match the file path. The posttooluse-vale-claude-md.ts hook handles this by:
.vale.iniIf 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
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/
~/.claude/docs/GLOSSARY.md (local file)After this skill completes, check before closing:
Only update if the issue is real and reproducible — not speculative.
Detect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.
Access Cal.com API via CLI with 1Password API key. Use when user wants to list bookings, create event types, manage schedules, or.
Earthly E2E validation for YAML schema contracts. TRIGGERS - schema validation, YAML schema, schema contracts, regenerate types.
Read MetaTrader 5 log files. TRIGGERS - MT5 logs, Experts pane, indicator errors, compilation errors.
Start the asciinema chunker daemon. TRIGGERS - start daemon, resume chunker, enable backup.
Create a git commit with SR&ED (CRA tax credit) trailers. TRIGGERS - sred commit, sred, cra commit, tax credit commit, scientific research commit.
Manage credentials and secrets through Doppler for publishing and deployment workflows. Use whenever the user needs to publish Python packages.
Concurrency safety patterns for distributed pueue + mise + systemd-run job pipelines.
Diagnose Kokoro TTS issues. TRIGGERS - kokoro not working, tts diagnose, kokoro error, tts troubleshoot.
Autonomous polyglot monorepo bootstrap meta-prompt on the moon + proto + Bun stack (Nx-convergent). TRIGGERS - new monorepo, new repository, polyglot setup, scaffold repo, moon proto bootstrap, monorepo from scratch.
Discover valuable GitHub fork divergence beyond stars. TRIGGERS - fork analysis, fork intelligence, find forks
Record Claude Code sessions with asciinema. TRIGGERS - record session, asciinema record, capture terminal, demo recording.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience