Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3ef728a
feat(aidd-qa): scaffold acceptance QA plugin from browser QA
blafourcade Sep 24, 2026
ffb9c9c
feat(aidd-dev): retire browser-qa to a redirect
blafourcade Sep 24, 2026
50c1340
chore(marketplace): register aidd-qa plugin
blafourcade Sep 24, 2026
f5c3dfc
docs(aidd-qa): add the plan and its validation record
blafourcade Sep 24, 2026
cd048e6
docs(aidd-qa): correct the validation record
blafourcade Sep 24, 2026
ba2a59a
fix(aidd-dev): scope 06-test to developer-side validation
blafourcade Sep 24, 2026
e8d3538
fix(aidd-qa): restrict criteria sourcing and complete the report cont…
blafourcade Sep 24, 2026
cff70e6
docs: correct plugin count and the pushed validation record
blafourcade Sep 24, 2026
8924333
fix(aidd-qa): add run-verdict rule and stop load-scope early
blafourcade Sep 24, 2026
db49dea
fix(aidd-dev): describe 06-test as developer-side in its README
blafourcade Sep 24, 2026
b642829
docs: correct 06-test's catalog description and the validation record
blafourcade Sep 24, 2026
911bcab
fix(aidd-qa): route the zero-criterion skip before prerequisites
blafourcade Sep 24, 2026
a6e0cda
fix(aidd-dev): drop the addressing note from the 06-test README row
blafourcade Sep 24, 2026
3c81dfb
docs: correct 06-test's catalog description and the validation record
blafourcade Sep 24, 2026
ec1cf16
fix(aidd-qa): report a fully rejected scenario set as blocked, not sk…
blafourcade Sep 24, 2026
2f060ed
docs: correct the validation record's defect count and commit table, …
blafourcade Sep 24, 2026
ff9587b
fix(aidd-qa): guard resets and tighten scope order after a real run
blafourcade Sep 24, 2026
26256f0
fix(aidd-qa): condense load-scope and align teardown with session close
blafourcade Sep 24, 2026
0c5e32c
fix(aidd-qa): let project memory decide the entry, locate the reset g…
blafourcade Sep 24, 2026
a75190b
fix(aidd-qa): check storage before starting the entry
blafourcade Sep 24, 2026
94ec529
refactor(aidd-qa): condense prepare-run and run-scenarios
blafourcade Sep 24, 2026
3076d24
feat(aidd-dev): remove the retired browser-qa redirect
blafourcade Sep 24, 2026
9fb998f
chore(aidd-qa): start the plugin at 1.0.0
blafourcade Sep 24, 2026
b15ad60
chore: merge next into feat/aidd-qa-plugin
blafourcade Sep 24, 2026
3f94766
chore(aidd-qa): release the plugin as 1.0.0
blafourcade Sep 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,15 @@
"metadata": {
"recommended": false
}
},
{
"name": "aidd-qa",
"source": "./plugins/aidd-qa",
"description": "Acceptance QA: validates observable behavior against acceptance criteria and records reviewer evidence. Browser is the only supported interface today.",
"strict": true,
"metadata": {
"recommended": false
}
}
]
}
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ jobs:
aidd-refine,
aidd-ui,
aidd-telemetry,
aidd-qa,
]
steps:
- name: Check if this plugin was released
Expand Down
1 change: 1 addition & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@
"plugins/aidd-refine": "3.0.1",
"plugins/aidd-ui": "0.2.1-alpha.0",
"plugins/aidd-telemetry": "0.2.0",
"plugins/aidd-qa": "0.1.0",
"cli": "5.3.0"
}
20 changes: 14 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Unify **engineering teams** around **standardized workflows** and **shared best
🧱 **IDE agnostic** · 🏗️ **Legacy systems** · 🌱 **Token-optimized** · 🇫🇷 **Made in France**

<p>
<!--counts:start--><kbd>8 plugins</kbd> · <kbd>51 skills</kbd> · <kbd>2 agents</kbd><!--counts:end-->
<!--counts:start--><kbd>9 plugins</kbd> · <kbd>51 skills</kbd> · <kbd>2 agents</kbd><!--counts:end-->
</p>

[![Open Source](https://img.shields.io/badge/Open_Source-Yes-yellow?logo=open-source-initiative&logoColor=white)](https://opensource.org/)
Expand Down Expand Up @@ -58,7 +58,7 @@ Why not just write your own commands? → [FAQ](docs/FAQ.md#-why-aidd-instead-of

### Claude Code

Installs the 6 stable plugins (`aidd-ui` is 🚧 alpha and `aidd-telemetry` 🧪 beta, install separately — see [Plugins](#-plugins)).
Installs the 6 stable plugins (`aidd-ui` is 🚧 alpha, `aidd-telemetry` 🧪 beta, and `aidd-qa` 🆕 new, install those separately — see [Plugins](#-plugins)).

**In the session** (slash commands)

Expand Down Expand Up @@ -240,7 +240,7 @@ learning only when it is durable enough to improve the next feature.

## 🧩 Plugins

Eight plugins covering the whole SDLC — **install all of them**; they work together. (`aidd-ui` is 🚧 **alpha** and `aidd-telemetry` 🧪 **beta** — both off the curated path.)
Nine plugins covering the whole SDLC — **install the six stable ones**; they work together. (`aidd-ui` is 🚧 **alpha**, `aidd-telemetry` 🧪 **beta**, and `aidd-qa` 🆕 **new** — all three off the curated path.)

<table>
<tr>
Expand All @@ -257,9 +257,9 @@ Project init, memory bank, context-artifact generation, diagrams, learning, expl

### ⚙️ [aidd-dev](plugins/aidd-dev/README.md)

`11 skills` · stable
`10 skills` · stable

Code transformation: plan, implement, assert, audit, review, test, refactor, debug. Standalone Browser QA records short web evidence.
Code transformation: plan, implement, assert, audit, review, test, refactor, debug.

</td>
<td width="33%" valign="top">
Expand Down Expand Up @@ -320,7 +320,15 @@ UI / UX design — smoke-test only, not ready for use.
Answers what a piece of work cost — tokens, models, and which skill spent them. The switch is git-tracked, so it applies to everyone who clones; opt out per person with `AIDD_TELEMETRY=0`. Nothing leaves your machine.

</td>
<td width="33%" valign="top"></td>
<td width="33%" valign="top">

### 🎬 [aidd-qa](plugins/aidd-qa/README.md) 🆕

`1 skill` · **new**

Acceptance QA — locks browser scenarios from acceptance criteria and records reviewer evidence.

</td>
</tr>
</table>

Expand Down
6 changes: 3 additions & 3 deletions aidd_docs/memory/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@ The macro technical shape: the stack, how the pieces fit, and the decisions behi
| --- | --- |
| Product | markdown — skills, agents, rules, templates. No framework runtime; an LLM interprets them. |
| Delivery | Node `>=22.12`, pnpm. `cli/` is the `aidd` binary; `kanban/` is a private package. |
| Manifest | `.claude-plugin/marketplace.json`, the plugin manifest: 8 plugins, no version among them. Versions are release-please's, in `deployment.md`. |
| Manifest | `.claude-plugin/marketplace.json`, the plugin manifest: 9 plugins, no version among them. Versions are release-please's, in `deployment.md`. |

## How it fits together

```mermaid
flowchart LR
Manifest[".claude-plugin/marketplace.json"] -->|lists| Plugins["plugins/ · 8"]
Manifest[".claude-plugin/marketplace.json"] -->|lists| Plugins["plugins/ · 9"]
Plugins -->|ships| Surfaces["skills · agents · commands · hooks · rules"]
CLI["cli/ · aidd"] -->|reads| Manifest
CLI -->|installs| Target["a project's AI tool dir"]
Expand All @@ -40,6 +40,6 @@ The concern-to-plugin taxonomy is canonical in [`docs/ARCHITECTURE.md`](../../do

## Gotchas

- 8 plugins ship, 2 off the curated install path: `aidd-ui` is alpha, `aidd-telemetry` beta and opt-in.
- 9 plugins ship, 3 off the curated install path: `aidd-ui` is alpha, `aidd-telemetry` beta and opt-in, `aidd-qa` new and unproven outside this repository.
- A skill never links outside itself: the tree ships both flat and as a marketplace, so no relative path survives both.
- Bundled hooks run Node. No `node` on `PATH`, no memory refresh and no run journal.
2 changes: 1 addition & 1 deletion aidd_docs/memory/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Branch model in `vcs.md`, cadence and safety rules in [`RELEASE.md`](../../RELEA
4. Archives are staged outside the repo tree, uploaded with `gh release upload --clobber`.
5. `back-merge.yml` folds `main` into `next`.

Config: `release-please-config.json`, ten packages. Manifest: `.release-please-manifest.json`.
Config: `release-please-config.json`, eleven packages. Manifest: `.release-please-manifest.json`.

## Gotchas

Expand Down
1 change: 1 addition & 0 deletions aidd_docs/memory/project-brief.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ What this project is, the problem it solves, and its domain language. The non-de
| Generate context artifacts | `aidd-context:03-context-generate` and its per-kind generators |
| Development loop | `aidd-dev` — plan, implement, assert, audit, review, test, refactor, debug |
| Typed product backlog | `aidd-pm` — brief, epic, story, spec, spike, defect |
| Acceptance QA evidence | `aidd-qa:01-acceptance-qa` |
| Refine input and output | `aidd-refine` — brainstorm, challenge, blind spots |
| End-to-end orchestration | `aidd-orchestrator:01-sdlc` |
| Measure what a session cost | `aidd-telemetry`, opt-in, plus `aidd telemetry` |
4 changes: 2 additions & 2 deletions aidd_docs/memory/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ How the project is tested: the layers, the tools, and the conventions. Where tes
| `cli/` | vitest, four projects — see the CLI bank |
| `kanban/` | its own vitest suite. It shares no code with `cli/` |
| Per-tool distributions | golden snapshots in `cli/tests/golden/`, mirrored by the `build-per-tool` CI matrix; Claude Code's own `plugin validate` over a fresh claude build, in `cli-ci.yml` |
| Browser journeys | `aidd-dev:11-browser-qa`, see below |
| Browser journeys | `aidd-qa:01-acceptance-qa`, see below |

## Tools

Expand Down Expand Up @@ -46,4 +46,4 @@ CI runs more: `validate.yml` re-runs the whole pre-commit over the whole tree on

- Runner: `npx --yes @playwright/cli@0.1.17`, the framework pin. Never `latest` during QA.
- Also required: `ffmpeg` and `ffprobe`. Output is WebM evidence per scenario.
- Owned by `aidd-dev:11-browser-qa`; this repository ships the capability, it has no browser journey of its own.
- Owned by `aidd-qa:01-acceptance-qa`; this repository ships the capability, it has no browser journey of its own.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"backlog": "ai-driven-dev/framework#908",
"written_at": "2026-09-24T00:00:00Z",
"written_by": "aidd-dev:01-plan"
}
91 changes: 91 additions & 0 deletions aidd_docs/tasks/2026_09/2026_09_24_aidd-qa-plugin/phase-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
---
status: pending
---

# Instruction: Scaffold `aidd-qa` with the acceptance QA skill

## Architecture projection

> Tree of the final files. ✅ create · ✏️ modify · ❌ delete

```txt
plugins/aidd-qa/
├── .claude-plugin/plugin.json ✅ name, version 0.1.0, description, skills[]
├── README.md ✅ concern, skill table, browser-only scope, install line
└── skills/01-acceptance-qa/
├── SKILL.md ✅ router: prerequisites → load-scope → prepare-run → run-scenarios
├── actions/00-prerequisites.md ✅ moved from aidd-dev, unchanged behavior
├── actions/01-load-scope.md ✅ rewritten: scenarios derive from acceptance criteria only
├── actions/02-prepare-run.md ✅ moved, deterministic setup and teardown kept
├── actions/03-run-scenarios.md ✅ moved, report fields expected/actual/verdict/evidence
├── assets/qa-report-template.md ✅ one row per scenario: expected, actual, verdict, evidence
└── references/interface-browser-playwright-cli.md ✅ moved recording contract, names browser as the supported interface
```

## User Journey

```mermaid
flowchart TD
A[Acceptance criteria + reviewed candidate] --> B[prerequisites]
B --> C[load-scope: one scenario per browser-observable criterion]
C --> D[prepare-run: auth, fixtures, teardown]
D --> E[run-scenarios: record, verdict, reset]
E --> F[qa.md + qa/*.webm]
```

## Test Scope

```mermaid
---
title: Test scope
---
journey
section Setup
copy the plugin into a fresh marketplace checkout => plugin directory present: 5: system
section Happy path
run check-architecture-rules on plugins/aidd-qa => no violation: 5: cli
section Edge case - criterion not browser-observable
load-scope given a criterion with no browser outcome => criterion listed as out of interface, no scenario: 5: system
```

## Tasks to do

### `1)` Manifest and README

> The plugin declares itself and one skill.

1. `plugin.json` from `aidd-ui`'s shape: `name: aidd-qa`, `version: 0.1.0`, description "Acceptance QA: validates observable behavior against acceptance criteria and records reviewer evidence. Use when … Do NOT use for …", `skills: ["./skills/01-acceptance-qa"]`, keywords.
2. `README.md`: concern, skill table, browser as the only interface today, `/plugin install aidd-qa@aidd-framework`. No sibling-plugin address.

### `2)` Move the skill

> Browser QA lives under `aidd-qa` with history kept.

1. `git mv plugins/aidd-dev/skills/11-browser-qa plugins/aidd-qa/skills/01-acceptance-qa` (phase 2 recreates the redirect in `aidd-dev`).
2. Rename `references/run-scope-playwright-cli.md` to `references/interface-browser-playwright-cli.md`; update the link in `03-run-scenarios.md`.
3. `SKILL.md`: frontmatter `name: 01-acceptance-qa`, description stating input = acceptance criteria + reviewed candidate, browser interface; router table and transversal rules kept; add rule "never derive a scenario from the diff or the source code".

### `3)` Acceptance-derived scope

> Scenarios come from acceptance criteria, not from implementation.

1. `01-load-scope` Input: acceptance criteria (issue, spec, plan) + reference to the reviewed candidate (branch, commit, or running URL).
2. Process: one happy path from the criteria's primary journey, edge cases only from criteria or the plan's browser Test Scope; each scenario keeps the criterion it proves; a criterion with no browser-observable outcome is listed as out of interface, never tested by reading code.
3. Remove steps that source edge cases from the implementation artifact or related tests.
4. Add a `## Test` section to every action that lacks one.

### `4)` Report per scenario

> Each scenario states expected, actual, verdict, evidence.

1. `qa-report-template.md`: header verdict, source (acceptance criteria path), candidate, run date; table `Scenario | Criterion | Expected | Actual | Verdict | Evidence`.
2. `03-run-scenarios` Report step and Test reference those fields; video validation steps kept.

## Test acceptance criteria

| Task | Acceptance criteria |
| --- | --- |
| 1 | `plugin.json` validates against its schema; no `aidd-<x>:<y>` of another plugin in README |
| 2 | `plugins/aidd-qa/skills/01-acceptance-qa/` holds 4 actions, 1 asset, 1 reference; `check-architecture-rules.js` passes |
| 3 | `01-load-scope` names acceptance criteria as its only scenario source and forbids diff or source-derived scenarios |
| 4 | the report template has Expected, Actual, Verdict, Evidence columns; video checks (codec, dimension, duration, frames) still present |
66 changes: 66 additions & 0 deletions aidd_docs/tasks/2026_09/2026_09_24_aidd-qa-plugin/phase-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
status: pending
---

# Instruction: Retire `aidd-dev:11-browser-qa` to a redirect

## Architecture projection

> Tree of the final files. ✅ create · ✏️ modify · ❌ delete

```txt
plugins/aidd-dev/
├── .claude-plugin/plugin.json ✏️ description drops Browser QA; skills[] keeps ./skills/11-browser-qa
├── README.md ✏️ Browser QA row becomes a moved note
└── skills/11-browser-qa/
├── SKILL.md ✅ retired redirect router, one action
└── actions/01-redirect.md ✅ prints the migration message and stops
aidd_docs/memory/testing.md ✏️ Browser QA owner is aidd-qa
```

## User Journey

```mermaid
flowchart TD
A[User invokes the old Browser QA skill] --> B[redirect action]
B --> C[Message: moved to the aidd-qa plugin + install command]
C --> D[Stop, no QA run]
```

## Test Scope

```mermaid
---
title: Test scope
---
journey
section Happy path
invoke the retired skill => migration message naming aidd-qa and its install command: 5: system
section Edge case - description matching
ask for browser QA with both plugins installed => description declares itself retired and not for running QA: 5: system
```

## Tasks to do

### `1)` Redirect skill

> The old invocation answers with a migration message.

1. `SKILL.md`: `name: 11-browser-qa`, description "Retired. Explains where browser QA moved. Use only when this skill is invoked by name. Do NOT use to run QA or record evidence." Actions table with `redirect`.
2. `actions/01-redirect.md`: Input none; Output the message "Browser QA moved to the `aidd-qa` plugin. Install it with `/plugin install aidd-qa@aidd-framework` (or `aidd plugin install aidd-qa`) and run its acceptance QA skill."; Process print and stop, never run QA; `## Test`.
3. No `aidd-<x>:<y>` token anywhere in the redirect.

### `2)` aidd-dev surface

> aidd-dev no longer claims Browser QA.

1. `plugin.json` description: remove "plus short standalone Browser QA evidence".
2. `README.md`: remove Browser QA from the covers sentence; row 2.11 says retired, moved to the `aidd-qa` plugin.
3. `aidd_docs/memory/testing.md`: owner `aidd-qa`, skill `01-acceptance-qa`.

## Test acceptance criteria

| Task | Acceptance criteria |
| --- | --- |
| 1 | the redirect holds no QA process; `check-architecture-rules.js` passes on it |
| 2 | `grep -i "browser qa" plugins/aidd-dev/.claude-plugin/plugin.json` finds nothing; memory names `aidd-qa` as owner |
70 changes: 70 additions & 0 deletions aidd_docs/tasks/2026_09/2026_09_24_aidd-qa-plugin/phase-3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
status: pending
---

# Instruction: Register the plugin and update the docs

## Architecture projection

> Tree of the final files. ✅ create · ✏️ modify · ❌ delete

```txt
.claude-plugin/marketplace.json ✏️ aidd-qa entry, strict, metadata.recommended false
release-please-config.json ✏️ plugins/aidd-qa package
.release-please-manifest.json ✏️ "plugins/aidd-qa": "0.1.0"
.github/workflows/ci.yml ✏️ build-plugin matrix gains aidd-qa
commitlint.config.cjs ✏️ scope-enum gains aidd-qa, qa
docs/ARCHITECTURE.md ✏️ concerns table row: aidd-qa, Acceptance QA, Execution + status note
docs/CATALOG.md ✏️ aidd-qa section; Browser QA row removed from aidd-dev
README.md ✏️ plugin counts, aidd-qa section, aidd-dev line drops Browser QA
aidd_docs/memory/architecture.md ✏️ 9 plugins, 3 off the curated path
aidd_docs/memory/project-brief.md ✏️ key feature row for acceptance QA
```

## User Journey

```mermaid
flowchart TD
A[marketplace.json lists aidd-qa] --> B[release-please versions it]
B --> C[ci.yml builds its archive]
A --> D[docs and taxonomy name it]
```

## Test Scope

```mermaid
---
title: Test scope
---
journey
section Happy path
run the scripts suite => release-covers-every-plugin and architecture-doc tests pass: 5: cli
section Edge case - curated install
read marketplace.json => aidd-qa has recommended false: 5: system
```

## Tasks to do

### `1)` Registration

> Every release and CI guard sees the plugin.

1. Marketplace entry after `aidd-telemetry`, description by concern, `recommended: false`.
2. release-please package block copied from `plugins/aidd-ui`; manifest `0.1.0`.
3. `ci.yml` matrix and commitlint scopes.

### `2)` Docs and memory

> Every place that counts or lists plugins stays true.

1. `docs/ARCHITECTURE.md` row + a one-line status note (off the curated path until proven).
2. `docs/CATALOG.md` and `README.md`: add aidd-qa, fix counts and the aidd-dev description, keep the README badge/status style used for `aidd-ui`/`aidd-telemetry`.
3. Memory `architecture.md` gotcha count, `project-brief.md` feature row.
4. Let `pnpm exec lefthook run pre-commit` regenerate catalogs and counts; never hand-edit generated files.

## Test acceptance criteria

| Task | Acceptance criteria |
| --- | --- |
| 1 | `release-covers-every-plugin.test.js` passes; marketplace JSON validates |
| 2 | `architecture-doc-matches-the-tree.test.js` passes; no doc still says 8 plugins or attributes Browser QA to aidd-dev |
Loading
Loading