agentleFS
eai-orgeai-org/agent-toolkit/skills/check-ticket-implementation/SKILL.md

check-ticket-implementation

Skill85 starsChanged 21 days agoMITView on GitHub

Check how much of a ticket is already implemented and save a per-requirement status report.

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Run the fetch in a subagent when the runtime supports one, per fetch-ticket's delegate.md, so its tool traffic stays out of this session's …

    line 22
  2. Distinctive:

    Split on mixed verdict: if two halves of a candidate block could end with different statuses, they are two blocks.

    line 48
  3. Distinctive:

    Verify by reading: search and read the code paths relevant to each block.

    line 60
  4. Very specific:

    Every block gets a 1–2 sentence note and 1–3 file:line evidence refs showing where it was checked.

    line 66
  5. Very specific:

    Write <task-dir>/<id>-<slug>.TICKET-STATUS.md, overwriting any previous run — it is a snapshot of now, and the header says when and against …

    line 71
  6. Distinctive:

    Never grill the user on requirement questions.

    line 114

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Check ticket implementation

Judge how much of a ticket is already implemented and report it so the user sees at a glance what is done, what isn't, and what still needs attention.

Gather

Input is a ticket URL / bare id — run fetch-ticket on it (it resolves the tracker and planning dir and persists the .TICKET.md) — or a path to an already-fetched ticket file or its task dir. Ambiguous input: ask, don't guess.

Run the fetch in a subagent when the runtime supports one, per fetch-ticket's delegate.md, so its tool traffic stays out of this session's context. Without subagent support, invoke fetch-ticket inline.

The ticket text is what gets annotated — its .REQUIREMENTS.md (same dir and <id>-<slug> base — a shared dir may hold siblings'; none: the ticket's latest across -vN versions) may be read as context for intent, never annotated in its place. The ticket text stays the contract: when the requirements record an Override that changes a block's meaning, the verdict follows the text and the note names the Override and its source. Inspect downloaded attachments and design frames when they bear on a requirement being judged.

Evidence base: the current working tree, uncommitted changes included — unless the invocation names something else (a branch, PR, commit range); then judge against that, read without moving the working tree.

Blocks

Turn every requirement-bearing statement into a block: description, acceptance criteria, and comment statements that add or change requirements (attribute those, e.g. "from comment by X"). A later statement that changes an earlier one supersedes it: one block, quoting the latest text, with the superseded text and its source in the note. Drop metadata and related-ticket lists; a comment set aside as chatty goes to the ## Not judged appendix — the full text stays in the .TICKET.md.

  • One block = one independently verifiable requirement, quoted verbatim under a short generated title, preserving ticket order.
  • Split on mixed verdict: if two halves of a candidate block could end with different statuses, they are two blocks. PARTIAL always means one requirement itself half-built, never a bundle of a done and a not-done thing.

Judge

Statuses: ✅ DONE · 🟡 PARTIAL · 🟥 NOT DONE · ⚪ NOT VERIFIABLE (can't be judged from the code — say why, e.g. a manual deploy step).

  • The ticket text is the contract. Tests, i18n, docs, and other project conventions affect the verdict only when the ticket demands them; a gap there is at most a remark in the note, never a downgrade.
  • Verify by reading: search and read the code paths relevant to each block. When reading alone can't settle a verdict, say so in the note instead of guessing. Anything beyond reading — executing code, driving the app or a browser — only with the user's ok.
  • Built but contradicting the text (a different rule, value or behavior) is 🟥 NOT DONE, the note opening with what was built instead; 🟡 is reserved for a requirement that is incomplete, never for one that is wrong.
  • Every block gets a 1–2 sentence note and 1–3 file:line evidence refs showing where it was checked; for 🟡/🟥 the note must state what's missing or remaining.

Report

Write <task-dir>/<id>-<slug>.TICKET-STATUS.md, overwriting any previous run — it is a snapshot of now, and the header says when and against what. (No task dir and nothing to fetch? Follow the project's/user's planning-dir convention, defaulting to .agents/plans/; ask only if genuinely ambiguous.)

Format for human eyes — verdicts up front, blocks fenced by ━ rules. Before writing the notes, actually invoke explain-in-simple-language and follow it — reciting its rules from memory does not count. Not installed: plain words, one idea per sentence, and nothing named only by a stand-in the reader hasn't seen.

# <ticket title> — implementation status

> **Ticket** [<id>](<url>) · **Checked** <YYYY-MM-DD> · **Against** <branch>@<short-sha> (+ uncommitted)

**4 ✅ · 2 🟡 · 1 🟥 · 1 ⚪**

Needs attention: <titles of the 🟡/🟥 blocks>

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

### ✅ DONE — <block title>

> <verbatim ticket text>

<note> — `path/to/file.ts:42`

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

End the file with a ## Not judged appendix, opened by a one-liner saying it is tracing only: one line per comment set aside, with the reason.

Wrap up

Print the tally line, the needs-attention titles, and the project-relative path of the report. Nothing more — what to do about the gaps is the user's call.

Boundaries

  • Read-only on tracker and code: never comment on or transition the ticket, never modify source. The only file written is the .TICKET-STATUS.md (plus whatever fetch-ticket persists when delegated).
  • Never grill the user on requirement questions; uncertainty lands in the notes.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.