Creating GitHub issues and Jira tickets
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Filing a ticket before work begins introduces
iru-create-github-issue and
iru-create-jira-ticket as the two entry points that turn a rough idea
into a tracked, actionable ticket. This page goes one level deeper: exactly what information each one asks for,
how the drafted ticket is structured, and which skills actually run behind the scenes to produce it.
Both skills exist so a ticket is immediately actionable by the typical development cycle once filed — grounded in the real codebase rather than a guess, and carrying the same structured information every time regardless of who’s filing it or how much detail they thought to include.
What you provide
Neither skill asks everything up front in one long form — each question is asked only when the previous answer still leaves something unresolved, and every question beyond the task’s purpose is optional.
| Information | Required | Tracker | Notes |
|---|---|---|---|
Purpose (what problem this solves, or what capability it adds) |
Yes |
Both |
Free text. Can be given upfront as a short description argument
( |
Acceptance criteria |
No |
Both |
Folded into the purpose answer if the user already has any in mind; never invented if they don’t. |
Linked URL(s) |
No |
Both |
Design docs, discussions, prior art. Each is fetched ( |
Attached file(s)/document(s) |
No |
Both |
Local paths — screenshots, logs, specs, mockups. Read directly (including images and PDFs) and summarized. |
Related ticket(s)/issue(s) |
No |
Both |
Confirmed against the real tracker ( |
Epic |
No |
Jira only |
Confirmed by key, then explored the same way |
Organization-specific context |
No |
Jira only |
Gathered by delegating to |
Due date |
No |
Both |
Free text, normalized to an absolute date (e.g. "next Friday" → the actual date). |
Importance |
A level is always recorded |
Both |
One of trivial, minor, important, blocking, asked as a fixed choice. Defaults to minor for an ordinary task, or blocking when the purpose reads as a bug or incident actively affecting production — either way, the user confirms or overrides rather than it being assigned silently. |
Label (GitHub) / Project + issue type (Jira) |
Resolved automatically |
Both |
Classified from the stated purpose (bug vs. feature/enhancement signal words) and matched against this repository’s real label set, or this Jira instance’s real project/issue-type configuration — never an invented label or issue type. The user is only asked to pick when the match is genuinely ambiguous or can’t be listed. |
How the ticket is structured
Whatever was gathered above is drafted into a consistent shape before anything is filed — shown to the user in full for confirmation, never filed silently:
| Section | Content |
|---|---|
Title / Summary |
A concise, imperative one-liner (e.g. "Add retry support to the HTTP client"). |
Summary |
The purpose and motivation, in the user’s own terms. |
Context |
Grounded in |
Acceptance criteria |
A short bulleted list, only if the user gave any or they can be reasonably inferred — omitted entirely rather than invented. |
Task details |
Due date (if given), importance, and an estimated difficulty — the skill’s own assessment of how hard the
task is to implement, grounded in everything gathered: how much of the codebase it touches, whether it needs
new abstractions or unfamiliar dependencies, and the scope described in the purpose/context. One of very
easy, easy, medium, hard, very hard, extreme, or impossible, plus a one-line rationale
(e.g. "medium — touches two existing classes with clear precedent elsewhere in the codebase, no new
dependencies"). |
References |
Summarized URLs/file contents, confirmed related-ticket links, and — for Jira — the epic (if any) and whatever
|
Skills executed
| Diagram block | Skill(s) | What happens |
|---|---|---|
|
|
|
Ask purpose / additional context / due date / importance |
|
|
|
|
|
Resolve project + issue type (Jira) / Classify + label (GitHub) |
|
|
Draft + confirm + file |
|
Where this fits
Filing a ticket this way is entirely optional — nothing in
the typical development cycle requires going
through either skill first. /iru-issue <ticket-id> and /iru-plan <ticket-id> work exactly the same way
against a ticket filed by hand, or even against no ticket at all (a free-form description). What these two
skills add is consistency: every draft is grounded in the real codebase and asks for the same structured
information, rather than depending on whoever’s filing it to remember what a well-formed ticket needs.
See also
-
Filing a ticket before work begins — the shorter, one-diagram version of this same workflow, alongside the catalog’s other common workflows.
-
Customizing Jira ticket creation — how to extend
iru-jira-custom-contextwith organization-specific questions. -
Ticket Intake — the purpose group these two skills belong to.
-
Create GitHub Issue, Create Jira Ticket, Jira Custom Context, Explore — detail pages for every skill this workflow runs.