Working Note 002
The name only fitted one of the four
Spec First v1 was built and public for seven months, advertising a website at a domain that has never resolved. The name still only described one of the four skills that came after it. Moving to a wider one was the easy half — the old name had already got into the labels and the filenames.
Finding
A name is a filter on what can join the thing later. Spec First described one skill accurately and the other three only by stretching.
Writing this up corrected my own record twice. The work under the old name was
not a plan I abandoned — it was built, public, and had been since January. And
widening the container name did not release the contents: the site moved to
weindie.com and the skills went on being labelled after the method for two
releases.
Why I looked at this
Not as a naming exercise. I was writing four skills up as pages, and the labels had to say what each one was part of. That is a small copy decision, and it did not survive contact with the four things it had to describe.
The old name was not hypothetical. spec-first.com was registered, a standalone
site for it was designed in my notes, and a v1 already existed on GitHub: a
public template repository with a spec/ folder, behaviour examples, tests,
cheat sheets and a getting-started guide, plus a small public tool built as its
worked example. What was missing was never the work.
The question
Does Spec First describe the work, or does it describe the part of the work I understood first — and if it is the second, what does anchoring a name to it cost the parts that arrive later?
What I expected
That this was a naming preference, settled by taste, and reversible by editing copy.
What I tried
Read what v1 actually shipped, then read the four skills side by side against it.
What happened
Four things, in the order I noticed them.
The name pulled towards code. v1 is a Node template. A spec/ folder,
Gherkin behaviour examples, Vitest, a stack section. Every artefact in it assumes
there is a codebase. The v2 rethink says close to the opposite: the interesting
part is the shared understanding before execution, on planning, research, writing
or code.
The set did not fit. /spec reaches shared understanding before the work
starts. /drift is about staying on the task you agreed to, /kiss about
simplifying, /ship about verifying. Under a Spec First banner, three of
those have to argue that they are really about specifications. They are not —
they happen during and after execution, which is the other side of the line
the method draws.
The container name changed and the old one stayed put. The site shipped a set
still labelled “Spec First skills”, and the combined download was called
weindie-spec-first-skills.md — the new domain in the filename, the old frame in
the words beside it. Neither is a place I would have thought to look. It took a
separate pass to pull the attribution back to where it was true: Spec First
is now an optional partOf field on one skill, and /drift, /kiss and /ship
carry no method name at all.
The domain was the only part that never shipped. The v1 README says Website: spec-first.com — cheat sheets, tutorials, and more. That link has been public since January and has never resolved; the domain still answers with the registrar’s parking IP and then times out. The docs site behind it was built — twice — and both repositories are private.
The work was public. The address was not. I had been carrying this around as “the site I never built”, which is a considerably more comfortable sentence than “built, and never pointed anywhere”.
The wider name earned its keep immediately. /health — is this session still
healthy enough to continue? — is not about code, and it is now recorded as
considered-and-not-built rather than as something that failed to fit. Under the
old name it would have had to justify itself against a method it has nothing to
do with, and it would have lost.
Where it broke
The evidence is confounded. v1 being code-shaped is consistent with the name pulling towards code. It is equally consistent with my having been building a code tool at the time. I cannot separate those with one example, and I should not pretend the artefact settles it.
The comparison I actually lack is a v2-era site. My notes describe a
standalone spec-first.com — single-skill focus, an interactive example
switching between planning, research, writing and code, a personal-README tone.
That was never built, so what I am comparing weindie.com against is a design,
not a thing. Note 001 had a missing control too; this is the second
time in a fortnight.
The conclusion was convenient. weindie.com existed as an idea before the
question came up. An argument that arrives at a name I already had is exactly the
kind I should distrust, and I cannot cleanly separate the frame was too narrow
from I preferred the other one.
A wider name is also a vaguer one. “A small independent workbench for practical AI work” admits almost anything, which is the property I wanted and also the failure mode. The only thing holding the line is a sentence of copy — a skill that fires on everything stops meaning anything, there are four — and copy is a promise, not a constraint. The build refuses to run on an inconsistent skill. Nothing refuses a fifth one added out of boredom.
I let a public artefact advertise a page that did not exist, for seven months, without noticing. The repository is archived now and its description points at the current thinking, but the README body still links the dead domain, and an archived repository cannot be edited without unarchiving it first.
Current view
Provisional, and different from the version I first wrote.
Name the container after the smallest claim that stays true when the contents change. Spec First was not too small a method; it was too specific a name for a set that was going to grow sideways. It survives better as an attribution on one skill than as a banner over four, and it is more likely to still be right there in a year.
Two things I would lift somewhere else. When you widen a name, the old one is still living in the labels, the headings and the generated filenames — search the artefacts, not just the copy. And keep not built and not addressed apart in your own record. I had been telling myself the first when the truth was the second, and the first makes the decision look a great deal cleaner than it was.
What I’d try next
Point spec-first.com at weindie.com/spec. It repairs the dead link in an
archived README without unarchiving anything, and it is the cheapest available
test of whether Spec First survives as an idea once it stops being a
destination. One DNS record.
Then a rule I can actually check, before naming anything else: write down two things I might plausibly add in six months, and see whether the name makes them argue for entry. If it does, it is the name of a part, not of the whole.