feat(domain-driven-design): extract plugin; move domain-modeling to ubiquitous-language#279
Conversation
…biquitous-language Extract a new domain-driven-design plugin (0.1.0) owning DDD practice skills, and move planning:domain-modeling into it as domain-driven-design:ubiquitous-language. The skill maintains vocabulary only and explicitly refuses bounded-context discovery — "domain-modeling" over-promised, and the concern is DDD language stewardship, not planning-stage task shaping. - planning bumps to 0.13.0 (breaking for /planning:domain-modeling invokers) and declares a dependency on domain-driven-design, so the glossary steward auto-installs from the same marketplace and the pipeline's inline vocabulary updates stay legal cross-plugin. - marketplace.json gains the domain-driven-design entry (category design); planning's domain-modeling/ubiquitous-language/glossary tags move to the new plugin. No renames-map entries. - Repo-wide sweep retargets every live /planning:domain-modeling reference (planning interview/design, architecture improve, event-storming methodology/simulation soft routes); historical CHANGELOG entries untouched. - event-storming stays a standalone plugin — multi-purpose per eventstorming.com; the moved skill's soft routing to it is unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 77040917a6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Claude finished @kyle-sexton's task in 3m 19s —— View job PR Review: feat(domain-driven-design): extract plugin
SummaryWell-reasoned extraction. The boundary rationale (DDD vocabulary stewardship ≠ planning task-shaping) is coherent, the dependency declaration pattern is correct, and the repo-wide reference sweep is complete. The Codex P2 findings are valid — see the one blocking item below. Confirmed issue: missing version bumps on
|
…ferences Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C
|
Claude encountered an error after 0s —— View job I'll analyze this and get back to you. |
|
Claude finished @kyle-sexton's task in 2m 28s —— View job PR Review: feat(domain-driven-design): extract plugin
Previous blocking issue resolvedThe version-bump gap flagged in the prior review is fully addressed in commit 6981e9c:
Both CHANGELOG entries correctly document the retargeted invocation and state that the version bump exists specifically to deliver the changed files to existing installs. Full PR verified correctAll items from the earlier review remain sound, and no new issues introduced by the follow-up commit:
Verdict: ready to merge. No outstanding issues. |
…sign-plugin # Conflicts: # .claude-plugin/marketplace.json # plugins/planning/.claude-plugin/plugin.json # plugins/planning/CHANGELOG.md # plugins/planning/README.md # plugins/planning/skills/interview/context/loop.md # plugins/planning/skills/interview/evals/evals.json
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6cdec940a7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "type": "boolean", | ||
| "title": "Use AskUserQuestion for interview rounds", | ||
| "description": "When enabled, /planning:interview renders a round of up to 4 independent questions through the AskUserQuestion tool instead of inline prose. Default: inline prose (dictation-friendly).", | ||
| "description": "Pre-implementation planning pipeline: chart a too-big, foggy effort as a decision map, diverge on candidate approaches, lock product intent and the engineering contract, route resolved domain language to the domain-driven-design glossary steward, explore the design space, stress-test adversarially, and produce a structured implementation plan with an approval gate.", |
There was a problem hiding this comment.
Restore the AskUserQuestion option description
This is the user-facing description for the use_ask_user_question boolean, but it now contains the whole planning-plugin overview and says nothing about rendering interview rounds through AskUserQuestion. Users configuring the option will be told it is about domain-language routing instead of the actual behavior, so keep the option-specific description that explains the interview question rendering toggle.
Useful? React with 👍 / 👎.
|
|
||
| ### Changed | ||
|
|
||
| - **BREAKING: `/planning:domain-modeling` moved out of this plugin** — it now lives in the new |
There was a problem hiding this comment.
Put the breaking notes under 0.15.0
This commit bumps plugins/planning/.claude-plugin/plugin.json to 0.15.0, but these new breaking-change notes are appended under the existing ## [0.13.0] heading. When users audit the 0.15.0 update that removes /planning:domain-modeling, the changelog has no matching 0.15.0 section, so the command removal and new dependency are hidden in an older release; add a current-version heading for these entries.
Useful? React with 👍 / 👎.
|
Claude finished @kyle-sexton's task in 2m 6s —— View job PR Review: feat(domain-driven-design): extract plugin
Two post-merge issues confirmedBoth Codex P2 flags on the final commit ( 1.
|
…n (0.18.0) (#294) ## Summary Propagates the frontier-rounds questioning cadence (introduced for `/planning:interview` in 0.13.0, PR #278) to the sibling planning skills that still carried the abandoned one-question-at-a-time cadence: - **`/planning:plan`** (formerly `architect`, renamed in 0.14.0) — the Step 4.6 confidence-gate routing and `context/tag-decisions.md` both described "an interview round (one question at a time, recommendation + basis)". The description now lives once in `tag-decisions.md` (stated as a numbered set of settled-prerequisite questions); the SKILL.md summary no longer duplicates the parenthetical. The scope-clarity check ("prose, one question at a time") now asks open questions as one numbered round. - **`/planning:prd`** — Step 4 renamed to "Drive frontier-rounds Q&A"; "never batch unrelated questions" replaced with rounds grouped by PRD section, dependent questions waiting on their prerequisites. - **`/planning:design`** — the "Collaborative always" behavior asks in frontier rounds over design threads (their dependency tracking already is a frontier graph); two `evals.json` assertions updated to match. - **Left as is:** `/planning:brainstorm`'s single intake question — one question is genuinely correct there, and a frontier of one degenerates anyway. All three siblings now render a round via `AskUserQuestion` only through the same `use_ask_user_question` user config the interview skill reads (opt-in, and only for ≤4 independent questions) instead of re-deciding prose-vs-card inline. Planning plugin bumped 0.15.0 → 0.16.0. Rebased over the #276 rename (git followed the `architect/` → `plan/` move) and the #279 domain-modeling extraction. Along the way this PR also repairs two artifacts of those merges: - CHANGELOG: the 0.14.0 (rename) and 0.15.0 (domain-modeling move) entries are filed under their own version headings — both had been folded into the 0.13.0 section while the manifest version advanced past them. - `plugin.json`: the DDD merge had landed the updated plugin description inside `userConfig.use_ask_user_question` (overwriting that entry's prompt text) and left the stale pre-DDD description at top level; both fields are restored (the userConfig prompt now names all four round-asking skills). ## Related Closes #282. Follow-up to #278 (interview frontier-rounds rewrite); staged behind it and unblocked by its merge. ## Verification - Residue grep across `plugins/planning` for `one question at a time` / `one-question` / `one at a time` / `never batch`: only remaining match is the interview eval's legitimate dependency-rule text ("never batches a question into the same round as a question it depends on") - `jq empty` on `design/evals/evals.json` and `plugin.json` - `claude plugin validate plugins/planning` ✔ - `markdownlint-cli2` on all touched markdown: 0 errors 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Executes the domain-driven-design extraction slice of the shadowed-skill-renames contract (
docs/topics/shadowed-skill-renames/PLAN.md, PR #256): a newdomain-driven-designplugin (0.1.0) housing/domain-driven-design:ubiquitous-language, moved from/planning:domain-modeling.No linked issue
Boundary rationale
planninginto a plugin scoped to DDD practices. Deferred residents (context-mapping,aggregate-design) join when they materialize; the new plugin's README records that trigger.event-stormingstays standalone. Per eventstorming.com's own positioning, EventStorming is multi-purpose (business-flow analysis, service design, software architecture — DDD is one application), so it is not folded into the DDD plugin. The moved skill's soft routing to the EventStorming capability is unchanged, and event-storming's references to the glossary steward remain soft "when available" routes.Dependency (fresh-docs cited)
planning(0.12.0 → 0.13.0, breaking for/planning:domain-modelinginvokers) declares"dependencies": ["domain-driven-design"]inplugin.json. Per the current official docs, a dependencies entry "can be a bare string with only the plugin name … which depends on whatever version that plugin's marketplace provides", the name "resolves within the same marketplace as the declaring plugin", and "when you install a plugin that declares dependencies, Claude Code resolves and installs them automatically" — https://code.claude.com/docs/en/plugin-dependencies (fetched this session).dependenciesarray is part of the plugin manifest schema ("Other plugins this plugin requires, optionally with semver version constraints") — https://code.claude.com/docs/en/plugins-reference (fetched this session).planningdeclares the dependency, itsinterview/designinline invocations of/domain-driven-design:ubiquitous-languageare legal cross-plugin references under the contract's rule (required-for-contract → declared dependency).architectureandevent-stormingkeep soft "when available" references with graceful degradation, so they need no dependency.Change set
plugins/domain-driven-design/: manifest (0.1.0), README, CHANGELOG; skill moved viagit mvwith frontmattername: ubiquitous-language(description keeps the domain-modeling / glossary / ubiquitous-language / define-this-domain-term triggers); the skill'scontext/andevals/moved with it — it has no${CLAUDE_PLUGIN_ROOT}references, only skill-relative links, so nothing re-roots.marketplace.json: newdomain-driven-designentry (categorydesign); planning'sdomain-modeling/ubiquitous-language/glossarytags moved to it. Norenames-map entries (contract constraint).planning0.13.0: dependency declared, keywords trimmed, README/description updated, CHANGELOG marks the breaking move./planning:domain-modelingreference retargeted (planninginterview+designbodies and evals,architecture:improve, event-storming methodology/simulation references and evals). Historical CHANGELOG entries left untouched;git grep planning:domain-modelingnow hits only CHANGELOGs.scripts/generate-catalog.mjs;validate-plugin-contracts.mjs,validate-plugins.sh, and markdownlint pass locally.Rebase note
PR #276 (architect→plan) also bumps
planningand edits its CHANGELOG plus theinterview/designskill bodies. This PR deliberately does not include any of #276's changes; whichever merges second takes a rebase (version + CHANGELOG adjacency, possible body-line context conflicts ininterview/design).Related
planning:architect→planning:planrename (overlappingplanningbump; see rebase note).🤖 Generated with Claude Code
https://claude.ai/code/session_01YVApnNGoKxYMJKNQx1QK8C