ticket-craft
Create Jira/Asana/Linear tickets optimized for Claude Code execution - AI-native ticket writing
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o ticket-craft.zip https://jpskill.com/download/21668.zip && unzip -o ticket-craft.zip && rm ticket-craft.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/21668.zip -OutFile "$d\ticket-craft.zip"; Expand-Archive "$d\ticket-craft.zip" -DestinationPath $d -Force; ri "$d\ticket-craft.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
ticket-craft.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
ticket-craftフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[Skill 名] ticket-craft
チケット作成スキル
AIエージェントが自律的に実行できるソフトウェアチケットを作成します。
目的: ソフトウェアエンジニアリングのベストプラクティス(INVEST、Given-When-Then、Definition of Ready)とClaude Code固有のコンテキスト要件を組み合わせたチケット形式を定義することです。このスキルで作成されるすべてのチケットは「Claude Code Ready」であり、エージェントが質問することなく作業を開始し、実行できることを意味します。
対応システム: Jira、Asana、Linear、GitHub Issues、またはその他のチケットシステム。
核となる原則
┌─────────────────────────────────────────────────────────────────┐
│ チケットはプロンプトです │
│ ────────────────────────────────────────────────────────────── │
│ │
│ 従来のチケットは、以下のような人間向けに書かれています。 │
│ - Slackで質問できる │
│ - 組織の知識を活用できる │
│ - 曖昧な記述から意図を推測できる │
│ │
│ AIエージェントはこれらを一切できません。 │
│ │
│ すべてのチケットは自己完結型でなければなりません。 │
│ - 明示的なファイル参照(「認証モジュール」ではなく) │
│ - パターン参照(「私たちの慣習に従う」ではなく) │
│ - 検証基準(「動作することを確認する」ではなく) │
│ - 制約(何をすべきかだけでなく、何をすべきでないかも) │
│ - テストコマンド(「テストを実行する」ではなく) │
│ │
│ Claude Codeが質問することなく実行できる場合、 │
│ そのチケットは準備ができています。できない場合は、できていません。│
└─────────────────────────────────────────────────────────────────┘
INVEST+C基準
標準のINVESTにC(Claude-Ready)を追加したものです。
| 基準 | 質問 | 失敗するケース |
|---|---|---|
| I - Independent (独立性) | 他のチケットを待つことなく完了できますか? | 未文書化の依存関係によってブロックされている場合 |
| N - Negotiable (交渉可能性) | 実装アプローチを調整する余地がありますか? | 実装の詳細を過度に指定している場合 |
| V - Valuable (価値) | 誰がどのように恩恵を受けるかを明確に説明できますか? | 明確なユーザーまたはビジネス価値がない場合 |
| E - Estimable (見積もり可能性) | チームは規模を見積もるのに十分な理解をしていますか? | 曖昧すぎる、または見積もるには大きすぎる場合 |
| S - Small (小規模) | 1人で1〜3日以内に完了できますか? | 受け入れ基準が5つ以上ある場合 |
| T - Testable (テスト可能性) | 合否判定テストを作成できますか? | 「速い」や「良いUX」のような曖昧な言葉を使用している場合 |
| C - Claude-Ready (Claude対応) | AIエージェントが質問することなく実行できますか? | ファイル参照、パターン、検証、または制約が欠けている場合 |
チケットの種類
1. 機能チケット
## [PROJ-XXX] {動詞} {機能} for {ユーザー}
**種類:** Feature
**優先度:** {Critical | High | Medium | Low}
**ポイント:** {1 | 2 | 3 | 5 | 8}
**ラベル:** {frontend, backend, api, database, etc.}
**エピック:** {親エピック}
---
### ユーザー物語
{特定のペルソナ}として、
私は{特定の行動}したい、
なぜなら{測定可能な利益}を得たいから。
### 背景
{これがなぜ重要であるかについて1〜2段落。製品概要、ユーザー調査、
またはビジネス上の正当性へのリンクを含めます。関連する指標やユーザーフィードバックを含めます。}
### 受け入れ基準
**AC1: {ハッピーパスシナリオ}**
Given {前提条件},
when {行動},
then {期待される結果}.
**AC2: {エッジケース / エラーシナリオ}**
Given {前提条件},
when {行動},
then {期待される結果}.
**AC3: {境界条件}**
Given {前提条件},
when {行動},
then {期待される結果}.
### 範囲外
- {このチケットに含まれないものを明示的に記述}
- {スコープクリープを防ぎ、チケットを小さく保つ}
---
### Claude Codeコンテキスト
#### 関連ファイル (これらを最初に読んでください)
- `src/services/example.ts` - 拡張する既存のサービス
- `src/models/example.ts` - データモデル定義
- `src/api/routes/example.ts` - 従うべき既存のエンドポイントパターン
#### パターン参照
サービス層の実装については`src/services/user.ts`のパターンに従ってください。
ルート定義については`src/api/routes/users.ts`のパターンに従ってください。
テスト構造については`tests/services/user.test.ts`のパターンに従ってください。
#### データベース変更
- {作成/変更するテーブル、カラム、型}
- {マイグレーションファイルの場所: `supabase/migrations/` または `prisma/migrations/`}
- {Supabaseを使用している場合のRLSポリシー}
#### API契約
POST /api/{resource} Request: { field1: string, field2: number } Response: { id: string, field1: string, created_at: string } Error: { error: string, code: number }
#### 制約
- {特定のファイルやモジュール}は変更しないでください
- 承認なしに新しい依存関係を追加しないでください
- `src/core/exceptions.ts`の既存のエラー処理に従ってください
- {パフォーマンス予算: レスポンスタイム < 200ms、バンドルサイズ < 50KB}
#### 検証
```bash
# 特定のテストを実行
npm test -- --grep "{feature name}"
# Lintチェック
npm run lint
# 型チェック
npm run typecheck
# 完全な検証
npm test -- --coverage
環境変数
- 既存: {関連する.envに既に存在する変数をリスト}
- 新規必須: {必要な新しい変数をリスト}
依存関係
- ブロックされている: {PROJ-XXX} ({簡単な説明})
- ブロックする: {PROJ-YYY} ({簡単な説明})
デザイン
- モックアップ: {Figma/デザインへのリンク (該当する場合)}
2. バグチケット
## [BUG-XXX] 修正: {コンポーネント} - {症状}
**種類:** Bug
**優先度:** {Critical | High | Medium | Low}
**ポイント:** {1 | 2 | 3 | 5}
**ラベル:** {regression, ux-bug, data-bug, security-bug}
**重大度:** {ユーザーをブロックする | エクスペリエンスを低下させる | 外観上の問題}
---
### バグの概要
{一文で: 何が壊れていて、誰が影響を受けているか。}
### 環境
- ブラウザ/OS: {例: Chrome 120 / macOS 14.2}
- 環境: {Production | Staging | Local}
- ユーザータイプ: {Anonymous | Authenticated | 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Ticket Craft Skill
Write software tickets that AI agents can execute autonomously.
Purpose: Define a ticket format that combines software engineering best practices (INVEST, Given-When-Then, Definition of Ready) with Claude Code-specific context requirements. Every ticket created with this skill is "Claude Code Ready" - meaning an agent can pick it up and execute it without asking clarifying questions.
Works with: Jira, Asana, Linear, GitHub Issues, or any ticket system.
Core Principle
┌─────────────────────────────────────────────────────────────────┐
│ A TICKET IS A PROMPT │
│ ────────────────────────────────────────────────────────────── │
│ │
│ Traditional tickets are written for humans who can: │
│ - Ask clarifying questions in Slack │
│ - Draw on institutional knowledge │
│ - Infer intent from vague descriptions │
│ │
│ AI agents cannot do any of this. │
│ │
│ Every ticket must be SELF-CONTAINED: │
│ - Explicit file references (not "the auth module") │
│ - Pattern references (not "follow our conventions") │
│ - Verification criteria (not "make sure it works") │
│ - Constraints (not just what to do, but what NOT to do) │
│ - Test commands (not "run the tests") │
│ │
│ If Claude Code can execute it without asking a question, │
│ the ticket is ready. If it can't, it's not. │
└─────────────────────────────────────────────────────────────────┘
The INVEST+C Criteria
Standard INVEST plus C for Claude-Ready:
| Criterion | Question | Fails If... |
|---|---|---|
| I - Independent | Can this be completed without waiting on another ticket? | Blocked by undocumented dependencies |
| N - Negotiable | Is there room to adjust implementation approach? | Over-specifies implementation details |
| V - Valuable | Can you articulate who benefits and how? | No clear user or business value |
| E - Estimable | Does the team understand enough to size it? | Too vague or too large to estimate |
| S - Small | Can one person finish this in 1-3 days? | More than 5 acceptance criteria |
| T - Testable | Can you write a pass/fail test for it? | Uses vague language like "fast" or "good UX" |
| C - Claude-Ready | Can an AI agent execute this without clarifying questions? | Missing file refs, patterns, verification, or constraints |
Ticket Types
1. Feature Ticket
## [PROJ-XXX] {Verb} {Feature} for {User}
**Type:** Feature
**Priority:** {Critical | High | Medium | Low}
**Points:** {1 | 2 | 3 | 5 | 8}
**Labels:** {frontend, backend, api, database, etc.}
**Epic:** {Parent epic}
---
### User Story
As a {specific persona},
I want to {specific action},
so that {measurable benefit}.
### Background
{1-2 paragraphs on why this matters. Link to product brief, user research,
or business justification. Include any relevant metrics or user feedback.}
### Acceptance Criteria
**AC1: {Happy path scenario}**
Given {precondition},
when {action},
then {expected result}.
**AC2: {Edge case / error scenario}**
Given {precondition},
when {action},
then {expected result}.
**AC3: {Boundary condition}**
Given {precondition},
when {action},
then {expected result}.
### Out of Scope
- {Explicitly state what this ticket does NOT include}
- {Prevents scope creep and keeps ticket small}
---
### Claude Code Context
#### Relevant Files (read these first)
- `src/services/example.ts` - Existing service to extend
- `src/models/example.ts` - Data model definition
- `src/api/routes/example.ts` - Existing endpoint patterns to follow
#### Pattern Reference
Follow the pattern in `src/services/user.ts` for service layer implementation.
Follow the pattern in `src/api/routes/users.ts` for route definition.
Follow the pattern in `tests/services/user.test.ts` for test structure.
#### Database Changes
- {Table to create/modify, columns, types}
- {Migration file location: `supabase/migrations/` or `prisma/migrations/`}
- {RLS policies if using Supabase}
#### API Contract
POST /api/{resource} Request: { field1: string, field2: number } Response: { id: string, field1: string, created_at: string } Error: { error: string, code: number }
#### Constraints
- Do NOT modify {specific files or modules}
- Do NOT add new dependencies without approval
- Follow existing error handling in `src/core/exceptions.ts`
- {Any performance budgets: response time < 200ms, bundle size < 50KB}
#### Verification
```bash
# Run specific tests
npm test -- --grep "{feature name}"
# Lint check
npm run lint
# Type check
npm run typecheck
# Full validation
npm test -- --coverage
Environment Variables
- Existing: {list vars already in .env that are relevant}
- New required: {list any new vars needed}
Dependencies
- Blocked by: {PROJ-XXX} ({brief description})
- Blocks: {PROJ-YYY} ({brief description})
Design
- Mockup: {link to Figma/design if applicable}
2. Bug Ticket
## [BUG-XXX] Fix: {Component} - {Symptom}
**Type:** Bug
**Priority:** {Critical | High | Medium | Low}
**Points:** {1 | 2 | 3 | 5}
**Labels:** {regression, ux-bug, data-bug, security-bug}
**Severity:** {Blocks users | Degrades experience | Cosmetic}
---
### Bug Summary
{One sentence: what is broken and who is affected.}
### Environment
- Browser/OS: {e.g., Chrome 120 / macOS 14.2}
- Environment: {Production | Staging | Local}
- User type: {Anonymous | Authenticated | Admin}
- First observed: {date}
### Steps to Reproduce
1. {Navigate to / perform action}
2. {Perform next action}
3. {Perform next action}
4. **Observe:** {incorrect behavior}
### Expected Behavior
{What should happen instead.}
### Actual Behavior
{What actually happens. Include error messages, console output, screenshots.}
### Impact
- Users affected: {percentage or count}
- Frequency: {every time | intermittent | specific conditions}
- Workaround: {exists / none}
---
### Claude Code Context
#### Suspected Root Cause
{Where the bug likely lives, if known.}
- File: `src/components/LoginForm.tsx:87`
- Issue: `isSubmitting` state set to `true` on validation error but never reset
#### Relevant Files
- `src/components/LoginForm.tsx` - Form component with the bug
- `tests/components/LoginForm.test.tsx` - Existing tests (gap here)
- `src/hooks/useAuth.ts` - Auth hook used by the form
#### Test Gap Analysis
- Existing tests cover: {what's currently tested}
- Missing test: {what test would have caught this bug}
#### Bug Fix Workflow (TDD)
1. Write a failing test that reproduces the bug
2. Verify the test fails (confirms the bug exists)
3. Fix the bug with minimum code change
4. Verify the test passes
5. Run full test suite to check for regressions
#### Verification
```bash
# Run the specific test
npm test -- --grep "LoginForm submit"
# Run related tests
npm test -- src/components/LoginForm.test.tsx
# Full regression check
npm test
Constraints
- Fix the bug only - do NOT refactor surrounding code
- Do NOT change the component's public API
- Ensure all existing tests continue to pass
3. Tech Debt Ticket
## [TECH-XXX] Refactor: {Area} - {Improvement}
**Type:** Tech Debt
**Priority:** {High | Medium | Low}
**Points:** {3 | 5 | 8}
**Labels:** {refactor, performance, maintainability, testing}
---
### Problem Statement
{What is wrong with the current implementation and why it matters.
Include concrete pain points: slow CI, frequent bugs, developer confusion.}
### Current State
- File: `{path}` ({N} lines)
- Test coverage: {X}%
- Cyclomatic complexity: {N}
- Related bugs: {PROJ-XXX, PROJ-YYY}
- Pain frequency: {how often this causes issues}
### Proposed Change
{What specifically should change and why this approach.}
### Acceptance Criteria
- [ ] {Specific structural change completed}
- [ ] All existing tests pass without modifying test assertions
- [ ] No public API changes (existing consumers unaffected)
- [ ] Test coverage >= {X}%
- [ ] {Measurable improvement metric}
### Risk Assessment
- Risk level: {Low | Medium | High}
- Mitigation: {run full regression, deploy behind flag, etc.}
### Business Justification
{Why this is worth doing now. E.g., "Reduces average bug fix time from 4h to 1h"
or "Enables upcoming feature PROJ-XXX which requires clean separation."}
---
### Claude Code Context
#### Relevant Files
- `{file}` - Current implementation to refactor
- `{test file}` - Existing tests (must not break)
- `{dependent file}` - Consumer of the API being refactored
#### Pattern Reference
Follow the pattern established in `{good example file}` for the new structure.
#### Constraints
- Do NOT change public APIs or exports
- Do NOT modify test assertions (tests should pass as-is)
- Do NOT introduce new dependencies
- Keep backwards compatibility
#### Verification
```bash
# Existing tests must pass unchanged
npm test
# No type errors
npm run typecheck
# Lint clean
npm run lint
# Coverage target
npm test -- --coverage
---
### 4. Epic Breakdown Ticket
```markdown
## [EPIC-XXX] {Epic Name}
**Type:** Epic
**Priority:** {Critical | High | Medium}
**Target:** {Sprint/milestone}
---
### Objective
{One paragraph: what this epic achieves and why it matters.}
### Success Metrics
- {Measurable outcome 1}
- {Measurable outcome 2}
### User Workflows
{The user journey this epic covers, broken into steps.}
1. {Step 1: Discovery/Entry}
2. {Step 2: Core Action}
3. {Step 3: Completion/Result}
### Ticket Breakdown
| # | Ticket | Type | Points | Dependencies |
|---|--------|------|--------|-------------|
| 1 | {title} | Feature | 3 | None |
| 2 | {title} | Feature | 5 | #1 |
| 3 | {title} | Feature | 3 | None |
| 4 | {title} | Feature | 2 | #2, #3 |
| 5 | {title} | Tech Debt | 3 | None |
### Slicing Strategy
{How the epic was broken down. Reference the technique used.}
### Agent Team Mapping
{If using agent teams, how features map to agents.}
- Feature Agent 1: Tickets #1, #2
- Feature Agent 2: Tickets #3, #4
- Parallel execution: #1 and #3 can run simultaneously
- Sequential: #2 depends on #1, #4 depends on #2 and #3
Epic Slicing Techniques
When breaking an epic into tickets, use one of these strategies:
| Technique | When to Use | Example |
|---|---|---|
| By workflow step | Clear user journey | Browse > Play > Save > Share |
| By data variation | Multiple data types | Text posts, images, videos |
| By user role | Different permissions | Anonymous, authenticated, admin |
| By CRUD | Data operations | Create, Read, Update, Delete |
| Happy path first | Incremental delivery | Success flow first, then errors |
| By boundary | System integration | Frontend, API, database separately |
Rules of Thumb
- Each ticket: 1-3 days of work for one developer/agent
- More than 5 acceptance criteria = split the ticket
- More than 8 story points = definitely split
- Every ticket should be independently deployable (even behind a flag)
- Order tickets: simplest, most foundational first
The Claude Code Ready Checklist
Before a ticket is ready for an AI agent to execute, verify:
┌─────────────────────────────────────────────────────────────────┐
│ CLAUDE CODE READY CHECKLIST │
│ ────────────────────────────────────────────────────────────── │
│ │
│ CONTEXT │
│ ☐ Relevant files listed with full paths │
│ ☐ Pattern reference points to a real file to follow │
│ ☐ API contract defined (request/response shapes) │
│ ☐ Database changes specified (tables, columns, migrations) │
│ ☐ Environment variables listed (existing + new) │
│ │
│ SCOPE │
│ ☐ Out of Scope section explicitly states what NOT to do │
│ ☐ Constraints section lists files/modules NOT to modify │
│ ☐ Ticket covers one logical change (atomic) │
│ ☐ Estimable at ≤ 5 story points │
│ │
│ VERIFICATION │
│ ☐ Test command provided (exact command, not "run tests") │
│ ☐ Lint command provided │
│ ☐ Typecheck command provided │
│ ☐ Acceptance criteria are Given-When-Then or checkboxed │
│ ☐ Each criterion is independently pass/fail testable │
│ │
│ QUALITY │
│ ☐ Title is imperative verb + object + context │
│ ☐ Title under 80 characters │
│ ☐ Description explains WHY, not just WHAT │
│ ☐ 2-5 acceptance criteria (not more) │
│ ☐ No vague language ("fast", "good UX", "clean") │
│ │
│ If any box is unchecked, the ticket is NOT ready. │
└─────────────────────────────────────────────────────────────────┘
Anti-Patterns (Never Do These)
1. The Title-Only Ticket
Title: Fix login
Description: (empty)
Why it fails: No context, no acceptance criteria, no file references. Claude Code will guess and likely guess wrong.
2. The Novel
Title: Implement new onboarding
Description: (3 pages mixing UI, backend, analytics, email, and future ideas)
Why it fails: Not small, not independent. Agent teams can't parallelize this. Split into 5+ tickets.
3. The Vague Requirement
Acceptance Criteria:
- Should be fast
- UX should be good
- Should work on mobile
Why it fails: Unmeasurable, untestable. Replace with: "Response time < 200ms", "Passes WCAG 2.1 AA", "No horizontal scroll at 320px viewport."
4. The Over-Specified Solution
Title: Use Redis to cache user sessions
Description: Install Redis, configure connection pooling, set TTL to 3600...
Why it fails: Prescribes the solution instead of the problem. Should describe "Session lookups take 500ms, need < 50ms" and let the agent choose the approach.
5. The Missing Files Ticket
Description: Update the auth module to support OAuth.
Why it fails for AI: "The auth module" could be 20 files. Claude Code needs: src/services/auth.ts, src/middleware/auth.ts, src/routes/auth.ts - specific paths.
6. The No-Verification Ticket
Acceptance Criteria:
- OAuth login works
- Users can sign in with Google
Why it fails: No test command, no verification steps. Claude Code performs dramatically better when it can verify its own work.
Good vs Bad Examples
Bad: Vague Feature Ticket
Title: Add rate limiting to the API
Description: We need rate limiting on our endpoints.
Good: Claude Code Ready Feature Ticket
Title: Add sliding window rate limiter to /api/generate endpoint
User Story:
As an API consumer, I want requests to be rate-limited
so that the service remains available under heavy load.
Acceptance Criteria:
AC1: Given an authenticated user making requests,
when they exceed 10 requests per minute,
then return 429 with Retry-After header.
AC2: Given a rate-limited user,
when the window expires,
then requests succeed again.
AC3: Given an unauthenticated request,
when it hits /api/generate,
then return 401 (rate limiting only applies to authed users).
Claude Code Context:
- Pattern: Follow `src/middleware/throttle.ts` for middleware structure
- File: Create `src/middleware/rateLimit.ts`
- Test: Create `tests/middleware/rateLimit.test.ts`
- Route: Modify `src/api/routes/generate.ts` to add middleware
- Constraint: Do NOT modify existing middleware or other endpoints
Verification:
npm test -- --grep "rate-limit"
npm run lint
npm run typecheck
Mapping Tickets to Agent Teams
When using the agent-teams workflow, tickets map directly to the 10-task pipeline:
| Ticket Section | Maps To | Agent |
|---|---|---|
| Title + Description | Task 1: {name}-spec |
Feature Agent |
| Acceptance Criteria | Task 3: {name}-tests |
Feature Agent (writes tests from AC) |
| Pattern Reference | Task 5: {name}-implement |
Feature Agent (follows pattern) |
| Verification section | Task 6-7: verify + validate | Quality Agent + Feature Agent |
| Constraints | Enforced throughout | All agents |
| Claude Code Context | Loaded at start | Feature Agent reads first |
Ticket → Agent Team Flow
1. Create ticket using templates above
2. Ticket becomes the feature spec in _project_specs/features/
3. Team Lead reads spec, creates 10-task dependency chain
4. Feature Agent uses ticket's Claude Code Context to start
5. Quality Agent uses ticket's Acceptance Criteria to verify
6. Review Agent reviews against ticket's Constraints
7. Security Agent scans based on ticket's scope
8. Merger Agent creates PR referencing the ticket ID
Ticket Title Conventions
| Type | Format | Example |
|---|---|---|
| Feature | Add {feature} for {user} |
Add episode bookmarking for listeners |
| Enhancement | Improve {what} in {where} |
Improve search performance in episode feed |
| Bug | Fix: {Component} - {Symptom} |
Fix: PlayerBar - audio stops on tab switch |
| Tech Debt | Refactor: {Area} - {Goal} |
Refactor: AuthService - extract token management |
| Security | Security: {What} in {Where} |
Security: add input sanitization to comment API |
| Chore | Chore: {What} |
Chore: upgrade React from 18 to 19 |
Rules:
- Start with an imperative verb (Add, Fix, Improve, Refactor, Remove)
- Under 80 characters
- Include the component/area affected
- Be specific enough to distinguish from other tickets
Story Points for AI Agents
AI agents estimate differently than humans. Use this calibration:
| Points | Scope | Agent Time | Example |
|---|---|---|---|
| 1 | Single file, < 20 lines changed | ~5 min | Fix a typo, update a config value |
| 2 | 1-2 files, straightforward | ~15 min | Add a field to a form, update an API response |
| 3 | 2-4 files, clear path | ~30 min | New API endpoint following existing pattern |
| 5 | 4-8 files, some decisions | ~1 hour | New feature with tests, models, and routes |
| 8 | 8+ files, complex | ~2 hours | Integration with external service, new data model |
| 13 | Too large, split required | - | Full authentication system, major refactor |
Rule: If > 5 points, consider splitting. If 13, always split.
Integration with Ticket Systems
Jira
- Use custom field "Claude Code Context" for the AI-specific section
- Use labels:
claude-ready,needs-context,ai-blocked - Link tickets with "blocks/blocked by" for dependency chains
Asana
- Use custom fields for Priority, Points, Type
- Use subtasks for the 10-task pipeline steps
- Use tags:
claude-ready,needs-refinement
Linear
- Use issue templates with the Claude Code Context section built-in
- Use labels for ticket type and claude-readiness
- Use projects to group tickets into epics
GitHub Issues
- Use issue templates (
.github/ISSUE_TEMPLATE/) - Use labels:
feature,bug,tech-debt,claude-ready - Use milestones for epics
Command: /create-ticket
When the user asks to create a ticket, follow this workflow:
Step 1: Gather Context
Ask the user:
- What type? (Feature / Bug / Tech Debt)
- Brief description of what needs to be done
- Which part of the codebase is involved?
Step 2: Auto-Detect Context
- Read the relevant files to understand current implementation
- Identify the pattern to follow from existing code
- Find existing tests to understand test conventions
- Check for related files that might be affected
Step 3: Generate Ticket
Use the appropriate template above, filling in:
- All Claude Code Context fields (auto-detected)
- Acceptance criteria (derived from description)
- Verification commands (from project's CLAUDE.md or package.json)
- Constraints (based on codebase analysis)
Step 4: Validate with Checklist
Run the Claude Code Ready Checklist against the generated ticket. Flag any unchecked items for the user to address.
Step 5: Output
Present the ticket in the template format, ready to paste into Jira/Asana/Linear.
Definition of Ready (for Sprint)
A ticket can enter a sprint when:
- [ ] Passes INVEST+C criteria
- [ ] Claude Code Ready Checklist is complete
- [ ] Dependencies are identified and unblocked
- [ ] Story points assigned
- [ ] Design/mockups attached (if applicable)
- [ ] Acceptance criteria reviewed by team
Definition of Done
A ticket is done when:
- [ ] All acceptance criteria verified (pass/fail)
- [ ] Tests written and passing
- [ ] Code reviewed (no Critical/High issues)
- [ ] Security scan passed
- [ ] Lint and typecheck clean
- [ ] Coverage >= 80% for new code
- [ ] PR created with full pipeline results
- [ ] Documentation updated (if applicable)