English | 简体中文
Ticket-Driven Development for coding agents.
Lattice is an open-source toolkit of Agent Skills and optional Claude Code hooks that gives coding agents a disciplined path from product intent to a merged pull request. It runs locally with your existing Git and GitHub credentials, and is packaged for Claude Code and Codex. It is discipline-first, not heavy — it constrains the path (every shippable branch binds to a tkt-N/spc-N, every PR carries its Why/How/Spec line) but leaves the model free to think and code inside each step; the guardrails are a floor, not a ceiling.
Install once per machine, then open any repo and start a ticket.
# 1) Portable skills (all supported agents: Claude Code, Codex, Cursor, …)
npx skills add percena/lattice -g -y# 2) Claude Code plugin (same skills + optional hooks)
/plugin marketplace add percena/lattice
/plugin install lattice@percena
# 3) In your repo
/start-work
Advanced install (org roll-out, private forks, local dev, refresh) → docs/getting-started.md.
/start-work is the universal entry — it classifies scope and routes into this loop (for a new feature it delegates to /create-spec; to resume an existing ticket, /start-work tkt-N).
/create-spec | /create-review
↓
/create-tickets
↓
/start-work
↓
implement
↓
/create-pr
↓
/finish-work
# 1) Plan — lock scope, split into tickets
/create-spec # e.g. "Add a payment feature"
/create-tickets
# 2) Execute the ticket
/start-work tkt-N
# 3) Ship
/create-pr
/finish-work pr NConstrain the path, not the model. Lattice scripts the backbone — Spec → ticket → worktree → PR → merge — so the chain never skips a step and never loses its lineage. It does not script how the model reasons, what order to think, or what to output inside each step. Strong models stay creative; the framework keeps the chain resumable. Guardrails (worktree isolation, alignment checks, lineage) are a floor, not a ceiling.
Local-first retrieval, transparent memory. Spec, ticket, and review are written as templated local files under .lattice/ (ADRs under docs/adr/) — grep-able, reviewable, and committed with your repo. Most context lookups (acceptance criteria, last review outcome, which tickets a spec split into) resolve with a local cat/grep in milliseconds; GitHub is queried only for facts that can only come from the remote (issue/PR live state, comments, CI). Memory is not a framework black box — it is an explicit engineering artifact you and your team own.
Lineage. Each delivery leaves a traceable chain — a Spec (spc-N) splits into tickets (tkt-N), each ticket lands in a PR (pr-N), every review is a rev-…. These IDs are the binder file names, so the whole chain is recoverable with one grep -r spc-N .lattice/, across sessions, without a network hop.
| Skill | Purpose | Slash |
|---|---|---|
start-work |
Classify S/M/C, bind ticket + worktree, resume by id | /start-work |
create-spec |
Persist a Lattice Spec (spc-n) with acceptance criteria |
/create-spec |
create-review |
Persist a Lattice Review (rev-YYYYMMDD-HHMMSSZ) with an explicit outcome |
/create-review |
create-tickets |
Split locked scope into GitHub issues + binders | /create-tickets |
create-pr |
Open/update a well-formed GitHub PR | /create-pr |
finish-work |
Update base, alignment-check, merge, cleanup | /finish-work |
_lattice-lib |
Shared scripts backing the above (co-install, not a slash entry) | — |
Not part of the delivery loop — three tiers, none create lineage nodes:
| Tier | Skill(s) | Notes |
|---|---|---|
| PR-scoped quality side-paths | review-code · review-production |
Optional, before/after /create-pr; no _lattice-lib |
| standalone doc tool | generate-wiki |
wiki/ + llms.txt; anytime; no _lattice-lib |
out-of-band companion (create-* family) |
create-adr |
writes docs/adr/NNN; co-installs _lattice-lib; not a lineage node — invoked alongside /create-spec//create-review (same worktree, promotes cross-feature decisions); never a loop entry or a Spec substitute |
| Doc | Topic |
|---|---|
| getting-started | Install, auto-ensure, profiles, daily path, advanced install |
| github-surface | Kind + priority labels, optional Project auto-add |
| CONTRIBUTING | Changing skills/plugins in this monorepo |
| SECURITY | Vulnerability reporting |
| CODE OF CONDUCT | Community standards |
| CHANGELOG | Plugin SemVer |
git, gh, jq, python3 (≥ 3.8), curl — plus an agent that runs Agent Skills or Claude Code plugins. Hook tests need bats.
MIT — see LICENSE.
Thanks to the linuxdo community for discussion, sharing, and feedback.