Skip to main content

Tag Reference

Tags use category:value format and are attached to lessons to enable filtering, scoring, and future skill aggregation.


Format

category:value
  • All lowercase
  • Letters, digits, dots, underscores, and hyphens in value
  • Validated by schema pattern: ^[a-z]+:[a-z0-9._-]+$

Multiple tags are a JSON array:

"tags": ["lang:python", "tool:pytest", "severity:hang"]

Established categories

lang — Programming language

TagWhen to use
lang:pythonPython-specific mistakes (pytest, pip, venv, import paths)
lang:typescriptTypeScript mistakes (type assertions, declaration files, tsc flags)
lang:javascriptJavaScript mistakes (ESM vs CJS, Promise, async/await)
lang:goGo mistakes (module paths, goroutine patterns)
lang:rustRust mistakes (borrow checker, cargo, lifetime)
lang:shellShell/bash mistakes (quoting, redirects, expansions)

tool — Tool or command

TagWhen to use
tool:pytestpytest flags, configuration, TTY issues
tool:gitgit stash, commit, rebase, merge edge cases
tool:npmnpm install, link, peer deps, scripts
tool:dockerDockerfile, docker-compose, container networking
tool:vimVim commands and editor behavior
tool:curlcurl flags, SSL, auth
tool:jqjq syntax and filter patterns
tool:makeMakefile syntax and PHONY targets
tool:pre-commitPre-commit hook failures and fixes
tool:biomeBiome formatter/linter config
tool:eslintESLint rules and config migration

severity — Impact level

TagWhen to use
severity:hangProcess hangs waiting for input (TTY detection, stdin)
severity:data-lossSilent data loss (files dropped, overwritten without warning)
severity:silent-failureCommand exits 0 but doesn't do what it claims
severity:errorCommand exits non-zero with a diagnostic

Severity tags affect candidate scoring:

  • severity:hang and severity:data-loss each add +1 to initial priority
  • Use severity:hang sparingly — it marks lessons that should potentially be type: 'guard'

topic — Subject area

TagWhen to use
topic:testingTest configuration, mocking patterns, test isolation
topic:authAuthentication, tokens, session handling
topic:networkingTCP, HTTP, WebSocket, port binding
topic:typesType system, generics, type guards
topic:agentsAI agent tool availability, subagent patterns
topic:importsModule resolution, import paths, circular deps
topic:asyncAsync/await, Promise, event loop
topic:ciCI pipeline, GitHub Actions, environment differences
topic:performanceMemory, CPU, profiling

platform — Runtime environment

TagWhen to use
platform:macosmacOS-specific differences (BSD tools, Homebrew)
platform:linuxLinux-specific differences (GNU tools, systemd)
platform:wslWindows Subsystem for Linux edge cases
platform:dockerDocker container environment differences

candidate — Aggregation hints

TagWhen to use
candidate:node-gotchas-skillCandidate for a future Node.js gotchas skill file
candidate:python-testing-skillCandidate for a Python testing skill file

The candidate: category is for tracking lessons that could be aggregated into a skill file in the future. It has no effect on injection.


Multi-tag examples

// Python test isolation
"tags": ["lang:python", "tool:pytest", "topic:testing"]

// Git data loss
"tags": ["tool:git", "severity:data-loss"]

// macOS-specific Chrome debugging
"tags": ["tool:chrome", "platform:macos", "topic:networking", "severity:error"]

// Cross-platform CI difference
"tags": ["topic:ci", "platform:linux", "lang:shell"]

Adding new tags

New tags can be used freely — the schema validates format (category:value) but not the specific values. Prefer extending established categories over inventing new ones. If you add a new category, document it here.