agentify-project
Make a project agent-ready by converging it toward a canonical agent-neutral structure. Re-runnable, and doubles as an audit.
Triage a ticket or ticket set before work starts, saving a review with the questions worth raising.
Claude Code
$ npx -y skills add eai-org/agent-toolkit --skill review-ticket --agent claude-code
Codex
$ npx skills add eai-org/agent-toolkit --skill review-ticket -a codex -y
Cursor
$ npx skills add eai-org/agent-toolkit --skill review-ticket -a cursor -y
Gemini CLI
$ npx skills add eai-org/agent-toolkit --skill review-ticket -a gemini-cli -y
GitHub Copilot
$ npx skills add eai-org/agent-toolkit --skill review-ticket -a github-copilot -y
OpenCode
$ npx skills add eai-org/agent-toolkit --skill review-ticket -a opencode -y
Windsurf
$ npx skills add eai-org/agent-toolkit --skill review-ticket -a windsurf -y
name: review-ticket description: Triage a ticket or ticket set before work starts, saving a review with the questions worth raising. disable-model-invocation: true type: flow license: MIT metadata: version: "1.8"
A pre-pickup triage glance: read a ticket — or a set of tickets forming one feature — usually before anyone has started it, and decide whether it can be picked up or something must be clarified first. The output briefs the developer on the feature and lists the questions worth asking whoever owns the requirements.
`.TICKET.md` whose `## Ticket set` section lists siblings.
running [fetch-ticket](../fetch-ticket/SKILL.md) per its [delegate.md](../fetch-ticket/delegate.md), so the tickets land on disk without the fetch bloating this session's context, then review the local files. No subagents in the harness → run fetch-ticket inline.
Missing attachments (a non-empty warn list, or a ticket file marking one `not downloaded`) stop for one question: supply the files now (`/attach-to-ticket` when available) or review without them. An `/attach-to-ticket` run in answer resumes the review with the files it saved; each attachment still missing is named as unchecked material.
If the input is ambiguous or unrecognized, ask rather than guess.
**Set mode** applies to multiple tickets, a set directory, or a `.TICKET.md` listing a `## Ticket set`. For a lone member file whose intended scope isn't obvious from the request, ask whether to review the whole set or just that ticket.
Read the input ticket file(s), **visually inspecting the downloaded images and design frames** — they are part of the spec and often where the gaps hide.
**Widen only on demand.** When the input already tells the feature clearly — the journey, the why, what each ticket delivers — review it as-is: reading beyond the input is never a required step. Settle a specific doubt as cheaply as possible, and only to answer it:
ticket's journey often lives in its parent or a sibling;
ticket deep-dived from the ticket file's shallow related list (title, status, type), a missing parent fetched through the same fetch-ticket subagent (its family routing lands it flat in the set directory).
Unsure the extra context is worth it? Ask. Stop once the doubt is answered; never recurse the related-ticket graph — except to kill a candidate question (see the question bar). Context never widens scope: the review covers only the input tickets, never a parent's other children.
Look for a `.TICKET-REVIEW.md` of the same ticket or set, beside it or beside an earlier `-vN` fetch. Its shipped questions are the first candidates: settle each against the ticket text as fetched now (comments included) and its Challenge log, then run the normal bar. Never copy its verdict or walkthrough; the ticket files and the code win.
Weigh the ticket against the current code at adaptive depth: shallow by default, deeper only to (a) ground the walkthrough in how the code behaves today and (b) settle whether a real blocker exists. This is not an exhaustive both-sides verification: go as deep as a specific doubt demands, no more.
A question reaches the output only when it clears **both**:
1. **Decision-expensive**: the answer changes what this developer builds — it blocks starting, or would be costly to reverse because it shapes the implementation (architecture, data model, approach). Cheap, easily-changed details (a color, a label, wording, spacing) are dropped even when unspecified. A real gap whose fix lies wholly outside the input tickets' scope (another repo, another team) is a **handoff**, not a question: it ships as an action item with a paste-ready message to its owner, and starting never waits on it. 2. **Survives the challenge**: a challenger (next section) hunted for the answer across every checkable source and came back empty-handed, with a complete evidence trail.
**Cheap-settle first.** Before challenging, settle each candidate as far as material already read or trivially reachable allows — set siblings on disk, code already open, an obvious lead (a telling title in an already-fetched relative's related list, a parent's other children included, a code path an earlier check surfaced). What a check settles, settle silently: never ask what you can read. The exhaustive hunts — whole-repo sweeps, tracker keyword search, design-tool exploration — are the challenger's job alone: never duplicate them here, and pass any lead you didn't follow into the challenger prompt.
**Zero questions is a clean, common result**: the ticket is ready to pick up. Never pad to look thorough. Zero candidates → zero challengers.
Before the first challenger, resolve every repo the feature spans, as named by the tickets and the project's governing docs, the other side of each integration included (a backend ticket's frontend, an API's clients). Any that can't be located: one batched ask for their paths; a repo the user skips is listed in the prompt as unavailable.
Each surviving candidate gets one challenger — a subagent or equivalent isolated context, fresh per question, spawned in parallel, strictly read-only — prompted from the template in [challenger-prompt.md](challenger-prompt.md). When the harness cannot isolate a context, run the same template procedure inline over the same sources and flag each surviving question's why-note "challenged same-context (weaker)".
Judge the verdicts
A collection of generic agentic tools for common engineering tasks, designed to work with any AI agent on any kind of software project.
Make a project agent-ready by converging it toward a canonical agent-neutral structure. Re-runnable, and doubles as an audit.
Attach pasted images, files or URLs to a fetched ticket, saved beside its ticket file and referenced from it, or fill an…
Check how much of a ticket is already implemented and save a per-requirement status report.
Draft, rewrite, or refine a doc for maximum token economy without losing any rule or intent. Use for docs kept in version control…
Author or refine a skill for maximum token economy without losing intent. Use when creating any new skill or editing an existing…
Audit what auto-loads into an agent session's context window and suggest lean, reversible fixes to cut startup tokens.
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.