Frontmatter
| title | feat(ai): add ticket-create skill (#10104) |
| author | tobiu |
| state | Merged |
| createdAt | Apr 20, 2026, 1:40 AM |
| updatedAt | Apr 20, 2026, 1:57 AM |
| closedAt | Apr 20, 2026, 1:57 AM |
| mergedAt | Apr 20, 2026, 1:57 AM |
| branches | dev ← feat/10104-ticket-create-skill |
| url | https://github.com/neomjs/neo/pull/10116 |

Input from Claude Opus 4.7 (Claude Code):
❋ # PR Review Summary
Status: Approved — ready for human QA
Self-Review Opening: Self-review of #10104. This implementation chose to mirror the sibling
ticket-intakeskill structure rather than invent a new shape — SKILL.md frontmatter +references/workflow +assets/template — because pattern replication is the lowest-cost way for agents to load a mental model. The aggressive shrink ofAGENTS_STARTUP.md §9and theopenapi.yamltool description was made possible by this centralization: both now point at the skill as the single source of truth for creation discipline. Key trade-offs and one in-flight self-correction below.Self-Review Detection: same persisted-memory blind spot as PRs #10114/#10115 —
query_raw_memories('#10104')returned prior tickets' matches via semantic similarity but no literal#10104hit. Manually overriding to self-review mode based on factual authorship (drafted the 3 skill files + 3 doc updates in this turn).Tech Debt Radar: skipped. This is a
feat(ai)adding a new orthogonal skill, not a framework refactor or architectural shift to existing systems. The new skill lives alongside existing lifecycle skills without touching their internals.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 92 — Faithful mirroring of theticket-intakeskill's three-file structure. Workflow file uses established numbered-section convention. Skill inventory table + §4 section added toProgressiveDisclosureSkills.mdfollow the existing pattern for lifecycle skill documentation. Did not touch the mermaid lifecycle diagram — correct call, asticket-createis orthogonal (creation trigger, not execution sequence).[CONTENT_COMPLETENESS]: 90 — SKILL.md has full frontmatter (name + description + triggers); workflow covers all 10 sections from the ticket's AC plus one addition (§10 escalate-to-discussion); template has placeholders + label rules footer. Self-correction flagged: first draft of the workflow's Fat Ticket Body Structure section omitted the "Architectural Reality" named section (whichAGENTS_STARTUP.md §9.6mandated and which I've actually been using in all my Fat Tickets this session). Caught during a re-read of the original §9 before the §9 shrink, added as a dedicated section to both the workflow and template. If I'd let that slip, the new skill would have ratified the omission and future tickets would have drifted.[EXECUTION_QUALITY]: 80 — Docs-only PR; no tests by design per commander decision (AC item #6 deferred with rationale in PR body). Docked for the in-flight omission described above — self-caught but should have been scope-complete on the first pass. No syntactic or structural errors in any file.[PRODUCTIVITY]: 90 — 5 of 6 AC items met pre-merge; AC #6 (representative test) deferred per commander decision, documented in PR body.[IMPACT]: 60 — Affects every future agent-authored ticket creation across the swarm. ReducesAGENTS_STARTUP.mdstartup cost (context-cap relief), reducesopenapi.yamltool-description weight in every session's tool list. Three compounding wins, each modest, combined meaningful.[COMPLEXITY]: 45 — 3 new files (~186 lines net added) + 3 surface updates across 3 different substrates (startup doc, MCP tool description, learn doc). Multi-surface coordination is the complexity driver, not any single file's shape.[EFFORT_PROFILE]: Quick Win — high-leverage centralization, modest scope, no code-execution path touched.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #10104
- Related Graph Nodes:
- Sibling (consumption dual):
.agent/skills/ticket-intake/— structure precedent- Origin session (ticket originator):
1db25bbe-f39d-4dcd-bb0e-bc125ce91326— captured the[enhancement]-prefix anti-pattern observation that motivated this ticket- Memory evidence behind the scope:
feedback_no_title_prefix_duplicating_labels,feedback_audit_subsystem_guides_before_architectural_claims,feedback_blocker_reserved_for_merge_breaking,feedback_challenge_prescribed_fixes,feedback_memory_before_forensics,feedback_config_service_boundary,feedback_observability_consumer_identity
🧠 Graph Ingestion Notes
[RETROSPECTIVE]: Pattern replication as a cognitive-load reducer. The choice to mirrorticket-intake's structure exactly (not "improve" it) is deliberate — agents load a skill's mental model faster when it rhymes with an already-known sibling. The same logic applies inside each skill: using the numbered-section convention from intake means the workflow file is navigable on sight. Resist the temptation to "refactor while migrating" — structural consistency has compounding value across the skill manifest.
[RETROSPECTIVE]: The in-flight "Architectural Reality section was missing" self-correction is a concrete instance of thefeedback_audit_subsystem_guides_before_architectural_claimslesson applied backward: re-reading the original §9 source-of-truth before shrinking it caught the omission that would otherwise have persisted into the skill. If I had shrunk §9 first (aggressive delete) without re-reading the numbered subsections, the Architectural Reality requirement would have vanished from the documentation ecosystem entirely. Lesson: when migrating content between substrates, do a named-element audit across both substrates before the delete, not after.
[TOOLING_GAP]: Same Self-Review Detection issue flagged on prior PRs in this session (persisted-memory query misses same-turn authorship). Not re-flagging as a novel finding; the previous review's capture stands.
[KB_GAP]: None. The skill itself is a KB gap closure.
📋 Required Actions
Zero Blockers. Zero Nits.
- Post-merge observation (unavoidable): next agent session's ticket creation should invoke the
ticket-createskill beforecreate_issuefires. The newopenapi.yamltool description directs them to it. Organic validation — if agents skip the skill anyway, the yaml directive needs strengthening or CI lint enforcement considered as a follow-up.- Optional symmetry improvement (not blocking, not filed):
ticket-intake/SKILL.mdcould add a single sentence pointer toticket-createin its intro for discoverability parity. Would complete the bidirectional dual framing. Marginal value; skippable.
Handing off to human QA per §5 of
pull-request-workflow.md. DO NOT auto-merge.
Summary
Adds
.agent/skills/ticket-create/— the creation-side dual ofticket-intake. Centralizes issue-creation discipline that was previously fragmented across 4 surfaces (create_issueMCP tool description,ticket-intakeskill (consumption-only),AGENTS_STARTUP.md §9, tribal knowledge). Every new session previously re-derived the rules from precedent; the[enhancement]-prefix anti-pattern spreading across multiple tickets is the direct evidence.What's New
.agent/skills/ticket-create/SKILL.mdticket-intake/SKILL.mdstructure.agent/skills/ticket-create/references/ticket-create-workflow.md.agent/skills/ticket-create/assets/ticket-proposal-template.mdWhat's Shrunk
AGENTS_STARTUP.md §9ai/mcp/server/github-workflow/openapi.yamlcreate_issue.descriptionRationale for yaml shrink: tool descriptions ride in every agent's tool list on every session boot — length is not free. Companion in-flight work on reducing default tool descriptions + introducing a
getDescriptiontool makes the minimum-viable description pattern the right trajectory now. Skill files are the right substrate for long-form protocol.Rationale for §9 shrink:
AGENTS_STARTUP.mdis approaching context-cap limits for some harnesses (Antigravity). Migrating the creation-specific content to the skill while keeping§9.7handoff context inline reduces startup cost for every session.What's Added to Learn Docs
learn/agentos/ProgressiveDisclosureSkills.md:### 4. ticket-create (The Creation Gate)section describing the skill's four enforcement surfacesticket-createrow in the Skill Inventory tableMermaid lifecycle diagram left unchanged — ticket-create is orthogonal to the execution flow (fires during any turn where an agent decides to file a new ticket), not a pre-sequel to
ticket-intake.Architectural Anchor Points
The skill codifies patterns observed and debugged across recent sessions:
[enhancement]/[bug]/[epic]prefix duplicates label taxonomy. Memory:feedback_no_title_prefix_duplicating_labels.md. Evidence: prior session's #10085/#10086/#10087/#10103 all carried the prefix, propagated via precedent-following despite the feedback memory existing.§9.6body requirement was preserved in the skill's Fat Ticket structure — originally omitted from the first draft, caught during review of this PR's own scope.feedback_challenge_prescribed_fixes,feedback_config_service_boundary,feedback_observability_consumer_identity,feedback_audit_subsystem_guides_before_architectural_claims.greponresources/content/issues/,issue-archive/,discussions/plusask_knowledge_base(type='ticket')as primary.AGENTS_STARTUP §9only mentionedissues+discussions; skill addsissue-archive/coverage explicitly.create_issuefires. Moved from tool description to skill so the full template with placeholders can live there.Test Deferred
AC item #6 ("a representative test: generate a new test ticket through the skill, verify it hits all the hygiene rules") deferred per commander decision. Skill is prescriptive documentation; a file-parse self-consistency test has marginal value relative to the file-count + review burden. If anti-patterns regress in future tickets, the right enforcement is either a CI lint (hook reading the markdown template against new tickets) or simply catching it in
pr-review.Test Plan
name,description,triggers)AGENTS_STARTUP.md §9shrunk; skill-pointer paragraph added; §9.7 handoff context preservedopenapi.yamlcreate_issuedescription minimized with skill pointertoolService.mjsverified — maps tool names to methods only; no description duplicationlearn/agentos/ProgressiveDisclosureSkills.mdskill inventory + new §4 section addedcreate_issue— observe organicallyRelated
.agent/skills/ticket-intake/1db25bbe-f39d-4dcd-bb0e-bc125ce91326(ticket originator; captured the[enhancement]-prefix anti-pattern observation)feedback_no_title_prefix_duplicating_labels,feedback_audit_subsystem_guides_before_architectural_claims,feedback_blocker_reserved_for_merge_breaking,feedback_challenge_prescribed_fixes,feedback_memory_before_forensics, + othersAvoided Traps
Resolves #10104
🤖 Generated with Claude Code