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
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 wrongtype:feature— a request for new behaviortype:docs— documentation onlytype:question— a usage question, not a code change
Priority (exactly one):
priority:p0— data loss, security, or the app is unusable for everyonepriority:p1— a serious bug with no good workaroundpriority:p2— a real bug with a workaround, or a wanted featurepriority: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). Routeassignee_type: agent.ready:needs-human— ambiguous, risky, or needs a product decision. Routeassignee_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"
}