Files
ai-workflow-course/modules/24-assistive-agents/lab/label-taxonomy.md
T
claude 389ac2e460 style(no-slop): remove every em-dash + banned words across all modules + capstone
Apply the no-ai-slop standard (now binding in AGENTS.md): the em-dash character is
banned outright (restructured, not blind-replaced), plus the banned word/phrase
list (delve, leverage, robust, seamless, truly, unlock, etc.). 0 em-dashes remain
in modules + capstone; the only "robust" left is the planted M10 ai-change.patch
trap. Module H1 titles use a colon separator.

All deliberate teaching devices preserved; labs compile/parse (py/sh/yaml/json);
no junk. AGENTS.md updated with the hard no-slop rules.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfzV5QvtPDz8LJS3Pu5VLT
2026-06-22 23:21:09 -04:00

2.1 KiB

Label taxonomy: the triage agent's instructions

The triage agent reads this file, then reads one incoming issue, and proposes labels, a priority, and where the issue should be routed. Like the review rubric, this is committed and versioned: your triage taxonomy is a project decision, not a setting buried in some bot's web UI.

The labels below are the only labels that exist. The agent must choose from this list. If it invents a label that isn't here, the lab's triage.py rejects the whole suggestion; that rejection is a guardrail, not a bug. An agent that can mint arbitrary labels is an agent that can quietly reshape your taxonomy; keeping the allowed set in version control and validating against it is how you keep the agent inside its lane (the least-privilege idea from Module 22).

Allowed labels

Type (exactly one):

  • type:bug: something is broken or behaves wrong
  • type:feature: a request for new behavior
  • type:docs: documentation only
  • type:question: a usage question, not a code change

Priority (exactly one):

  • priority:p0: data loss, security, or the app is unusable for everyone
  • priority:p1: a serious bug with no good workaround
  • priority:p2: a real bug with a workaround, or a wanted feature
  • priority:p3: minor, cosmetic, or nice-to-have

Area (zero or more):

  • area:cli: the command-line front end (cli.py)
  • area:core: task logic (tasks.py)
  • area:docs: README and lesson text

Readiness (exactly one). This is the one that decides routing, and it's the Module 9 idea made concrete: an issue can go to a person or be handed to an agent.

  • ready:ai-ready: small, well-scoped, reproducible; safe to hand to an issue-to-PR agent (the kind of agent Module 25 builds). Route assignee_type: agent.
  • ready:needs-human: ambiguous, risky, or needs a product decision. Route assignee_type: human.

Output format

Return one JSON object, nothing else:

{
  "labels": ["type:bug", "priority:p2", "area:cli", "ready:ai-ready"],
  "assignee_type": "agent | human",
  "rationale": "one or two sentences justifying the labels and the route",
  "confidence": "high | medium | low"
}