ticket
Skill1 starsChanged 34 days agoMITView on GitHub
File (or find) the tracker ticket for a unit of work: dedupe-search first, create only if nothing covers it, set sprint and lane, return the key ("already tracked as X" is success). Fire when work starts or is decided with no known ticket, or on "file a ticket for this". Never speculative or bulk. NOT /triage (decides which of several findings deserve a ticket) or closing tickets.
23 other projects use a version of this.
Adopted by
Most recently taken up by
- infenia/yuktatheir own version, first seen Nov 8, 2026
- peterpme/skillstheir own version, first seen Nov 8, 2026
- Mrbaeksang/skillstheir own version, first seen Nov 8, 2026
- kyle-chalmers/ticketwrighttheir own version, first seen Nov 8, 2026
- 0xfurai/peekapingtheir own version, first seen Nov 1, 2026
- codingpains/skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use orchestrate, retro and 4 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
varun29ankuSSkillorchestrate
This skill should be used when the user asks to 'orchestrate a task', 'break down work into parallel agents', 'coordinate subtasks', 'run agents in parallel', or mentions 'multi-agent'. Decomposes complex tasks into tracked subtasks, dispatches parallel subagents, and coordinates until completion.
Also in 4 projects that use this
AWSSkillretro
Conduct a retrospective on a coding session.
Also in 3 projects that use this
AWSSkillship
Finalize dev work on an issue branch — update docs, push, and open a PR.
Also in 3 projects that use this
GoogleSkillprototype
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
Also in 3 projects that use this
Microsoft AzureSkillverify
End-to-end app testing pipeline for browser-based web apps on cloud browsers via Azure Playwright Workspaces: verify the live app, author tests for working flows, heal failing tests, then re-run with video and produce one consolidated report. Three phases (app verification, test authoring, test healing) plus a scoped final sanity run; each phase emits a sub-report. Use when asked to "verify my app", "make sure my app works and has good test coverage", "do a full QA pass", "add tests where I'm missing coverage", "fix failing tests and add new ones", "smoke test before deploy", "QA my deployment", or any combined verify-and-test ask. Requires Azure CLI (`az login`) and a Playwright Workspace resource ID — bootstraps configs on first invocation. Browser-based web apps with Playwright only — not for unit/API tests, native mobile/desktop, load/perf, or full accessibility audits.
Also in 3 projects that use this
SentrySkillreview
Fixture review skill.
Also in 3 projects that use this
Other versions23 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 23
- 0xfurai/peekaping★ 1.2ksame name
- kjnez/claude-code-django★ 177same name
- peterpme/skills★ 28same name
- ConnorGriffin/skills★ 21same name
- kyle-chalmers/ticketwright★ 4same name
- a-saven/agent-skills★ 2same name
- AaravChadha/acstack★ 2same name
- gingerminds/claude-skills★ 2same name
- codingpains/skills★ 1same name
- HoussemDjeghri/self-review★ 1same name
13 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository56 other files it gives its agents.
- autopilotSkill
- before-afterSkill
- bigpictureSkill
- blast-radiusSkill
- brainstormSkill
- compoundSkill
- confidence-checkSkill
- contextualizeSkill
- create-ship-skillSkill
- create-skillSkill
- curateSkill
- debugSkill
- deep-researchSkill
- devtoolsSkill
- distillSkill
- done-checkSkill
- doneSkill
- double-checkSkill
- envsetSkill
- explainSkill
- fortifySkill
- goSkill
- handoffSkill
- harness-auditSkill
- interviewSkill
- matrixSkill
- mockupSkill
- mutateSkill
- notesSkill
- postmortemSkill
- presentSkill
- qaSkill
- readableSkill
- recommendSkill
- reportSkill
- retireSkill
- review-planSkill
- scoutSkill
- sec-reviewSkill
- setup-ticketingSkill
- setup-worktreesSkill
- spec-checkSkill
- specSkill
- stepsSkill
- successionSkill
- super-reviewSkill
- tangentSkill
- tddSkill
- tend-memorySkill
- testSkill
- tldrSkill
- triageSkill
- waitSkill
- workSkill
- worth-itSkill
- wrap-upSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 4 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 20 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 28
Never bulk-file — route a list through a triage pass first: If the input is several findings rather than one decided unit of work, a …
- Distinctive: line 40
Read the cwd repo's CLAUDE.md, walking up to the repo root.
- Distinctive: line 56
Search the tracker for anything already covering this scope before drafting anything.
- Very specific: line 61
Keep the payload small — a wide Jira search overflows context fast.
- Distinctive: line 110
Lane: Use a status the board actually maps to a visible column.
- Very specific: line 116
Default lane is In Progress when the work starts now (the build-it-now case).
- Distinctive: line 130
When chained, that key is the return value: the caller uses it to link the PR, comment progress, and close the ticket at the end of the …
“Common” is measured: kept by at least 6 in 10 of the 20 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
A unit of work should exist on the board before it exists in prod. The failure this prevents is quiet: work that starts ad-hoc — a hotfix, a build off a Slack ask, a follow-up decided mid-session — never gets a ticket, so it's invisible to everyone who reads the board, and the close-out step that would have tracked it has nothing to close. The standing rule: a decided follow-up gets FILED in the session it is decided; a comment on some other ticket is durable but UNTRACKED.
The discipline is search before create. Most of the time the right outcome is "already tracked as X" — that's the skill succeeding, not failing.
0. Guard
- Never file speculatively. A ticket is for work that is being done or has been decided — not for an idea, a maybe, or a caveat.
- Never bulk-file — route a list through a triage pass first. If the input is
several findings rather than one decided unit of work, a batch-triage step
(
/triage, if installed) owns the cut (fold / merge / file / drop) and hands back only the survivors. Filing the list yourself is the bypass that makes this guard unreachable: a composite skill calling/ticketonce per finding never sees a list, so it never trips. Five tickets nobody will prioritize is noise that makes the board less trustworthy, not more. checktoken → run steps 1–2 and report the verdict; create nothing.
1. Resolve the tracker (by cwd)
Read the cwd repo's CLAUDE.md, walking up to the repo root.
| cwd condition | where the ticket goes |
| CLAUDE.md declares a Jira project | create via the Atlassian MCP. Resolve site + cloudId at runtime — never hardcode one: this skill is shared across projects and Atlassian sites, and a wrong cloudId 400s as "not explicitly granted". Call getAccessibleAtlassianResources, or read the cloudId from the project's own CLAUDE.md / memory |
CLAUDE.md declares an in-repo tickets/ tracker | write tickets/<PREFIX>-NNN-slug.md (next seq), commit + push per the repo's convention |
| a git repo with NO tracker | surface that; offer to set one up (/setup-ticketing, if installed — one confirm), then file. Declined → say so and stop; don't invent a home |
| a non-repo / homeless cwd | ask where it belongs (e.g. a personal tickets repo, if you keep one); don't invent a home |
Pick the right project when a site has several. A tracker split by area (e.g. by team or component) routes on what the work is: file it in the project that owns the code or behavior it changes. When it genuinely straddles two, file in the one whose board you actually work from and note the other in the body.
2. Dedupe search — the load-bearing step
Search the tracker for anything already covering this scope before drafting anything. Search on the distinctive nouns (feature name, error string, customer / order / account number, ticket ids mentioned in the ask), not a paraphrase of the summary you were about to write.
Keep the payload small — a wide Jira search overflows context fast. Narrow
fields to key/summary/status (never *all), cap maxResults, and search the
likely projects rather than the whole site.
Classify into exactly one:
- Exists — a ticket already covers this. Report the key and stop; if its lane is wrong for what's about to happen, fix the lane (step 4) and nothing else.
- Partial overlap → subsume — an older/narrower ticket is a subset of this
work. Prefer widening the existing ticket over minting a new one. If the new
scope is genuinely bigger, create it, then link the old one (
createJiraIssueLink;createIssueLinkon a v1 connection) and close it as superseded with a comment saying by what — never leave a silent duplicate. - None — proceed to create.
Say which verdict you reached and on what evidence. "I searched and found nothing" is a bounded claim; "there's no ticket for this" is an absolute one, and the absolute one is how duplicates get filed.
3. Create
- Summary — what the work is, readable by someone who wasn't in the session. Not the session's name, not a ticket-speak template.
- Body — whatever spec already exists is the body: a feature spec block, an investigation's findings + proposed fix, or the scope statement that prompted the ship. Don't re-derive it and don't pad it. Include acceptance criteria when the work has a testable outcome — QA reads acceptance criteria off the ticket, not the PR.
- Type — the project's own convention (commonly Story for new capability, Bug for a regression or production incident, Task for cleanup).
- Assignee — leave it unassigned unless the ask names someone. Assignees change, so an auto-assignee goes stale. Tools that answer "what's mine" must count unassigned tickets rather than filter on assignee alone.
Omit fields the project rejects rather than fighting them (some projects' priority field, for instance, refuses both object and string forms on create).
4. Make it visible — sprint + lane
A created ticket is not yet a tracked ticket. Two things hide one:
- Sprint. On a scrum board, issue-create APIs do not auto-assign the
active sprint, so a fresh ticket is absent from the board until the sprint field
is set explicitly. Resolve the active sprint at runtime — query
project = <KEY> AND sprint in openSprints()and read the sprint field off a result, taking the entry whosestateisactive. The field holds an issue's full sprint history, closed ones included, so filter on state rather than taking the first element; setting a closed id hides the ticket exactly like setting none. Sprint ids are per-board — two boards running at once have two different ids. Never carry an id over from memory or a previous run. - Lane. Use a status the board actually maps to a visible column. An exotic
or unmapped status makes the ticket vanish from view while looking correct in
the API — check the project's own conventions before reaching for one. Read the
transition id from
listJiraIssueTransitions(getTransitionsForJiraIssueon a v1 connection) rather than hardcoding it; ids differ per workflow.
Default lane is In Progress when the work starts now (the build-it-now case). With
the file token — a follow-up, a deferred fix, something decided but not
being built today — leave it in the project's backlog/To-Do lane instead. Filing
tomorrow's work as In Progress lies about what's actually being worked.
5. Report (glanceable)
One line, then only what's needed:
🎫 <TICKET-ID> — <created | already tracked | widened | superseded N> · <lane> · <sprint name>Then the URL, and — if you subsumed or triaged anything — one line on what you folded in or deliberately left as a comment. Nothing else.
When chained, that key is the return value: the caller uses it to link the PR, comment progress, and close the ticket at the end of the flow.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

