@chamba/claude-extras 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -2
- package/assets/agents/planner.md +8 -0
- package/assets/agents/qa.md +44 -0
- package/assets/commands/qa.md +25 -0
- package/assets/commands/ticket.md +20 -13
- package/dist/cli.js +2 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -20,8 +20,8 @@ Check the MCP server's version the same way: `npx @chamba/mcp --version`.
|
|
|
20
20
|
|
|
21
21
|
It installs into `~/.claude/`:
|
|
22
22
|
|
|
23
|
-
- **Slash commands**: `/ticket`, `/workspace`, `/map`, `/worktrees`, `/orq`, `/recall`, `/vault`
|
|
24
|
-
- **Subagents**: `planner`, `implementer`, `reviewer`, `tester`
|
|
23
|
+
- **Slash commands**: `/ticket`, `/workspace`, `/map`, `/qa`, `/worktrees`, `/orq`, `/recall`, `/vault`
|
|
24
|
+
- **Subagents**: `planner`, `implementer`, `reviewer`, `tester`, `qa`
|
|
25
25
|
- **Hooks**: warn on destructive commands, validate worktree edits
|
|
26
26
|
|
|
27
27
|
…and registers the `chamba` MCP server in `~/.claude.json`. It never overwrites your
|
|
@@ -51,6 +51,7 @@ fast/cheap ones.** These ship pre-configured — you only change what you want.
|
|
|
51
51
|
| **reviewer** | `claude-opus-4-7` | high | Critical audit; deep reasoning, doesn't need the very latest model. |
|
|
52
52
|
| **implementer** | `claude-sonnet-4-6` | medium | Executes clear specs; speed matters, medium reasoning is enough. |
|
|
53
53
|
| **tester** | `claude-sonnet-4-6` | medium | Tests over already-implemented code; same profile. |
|
|
54
|
+
| **qa** | `claude-opus-4-7` | high | Acceptance QA: reasons about criteria and drives the running app. |
|
|
54
55
|
| **summarizer** | `claude-haiku-4-5` | low | Summaries are mechanical; a fast, cheap model is perfect. |
|
|
55
56
|
| **researcher** | `claude-opus-4-7` | high | Research + synthesis; high reasoning, doesn't need Opus 4.8. |
|
|
56
57
|
|
|
@@ -202,6 +203,39 @@ Re-run it as the project grows — it updates its own notes in place and **never
|
|
|
202
203
|
note you edited by hand** (it only rewrites notes marked `source: chamba`). It's opt-in;
|
|
203
204
|
on a big monorepo, mapping everything is expensive.
|
|
204
205
|
|
|
206
|
+
## Acceptance QA with the `qa` agent
|
|
207
|
+
|
|
208
|
+
For user-facing tickets, the **planner** adds a `## QA plan` to the plan (local seed, test
|
|
209
|
+
users, URLs, login steps, and the expected behaviour per acceptance criterion), and
|
|
210
|
+
`/ticket` runs a final **acceptance-QA** phase: the `qa` subagent validates each criterion
|
|
211
|
+
against the **running app**, not the code. It **adapts to the project** — if the repo has
|
|
212
|
+
Playwright/Cypress (or a browser MCP) it drives the browser; otherwise it runs the repos
|
|
213
|
+
from the worktree, applies the local seed, and co-pilots with you, asking you to log in and
|
|
214
|
+
telling you what to click while you watch. It reports PASS/FAIL per criterion and never
|
|
215
|
+
commits.
|
|
216
|
+
|
|
217
|
+
Run it on its own to test or re-test without redoing the ticket:
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
/qa TICKET-123 # locate the worktree, run the QA plan
|
|
221
|
+
/qa -p ./plans/T-123.md TICKET-123
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Backend-only tickets get no QA phase.
|
|
225
|
+
|
|
226
|
+
**Enabling browser-driven QA (Claude Code).** Cursor has a built-in browser; Claude Code
|
|
227
|
+
doesn't, so add a Playwright MCP — at **user scope** so it leaves no trace in your repo.
|
|
228
|
+
In `~/.claude.json`:
|
|
229
|
+
|
|
230
|
+
```json
|
|
231
|
+
{ "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@playwright/mcp@latest"] } } }
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Run `npx playwright install chromium` once — the browsers land in your **user cache**
|
|
235
|
+
(`~/.cache/ms-playwright`). Both the MCP and the browsers live outside the project;
|
|
236
|
+
nothing is added to your `package.json` or `node_modules`. chamba never bundles or runs a
|
|
237
|
+
browser itself — the `qa` agent uses whatever is available and co-pilots when nothing is.
|
|
238
|
+
|
|
205
239
|
## License
|
|
206
240
|
|
|
207
241
|
MIT
|
package/assets/agents/planner.md
CHANGED
|
@@ -19,6 +19,14 @@ map + relevant notes). Produce a concrete, reviewable plan — do not write code
|
|
|
19
19
|
resolves. Only list questions that would actually change the plan — not
|
|
20
20
|
implementation details the implementer can settle. Never invent scope to paper
|
|
21
21
|
over them.
|
|
22
|
+
- If the ticket is **user-facing** (a UI change or a flow only verifiable in the
|
|
23
|
+
running app), add a `## QA plan` section so the **qa** agent can validate it:
|
|
24
|
+
state whether an acceptance-QA phase is needed and why; the **setup** (local
|
|
25
|
+
seed/fixtures, test users with their roles/context, how to run the app from the
|
|
26
|
+
worktree, and any E2E/browser tooling the repo already has); and, per acceptance
|
|
27
|
+
criterion, the URL/entry point, the login steps, and the expected behaviour.
|
|
28
|
+
Finish with a concrete step-by-step. If the change isn't user-facing, omit the
|
|
29
|
+
section — don't invent QA for a backend-only change.
|
|
22
30
|
|
|
23
31
|
Return the plan as structured markdown. The orchestrator runs it through
|
|
24
32
|
`chamba_review_plan` and the reviewer subagent, then resolves any `## Open
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa
|
|
3
|
+
description: Acceptance QA — exercises the running app and validates the ticket's acceptance criteria
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the **qa** agent. You act as a human QA: you validate the ticket's
|
|
7
|
+
acceptance criteria against the **running app**, not against the code. You work
|
|
8
|
+
from the plan's `## QA plan` section and the acceptance criteria. Everything you do
|
|
9
|
+
is **local and non-destructive** — never commit, push, or touch production.
|
|
10
|
+
|
|
11
|
+
**First, adapt to the project — don't assume a stack.** Inspect the repos in the
|
|
12
|
+
worktree and decide how to run the test by their nature:
|
|
13
|
+
|
|
14
|
+
- **Browser E2E already in the project** (a `playwright`/`@playwright/test`/`cypress`
|
|
15
|
+
dependency or config, or a browser MCP available to you) → use it to drive the
|
|
16
|
+
browser and walk each acceptance criterion, capturing screenshots as evidence.
|
|
17
|
+
- **No E2E tooling** → run the app yourself: start the relevant repos from the
|
|
18
|
+
worktree in the terminal (their `dev`/`start` scripts, docker-compose, etc.),
|
|
19
|
+
apply the **local** seed if one is needed, and co-pilot the test with me — give me
|
|
20
|
+
the exact step-by-step, drive what you can, and tell me precisely what to click and
|
|
21
|
+
what I should see.
|
|
22
|
+
|
|
23
|
+
**Keep the repo clean.** If you need a browser and the project has none, prefer a
|
|
24
|
+
Playwright MCP if one is configured — it runs via `npx` and installs its browser to my
|
|
25
|
+
**user cache**, leaving no trace in the repo. You may run `npx playwright install
|
|
26
|
+
chromium` (also user cache) to get the browser. Do NOT add Playwright to the project's
|
|
27
|
+
`package.json` or commit spec files unless I ask; if you write a driver script, put it
|
|
28
|
+
in a temp path outside the repo and delete it when done.
|
|
29
|
+
|
|
30
|
+
Then:
|
|
31
|
+
|
|
32
|
+
1. **Set up.** Apply the seed / fixtures the plan calls for (local only), and create
|
|
33
|
+
the test users with the roles/context it specifies. State exactly what you seeded.
|
|
34
|
+
2. **Run the app** from the worktree and confirm it's up (the URL/entry point).
|
|
35
|
+
3. **Log in.** When the flow needs auth, pause and ask me to log in with the test
|
|
36
|
+
user (near-final env, manual step). Wait for me — I'm watching.
|
|
37
|
+
4. **Walk each acceptance criterion.** For each one: go to its URL, do the steps, and
|
|
38
|
+
check the actual behaviour against the plan's expected outcome. Capture evidence
|
|
39
|
+
(screenshot, response, log).
|
|
40
|
+
5. **Report PASS/FAIL per acceptance criterion** — honestly, with what you observed.
|
|
41
|
+
Never mark PASS without seeing it. List anything you couldn't test and why.
|
|
42
|
+
|
|
43
|
+
If the plan has no `## QA plan` and the ticket isn't user-facing, say so and skip —
|
|
44
|
+
don't invent a QA phase.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run acceptance QA for a ticket — validate its acceptance criteria against the running app
|
|
3
|
+
argument-hint: "[-p <plan-path>] <ticket> [repo ...]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Run acceptance QA for ticket **$ARGUMENTS** — standalone, to test or re-test a
|
|
7
|
+
ticket without re-running the whole `/ticket` flow.
|
|
8
|
+
|
|
9
|
+
Parse the arguments: if they start with `-p`/`--plan`, the next token is a plan
|
|
10
|
+
file to read the `## QA plan` and acceptance criteria from. The first non-flag token
|
|
11
|
+
is the ticket id; any remaining tokens are repos to scope to.
|
|
12
|
+
|
|
13
|
+
1. Locate the code under test: call `chamba_list_worktrees` and use the worktree for
|
|
14
|
+
this ticket if one exists; otherwise use the current checkout. All QA runs there.
|
|
15
|
+
2. Get the acceptance criteria and QA setup:
|
|
16
|
+
- from the `-p` plan file if given (its `## QA plan` + acceptance criteria); else
|
|
17
|
+
- `chamba_load_context` for the ticket and infer the acceptance criteria from the
|
|
18
|
+
ticket + workspace. If you still can't tell what to verify, ask me for the
|
|
19
|
+
ticket text before going further.
|
|
20
|
+
3. Delegate to the **qa** subagent to run it: it detects the project's tooling
|
|
21
|
+
(Playwright/Cypress/browser MCP, how to run the app, the seed mechanism), sets up
|
|
22
|
+
the local seed and test users, runs the app, asks me to log in when needed, and
|
|
23
|
+
walks each acceptance criterion against the running app.
|
|
24
|
+
4. Report **PASS/FAIL per acceptance criterion** with the evidence. Everything is
|
|
25
|
+
local and non-destructive — do NOT commit, push, or touch production.
|
|
@@ -66,16 +66,23 @@ the workspace.
|
|
|
66
66
|
misses orphans whose name doesn't contain the deleted symbol — rely on the
|
|
67
67
|
build/typechecker/dead-code tool, not just grep. Fix what comes back, then
|
|
68
68
|
re-verify (max 3 rounds).
|
|
69
|
-
8.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
69
|
+
8. **Acceptance QA** — only if the plan has a `## QA plan`. Delegate to the **qa**
|
|
70
|
+
subagent to run it from the worktree: set up the local seed and test users, run
|
|
71
|
+
the app, and validate each acceptance criterion against the **running app** —
|
|
72
|
+
driving the browser if the project has E2E tooling, otherwise co-piloting with me
|
|
73
|
+
(it asks me to log in and tells me what to click while I watch). It reports
|
|
74
|
+
PASS/FAIL per criterion. If there's no `## QA plan`, skip this step. This is the
|
|
75
|
+
only interactive touchpoint at the end.
|
|
76
|
+
9. Call `chamba_summarize_to_vault` with a summary of what changed.
|
|
77
|
+
10. STOP and report for my review. The report MUST include:
|
|
78
|
+
- the repos touched and why;
|
|
79
|
+
- per repo, what changed and the test + verify results;
|
|
80
|
+
- an **acceptance-criteria checklist**: every AC of the ticket marked
|
|
81
|
+
**Delivered** or **Not delivered** (fold in the qa agent's PASS/FAIL when a QA
|
|
82
|
+
phase ran). Anything the plan marked **needs-approval**, or any AC you could
|
|
83
|
+
not deliver or verify without a deferred decision, goes under **"Needs your
|
|
84
|
+
decision"** with what's pending and why — never omit it;
|
|
85
|
+
- the `.code-workspace` to open, and the suggested commit +
|
|
86
|
+
`git merge --no-ff` commands.
|
|
87
|
+
Do NOT commit, merge or push — I review, commit and send to my company's code
|
|
88
|
+
review by hand.
|
package/dist/cli.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chamba/claude-extras",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Optional Claude Code extras for chamba: slash commands, subagents and hooks installer",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@inquirer/prompts": "^7.0.0",
|
|
34
|
-
"@chamba/adapters": "0.
|
|
35
|
-
"@chamba/core": "0.
|
|
34
|
+
"@chamba/adapters": "0.7.0",
|
|
35
|
+
"@chamba/core": "0.7.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "^22.0.0",
|