Jay Lawrence
All posts

Engineering leadership · Agentic development · Development workflow

No Linear. No Asana. How I designed ticketing for agentic development

As a lead, I designed a GitHub-native workflow that turns development tickets into clear contracts between teammates and coding agents—without adding another source of truth.

As a lead, I wanted a development workflow built for the way teams work now: people make the decisions, coding agents accelerate the execution, and the ticket keeps both sides aligned. I designed that workflow around GitHub itself—no separate planning system, no duplicated backlog, and no ambiguity about where the work lives.

The leadership decision

The issue is the shared contract between the team and the agent.

Planning, implementation context, dependencies, and delivery evidence stay beside the code they describe.

One source of truth

No Linear. No Asana.

Those are capable products. My decision was not about declaring them bad; it was about removing an unnecessary translation layer. If the repositories, pull requests, reviews, and releases already live in GitHub, the development backlog can live there too.

A separate tracker often means someone has to keep a product card, a GitHub issue, and a pull request synchronized. Agents make that duplication more expensive because stale context can now produce code at high speed.

In an agentic workflow, duplicated context is not administration. It is a source of implementation errors.

I removed the handoff between planning context and implementation context.

Separate tracker

Copy and reconcile

The team repeats scope, status, links, and decisions across systems.

  • Planning card
  • Repository issue
  • Pull request
  • Manual status sync
GitHub-native

Plan beside the code

The issue owns intent; the project organizes it; the pull request provides proof.

  • One issue
  • One project view
  • Native relationships
  • Automatic lifecycle
becomes
The goal is not fewer tools for its own sake. It is one authoritative path from intent to shipped evidence.

The unit of work

A ticket is a context contract, not a one-line prompt.

“Build the settings page” is not a useful contract for a teammate or an agent. A strong issue explains the result, the boundary, the proof, and the decisions that should not be rediscovered during implementation.

Every issue answers the questions an implementation agent will otherwise guess.

DecisionWhat the ticket recordsWhy it matters
OutcomeAn independently demonstrable resultDefines success in product language
Context + scopeProblem, users, domain terms, in scope, and out of scopePrevents accidental expansion
Implementation planDecision-level steps without brittle code prescriptionsProvides direction while leaving room for engineering judgment
Acceptance + testsObservable criteria and concrete test casesTurns completion into evidence
RiskSecurity, privacy, observability, rollout, and rollbackMakes operational impact visible before coding
RelationshipsParent, blockers, related work, and definition of doneKeeps sequencing explicit
Project metadata such as priority, status, size, owner, and iteration stays in project fields instead of being duplicated in the issue body.

The workflow

The board represents readiness, not activity theater.

I kept the states intentionally small. Each one answers a real question about whether the work is understood, ordered, executable, under review, or proven complete.

Six states are enough to make ownership and readiness visible.

  1. InboxTriage

    Is this real, safe to discuss, and owned by the right repository?

  2. InventoryBacklog

    Is the work worth retaining even if it is not scheduled yet?

  3. CommitmentReady

    Are scope, dependencies, acceptance criteria, and tests clear?

  4. ExecutionIn progress

    Does one accountable owner have the work?

  5. EvidenceIn review

    Is the implementation ready for human and automated review?

  6. OutcomeDone

    Has the observable result been verified and documented?

New work enters Triage automatically. Priority, area, owner, size, and iteration are assigned by people when the issue is understood.

Agent-assisted planning

The agent interviews before it implements.

I created a reusable product-management workflow that starts by asking focused questions, recording durable decisions, and exposing ambiguity. Only after the scope is approved does it break the outcome into independently deliverable issues.

The agent can inspect repository context, suggest the destination, draft the issue, identify dependencies, and propose a ticket stack. A person still approves the decisions and the act of publishing or modifying work.

Automation has a role at every stage—but never silent authority.

  1. DiscoverInterview the outcome

    Ask one decision at a time and recommend a concrete answer.

  2. DocumentRetain the decisions

    Update shared terminology and durable architecture records when needed.

  3. StructureSlice the work

    Create vertical, verifiable issues with explicit ownership and dependencies.

  4. ApproveHuman publication gate

    Show exactly what will be created or changed before acting.

  5. TrackConnect delivery evidence

    Link branches, pull requests, reviews, checks, and closure back to the issue.

The system accelerates preparation and consistency while preserving human judgment at the consequential gates.

Repository ownership

Cross-system work should be coordinated, not collapsed.

One oversized issue is easy to create and hard to deliver. For work spanning several repositories, I use one coordination issue in the repository that owns the user-facing outcome, then create independently testable implementation issues where each change belongs.

Every repository receives work it can own and verify.

  1. Product surface

    Owns the user-visible outcome and the coordination issue.

    Owner
    Outcome owner
    Allowed
    Experience + acceptance
  2. Application service

    Owns business rules, persistence, and APIs required by the outcome.

    Owner
    Service team
    Allowed
    Contract + tests
  3. Data or AI system

    Owns models, pipelines, evaluation, and bounded processing behavior.

    Owner
    Data or AI team
    Allowed
    Evaluation + failure modes
  4. Infrastructure

    Owns deployment, identity, networking, configuration, and rollback.

    Owner
    Platform team
    Allowed
    Environment + operations
All issues can appear in one organization project while native parent and blocker relationships preserve delivery order.

Shared operating context

I put the workflow in the repository so it can multiply across the team.

A process that lives only in my head does not scale. I encoded the ticket format, questioning method, repository routing, engineering standards, security rules, and documentation policy as versioned agent instructions beside the code.

That canonical source can be synchronized into the coding tools the team uses. The adapters may differ, but the expectations do not. CI detects drift, and the generated copies point teammates back to the source instead of becoming competing manuals.

Team judgment becomes reusable context, then returns as verifiable work.

  1. AuthorityCanonical playbook

    Ticketing, architecture, standards, security, and domain language.

  2. DistributionTool adapters

    The same expectations reach each supported coding agent.

  3. PlanningStructured issue

    The agent produces a consistent, reviewable context contract.

  4. DeliveryLinked implementation

    Code, tests, review, and rollout evidence stay attached.

  5. LearningUpdated context

    Durable corrections return to the playbook for the next task.

The repository is not merely where implementation lands. It is the distribution mechanism for how the team plans and builds.

What leadership means here

As a lead, I designed the system—not just the next assignment.

My role is not to personally translate every conversation into tasks forever. It is to create a development operating system that helps the team make good decisions consistently, whether the next contributor is a senior engineer, a new teammate, or a coding agent.

No Linear. No Asana. Just one clear source of truth, strong tickets, explicit human gates, and a workflow that keeps learning from the work it ships.