skills/github-issue-format/SKILL.md
Issue body structure and narrative. The closed three-section body (Situation, Outcome, Acceptance), URI indexing and title conventions. Use when writing or editing a GitHub issue. Pairs with github-cli-convention for command syntax and markdown-standard for markdown structure. Follow the user's writing voice and prose style guides for issue text.
npx skillsauth add jitsusama/agentic-harness.pi github-issue-formatInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
An issue is a contract between the person requesting work and the person doing it. It needs to be clear enough that someone unfamiliar with the context can understand what needs to happen, why it matters and how to know when it's done.
This skill governs the shape and prose of an issue body. Follow
prose-standard for voice and markdown-standard for markdown
structure; see github-cli-convention for the command surface.
See github-cli-convention for title formatting rules
(Title Case, length, formula).
An issue body has exactly three sections, in this order. Each heading is the emoji and the name together, written precisely as shown. These three are the whole set; there are no optional sections and no others. An issue describes a problem to solve: what is wrong, what "done" looks like and how we will know it is done. An issue is the mirror of a PR told before the work: where a PR has a Resolution and a Validation, an issue has only a target and the criteria that will prove it. Deferred or related work is a separate, linked issue, not a heading here.
The problem and its context. What is wrong, what is missing, what is hurting, and why it matters. This is the same in spirit as a PR's Situation: the problem does not change whether you describe it before the work or after. Name the scenario, the failure mode or the gap concretely enough that a reader with no context understands the stakes.
What "done" looks like, described as a destination rather than a plan. The desired end state in plain terms: "an operator can cancel a run and recover the partial records." Name the target, not the route. How the work gets there is the PR's Resolution, written later; the issue states only where it needs to arrive.
The concrete, checkable criteria that prove the outcome was reached. This is the issue's forward-looking analogue of a PR's Validation: not evidence you have, but the checklist that will become that evidence. Each criterion is specific enough to test: "cancelling a run drains the inflight operations; a test pins the contract; the partial store renders." When the PR that closes this issue lands, its Validation answers this Acceptance. Avoid vague criteria like "works correctly."
The three answer, in order: what is wrong, what "done" looks like, how we will know. Anything that is none of those three does not belong in the body.
Every URI in the body is a markdown reference link, never a raw
inline URL. Inline, write [descriptive label][1]; in a footer
block at the end of the body, write [1]: https://... on its
own line. The label is descriptive prose the reader scans, not
"here" or "this link". See markdown-standard for the full
reference-link convention.
### 🌐 Situation
Cancelling a running benchmark returns immediately, but the
operations already in flight on the worker pool never finish
writing their records. Operators who cancel a long run lose the
partial results they expected to keep, and the remote streams
stay open waiting for envelopes that never arrive.
### 🎯 Outcome
Cancelling a run drains the inflight operations cleanly. The
records that completed before the cancel reach the store, and
the operator can render a report over the partial run.
### ✅ Acceptance
A cancel drains the inflight operation set before the run
returns. A test pins the drain contract on the public surface.
The report renderer accepts a partial run and names it as
cancelled. The full suite passes.
The Situation names the problem and the stakes. The Outcome names the destination without prescribing the route. The Acceptance lists criteria specific enough to check.
Immediately after gh issue create, always run:
gh issue edit NUMBER --add-assignee @me
This is not optional. Every issue must have an assignee.
See github-cli-convention for command syntax: heredoc
patterns, --body-file - and metadata in separate commands.
### 🌐 Situation, ### 🎯 Outcome, ### ✅ Acceptance, exactly:
the emoji, the name, at the ### level.development
Structure of a quest README and the documents that live under it: frontmatter shape, the four core and four optional body sections, emoji glyphs, ID format, alias notation, Cast bullets and Journey entries. Use when writing or editing a quest README, a plan, research, brief or report document under a quest. Pairs with quest-convention for choices like kind, promotion and reordering. Follow the prose-standard for voice.
tools
Operational conventions for the quest system: when to use a quest versus a subquest versus a sidequest, when to scaffold a plan or research document, how to reorder priorities, when to add optional sections, when to conclude versus retire, the resuscitate pattern. Use when driving the quest tool, deciding kind, promoting or parking work, or organising a project as quests. Pairs with quest-format for the on-disk shape.
development
Markdown structure rules: Title Case headings with their exceptions, the line-width target and its legitimate exceptions, reference-style links, fenced code blocks with language tags, tables and lists. Use when writing or editing any markdown file (README, AGENTS, docs, plans, skill files), or when adding a heading, link, table or code block. Owns markdown structure; pairs with prose-standard, which owns voice, grammar, spelling and punctuation.
tools
How to measure whether convention corrections keep recurring in the pi session logs, by category and by week. Use to record a baseline before the convention gates take effect and to re-run afterwards to confirm the recurring categories bend down. Pairs with the convention gates (pr-guardian, issue-guardian, commit-guardian, slack-integration) and the convention-context extension.