Get started

From nothing to a first feature that has run the whole SPARK loop. Every command here comes from the products' own repositories.

Claude Code

The agent aSPARK runs inside as a plugin. claude must be callable from your terminal.

Git

The artifacts are versioned with your code — without a repository there is nothing to version.

Browser integration

Only for /demo-day: Claude in Chrome, a Playwright or a Chrome DevTools MCP server. Everything else runs fine without it.

The easy way is the built-in /plugin menu inside an interactive Claude Code session.

In an interactive session

# 1 — Open Claude Code in your terminal. claude # 2 — Add the marketplace — you only ever do this once. /plugin marketplace add a-lottes/aSPARK # 3 — Install the plugin, read it as pluginname@marketplacename. /plugin install aspark@aspark # 4 — Restart Claude Code. Plugins only activate after a restart. # 5 — Check it worked: aspark should be listed and enabled. /plugin

In scripts and CI

The /plugin menu only works in an interactive session. For scripts, CI or a non-interactive shell, the CLI equivalents do exactly the same thing.

claude plugin marketplace add a-lottes/aSPARK claude plugin install aspark@aspark

Local development install

To hack on aSPARK itself, point Claude Code at a local clone instead of the marketplace.

git clone https://github.com/a-lottes/aSPARK.git claude --plugin-dir /path/to/aSPARK

Each phase writes its artifact to .spark/<feature>/ and checks its gate at the end. You stay the decision maker — the loop stops at every gate.

Run /charter first. On an empty repo it asks a handful of hard product questions and ends by offering /story-time with the first slice named; on an existing codebase it reads the repo and writes down what it found, for you to correct once. Either way the team stops re-deriving what your project is on every feature. You can skip it, but /spark and /next-steps will point you here first.

/charter ← Facilitator /story-time <idea> ← Specify /look-and-feel ← Designer /sprint-plan ← Plan /increment ← Act /peer-review ← Review /demo-day <url> ← QA /go-live ← Keep

No idea in hand? /next-steps surveys the project's current state and proposes the next feature.

What a finished run looks like: steamcore · highscore-system — spec, plan, review, QA and release of a real feature, ready to read.

All at once

/spark <idea>

/spark runs the same loop end to end, shows you the artifact before each transition and pauses at the gate. After heavy phases it points out that you can /clear and resume with /spark — the artifacts on disk are the state.

S · SpecifyP · PlanA · ActR · ReviewK · Keep

Core's gates are requests to a model. aspark-guard makes them checks that run outside it — from the same marketplace, one command, then a restart.

claude plugin marketplace add a-lottes/aSPARK claude plugin install aspark-guard@aspark # recommended, once per project # the logs are append-only — never a conflicting edit echo '.spark/.guard/*.jsonl merge=union' >> .gitattributes

Requires Python 3.11+ and POSIX (macOS, Linux). It stays silent in any project without a .spark/ directory and fails open by design — a guard that blocks when unsure only teaches people to switch it off.

Check the rules against your own history

python3 /path/to/aSPARK-guard/bin/guard.py check .

Replays all three gate rules read-only over the artifacts already on disk. On a project whose features ran cleanly it prints nothing but a count — every line it does print there is a false positive.

aSPARK-guard →

Where aspark-graph is present in the project, /sprint-plan, /peer-review and /demo-day use it to scope. Absent, nothing changes — no error, no warning.

pip install aspark-graph # uvx — with no install step uvx aspark-graph build .

The graph is not forwards-compatible across versions: rebuild after an upgrade. With uvx the latest published version always runs, so there is no separate update step.

Register it as an MCP server

claude mcp add aspark-graph -- uvx aspark-graph serve

aSPARK-graph →

A policy is not a package you install — it is a repository you mount. It sits as a submodule under .spark/policy and belongs to your organization.

git submodule add \ git@github.com:company/engineering-policy.git \ .spark/policy

Honest about the state: the format, schemas and packs are in place — machine enforcement (the validate CLI and the /charter binding) is not. The policy is readable, inheritable and auditable today, but no agent picks it up automatically yet.

A minimal policy.yaml

schema_version: 1 name: ACME Enterprise Policy imports: - aspark:security - aspark:api - aspark:library rules: review: minimum_reviewers: 2 qa: browser_testing: required security: owasp_top10: true

aSPARK-policy →

Where to go next

The product pages explain what sits behind each part — and the roadmap, what is still to come.