demo-day
Hands-on QA in a real browser: the QA Tester clicks through the running app, verifies every acceptance criterion from the spec, explores beyond the happy path…
Establish or amend the project constitution — the standing principles and constraints that bind every SPARK phase. Use once at project start to give the team its ground rules, or any time a project-wide decision (stack choice, quality bar, non-negotiable) changes and should
$ npx -y skills add a-lottes/aSPARK --skill charter --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/charterContext preview
The summary Claude sees to decide when to auto-load this skill.
Establish or amend the project constitution — the standing principles and constraints that bind every SPARK phase. Use once at project start to give the team its ground rules, or any time a project-wide decision (stack choice, quality bar, non-negotiable) changes and should
name: charter description: > Establish or amend the project constitution — the standing principles and constraints that bind every SPARK phase. Use once at project start to give the team its ground rules, or any time a project-wide decision (stack choice, quality bar, non-negotiable) changes and should apply to all future features.
You are setting the **standing context** for the whole SPARK loop. The constitution lives at `.spark/constitution.md` and is read by every agent before phase work — so decisions that hold across all features are made once here, not re-argued in every `/story-time`.
Optional argument: a principle, constraint, or "set up our ground rules". No argument → offer to create the constitution from scratch or amend the existing one.
1. **Delegate to the Facilitator.** Invoke the `facilitator` agent with the path `.spark/constitution.md`, the template from `${CLAUDE_PLUGIN_ROOT}/templates/constitution.md`, and the user's input verbatim. Say whether this is a first draft or an amendment if you already know; the agent will otherwise detect it from the file's presence. The Facilitator has no shell — for §9 Project Context, always gather a read-only git summary yourself (`git log --oneline -20`, further back on a young project; if the repo has no commits at all, hand over that it is empty rather than nothing) and hand it over with the rest, the same pattern `/next-steps` step 1 uses for the loop-state brief. Do this on every first draft, not only ones with source files or a manifest — a greenfield repo can still have real commits worth grounding §9 in — **and do it again on any amendment that touches §9** (adding it where absent, or correcting an existing entry): the Facilitator's own git history is no fresher on an amendment than on a first draft, so skipping it there would recreate the same false-`absent` risk one call site over. The Facilitator reads `README.md`, `CLAUDE.md` and `.spark/` specs itself via its own Read tool. 2. **Relay, don't guess.** The agent grounds a draft in the codebase but cannot talk to the user. When it returns questions — the team's priorities, a deliberate quality bar, a contradiction only the user can resolve — put them to the user (AskUserQuestion where the choices are enumerable), then re-invoke the agent with the answers. 3. **Present the result.** Show the user the drafted constitution, separating what the agent **inferred from the project** from what still needs their decision, plus any contradiction it flagged. Keep it short — a constitution nobody reads is dead weight. Surface the **detected type(s), characteristics and proposed active lenses** (e.g. `seo`, `ux`, `security`) as their own decision, with the evidence the agent found — this is what makes later phases situational (an SEO lens only runs on a `website`, a `security` lens only when the project handles auth or PII), so confirm it consciously with the user rather than letting it ride. Also surface the **active-lens load** — if 4+ lenses come out active, flag the elevated load so the user sees each phase will carry several lenses (no cap, just visibility). Surface the **QA method** (§8) as its own explicit decision too, with the evidence the agent found — whether this project has a browser-observable surface, and if not, which method the QA phase performs instead. Never let it ride on the profile or the lens state: a project with no `website` and no `web-app` is *evidence* for the question, never the answer to it, so a mis-typed profile can never suppress QA on its own. Leaving it undeclared is a valid answer and the default — QA then behaves exactly as it does today. `/charter` is the only ceremony that may create or amend this declaration. Surface the **Project Context** (§9) as its own decision too, in this same round — never a separate one: show the product brief and, where the repo has code, the system picture, each entry marked `inferred from <file:line>` / `asked` / `confirmed by user` / `not stated` / `not found` so the user can confirm or correct in one pass alongside the profile and QA method. 4. **Iterate.** Fold the user's edits back in via the agent until they're satisfied. On an amendment, confirm the *Amendments* log records the change and its reason. 5. **Confirm.** Remind the user the constitution now binds every phase — the PO scopes within it, the EM plans within it, the Reviewer enforces it. If the kickoff interview named a first slice, offer `/story-time <first slice>` and invoke it only on the user's explicit go — never automatically.
requirements — those belong in a spec. If the user brings a feature idea here, note it and point them to `/story-time`.
Detection proposes them from the repo; it never switches one on silently. A lens the team won't act on comes back off — dead weight erodes trust in the rest of the constitution.
doesn't actually follow; a false constitution erodes trust in all the others.
what the team is bound by.
**`/spark`** (run the full loop).
A gated agile delivery process for Claude Code: an AI product team (PO, Designer, EM, Reviewer, QA, Release) where every feature must pass a quality gate before it moves on — including real-browser QA.
Repo: a-lottes/aSPARK
Hands-on QA in a real browser: the QA Tester clicks through the running app, verifies every acceptance criterion from the spec, explores beyond the happy path…
Start the Keep phase of the SPARK loop: the Release Manager runs fresh pre-flight checks, writes the user-facing changelog, prepares tag/PR/ deploy, publishes…
Start the Act phase of the SPARK loop: build the increment strictly following the approved plan, task by task, with progress tracked in the plan. Use after the…
Run the Designer over a spec (design risks, usability heuristics, accessibility) or over an implemented UI (screenshots, running app). Use after /story-time…
Have the Product Owner survey the project's current state — shipped features, in-flight work, open findings, standing goals — and propose one concrete next…
Start the Review phase of the SPARK loop: the Reviewer audits the diff produced by /increment — plan conformance, correctness, edge cases, security, test…