From tl
Use when a term is ambiguous or project-specific and needs a canonical definition. Also runs terminology audits to find stale or orphaned glossary entries. Keywords: terminology, glossary, definition, disambiguation, domain, terms, vocabulary, audit, stale.
How this skill is triggered — by the user, by Claude, or both
Slash command
/tl:domain <term> = <definition> | query: <term> | audit<term> = <definition> | query: <term> | auditThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are running the **domain** skill — managing project-specific terminology in `.claude/tackline/memory/project/domain.md`. Input: **$ARGUMENTS**
You are running the domain skill — managing project-specific terminology in .claude/tackline/memory/project/domain.md. Input: $ARGUMENTS
query: prefix)audit).claude/tackline/memory/project/ directly instead$ARGUMENTS
|
v
Phase 0: Mode Detection
|
+---> capture --> Phase 1C: Resolve entry --> Phase 2C: Write + verify
|
+---> query --> Phase 1Q: Look up term --> emit result
|
+---> audit --> Phase 1A: Scan + cross-check --> Phase 2A: Remove stale --> pipe-format output
Parse $ARGUMENTS and determine mode. Stop here if mode cannot be determined.
| Signal in $ARGUMENTS | Mode |
|---|---|
Starts with query: or query | query |
Is exactly audit or starts with audit | audit |
Contains =, means, is, or refers to | capture |
| Any other non-empty input | capture (default — treat as term definition) |
| Empty | Ask: "Did you want to capture a term, query an existing one, or run an audit?" then stop |
State the detected mode before proceeding: "Mode: capture / query / audit"
Extract:
If the input is too vague to extract a clear term and definition, ask one clarifying question before continuing.
Read .claude/tackline/memory/project/domain.md if it exists.
## <Term> heading (case-insensitive).If the term already exists:
If the term is new:
Use Grep to search the codebase for the term (case-insensitive). Collect up to 3 file:line references where the term appears in a meaningful context (not just comments or string literals).
If examples are found, include them under **Examples** in the entry. If none found, omit the **Examples** line.
Entry format:
## <Term>
**Definition**: <one sentence>
**Disambiguation**: <when ambiguous, clarify which meaning is canonical here>
**Examples**: <file:line, file:line> (omit this line if no examples)
**Added**: YYYY-MM-DD
If creating the file for the first time, write the header first:
# Project Domain Terminology
Terms and disambiguation rules for this project. Maintained by `/domain`.
---
Then append the entry below the separator.
If the term exists, use Edit to replace the existing entry block (from its ## <Term> heading to the blank line before the next heading or end of file). Update **Added** only if the definition changed.
If the term is new, append using Edit (or Write if creating the file).
After writing, read .claude/tackline/memory/project/domain.md and confirm the term appears under a ## <Term> heading. State: "Verified: is present in domain.md."
If the read does not find the term, report the failure and do not claim success.
Emit a one-line summary: "Captured: — ."
Strip the query: prefix and trim whitespace to get the lookup term.
Read .claude/tackline/memory/project/domain.md.
## <Term> heading (case-insensitive).
## headings from the file as available terms.Goal: Find entries in domain.md that are no longer referenced in the codebase — potential orphans or stale definitions.
If .claude/tackline/memory/project/domain.md does not exist: "No domain file found. Nothing to audit." Exit.
Extract all terms from ## headings. State: "N terms found in domain.md."
For each term, run Grep (case-insensitive) across the codebase (excluding .claude/tackline/memory/). Record:
.claude/tackline/memory/## Domain Audit: Stale Entry Report
**Source**: /domain (audit)
**Input**: audit of .claude/tackline/memory/project/domain.md
**Pipeline**: (none — working from direct input)
### Items (N)
1. **<Term>** — stale: no codebase references found
- source: .claude/tackline/memory/project/domain.md
- confidence: LIKELY
2. **<Term>** — active: found in <file:line>
- source: <file:line>
- confidence: CONFIRMED
### Summary
<N-stale> of <N-total> terms appear to have no codebase references and may be stale or obsolete. <N-active> terms are actively used.
Use LIKELY (not CONFIRMED) for stale entries — absence of grep hits does not guarantee the term is truly unused (it may appear in non-text assets or external docs).
Gate: Only proceed if stale entries were found AND the user confirms removal.
After emitting the audit findings, ask: "Remove N stale entries? (yes / no / list which ones)"
On confirmation:
For each confirmed stale entry, use Edit to remove the ## <Term> block (heading through the blank line before the next heading). Preserve all active entries exactly.
Verify removal:
After editing, read .claude/tackline/memory/project/domain.md and confirm none of the removed terms appear as ## headings. State: "Verified: removed terms are no longer present."
If any removed term still appears, report the failure explicitly.
.claude/tackline/memory/project/domain.md. Do not write to any other location.**Added** fields.npx claudepluginhub tyevans/tackline --plugin tacklineCreates and maintains a Markdown glossary of project-specific terms in docs/glossary.md to prevent ambiguities. Identifies key terms from code/docs, defines with context, links to code, and keeps updated. Useful for team vocabulary alignment.
Captures or updates domain terms in CONTEXT.md with a canonical definition and NOT-reference to prevent meaning drift. Triggers on fuzzy words during interviews, specs, or reviews.
Bootstraps or extends GLOSSARY.md with user-curated domain term definitions, surfaced by identifier frequency. Idempotent: re-running adds new terms without overwriting. Prevents agent term hallucination.