Example: a software project model

A concrete layout you can copy for a software team. It uses only shipped primitives — projects, typed tickets, relations, cycles, groups — and shows where AI agents plug in.

Project & workflow

Create one project per product or service, with a short key like ENG. Start from the default workflow and add a blocked state:

open in_progress in_review done +blocked

Work hierarchy

Model work top-down with ticket types and parent relations:

Epic
A shippable outcome spanning weeks (e.g. "OAuth & SSO"). Carries start/end dates.
Story
A user-facing slice under an epic (e.g. "SAML login"). The unit you put into a cycle.
Task / Bug
Concrete implementation work or a defect under a story.

Labels, cycles, and dependencies

  • Labels for the cross-cutting axes types don't cover: area:frontend, area:backend, area:infra; kind:feature, kind:bug, kind:debt.
  • Cycles as two-week sprints. Track velocity and completion with get_cycle_metrics and get_velocity_trend.
  • Relations to make the critical path explicit: blocks / blocked_by between stories and tasks.
  • Releases & milestones to tie a set of stories to a shipped version or a target date.

Groups & access

Create groups — engineering, qa, product — and use them for both assignment and access. Group membership gates who can read and edit the project's tickets and documents, so an agent operating under a given identity is bounded by the same rules.

Where agents plug in

  • Scaffold an epic and its stories, dependencies, labels, and owners in one flow.
  • Report sprint status from cycle metrics and the audit log — grounded, not guessed.
  • Triage inbound bugs — label, assign, and bulk_update_tickets to keep the board clean.
// Scaffold an epic with a story that blocks another — one agent, a few calls create_ticket: { "project_id": "...", "type": "epic", "title": "OAuth & SSO", "start_date": "2026-08-01", "end_date": "2026-08-29" } // → ENG-10 create_ticket: { "project_id": "...", "type": "story", "title": "Token refresh", "labels": ["area:backend"], "assignee": "dev@acme.eu" } // → ENG-11 create_ticket: { "project_id": "...", "type": "story", "title": "SAML login", "labels": ["area:backend"], "relations": [{ "type": "blocked_by", "target_ticket_id": "ENG-11" }] }

Next