Skip to content

Adopt Spec Kit for design work, with a constitution - #178

Merged
adamjohnwright merged 2 commits into
mainfrom
chore/spec-kit
Sep 8, 2026
Merged

adamjohnwright merged 2 commits into
mainfrom
chore/spec-kit

Conversation

@adamjohnwright

Copy link
Copy Markdown
Contributor

Adds github/spec-kit v1.0.4 via specify init --here --integration claude.

Footprint

.specify/   184K   templates, scripts, workflow registry
.claude/    196K   skills for the /speckit-* commands

No Python, so nothing new for ruff or mypy to scan. Verified lint, mypy and pytest all still pass with it in the tree, and all six bundled shell scripts parse.

Scope — deliberately narrow

Spec Kit is for work with real, unmade decisions: the retriever rewrite, the headless agent API, website integration, analysis summarisation.

It is not for bug triage or dependency bumps. /speckit.specify → /plan → /tasks → /implement → /converge is five steps before code; on something like this week's bge-m3 default that ceremony would have cost more than the fix. Retrofitting specs onto existing code is archaeology and is not planned.

That boundary is written into the constitution so it does not drift.

The constitution

Written from decisions and mistakes actually made, not generic principles, so it can be checked against a diff. Six articles:

  1. Verify the path a user takes, not the component you changed — the lesson that recurred most this week.
  2. Measure retrieval changes; do not argue about them — bin/retrieval_baseline exists for this.
  3. Characterization tests pin behaviour, including behaviour that is wrong — the suite is a tripwire, not a specification.
  4. Fail loudly, never quietly differently — an invalid config must stop the process, not substitute something plausible.
  5. Derive from the source of truth; do not synchronise constants by hand — why the embedding model is read from the bundle.
  6. Bias to doing over filing — three fixes are worth more than five issues describing them.

Plus sections recording the quality gates, how contributed code is handled (GSoC applicants who will not update their PRs — harvest and close with credit), and that production and beta pin image tags rather than following latest.

Why

Design decisions currently live scattered across commit messages, PR bodies and issues. The trunk choice, the LangChain ceiling, src-layout, per-collection versus global capping, deferring the SelfQuery replacement — none of that is reconstructable from a git log by someone joining later.

🤖 Generated with Claude Code

adamjohnwright and others added 2 commits September 8, 2026 18:59
…ions made

Adds github/spec-kit v1.0.4 (`specify init --integration claude`): `.specify/`
templates, scripts and workflow, and `.claude/skills/` for the speckit commands.
380K, no Python, and the lint, type and test gates are unaffected.

The reason for adopting it is that design decisions currently live scattered
across commit messages, pull request bodies and issues -- the trunk choice, the
LangChain ceiling, src-layout, per-collection rather than global capping,
deferring the SelfQuery replacement -- and nobody joining later reconstructs
that from a git log.

Scope is deliberately narrow. Spec Kit is for work with real, unmade decisions:
the retriever rewrite, the agent API, website integration, analysis
summarisation. It is not for bug triage or dependency bumps, where five steps
before code costs more than the fix. Retrofitting specifications onto existing
code is archaeology and is not planned.

The constitution is written from decisions and mistakes already made rather than
generic principles, so it can actually be checked against a diff. Its first
article is the lesson that recurred most: verify the path a user takes, not the
component you changed -- retrieval was changed three times before anyone asked
the pipeline a question, a README fix documented commands that each worked but
failed in sequence, and the async path production uses went unexercised while
the sync path was measured.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Dockerfile does COPY . ., so .specify/ and .claude/ would ship in the image
they have no use in. Small -- 380K -- but the build context is for what runs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@adamjohnwright
adamjohnwright merged commit 1ccad78 into main Sep 8, 2026
10 checks passed
@adamjohnwright
adamjohnwright deleted the chore/spec-kit branch September 9, 2026 13:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant