Files
ai-workflow-course/modules/24-assistive-agents/lab/label-taxonomy.md
T
claude fbec36cb67 feat(course): build out all 27 modules, capstone, scaffold, and conventions
Scaffold the course repo and author the full curriculum in dependency-chain
order, following the settled build decisions in handoff.md.

- Scaffold: course README, vendor-neutral AGENTS.md (dogfoods Module 5),
  _TEMPLATE.md (the fixed 9-section module shape), root .gitignore, ship config.
- Modules 1-2: reference exemplars (locked for tone/depth/lab style).
- Modules 3-27: full lessons + runnable labs, each following the template,
  respecting the chain, vendor/model-agnostic, with "feel the pain" labs.
- Module 8 hosting comparison web-researched and date-stamped (as of 2026-06-22),
  not written from memory; expansion-zone modules carry Verify-before-publish.
- Capstone: the full loop end to end on the running tasks-app example.

Lab code syntax-checked (Python/shell/YAML); every module has the 7 core
template sections.

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

2.2 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"
}