chore(speckit): install & customize Spec-Kit for dotCMS (legacy-aware, ADR-gated)#36416
chore(speckit): install & customize Spec-Kit for dotCMS (legacy-aware, ADR-gated)#36416nollymar wants to merge 3 commits into
Conversation
…, ADR-gated) Install GitHub Spec-Kit v0.12.4 (Claude Code skills) and tailor it to dotCMS: - Constitution (.specify/memory/constitution.md): legacy-aware development (com.dotmarketing.* vs com.dotcms.*), Config/Logger + Maven + security rules, and the ADR law (mandatory consultation in plan phase; never create ADRs). - ADR integration in /speckit-plan (upgrade-safe, no shipped files edited): read-only adr-context.sh helper (gh -> platform-adrs INDEX.md), /speckit-adr-context skill, a mandatory before_plan hook in extensions.yml, and an ADR Alignment gate in the plan-template override. - Two spec flows: /speckit-specify (feature) and new /speckit-specify-fix (issue/bug resolution) with a defect-framed issue template; both funnel into /speckit-plan so ADR + legacy gates apply to fixes too. - Template overrides (.specify/templates/overrides/) add Legacy Impact + ADR Alignment; docs in .specify/CUSTOMIZATIONS.md and a CLAUDE.md pointer. ADRs are never created by Spec-Kit; they live only in dotCMS/platform-adrs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Claude finished @nollymar's task in 2m 19s —— View job PR Review — Spec-Kit installationThis PR is entirely additive tooling: shell scripts, skill markdown, and templates under New Issues
Resolved / Not reproducible (prior bot findings)The automated findings from the earlier runs do not match the committed content:
Notes (non-blocking)
Net: no blocking issues. The one worth addressing before merge is the macOS |
🤖 dotBot Review (Bedrock)Reviewed 7 file(s); 12 candidate(s) → 6 confirmed, 0 uncertain (unverified, kept for review).
Confirmed findings
us.deepseek.r1-v1:0 · Run: #28641759022 · tokens: in: 78745 · out: 19648 · total: 98393 · calls: 25 · est. ~$0.212 |
|
Tracking task: #36417 |
Per team requirement: no implementation code before tests are written, developer-approved, and confirmed failing (Red). - Constitution Principle V rewritten to Test-First/TDD (NON-NEGOTIABLE) with the 3-gate rule and the explicit "if a test type can't be implemented, the dev must say so and why" clause (v1.0.0 -> v1.1.0). - New tasks-template override: tests are MANDATORY (stock template marked them optional); every user story is ordered Tests -> [GATE] dev approval -> [GATE] Red -> Implementation, with a dotCMS test-type table (unit/integration/postman/ karate/e2e). - plan-template override: added a Test Strategy (TDD) section and folded Principle V into the Constitution Check gate. - Updated CUSTOMIZATIONS.md and the CLAUDE.md pointer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…acy Considerations Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012ogYXVeZsBVUHkwzdStYPJ
|
Been using Spec-Kit for real features over the last few weeks (most recently the changelog-site-publish work, #36606), and I'd like to propose one adjustment to the standard before this merges: a commit policy for the generated Right now the templates treat the whole tree (spec.md, plan.md, research.md, tasks.md, data-model.md, checklists/) as the feature's deliverable, and the implement flow encourages committing as you go — so by default all of it ships in the PR. In practice I've found a clean split: Commit (ships in the PR):
Keep local (working artifacts, never committed):
Rationale: spec.md and data-model.md are what reviewers and future readers actually need. The plan/tasks/checklist ceremony repeats on every feature and is noise in the repo — the tasklist discipline still happens, it just stays on disk. (Also a gotcha from experience: after untracking, grep for dangling references — a committed README citing research.md bit me once.) Concretely, this could be either:
I lean toward option 1. Open to other splits (e.g. some teams may want plan.md for big features) — mainly want us to pick a deliberate policy rather than default to committing everything. Happy to push the |
@sfreudenthaler I like option 1. But I have a doubt. What should the data-model.md contain that is not already covered by the other artifacts? We don't have a doc/template/skill for it yet, so our devs could use it as guidance |
|
@nollymar 👍 on option 1. Good question, and it's the right one to pin down — because the honest answer is that data-model.md isn't automatically special. The real dividing line isn't "which file," it's durable reference vs. process artifact:
By that test everything sorts cleanly:
So, directly: On the "no template/skill yet" gap: it's already half-specified — the plan template (Phase 1) says exactly what goes in it: entity name, fields, relationships, validation rules from requirements. Rather than author a whole new template, I'd add ~6 lines to Concrete (I added Want me to push that |
What
Installs GitHub Spec-Kit v0.12.4 (Claude Code skills) into
dotCMS/coreand customizes it for dotCMS. Standard flow:/speckit-specifyor/speckit-specify-fix→/speckit-plan→/speckit-tasks→/speckit-implement.Why (dotCMS-specific requirements)
com.dotcms.*and legacycom.dotmarketing.*; specs/plans must account for that, not assume greenfield.dotCMS/platform-adrs; every/speckit-planmust consult relevant ones as binding input.platform-adrsvia its ownnew-adr.sh.How
.specify/memory/constitution.md): legacy-aware principle + Critical Rules + ADR law (mandatory consultation, never-create guardrail). Loaded by every skill.adr-context.sh(gh→platform-adrs/INDEX.md),/speckit-adr-contextskill, a mandatorybefore_planhook inextensions.yml, and an ADR Alignment gate in the plan-template override./speckit-specify(feature) + new/speckit-specify-fix(defect-framed issue template). Both funnel into/speckit-plan, so fixes get the ADR + legacy gates too..specify/templates/overrides/and net-new files;resolve_templateprefersoverrides/. See.specify/CUSTOMIZATIONS.md.Verification
resolve_template→ overrides for spec/plan, issue template for the fix flow ✅adr-context.shreturns real ADRs (e.g. ADR-0009/0018) and exits 0 on no-match ✅extensions.ymlvalid YAML;create-new-feature.shdry-run OK ✅CLAUDE.mdmodified) ✅/speckit-planrun to watch thebefore_planhook fire end-to-end.Note
Spec-Kit ships a native
bugextension, intentionally not used because its assess→fix→test flow bypasses/speckit-plan(and thus the ADR gate). Rationale in.specify/CUSTOMIZATIONS.md.🤖 Generated with Claude Code
This PR fixes: #36417