feat(planning): propagate frontier-rounds cadence to prd, design, plan (0.18.0)#294
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7b695e5ed6
ℹ️ 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".
7b695e5 to
748d92f
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 62103f6596
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e05949ddd7
ℹ️ 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 2m 0s —— View job PR Review — feat(planning): propagate frontier-rounds cadence to prd, design, plan (0.16.0)Tasks
SummaryThe core changes are correct and consistent. The frontier-rounds cadence is properly propagated to Codex Comment VerdictsComment 1 — The scope-clarity bullet directly above line 71 was updated in this PR to check
This resolves via Comment 2 — The Codex reviewer ran against the intermediate commit Comment 3 — The
But the rendering surface — check Additional Observation (not flagged by Codex)
This is not in the diff and predates this PR, but it has the same gap — it unconditionally uses VerdictTwo of the three Codex findings are real. Both are in |
…_question The Open Decisions block, the confidence-gate round in tag-decisions.md, and the stress-test alternatives surface still rendered AskUserQuestion unconditionally; all three now honor the shared opt-in with the ≤4-independent-questions cap and inline-prose fallback. Addresses Codex P2 x2 on PR #294 (both confirmed by claude-review). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
All three Codex findings dispositioned per the analysis above, in 303015e:
The additional observation (stress-test alternatives surface, SKILL.md ~210) is gated in the same commit — same root cause, same PR contract. Line 236's plan-mode note stays: it describes the harness plan-mode idiom, not a skill-owned round render. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 303015ec67
ℹ️ 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".
…_question The Open Decisions block, the confidence-gate round in tag-decisions.md, and the stress-test alternatives surface still rendered AskUserQuestion unconditionally; all three now honor the shared opt-in with the ≤4-independent-questions cap and inline-prose fallback. Addresses Codex P2 x2 on PR #294 (both confirmed by claude-review). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
303015e to
63d2b75
Compare
|
Rebased over #291 (standards grounding), which took planning 0.16.0 — this PR is now 0.17.0; CHANGELOG entry restacked above the 0.16.0 standards entry. The manifest repair carries over: #291 fixed the top-level description but left the scrambled userConfig prompt in place; this PR restores the prompt text. |
The one-question-at-a-time cadence the interview skill dropped in 0.13.0 still appeared in sibling skills. prd Step 4, design's collaborative stance, and plan's scope-clarity check and confidence-gate routing now ask in frontier rounds, and all render a round via AskUserQuestion only through the shared use_ask_user_question user config. The plan skill's interview-round description is stated once in context/tag-decisions.md instead of duplicated in SKILL.md. brainstorm's single intake question is intentionally unchanged. Also files the 0.14.0 (architect-to-plan rename) and 0.15.0 (domain-modeling extraction) CHANGELOG entries under their own version headings — both had been folded into the 0.13.0 section while the manifest version advanced. Closes #282 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The domain-driven-design extraction merge landed the updated plugin description inside userConfig.use_ask_user_question, overwriting that entry's prompt text, and left the stale pre-DDD text at top level. Restores the userConfig prompt (updated to name all four round-asking skills) and puts the glossary-steward description at top level. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…_question The Open Decisions block, the confidence-gate round in tag-decisions.md, and the stress-test alternatives surface still rendered AskUserQuestion unconditionally; all three now honor the shared opt-in with the ≤4-independent-questions cap and inline-prose fallback. Addresses Codex P2 x2 on PR #294 (both confirmed by claude-review). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
63d2b75 to
3038e45
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3038e454cb
ℹ️ 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 2m 14s —— View job PR Review — feat(planning): propagate frontier-rounds cadence to prd, design, plan (0.17.0)Tasks
SummaryThe core propagation is solid — the frontier-rounds cadence is consistently applied to Two new Codex findings land on HEAD ( Codex Comment Verdicts (HEAD commit
|
…r card The plan scope-clarity round now restricts each round to settled-prerequisite questions like every sibling, and the prd tier prompt renders a card only under the use_ask_user_question opt-in — the manifest promises inline prose by default for prd surfaces. Addresses Codex P2 + claude-review Finding 1 on PR #294. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
….0) (#297) ## Summary Adds a named design-smell baseline to the `code-reviewer` agent — the review plugin's designated owner of design judgment automated tooling misses. Twelve curated smells from Fowler, *Refactoring* 2nd ed., ch. 3 (Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Repeated Switches, Shotgun Surgery, Divergent Change, Speculative Generality, Message Chains, Middle Man, Refused Bequest), each as a terse what-it-is → how-to-fix line in our own voice. Semantics, per the evaluation that greenlit the port (adapted from mattpocock/skills upstream PR #464): - **Advisory only.** Smells default to SUGGESTION at medium/low confidence; escalation happens only through a documented project rule — the rule carries the severity, the smell label stays advisory. This rides the agent's existing judgement-call contract. - **Repo overrides.** A documented project standard that endorses a flagged pattern suppresses the smell; suppression policy lives in the existing `REVIEW.md` / project-rules seam, NOT userConfig (rich prose policy; a per-smell knob matrix fails the Rule of Three). The plugin keeps zero userConfig. - **Single home.** Inlined in the agent definition — its only reader. `fanout` (every tier) and `quality-gate` (fallback + self-with-agent paths) inherit by dispatching the agent; the external `pr-review-toolkit` orchestrator path and self-mode general fallback don't reach it — documented limitations, not gaps. - The prior duplicated-structural-boilerplate bullet folds into Duplicated Code so the concept appears once. - Provenance: Fowler cited as primary source; no upstream phrasing copied. No live upstream — regeneration trigger is a Fowler edition revision to ch. 3 or a taxonomy change in the agent. Review plugin bumped 0.9.0 → 0.10.0. No evals required (agent-scoped enrichment; this repo's evals are skill-scoped). No security-review re-trigger (no hooks, MCP, config, or egress). ## Related Closes #283. Same upstream gap-analysis batch as #278/#282 (#294), #284, #285. ## Verification - `claude plugin validate plugins/review` ✔ - `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>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2f300e5c39
ℹ️ 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 2m 22s —— View job PR Review — feat(planning): propagate frontier-rounds cadence to prd, design, plan (0.18.0)Tasks
SummaryThe two new Codex findings on HEAD ( Codex Comment Verdicts (HEAD commit
|
Two stale depth-first Q&A handoffs in prd (Step 2 transition and the tier-2 template note) now say frontier-rounds, and the plan-mode clarifying-question note renders a card only under the shared use_ask_user_question opt-in. Addresses Codex P2 x2 on PR #294. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 28s —— View job PR Review — feat(planning): propagate frontier-rounds cadence to prd, design, plan (0.18.0)Tasks
SummaryHEAD ( Verification of Final Commit FixesFix 1 —
Fix 2 —
Fix 3 —
Residue CheckRan
No stale cadence wording in any of the three sibling skills. Minor Observation (not blocking)
The plan-mode clarifier note fixes the core issue (now gated) but the render condition wording is slightly looser than siblings:
Every other render condition in the plugin says "≤4 independent questions" explicitly (scope-clarity at L70, Open Decisions at L71, tag-decisions at L16, stress-test alternatives at L222, prd Step 4 at L122, design L168). The ≤4 bound is contextually established by "1–4 clarifying questions" in the same sentence, but the render rule itself is not fully consistent in form. A follow-up wording pass could add "≤4" to the render condition to match all siblings — low priority since the bound is clear from context. VerdictMerge-ready. All prior Codex and Claude-review findings are addressed. The residue grep is clean. The plugin.json manifest is correctly repaired. The CHANGELOG restructuring correctly separates 0.13.0/0.14.0/0.15.0/0.16.0/0.17.0/0.18.0. The evals match the new cadence. The one minor observation above is a polish item, not a correctness issue. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f20b77b00b
ℹ️ 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".
…ier helper The Open Decisions block now surfaces only settled-prerequisite decisions (dependent ones wait for the next round), and the PRD tier cheat sheet in templates.md carries the same card-only-under-opt-in wording as the skill body. Addresses Codex P2 x2 (round 4) on PR #294. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 2m 0s —— View job PR Review — feat(planning): propagate frontier-rounds cadence to prd, design, plan (0.18.0)Tasks
SummaryHEAD ( Verification of Final Commit Fixes (
|
| Location | Surface | Gated? |
|---|---|---|
plan/SKILL.md:68 |
User override of design gate (escape hatch, not a Q&A round) | n/a — user-initiated action |
plan/SKILL.md:70 |
Scope-clarity round | ✅ |
plan/SKILL.md:71 |
Open Decisions block | ✅ (+ frontier filter added in this commit) |
plan/SKILL.md:222 |
Stress-test alternatives | ✅ |
plan/SKILL.md:248 |
Plan-mode clarifier | ✅ |
plan/context/tag-decisions.md:16 |
Confidence-gate interview round | ✅ |
prd/SKILL.md:69 |
Tier selection | ✅ |
prd/SKILL.md:122 |
Step 4 frontier rounds | ✅ |
design/SKILL.md:168 |
Collaborative always | ✅ |
No stale depth-first or one-question-at-a-time wording in any of the three sibling skills.
Verdict
Merge-ready. The full seven-commit arc is coherent: the frontier-rounds cadence is consistently propagated to all three siblings, every card-render surface in the plugin is now gated behind use_ask_user_question, the plugin.json manifest corruption from the DDD merge is cleanly repaired, and the CHANGELOG correctly separates the 0.13.0/0.14.0/0.15.0/0.16.0/0.17.0/0.18.0 version headings. No new issues on HEAD.
…19.0) (#311) ## Summary Adds `/planning:questionnaire` — a user-invoked-only skill that turns a decision the user cannot answer, because another *person* holds the knowledge, into a Markdown discovery questionnaire handed off async. Adapted from Matt Pocock's `to-questionnaire` (mattpocock/skills, in-progress) per the evaluation that greenlit the port, with the grill→interview vocabulary rename throughout. The defining move: **interview the send, not the subject**. The skill asks the user only what they can always answer — who the questionnaire goes to (role, expertise, relationship) and what they need back — then writes questions aimed at the gap between what the recipient knows and what the user needs. It never quizzes the user on the subject the recipient holds. Decisions from the evaluation, all carried through: - **Home + name:** planning plugin, artifact-noun `questionnaire` (the `prd` precedent); keeps the future interview→questionnaire routing intra-plugin. `disable-model-invocation: true` (a side-effecting hand-off the user times, matching upstream). - **Composition:** third routing bucket beside `/planning:interview`'s facts-vs-decisions split — a person-arbitered deferral. Ships standalone; the interview-side one-line pull-out lands separately as an additive edit. - **PII:** output relocated from upstream's cwd write to the topic-docs **memory slice** (default `.work/`, self-ignoring), so recipient names never enter git history. No egress — the skill authors a local file; delivery is out-of-band. - **Tracker seam:** optional "awaiting answer" lifecycle item goes through the work-item-tracker seam (title/topic only, never the recipient's name), skipped gracefully when no tracker is bound. Never a hardcoded `gh` call. - **Config:** none — output path rides the existing topic-docs binding; no speculative knobs (Rule of Three). - **Evals (warranted):** four cases — send-only happy path, the never-quiz-the-subject guardrail, self-answerable routing back to `/planning:interview`, tracker-absent graceful degrade. Also fixes the planning README's stale "depth-first Q&A" phrasing in the interview row (missed residue from the frontier-rounds propagation). Planning plugin bumped 0.18.0 → 0.19.0. Security review clears trivially: no hooks, scripts, MCP, network, secrets, or userConfig. ## Related Closes #284. Same upstream gap-analysis batch as #278/#282 (#294), #283 (#297), #285 (#298). ## Verification - `jq empty` on `evals.json` and `plugin.json` - `claude plugin validate plugins/planning` ✔ - `markdownlint-cli2` on all new/touched markdown: 0 errors - `node scripts/generate-catalog.mjs`: catalog in sync (plugin description unchanged) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
## Summary Adds a `block-dangerous-git` guard to the guardrails plugin (PreToolUse on Bash, blocking), per the evaluation that greenlit the port: capability adapted from mattpocock/skills `git-guardrails-claude-code`; implementation rejected wholesale and rewritten on the house argv-grammar parser (upstream's substring matching blocks ALL `git push` and fires `checkout .` on `checkout .github/…`). **Default block-list — irreversible operations only:** | Blocked | Not blocked | |---|---| | `push --force` / `-f` | `--force-with-lease` (safe force), plain `push` | | `reset --hard` | soft/mixed reset, `--keep` | | `clean -f` / `-fd` / `-fdx` / `--force` | `clean -n` (dry run) | | `checkout .` / `restore .` (worktree-wide, incl. `:/`, exclude-only, magic-`top`) | path-scoped forms, `restore --staged .` (index-only) | | forced `checkout -f` / `switch --discard-changes` | plain branch switch/create | `branch -D` stays out of the defaults: reflog recovers deleted refs, and repo-hygiene's `/clean` issues it inline in a sanctioned, already-confirmed flow (verified collision). **Seams (native userConfig):** the guard follows the marketplace's kill-switch doctrine (per-hook toggles and tuning scalars are native `userConfig`, not `HOOK_*` env vars). Kill switch = the `block_dangerous_git_enabled` option (default `true`); per-repo/per-user allow-list = the `block_dangerous_git_allow` option (comma list, any subset of `push-force,reset-hard,clean-force,checkout-dot,restore-dot,checkout-force`), read by the hook from the `CLAUDE_PLUGIN_OPTION_*` process mirror. Configure with `/plugin configure guardrails` or `--config KEY=VALUE`. userConfig is resolved at plugin-enable time, so an inline env prefix on the command line cannot alter the guard; the residual trust boundary is settings write access. **Shared parser refactor:** the argv tokenizer, git-executable resolver, and subcommand walk that `block-no-verify` carried privately move into `lib/hook-utils.sh` (`hook::bash_parse_segments`, `hook::git_resolve_index`, `hook::git_resolve_subcommand`) so both git guards share one parser. `block-no-verify` behavior is unchanged with one documented alignment: `core.hooksPath` now blocks exactly on `git commit`/`git push` (its documented scope) instead of firing mid-walk on any git subcommand. Per the hook-utils sync contract, all ten carrying plugins bump versions so consumers receive the lib change. Guardrails → 0.6.0 (main's userConfig/prerequisite waves took it to 0.5.1 while this PR was in review; the new guard is the 0.6.0 minor). Hook plugins skip evals — the `.test.sh` contract tests are the coverage. ## Related Closes #285. Same upstream gap-analysis batch as #278/#282 (#294) and #283 (#297). ## Verification - `block-dangerous-git.test.sh`: 190/190 pass (each blocked form, safe near-misses, argv-faithful positives/negatives incl. quoting/wrappers/`env -S`/heredocs/process-subs/aliases, allow-list on/off/partial, kill switch, fail-closed length cap, telemetry envelope) - `block-no-verify.test.sh`: 75/75 pass on the shared-parser refactor; `lib/hook-utils.test.sh`: 65/65 - `scripts/sync-hook-utils.sh --check` / `--check-bump`: all 10 plugin copies match and are bumped - `shellcheck --rcfile .shellcheckrc -x` on all changed shell: clean - `claude plugin validate` on every bumped plugin: pass - `node scripts/generate-catalog.mjs`: catalog already in sync - `markdownlint-cli2` on changed markdown: 0 errors 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

Summary
Propagates the frontier-rounds questioning cadence (introduced for
/planning:interviewin 0.13.0, PR #278) to the sibling planning skills that still carried the abandoned one-question-at-a-time cadence:/planning:plan(formerlyarchitect, renamed in 0.14.0) — the Step 4.6 confidence-gate routing andcontext/tag-decisions.mdboth described "an interview round (one question at a time, recommendation + basis)". The description now lives once intag-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); twoevals.jsonassertions updated to match./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
AskUserQuestiononly through the sameuse_ask_user_questionuser 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:plugin.json: the DDD merge had landed the updated plugin description insideuserConfig.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
plugins/planningforone 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 emptyondesign/evals/evals.jsonandplugin.jsonclaude plugin validate plugins/planning✔markdownlint-cli2on all touched markdown: 0 errors🤖 Generated with Claude Code