Template overhaul: identity renames, mern/django packs, doc style restructure - #10
Conversation
…, enterprise vercel → vercel-csr (the -csr/-ssr suffix pair now carries the rendering contrast), taro-fastify-mysql-tencent → wechat (product surface), nextjs-nestjs-postgres → enterprise (architectural character). Naming rule in stacks/README.md rewritten for identity names; each pack README records its underlying triple in a Naming note. All live references updated; retired add-ons/seo/specs artifacts left as historical record. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The old name encoded the SPA shape; the new name is stack-neutral, so the 'repo name encodes spa — accepted as stale' caveats in the README and the vercel-csr/vercel-ssr pack manifests are no longer true and are dropped. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Platform-neutral identity-named pack (triple react-express-mongo): Vite/React SPA, Express 5 plain-JS ESM API as a long-lived process, MongoDB via Mongoose with migrate-mongo up/down migrations. Binds test-mode and otp-auth in backend.md; saas-billing bound and seo recorded unbound (CSR SPA, S1 unmeetable) in the add-ons' bindings files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Platform-neutral identity-named pack (triple react-django-postgres): Vite/React SPA over a Django 5 + DRF API managed with uv, Postgres via Django's per-app migrations (registered against the base db/ contract). Binds test-mode and otp-auth in backend.md; saas-billing bound and seo recorded unbound (CSR SPA, S1 unmeetable) in the add-ons' bindings files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Deletes .specify/ and the speckit-* skills; the spec-first workflow and specs/ conventions stay, with specs/README.md's tool guidance now purely conditional. Learnings keeps the consumed feature-number registry (001–004). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The add-on's operative rules live in its README and bindings.md; the plan/tasks/research files were build history from the removed tool. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Plain purpose-first business English, one idea per sentence, rationale only in designated homes. Binds all repo Markdown ahead of the add-ons and stacks restructure. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
First two files on the approved semi-strict outlines: stories and scope promoted, one rule per item, decisions collected at the end, plain voice throughout. IDs, error codes, command blocks, and named keys unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Semi-strict outlines: numbered Day-1 checklists, CI as checklists, Pack decisions consolidated in the READMEs, Scope/Glance/Operations/ Gotchas sections in the appendices, registers last with tightened Because clauses. Voice per CLAUDE.md Documentation style; word counts flat or lower. Precedence lines, registers, command blocks, and named keys unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…framing Semi-strict README outline across all eight add-ons: adoption content in one home, seam lists as labeled bullets, standard Verify sections, packaging mechanics stated once in add-ons/README.md. saas-billing reframed to lead with plans, checkout, renewal, and invoices; seats and usage presented as supporting enforcement. Bindings files split into per-seam bullets; seo unbound sections given the three-part shape with word-identical boilerplate. All R/G/S ids, named keys, supersession pairs, and both bindings lifecycles unchanged. Also fixes the stale 003/004 location note in CLAUDE.md Learnings. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
READMEs on the manifest template (Identity & naming, numbered Day-1, Commands with CI checklists, consolidated Pack decisions); appendices gain Scope/Glance/Operations/Gotchas, registers converted to bullets where needed with one-sentence Because clauses; the How-to-read meta section dissolved and the 185-word otp bullet split. Precedence lines, register tails, command blocks, and named keys unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
vercel-ssr README on the manifest template with the one-app restructure as Day-1 steps; appendices gain Scope/Operations/Gotchas; mega-bullets split; cross-pack archaeology removed. Fixes the provider-name bug in both infra appendices (the pack name had leaked into the provider name). db.md and infra.md twins made word-identical except genuine differences. Precedence lines, register tails, command blocks, and named keys unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…g-first All eight area specs on the seats.md outline: stories promoted, Core/ Later-phase requirements, decisions collected in Notes & decisions. Program index leads with the area map and a subscription-billing goal; seats and usage listed as supporting enforcement areas. Story/flow/ criterion IDs, error codes, Verify-clause counts, and schemas unchanged; the two access-tier tables unified word-identical. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
All twelve area specs and the index on the shared outline: stories and scope promoted, flows as headed numbered steps, run-on data models converted to tables, ~29 inline rationale asides collected into Notes & decisions, index map moved to the top. No requirement, story, or criterion renumbering anywhere; error codes, permissions, audit actions, Verify-clause counts, and the cross-file constant couplings verified unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ava deep reviewDirectionally this is a real improvement: the template is more honestly documentation/contract-shaped, the stack identities are clearer, the Spec Kit machinery removal looks intentional, and the mechanical checks I ran did not find broken Markdown links, empty docs, unclosed fences, heading jumps, stale old stack-directory references, or missing I would still fix these before merge: Medium
Low
Checks performed
Verdict: good direction, but I would clean up the Day-1 contradictions above before merging because this repo is mostly instructions. A small wording inconsistency here becomes the generated project’s operating procedure. |
|
One structural question: do we actually want add-ons to carry their own I’d lean no. The add-on README should be durable capability guidance: approach, invariants, stack seams, interactions. Actual feature specs should live in the top-level Right now the PR creates a split spec model:
That makes Day-1 adoption heavier and risks generic specs being mistaken for already-adopted implementation plans. For larger add-ons like So the cleaner contract would be:
Not necessarily a blocker, but I think this would make the template easier to adopt and less likely to accumulate stale generic build plans. |
- wechat identity now states the shipped frontend is Taro's H5 target only; no Mini Program target is active. - enterprise dev block names the fixed-name Postgres container instead of carrying a TODO into root CLAUDE.md; the Day-1 final grep now catches any surviving 'TODO:'. - The base CI item and ci.yml stub are a generic 'Migration gate' the active pack's db.md fills in; pack references updated. - saas-billing adoption documents the README link cleanup after bindings.md is deleted; root Day-1 defers to each bindings file's own lifecycle. - stacks naming policy adds defining-framework names (django). - Spec Kit Learnings note and specs/README bullets rewritten to the documentation style. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Addressed all six review findings in da35756:
On the structural question (add-ons carrying 🤖 Generated with Claude Code |
Bundled programs stay inside each add-on so deletion carries them, but they are proposals: adopting the add-on now moves its specs into the top-level specs/ home instead of leaving the move optional. One spec home after adoption; unadopted add-ons still delete clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Resolved the structural question with Adam: bundled programs stay, but the move to top-level 🤖 Generated with Claude Code |
…rements only Reverses the move-on-adoption rule: bundled programs never relocate. The top-level specs/ holds only the project's actual requirement specs; implementing an add-on area means writing that requirement spec there, drawing on the add-on's program. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Correction to the previous resolution, per Adam: add-on spec programs never move into top-level 🤖 Generated with Claude Code |
The bundled spec programs (enterprise-compliance 13 files, saas-billing 9, multi-tenancy SPEC.md) are replaced by an Implementation areas section in each README: per area, what a project must cover and the opinionated calls, stated as directives. Actual requirement specs are written in top-level specs/ at implementation time. System docs updated; add-on READMEs stay within the ~150-line invariant (max 108). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Final shape for the add-on specs question, per Adam: the bundled spec programs are gone, distilled into each README. Every multi-area add-on now carries an Implementation areas section — per area, the coverage checklist and the opinionated calls as directives (saas-billing 90 lines, enterprise-compliance 108, multi-tenancy 66). Top-level 🤖 Generated with Claude Code |
Deletes both bindings.md files and every pack-side add-on binding section. An add-on README is read as a crash course when its capability is planned or built; the concrete stack wiring is derived from its Binds-to-a-stack seam list plus the active pack's appendices, and recorded in the implementing requirement spec. Non-derivable facts survive as new Prerequisites sections (seo: a server-rendered stack; saas-billing: a tenant model) and one-line pack incompatibility notes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Bindings system removed, per Adam (e569196). The model is now: an add-on README is the crash course read into context when its capability is planned or built; the concrete stack wiring is derived at adoption from the add-on's Binds to a stack seam list plus the active pack's appendices, and recorded in the implementing requirement spec — nothing pre-written per add-on × pack combination. Deleted: both 🤖 Generated with Claude Code |
GCP remains the worked example for the annotated sections; the three pack infra registers requote the new base wording. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
Thirteen commits in four phases, in review order:
cavalry-template-spa→vstack-template-base(GitHub redirect in place); packs renamed to identity names:vercel→vercel-csr,taro-fastify-mysql-tencent→wechat,nextjs-nestjs-postgres→enterprise. Naming rule instacks/README.mdrewritten; each pack README records its underlying triple.mern(React SPA + Express 5 + MongoDB/Mongoose) anddjango(React SPA + Django 5/DRF + Postgres), both platform-neutral, with conflict registers and add-on bindings (saas-billing bound, seo unbound)..specify/+ skills) deleted; retired seo Spec Kit artifacts (1,708 lines) deleted;CLAUDE.mdrecords both.CLAUDE.md(plain purpose-first business English), then all 52 live files underadd-ons/andstacks/rewritten to semi-strict outlines: specs open Goal → Scope → User stories and end with edge cases / notes & decisions / open questions; pack manifests and appendices get numbered Day-1 checklists, Scope/Operations/Gotchas sections, and registers last. saas-billing reframed to lead with plans, checkout, renewal, and invoices. Two content bugs fixed (provider-name leak in both Vercel infra appendices).Contract preservation (diff-verified per corpus): every story/flow/requirement/criterion ID, error code, permission name, audit action, config key, copy-paste command block, precedence line, and conflict-register tail is unchanged; cross-file constant couplings (e.g.
BACKUP_RETENTION_DAYS) kept word-identical.Test plan
🤖 Generated with Claude Code