Start writing them for agents. The bottleneck isn't code anymore — it's specification.
Kai Agent Ecosystem · by 21no.de
Traditional tickets rely on tribal knowledge and assume context.
An AI agent reads "Add dark mode" and asks
47 clarifying questions.
As code generation accelerates, the discussion phase gets longer.
POs spend more time clarifying tickets than developers spend
implementing them.
| Metric | Before AI Agents | AI + Traditional Tickets | AI + @jira-writer |
|---|---|---|---|
| PO time per ticket | 65 min | 105 min (+75%) | 30 min (-54%) |
| Dev time | 5.5 hours | 40 min | 20 min |
| Clarification rounds | 1 round | 2-3 rounds | 0 rounds |
| Agent implementation | — | 37 min | 15 min |
| Total time | 6.5 hours | 3.1 hours | 1.1 hours |
The lever isn't faster agents. It's better tickets.
21 specialized agents. One master brain. Sharp, witty, and relentlessly factual.
Spots edge cases early. Always knows why, not just what. Connects dots others miss.
Scope tripled? Re-planning. Radiates "I got this" energy because it actually does.
If it knows, it says with confidence. If it doesn't, it says that with confidence. Precision is the brand.
Pipeline, Quality, Research, Fast-Track, Learning, Utility — each routed automatically by intent.
Writes tickets optimized for AI implementation.
Codebase-aware. Zero-ambiguity.
Machine-parseable.
Scans your project — tech stack, patterns, conventions, file structure — before writing a single word.
Every ticket references real files, real patterns. An AI agent can start implementing without asking questions.
Automatically breaks large features into atomic subtasks with clear dependency graphs.
/api/orders. 100 req/min
per user, Redis-backed, return 429 with Retry-After header.
Natural language in → implementation-ready spec out. Zero clarification rounds.
Not "add an auth service" but
Create src/services/auth/jwtService.ts following
pattern in userService.ts
GIVEN/WHEN/THEN format. Every criterion independently verifiable. No "should work correctly".
Not "follow existing patterns" but
Follow error handling in src/errors/AppError.ts
❌ Do NOT use global state
❌ Do NOT add a new DB table
❌ Do NOT bypass auth middleware
Blocks, blocked-by, related tickets. Out of scope. The agent knows the bigger picture.
The agent starts coding in seconds, not after a 3-round clarification cycle.
Every ticket follows this canonical structure — machine-first, human-readable.
Feature | Bug | Refactor — business context, user impact
Functional (GIVEN/WHEN/THEN) + Technical (VERIFY:) + Test Requirements
Entry points, reference implementations, architecture patterns
Visual tree showing exactly what to CREATE vs MODIFY
What NOT to do + imports needed + packages to avoid
Step-by-step approach, complexity estimate, related tickets, out of scope
9 Functional acceptance criteria
7 Technical requirements
4 Test requirement groups
6 Entry points identified
7 Reference implementations cited
9 Anti-patterns documented
~200 LOC estimated
Every ticket self-validates before delivery. No ticket ships incomplete.
Version-controllable. Durable. Your backlog as code.
tickets/ ├── 001-add-jwt-authentication-service.md ├── 002-implement-login-logout-endpoints.md ├── 003-add-token-refresh-flow.md └── 004-update-frontend-token-storage.md
tickets/010-user-authentication/ ├── README.md ← epic overview + deps ├── 010-setup-auth-middleware.md ├── 011-implement-jwt-token-flow.md └── 012-add-login-signup-endpoints.md
Zero-padded 3-digit IDs. Collision-safe. Deterministic ordering.
Derived from title. Max 60 chars. Human-scannable in file explorers.
Markdown files in your repo. Review tickets in PRs. Track changes over time.
Your ticket registry becomes institutional knowledge of how your system works.
Kai · @jira-writer · by 21no.de