Context
Issue-creation logic currently lives across four disjoint surfaces:
create_issue MCP tool description — mandates a visible proposal + labeling rules
.agent/skills/ticket-intake/ — covers consumption of EXISTING tickets (validation sweep, ROI, branch-before-code), not creation
AGENTS_STARTUP.md §9 "Fat Ticket Protocol" — body-level structure (Problem / Architectural Reality / Gold Standards / Traps)
- Tribal knowledge — anti-patterns that have no canonical home (e.g.,
[enhancement] prefixes in titles duplicating label taxonomy, Origin Session ID placement, duplicate sweep via grep_search on local issue dirs, rename-in-parens scope guidance)
The fragmentation means every new session re-derives the discipline from tool descriptions + precedent-following, which perpetuates existing anti-patterns. A dedicated skill would:
- Give agents a single
view_file target at creation time
- Centralize the anti-pattern list so fixing one place fixes all future tickets
- Mirror the
ticket-intake skill's separation of concerns (intake = consume existing; create = produce new)
The Fix
Create .agent/skills/ticket-create/ with:
SKILL.md — trigger description; invoked before create_issue is called.
references/ticket-create-workflow.md — the canonical workflow:
- Pre-creation duplicate sweep (
grep_search resources/content/issues/)
- Five-stage challenge chain applied at creation time (not just intake): premise → prescription → substrate → consumer → service-boundary
- Title hygiene: NO prefix in title duplicating label taxonomy (
[enhancement] / [bug] / [epic] belong to labels, not titles); title should describe the subject, not the category
- Label rules:
ai mandatory; one primary (epic/enhancement/bug); secondary labels (architecture, documentation, etc.) as applicable
- Fat Ticket body structure: Context, The Problem, The Fix, ACs, Out of Scope, Related, Origin Session ID
- Visible proposal protocol (reinforce the MCP tool description's MANDATORY step)
- Linkage rules:
parent issue for epics, blocking / blockedBy for dependencies, Origin Session ID for A2A context
assets/ticket-proposal-template.md — the visible-proposal format agents dump into chat before calling create_issue
Acceptance Criteria
Anti-Patterns to Codify (non-exhaustive)
- Title prefix duplicating labels:
[enhancement] X when enhancement is already a label
- Skeleton tickets: one-sentence bodies without architectural context (AGENTS_STARTUP.md §9.4 already forbids but needs enforcement mechanism)
- Missing Origin Session ID: breaks A2A Contextual Bridge (§14)
- Missing duplicate sweep:
grep_search on resources/content/issues/ + resources/content/issue-archive/ + resources/content/discussions/
- Stale precedent-following: filing without applying the five-stage challenge chain
- Cross-scope bundling:
[Epic] titles for single-commit tickets (§9.2 forbids but no tooling check)
Out of Scope
- Migrating existing tickets' title prefixes (would require mass rename; separate doc ticket if worth it)
ticket-intake skill changes — that skill consumes existing tickets; creation is its dual
Related
- Sibling:
.agent/skills/ticket-intake/ — consumption dual
- AGENTS_STARTUP.md §9 — current scattered location for Fat Ticket body rules
create_issue MCP tool — current scattered location for label rules + visible proposal
- Session memories observing the fragmentation: this session's multiple ticket creations (#10103, earlier #10085/#10086/#10087 inheritances)
Origin Session ID: 1db25bbe-f39d-4dcd-bb0e-bc125ce91326
Context
Issue-creation logic currently lives across four disjoint surfaces:
create_issueMCP tool description — mandates a visible proposal + labeling rules.agent/skills/ticket-intake/— covers consumption of EXISTING tickets (validation sweep, ROI, branch-before-code), not creationAGENTS_STARTUP.md§9 "Fat Ticket Protocol" — body-level structure (Problem / Architectural Reality / Gold Standards / Traps)[enhancement]prefixes in titles duplicating label taxonomy, Origin Session ID placement, duplicate sweep viagrep_searchon local issue dirs, rename-in-parens scope guidance)The fragmentation means every new session re-derives the discipline from tool descriptions + precedent-following, which perpetuates existing anti-patterns. A dedicated skill would:
view_filetarget at creation timeticket-intakeskill's separation of concerns (intake = consume existing; create = produce new)The Fix
Create
.agent/skills/ticket-create/with:SKILL.md— trigger description; invoked beforecreate_issueis called.references/ticket-create-workflow.md— the canonical workflow:grep_search resources/content/issues/)[enhancement]/[bug]/[epic]belong to labels, not titles); title should describe the subject, not the categoryaimandatory; one primary (epic/enhancement/bug); secondary labels (architecture,documentation, etc.) as applicableparent issuefor epics,blocking/blockedByfor dependencies,Origin Session IDfor A2A contextassets/ticket-proposal-template.md— the visible-proposal format agents dump into chat before callingcreate_issueAcceptance Criteria
.agent/skills/ticket-create/SKILL.mdexists with proper frontmatter triggerreferences/ticket-create-workflow.mdcodifies the full workflow + anti-pattern listassets/ticket-proposal-template.mdprovides the visible-proposal formatcreate_issueMCP tool description updated to reference the skill as the canonical entry point[]prefix in title, labels correct, body structure, Origin Session ID present)Anti-Patterns to Codify (non-exhaustive)
[enhancement] Xwhenenhancementis already a labelgrep_searchonresources/content/issues/+resources/content/issue-archive/+resources/content/discussions/[Epic]titles for single-commit tickets (§9.2 forbids but no tooling check)Out of Scope
ticket-intakeskill changes — that skill consumes existing tickets; creation is its dualRelated
.agent/skills/ticket-intake/— consumption dualcreate_issueMCP tool — current scattered location for label rules + visible proposalOrigin Session ID: 1db25bbe-f39d-4dcd-bb0e-bc125ce91326