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 4 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 <[email protected]>
|
Claude finished @sfreudenthaler's task in 3m 13s —— View job PR ReviewI reviewed the latest commit ( New IssuesNone blocking. The commit-policy change (
🟡 Minor (non-blocking, doc-only): The comment in Resolved / Not Reproduced (prior dotBot findings)All six confirmed dotBot findings target
Executable code — checked directlyThe only runnable artifacts are
VerdictThe substantive commit in this push is documentation/config only and is correct. The prior dotBot findings do not reproduce against the committed content — they read Spec-Kit's markdown skill files as shell. No merge blockers from my pass. |
🤖 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 <[email protected]>
…acy Considerations Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> 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, honestly I'd be willing to drop it because in most cases I think you're right, data-model.md isn't automatically special, but I noticed when using speckit for the auto-release notes that my litmus test was durable reference vs. process artifact and instinctively added it:
By that test everything sorts cleanly:
RE: "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, could we add to
Concrete |
Gitignore Spec-Kit process artifacts (plan.md, research.md, tasks.md, quickstart.md, checklists/) so only durable references ship in PRs. Document the durable-reference-vs-process-artifact rule and the data-model.md commit-worthiness bar in CUSTOMIZATIONS.md. Co-Authored-By: Claude Opus 4.8 <[email protected]> Claude-Session: https://claude.ai/code/session_018pBayFCPNBw5s4veuUg7m5
|
Pushed the commit policy to this branch (
|
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