atdd-plan
Produce an ATDD-first implementation plan in Claude Code's native plan mode, with named design patterns called out where they…
Create well-structured tickets as reviewable markdown files, then push to any tracker (Jira, Linear, Trello, Asana, Shortcut) via MCP or CLI after user review. Grounds each ticket in actual code by calling /flagrare:codebase-explore before drafting, and polishes the Context
Claude Code
$ npx -y skills add Flagrare/agent-skills --skill ticket-creator --agent claude-code
Codex
$ npx skills add Flagrare/agent-skills --skill ticket-creator -a codex -y
Cursor
$ npx skills add Flagrare/agent-skills --skill ticket-creator -a cursor -y
Gemini CLI
$ npx skills add Flagrare/agent-skills --skill ticket-creator -a gemini-cli -y
GitHub Copilot
$ npx skills add Flagrare/agent-skills --skill ticket-creator -a github-copilot -y
OpenCode
$ npx skills add Flagrare/agent-skills --skill ticket-creator -a opencode -y
Windsurf
$ npx skills add Flagrare/agent-skills --skill ticket-creator -a windsurf -y
name: ticket-creator description: "Create well-structured tickets as reviewable markdown files, then push to any tracker (Jira, Linear, Trello, Asana, Shortcut) via MCP or CLI after user review. Grounds each ticket in actual code by calling /flagrare:codebase-explore before drafting, and polishes the Context section via /flagrare:write-docs. Use when the user asks to create tickets, file bugs, write stories, create tasks, build a backlog, or convert specs/TDDs into implementation tickets."
Create tickets as **reviewable markdown files** first. Present them for review. Only push to the tracker when the user explicitly approves.
---
A ticket is a pointer, not a document. The reader is an engineer who will open the linked spec and read the code; the ticket's job is to orient them and define done, not to reproduce everything. Aim for a body that fits on one screen (rough target: 40 lines). If a ticket needs more, it is either too big (split it) or it is restating a spec it should just link.
Concretely:
Each fact appears once per ticket. The usual repeats, all of which read as padding:
Across a backlog, the same rule holds at the epic level: the product story and the glossary live in the epic, not in every ticket (see *Write for three readers*).
Brevity is a feature: a scannable ticket gets picked up; a wall of text gets skipped. **The test: would a teammate skimming this understand why it matters and what done looks like, without you in the room?** You are writing for a person who will act, not documenting your own exploration.
Same ticket, two ways. The first is the trap; the second is the target.
**❌ Enumeration trap** (dense, machine-facing, reads as an exploration dump):
> **Context:** `processPayment()` calls `chargeCard()` then `recordLedgerEntry()`, but the two aren't in a transaction, so a crash between them leaves a charged card with no ledger row. Reproduced in staging; see `PaymentService.kt` flow. Affects retries via `RetryQueue`. > > **Suspect Code:** > - `service/PaymentService.kt:142`, `processPayment()`, no transaction wrapper > - `service/PaymentService.kt:160`, `chargeCard()` call site > - `service/PaymentService.kt:168`, `recordLedgerEntry()` call site > - `dao/LedgerDao.kt:55`, insert that never runs on crash > - `queue/RetryQueue.kt:30`, replays the whole method, double-charges > > **Acceptance Criteria:** `processPayment()` wraps charge + ledger in one transaction · rollback on ledger failure · retry does not double-charge · `LedgerDao.insert` covered by test · `RetryQueue` idempotency test added · metric emitted on rollback
**✅ Narrative target** (prose-first, human-facing, pointers woven in):
> **Context:** When a customer pays, we charge their card and then write a ledger entry, but those two steps aren't wrapped in a transaction. If the service dies in between (or the retry queue replays the call), the card gets charged with no matching ledger row, or charged twice. It's rare, but it's real money and it's silent: nothing alerts when the two drift apart. The fix is to make the charge-and-record pair atomic so one can't happen without the other. > > **Where to look:** `PaymentService.processPayment()` is where the charge and the ledger write happen sequentially without a transaction; the retry queue replays that whole method, which is what turns a gap into a double-charge. > > **Acceptance Criteria:** A failure after the charge never leaves a card charged without a ledger entry · a retried payment doesn't double-charge · both are proven by tests.
The second is shorter *and* clearer. The first makes the reader reconstruct the story from fragments; the second hands them the story and trusts them to open the code.
---
Every ticket ships to at least three audiences, and it fails if any of them bounces:
Thirty-eight skills that wrap around your development cycle in Claude Code. They turn tickets into ATDD plans, smoke-test features against a running app or service, hunt down bugs with runtime evidence, guard commits against doc drift, run seven-axis code
Produce an ATDD-first implementation plan in Claude Code's native plan mode, with named design patterns called out where they…
Generate a comprehensive, impact-framed brag-doc entry for a chosen time window (day, week, biweek, month, or custom). Pulls…
Programmatic bug bashing, ingest a prescribed test plan (Notion, markdown, pasted spec), drive a real running system (browser via…
Run the career skills that are due, in one pass, and return one short combined digest plus an updated board. It reads timestamps…
Explore the codebase to map conventions, reusable utilities, analogous features, and data flows relevant to a planned change.…
Generate a daily code review report showing stale PRs, items needing your attention, and active work for your team. Use whenever…
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.