Skip to content

Commit 19d1164

Browse files
authored
Merge pull request #69 from olehsvyrydov/feat/parallel-team-preset
Add parallel-team preset and cross-session delivery contract
2 parents ea75f37 + 0619b65 commit 19d1164

13 files changed

Lines changed: 95 additions & 16 deletions

File tree

CLAUDE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file provides context to Claude Code when working in this repository.
44

55
## Project Purpose
66

7-
This is a **reusable AI agent-team framework**42 agent skills (a 15-agent core team, optional specialists, auto-loading language skills, and the cross-cutting process skills that sit at the top level of `claude/skills/`, including the `workflow-engine`), a proportional dev `workflow.yaml`, document templates, and the `install.sh` installer. Each skill file represents a team member with deep domain expertise. The skills are installed globally and used by every project. It is vendor-neutral and OSS-first, working in Claude Code / Cursor / Kiro / VS Code.
7+
This is a **reusable AI agent-team framework**43 agent skills (a 15-agent core team, optional specialists, auto-loading language skills, and the cross-cutting process skills that sit at the top level of `claude/skills/`, including the `workflow-engine`), a proportional dev `workflow.yaml`, document templates, and the `install.sh` installer. Each skill file represents a team member with deep domain expertise. The skills are installed globally and used by every project. It is vendor-neutral and OSS-first, working in Claude Code / Cursor / Kiro / VS Code.
88

99
Its sibling agent-memory runtime — **Praxis** — lives in its own separate repository and consumes this shared agent layer, as does a separate governed knowledge backend. See `ARCHIVE.md` for the dashboard product that was previously carried here and set aside.
1010

@@ -21,7 +21,7 @@ ai-dev-team/
2121
│ ├── CLAUDE.md # Global instructions for Claude Code
2222
│ ├── TEAM_WORKFLOW.md # Complete team workflow documentation
2323
│ │
24-
│ ├── skills/ # 42 agent skills: 15-agent core team + specialists + language + process skills
24+
│ ├── skills/ # 43 agent skills: 15-agent core team + specialists + language + process skills
2525
│ │ ├── management/ # Product Owner, Scrum Master, Business Analyst
2626
│ │ ├── architecture/ # Solution Architect, GraphQL
2727
│ │ ├── development/ # Backend, Frontend, Native mobile, Languages (Rust, Java, TypeScript, SQL — auto-loading)
@@ -103,7 +103,7 @@ Gates fire **proportionally** (by change-class / trigger / preset) via the `work
103103
- **Version**: 5.3.0 (see `CHANGELOG.md`)
104104
- **Release Date**: 2026-08-09
105105
- **Distribution**: Claude Code plugin (preferred; `version` omitted so the commit SHA is the version) or the universal `install.sh` for Cursor / Kiro / VS Code
106-
- **Skills**: 42 (15-agent core team + optional specialists + auto-loading language skills + cross-cutting process skills; frameworks as references)
106+
- **Skills**: 43 (15-agent core team + optional specialists + auto-loading language skills + cross-cutting process skills; frameworks as references)
107107
- **Commands**: 50 slash commands
108108
- **Templates**: 6 document templates
109109
- **Backends**: pluggable adapters — file-based by default; Jira/Confluence/OpenMemory/Penpot/etc. optional

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
![Claude Code](https://img.shields.io/badge/Claude%20Code-ready-6E56CF) ![Cursor](https://img.shields.io/badge/Cursor-ready-111111) ![Kiro](https://img.shields.io/badge/Kiro-ready-9B59B6) ![VS Code](https://img.shields.io/badge/VS%20Code-ready-007ACC) ![License: MIT](https://img.shields.io/badge/License-MIT-green) ![Stars](https://img.shields.io/github/stars/olehsvyrydov/AI-development-team?style=social)
44

5-
> **A reusable AI agent-team framework for your editor.** 42 agent skills (a 15-agent core team + optional specialists + auto-loading language skills + cross-cutting process skills) plus a `workflow-engine` and an **enforced, proportional workflow** with approval gates — *process, not prompts*. Installs as a **Claude Code plugin**, or via the universal installer for Cursor, Kiro & VS Code. Open-source, no lock-in, free by default.
5+
> **A reusable AI agent-team framework for your editor.** 43 agent skills (a 15-agent core team + optional specialists + auto-loading language skills + cross-cutting process skills) plus a `workflow-engine` and an **enforced, proportional workflow** with approval gates — *process, not prompts*. Installs as a **Claude Code plugin**, or via the universal installer for Cursor, Kiro & VS Code. Open-source, no lock-in, free by default.
66
77
```
88
/po → /arch → /secops → [/fin] → [/legal] → [/ui] → /fe | /be → /rev → /qa + /e2e → /verify
@@ -134,7 +134,7 @@ config for each — no lock-in:
134134
| **VS Code (Copilot)** | `.github/copilot-instructions.md` + `AGENTS.md` |
135135

136136
```bash
137-
./install.sh --editors=all --preset=solo --yes # non-interactive (preset: solo|small-team|regulated)
137+
./install.sh --editors=all --preset=solo --yes # non-interactive (preset: solo|small-team|parallel-team|regulated)
138138
./install.sh --editors=claude --scope=user # global ~/.claude (Claude Code)
139139
./install.sh --dry-run # preview, change nothing
140140
./install.sh --link # symlink content (dev mode)
@@ -185,7 +185,7 @@ generated at the destination:
185185
├── CLAUDE.md # generated pointer (TDD workflow, approval gates)
186186
├── TEAM_WORKFLOW.md # Complete team process documentation
187187
188-
├── skills/ # 42 agent skill files (15 core + specialists + language + process skills)
188+
├── skills/ # 43 agent skill files (15 core + specialists + language + process skills)
189189
│ ├── management/ # Product Owner, Scrum Master, Business Analyst
190190
│ ├── architecture/ # Solution Architect, GraphQL Developer
191191
│ ├── development/
@@ -211,7 +211,8 @@ generated at the destination:
211211
│ ├── model-selection/ # │ how to investigate, how to audit a grounded answer,
212212
│ ├── research-method/ # │ and how to run a PR to a mergeable state.
213213
│ ├── answer-audit/ # │
214-
│ └── pull-request/ # ─┘
214+
│ ├── parallel-delivery/ # │ claiming, isolating and reporting back a ticket
215+
│ └── pull-request/ # ─┘ worked by a separate session.
215216
216217
├── commands/ # 50 slash commands
217218
│ ├── [role-based] # /po, /sm, /ba, /arch, /fe, /be, /rev, /qa, /e2e ...
@@ -291,6 +292,7 @@ rarely invoke them by name, but knowing they exist lets you reach for one delibe
291292
| `research-method` | A question that needs measuring rather than deciding, and writing the result so it survives a hostile reader |
292293
| `answer-audit` | Checking a retrieval-grounded answer, assuming it is wrong until each claim is proven verbatim against a source |
293294
| `pull-request` | Running a PR to a mergeable state — resolving every review thread, checking runs by SHA rather than the summary |
295+
| `parallel-delivery` | Claiming a ticket for cross-session delivery, before creating its workspace/branch, or reporting it back — the claim protocol, workspace isolation, and the report-back contract |
294296

295297
**The rule they exist to enforce:** a ticket is Done only when its **negative** criteria are met —
296298
the guard, the refusal, the "cannot bypass" — and each names the **symbol** that enforces it. Happy

claude/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
> _Mirrors `CLAUDE.md` so editors that read `AGENTS.md` (Cursor, Kiro, VS Code) get identical guidance. References to "Claude Code" apply to your assistant._
44
5-
A team of 42 skills (a 15-agent core team + optional specialists, plus auto-loading language skills and cross-cutting process skills) + an enforced, proportional dev workflow. Open-source, vendor-neutral, works in Claude Code / Cursor / Kiro / VS Code, free by default.
5+
A team of 43 skills (a 15-agent core team + optional specialists, plus auto-loading language skills and cross-cutting process skills) + an enforced, proportional dev workflow. Open-source, vendor-neutral, works in Claude Code / Cursor / Kiro / VS Code, free by default.
66

77
> **Nothing loads this file automatically.** `install.sh` deploys only `skills/`, `commands/`,
88
> `templates/` and `workflow/`, and generates its own pointer file at the destination; a plugin

claude/CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# AI Development Team
22

3-
A team of 42 skills (a 15-agent core team + optional specialists, plus auto-loading language skills and cross-cutting process skills) + an enforced, proportional dev workflow. Open-source, vendor-neutral, works in Claude Code / Cursor / Kiro / VS Code, free by default.
3+
A team of 43 skills (a 15-agent core team + optional specialists, plus auto-loading language skills and cross-cutting process skills) + an enforced, proportional dev workflow. Open-source, vendor-neutral, works in Claude Code / Cursor / Kiro / VS Code, free by default.
44

55
> **Nothing loads this file automatically.** `install.sh` deploys only `skills/`, `commands/`,
66
> `templates/` and `workflow/`, and generates its own pointer file at the destination; a plugin

claude/commands/luda.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ You are now **Luda**, a Certified Scrum Master (CSM), Agile Coach, and **Team Or
1515

1616
## Core Principle
1717

18-
**You are the conductor of the orchestra.** Every agent reports to you. Every transition between workflow steps goes through you. You don't just facilitate — you **actively drive the process**.
18+
**Board integrity, not ceremony.** You are not the conductor of an orchestra that every agent reports to — that claim was unfalsifiable, so nothing ever contradicted it, and in practice it went unused. What you are accountable for is checkable instead: orphan work items, a plan that disagrees with the tracker, tickets marked Done without their negative acceptance criteria met, items parked with no trigger. **Dispatch is a ticket created; a report is a PR against that ticket.** Trigger the next agent when a step is ready, but the workflow holds without you in the loop — every agent enforces its own preconditions before it starts.
1919

2020
## Primary Responsibilities
2121

claude/commands/sm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ You are now the **Scrum Master**, a certified agile coach and **Team Orchestrato
1414

1515
## Core Principle
1616

17-
**You are the conductor of the orchestra.** Every agent reports to you. Every transition between workflow steps goes through you. You don't just facilitate — you **actively drive the process**.
17+
**Board integrity, not ceremony.** You are not the conductor of an orchestra that every agent reports to — that claim was unfalsifiable, so nothing ever contradicted it, and in practice it went unused. What you are accountable for is checkable instead: orphan work items, a plan that disagrees with the tracker, tickets marked Done without their negative acceptance criteria met, items parked with no trigger. **Dispatch is a ticket created; a report is a PR against that ticket.** Trigger the next agent when a step is ready, but the workflow holds without you in the loop — every agent enforces its own preconditions before it starts.
1818

1919
## Primary Responsibilities
2020

claude/skills/management/scrum-master/references/templates.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@
8282
**Sprint**: {N}
8383
**Depends On**: {other ticket IDs or "None"}
8484
**Source**: {investigation report, expert recommendation, user request}
85+
**Branch**: {exact branch name to create}
86+
**Claimed by**: {claimed_by — the worker currently implementing it; setting the tracker's assignee field to yourself is the lock, see `parallel-delivery`}
8587

8688
## Description
8789
{Clear, self-contained description of what needs to be done}
@@ -92,6 +94,14 @@
9294
- [ ] AC-3: {criterion}
9395
- [ ] AC-N: All existing tests pass (regression safety)
9496

97+
## Negative Acceptance Criteria
98+
- [ ] {what must NOT happen} — enforced by `{symbol/test/guard that enforces it}`
99+
- [ ] {what must NOT happen} — enforced by `{symbol/test/guard that enforces it}`
100+
101+
## Verification Steps
102+
1. `{exact command}` → expected: `{exact expected output}`
103+
2. `{exact command}` → expected: `{exact expected output}`
104+
95105
## Implementation Details
96106

97107
### Files to Modify
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
name: parallel-delivery
3+
description: How a ticket moves through multiple parallel sessions — one orchestrator authoring tickets, N workers each claiming and delivering one ticket end-to-end in an isolated workspace. Load this before claiming a ticket for cross-session delivery, before creating its workspace or branch, when a ticket under-specifies what it asks for, and when reporting a ticket back as done. Covers the claim protocol (assignee is the lock), workspace isolation, the ticket-is-the-sole-context rule, and the report-back contract (a PR is the report).
4+
---
5+
6+
# Parallel delivery — one ticket, one worker, no side channel
7+
8+
A single session can ask its own next question. Several sessions working the same board cannot — there is no shared memory between a worker and the session that wrote the ticket, and no channel back except the tracker itself. This skill is what makes that safe: a locking convention so two workers never pick up the same ticket, an isolation convention so their work never collides on disk, and a report-back contract so "done" means something without anyone standing in a room to say so.
9+
10+
## Claim protocol — the assignee field is the lock
11+
12+
A ticket is claimed by **assigning it to yourself and moving it to In Progress in the tracker, before any work starts** — not after you're sure you can finish it. Tracker-agnostic wording: **the ticket backend's assignee field is the lock.** Whatever the project uses — a Jira assignee, a `Backlog.md` owner column, a GitHub issue assignee — that field is authoritative for "is anyone already doing this?"
13+
14+
- **If a ticket is already assigned, it is taken.** Pick a different one. Don't message the other worker and don't assume they stalled; a ticket sitting assigned-but-idle past what the project considers stale is a board-integrity finding (`/sm` Check 5), not something a worker resolves by quietly taking over.
15+
- **Un-claim symmetrically.** If you stop — blocked, wrong ticket, or the ticket under-specifies what it needs (below) — unassign and move the ticket back off In Progress in the same action. A claimed ticket nobody is working is worse than an unclaimed one: it looks taken.
16+
17+
## Isolation — one workspace per worker
18+
19+
Each worker gets a **fresh clone or a `git worktree`, never a shared checkout's default branch.** Two workers editing the same working directory will silently interleave each other's uncommitted changes; a worktree or clone per ticket makes that structurally impossible instead of a discipline someone has to remember.
20+
21+
- Create the branch **named in the ticket** (its `Branch` field), not one you invent. Two workers inventing branch names independently is how two PRs collide on the same name or, worse, quietly target each other's commits.
22+
- The workspace is disposable. Once the PR is open, nothing about the ticket's state should live only in that checkout — see the report-back contract below.
23+
24+
## The ticket is the only context you get
25+
26+
This extends the existing Ticket Creation Protocol — "a developer should be able to implement the ticket using ONLY the ticket text" — to cross-session delivery, where it stops being a nicety and becomes load-bearing. In one session, an under-specified ticket is a two-minute question to whoever is sitting there. Across sessions there is no one sitting there: the author is a different, likely-idle session, and waiting for it to notice a question is not a plan.
27+
28+
**A worker asks no questions back.** If the ticket under-specifies what it asks for — a missing file path, an ambiguous acceptance criterion, a verification step with no expected output — the worker does not guess and does not wait. It stops, comments on the ticket naming exactly what's missing, and un-claims per the protocol above. A ticket returned this way is more valuable than one finished on a guess: the gap is now visible and fixable, instead of shipped as an assumption nobody reviewed for.
29+
30+
## Report-back contract — the deliverable is the report
31+
32+
**The report is not a separate artifact — it is the thing you were already going to produce.** No status document, no handoff notes file, no message to the orchestrator that isn't already sitting in the tracker where the next reader will actually look. Reporting back means exactly three things, together:
33+
34+
1. A **PR** to the target repository's default branch, facts-only (see `pull-request` for what "ready to merge" requires).
35+
2. A **ticket comment** with the PR URL and the local test results — the command and its own verdict, not "tests pass" as a bare claim (see `verify-landed`).
36+
3. The **tracker transition** — move the ticket to reflect a PR is open and awaiting review; the assignee stays yours until it merges and the ticket is Done.
37+
38+
Anything reported only in chat is invisible to the next worker and to `/sm`'s board-integrity checks — it never happened, as far as the record is concerned.
39+
40+
## Review gate — always on, and never the implementer
41+
42+
Under the `parallel-team` preset, `CODE_REVIEWED` is in `always_required` — it fires regardless of change class, including a ticket that looks trivial. **The reviewer must be a different session or person than the implementer.** The entire premise of parallel delivery is that a worker's own blind spots get a second, independent set of eyes; a worker cannot satisfy that gate by reviewing its own diff, under any persona.
43+
44+
## Related
45+
46+
- `workflow-engine` — loads the active preset and enforces `CODE_REVIEWED` before a ticket can close.
47+
- `pull-request` — running the opened PR to a mergeable state.
48+
- `verify-landed` — what the "local test results" in a report actually have to show.
49+
- the Ticket Creation Protocol (`scrum-master` references) — what makes a ticket self-contained in the first place; this skill extends it across sessions rather than replacing it.

claude/templates/user-story-template.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
| Story Points | {estimate} |
1111
| Sprint | {sprint_number} |
1212
| Epic | {epic_name} |
13-
| Owner | {assignee} |
13+
| Owner | {owner — accountable for the story's content} |
1414
| Status | Not Started / In Progress / In Review / Done |
15+
| Branch | {exact branch name to create} |
16+
| Claimed by | {claimed_by — the worker currently implementing it; setting the tracker's assignee field to yourself is the lock, see `parallel-delivery`} |
1517

1618
## User Story
1719

@@ -50,6 +52,16 @@
5052
- **When** {invalid action is performed}
5153
- **Then** {error handling behavior}
5254

55+
### Negative Acceptance Criteria
56+
57+
- [ ] {what must NOT happen} — enforced by `{symbol/test/guard that enforces it}`
58+
- [ ] {what must NOT happen} — enforced by `{symbol/test/guard that enforces it}`
59+
60+
## Verification Steps
61+
62+
1. `{exact command}` → expected: `{exact expected output}`
63+
2. `{exact command}` → expected: `{exact expected output}`
64+
5365
## Test Cases
5466

5567
### Unit Tests

claude/workflow/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Set `preset:` in `workflow.yaml`:
2222
|---|---|---|---|
2323
| **solo** (default) | one dev | nothing — gates fire on trigger/change-class only | Backlog.md / markdown |
2424
| **small-team** | a few devs | code review always | Backlog.md / markdown |
25+
| **parallel-team** | multiple parallel sessions/workers | code review always; reviewer ≠ implementer is a policy from the `parallel-delivery` skill — the config enforces only the gate, not who ran it | Backlog.md / markdown |
2526
| **regulated** | compliance | arch + security + approval + review + verify + reliability always | Jira / Confluence |
2627

2728
## How enforcement works (3 layers, no editor-specific hooks)

0 commit comments

Comments
 (0)