Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Curate and apply canonical terminology across Spec Kitty missions. Triggers: "update the glossary", "use canonical terms", "check terminology", "add a term", "fix term drift", "glossary conflicts", "resolve ambiguity", "review terminology consistency". Does NOT handle: runtime loop advancement, setup or repair requests, agent configuration, or direct code implementation tasks.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 131% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 170% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 122% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 151% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 25% | 0% |
Maintain semantic integrity by curating the project glossary, detecting term drift, and ensuring that all mission artifacts use canonical terminology.
Use this skill when the user wants to inspect, update, or enforce glossary terms. Do not use it for purely operational tasks like advancing the runtime loop or repairing an installation.
The glossary is a semantic integrity runtime — a 5-layer middleware pipeline that intercepts mission step execution, extracts terms from inputs/outputs, checks them against stored definitions, and can block generation if terminology conflicts are unresolved.
Terms have a surface (normalized to lowercase), definition, scope, confidence (0.0–1.0), and status (draft/active/deprecated).
Seed files (.kittify/glossaries/{scope}.yaml) provide initial definitions. Event logs (.kittify/events/glossary/*.events.jsonl) record all runtime mutations as append-only JSONL. State is reconstructed by replaying seed files then events.
| Precedence | Scope | Use For | |:---:|---|---| | 0 (highest) | mission_local | Feature-specific jargon | | 1 | team_domain | Team/org conventions | | 2 | audience_domain | Industry/domain standards | | 3 (lowest) | spec_kitty_core | Framework terms (lane, work package, mission) |
When a mission primitive executes (via @glossary_enabled decorator or GlossaryAwarePrimitiveRunner), this pipeline processes the step:
Layer 1 — Term Extraction. Scans step input/output for terminology using multiple methods (in priority order):
| Method | Confidence | Example | |---|:---:|---| | Metadata hints (glossary_watch_terms) | 1.0 | Explicit list of terms to monitor | | Quoted phrases | 0.8 | "work package" in text | | Acronyms (2-5 uppercase) | 0.8 | WP, API | | Casing patterns (snake_case, CamelCase) | 0.8 | worktree_node, WorkspaceManager | | Repeated nouns (3+ occurrences) | 0.5 | Frequent domain words |
Emits TermCandidateObserved events.
Layer 2 — Semantic Check. Resolves each extracted term against the scope hierarchy and classifies conflicts:
| Conflict Type | Trigger | Severity | |---|---|---| | UNKNOWN | Term not in any scope | Varies by confidence + criticality | | AMBIGUOUS | 2+ active senses for same surface | HIGH in critical steps | | INCONSISTENT | Output contradicts glossary definition | LOW (informational) | | UNRESOLVED_CRITICAL | Unknown term in critical step, low confidence | HIGH |
Emits SemanticCheckEvaluated events.
Layer 3 — Clarification (runs BEFORE the gate). Users get a chance to resolve conflicts before generation is blocked:
custom definition, or defer
Emits GlossaryClarificationRequested, GlossaryClarificationResolved, and GlossarySenseUpdated events.
Layer 4 — Generation Gate. Evaluates whether to block based on strictness:
| Strictness | Behavior | |---|---| | off | Never block | | medium (default) | Block only HIGH severity conflicts | | max | Block any unresolved conflict |
Strictness resolved via 4-tier precedence: runtime flag > step metadata > mission config > global default (.kittify/config.yaml).
If blocking: saves a checkpoint (SHA256 input hash, scope versions, retry token), emits StepCheckpointed and GenerationBlockedBySemanticConflict events, then raises BlockedByConflict.
Layer 5 — Resume. For retry after a block:
Individual mission steps can control glossary behavior via metadata:
yaml# In step definition glossary_check: enabled # or "disabled" to skip this step glossary_check_strictness: max # override strictness for this step glossary_watch_terms: # explicit terms to monitor (confidence 1.0) - work package - lane glossary_aliases: # map synonyms to canonical forms task: work package status: lane glossary_exclude_terms: # terms to ignore - the - a
| Event | When | Effect | |---|---|---| | GlossaryScopeActivated | Scope loaded at runtime | Informational | | TermCandidateObserved | Term extracted from text | Records extraction | | SemanticCheckEvaluated | Semantic check completes | Records findings | | GlossaryClarificationRequested | Conflict needs resolution | Creates pending conflict | | GlossaryClarificationResolved | User selects a sense | Promotes selected sense | | GlossarySenseUpdated | Term added/definition changed | Updates store | | GenerationBlockedBySemanticConflict | Gate blocks generation | Records block | | StepCheckpointed | State saved before block | Enables resume |
All events are append-only in .kittify/events/glossary/{mission-id}.events.jsonl.
python# 1. Decorator (simplest) @glossary_enabled(repo_root=Path(".")) def my_primitive(context): return {"result": "ok"} # 2. Function processor processor = attach_glossary_pipeline(repo_root, runtime_strictness, interaction_mode) processed_context = processor(context) # May raise BlockedByConflict # 3. Runner class runner = GlossaryAwarePrimitiveRunner(repo_root, runtime_strictness) result = runner.execute(primitive_fn, context)
The BlockedByConflict exception carries the conflicts list, strictness mode, and a user-facing message. Callers should catch it, present the conflicts, and offer resolution before retrying.
Identify the glossary state for the current project.
What to check:
.kittify/glossaries/ (one YAML per scope).kittify/events/glossary/ (JSONL, event-sourced)Commands:
bashspec-kitty glossary list spec-kitty glossary list --scope spec_kitty_core spec-kitty glossary list --status active --json
Expected outcome: You know which scopes are populated and whether event logs contain runtime mutations.
The glossary gates mission execution through the strictness system.
Commands:
bashspec-kitty glossary conflicts spec-kitty glossary conflicts --unresolved spec-kitty glossary conflicts --strictness max --mission 012-documentation-mission
Expected outcome: You understand why a conflict blocked the runtime, or you can confirm no blocking conflicts exist.
Adding or editing terms: Edit the seed file for the appropriate scope.
Choose the scope by term ownership:
mission_local.yamlteam_domain.yamlaudience_domain.yamlspec_kitty_core.yaml (rarely edited)Rules: surface must be lowercase/trimmed; status is active, deprecated, or draft; confidence is 0.0–1.0.
Seed file format:
yamlterms: - surface: <lowercase trimmed string> definition: <non-empty string> confidence: <float 0.0-1.0> # default 1.0 status: <active|deprecated|draft> # default draft
Status lifecycle: draft → (promote) → active → (retire) → deprecated → (re-draft) → draft. Deprecated senses are excluded from resolution but remain in event history.
Resolving conflicts interactively:
bashspec-kitty glossary resolve <conflict_id> spec-kitty glossary resolve <conflict_id> --mission 012-docs
The resolver presents candidate senses. You can select one, enter a custom definition, or defer. Custom definitions emit both a GlossaryClarificationResolved and a GlossarySenseUpdated event.
Expected outcome: The glossary reflects intended terminology and runtime- blocking conflicts are resolved.
Semantic drift occurs when artifacts gradually diverge from glossary definitions. See references/semantic-drift-examples.md for six concrete drift patterns.
Detection:
spec-kitty glossary list --json and compare definitions against spec,plan, and task files
spec-kitty glossary conflicts --unresolved for terms the runtime flaggedcanonical "work package")
Correction:
disambiguation
Prevention:
medium or max so the runtime catches conflicts earlyglossary_watch_terms in step metadata for high-value termsglossary_aliases to map known synonyms to canonical formsConsistency checklist:
Expected outcome: Terminology is consistent across all mission artifacts and the glossary remains a living, enforced contract.
references/glossary-field-guide.md -- Seed file schema, scope precedence, status lifecycle, event-sourcing mechanics, and CLI quick referencereferences/semantic-drift-examples.md -- Concrete drift patterns with detection and correction strategiesOther measured skills in the registry, with their headline benchmark lift.