feat: add problem-frames methodology skill for R/S/W framing#174
Conversation
把 Michael Jackson Problem Frames 融入 SDD 流程(方法論優先階段)。
文章核心論點:控制 AI 產出靠「輸入收斂 + 輸出剪枝」兩段配套;本次補強輸入收斂——
把領域假設 W 前置顯式化,讓後續形式化 gate 有東西可咬。
新增:
- plugins/sdd/skills/problem-frames/{SKILL.md,methodology.md}
知識型 skill(type: know, scope: global,不 dispatch own-plugin agent)。
methodology.md 為單一真實來源(owner),SKILL.md 為壓縮摘要。
內容:5 種 frame 型別 + frame concern、R/S/W 拆解、S∧W⟹R 論證模板、
frame concern 檢查表、DBC→Pydantic validators 對應(文件化)、worked example。
- skills/problem-frames symlink(比照 qa-test-design 的 global 佈局)。
整合進 spectra-amplifier:
- 插入 Step 0.5「Problem Framing」(Step 0 與 Step 1a 之間),產出 problem-frame.md,
含 frame-concern guard(medium → [WARN]、high → [FAIL] Stop、low 略過)。
- Step 4 假設表改為衍生自 Step 0.5 的 W(單一來源,避免兩處漂移)。
- 同步更新輸出結構、Effort 策略表、Quick Reference、反模式表、problem-frame.md 骨架。
明確排除(Phase 2):合約層真正落地、deterministic gate 擴充
(frame-concern completeness / contract coverage)、auto-fix loop。
版本 lockstep:sdd plugin 1.4.0 → 1.5.0(plugin.json + package.json 同步)。
README 索引(skills/README.md、plugins/sdd/README.md)新增 problem-frames。
Final Aggregated Review — PR #174
Modegroup-review (3/3 voices active — Claude / Codex / Gemini). Base Pre-review note
Consensus Important (must fix)
Consensus Actionable NIT (must fix per convention)
Disputed (lead decides — applying as low-risk NIT)
Refuted / dropped
Voices unavailable
|
Address documentation contradictions found by 3-voice mob review (Claude / Codex / Gemini) on the problem-frames + amplifier Step 0.5 wiring: - spectra-amplifier Step 0.5 guard: replace the dead/unreachable "problem-frames 未安裝 → inline 速查表" WARN row (the inline table never existed, and the branch can't fire since both skills ship in the sdd plugin) with a reachable "methodology.md 缺失/不可讀取 → [FAIL] Stop" integrity check; this also removes the high-effort severity inversion. - Soften the "DBC 對應 → Step 2 qa-test-designer Decision Table 輸入" claim to "經 Gherkin/AC 間接影響" in problem-frames SKILL.md + methodology.md — the Step 2a dispatch and qa-test-designer contract only receive Gherkin/AC, so only the W→Step 4 leg is directly wired. - Clarify the trivial-feature FAQ: "可直接跑 spectra-amplifier" means skip the standalone problem-frames skill; amplifier Step 0.5 still runs at medium/high but passes trivially for a no-implicit-W feature (it is not "skip Step 0.5"). - Close the low-effort orphan: when Step 0.5 is skipped (effort=low), event-storming Notes assumptions route directly into the Step 4 假設表. - Add the canonical problem-frame.md skeleton to methodology.md (owner) so a standalone problem-frames run is self-contained; mark the amplifier copy as a derived reference to prevent dual-source drift. - Clarify the awkward "amplifier Step 0.5 之前" phrasing in both README rows to "amplifier 展開規格之前…供 Step 0.5 沿用". make ci green (pre-commit --all-files + 1129 tests).
Second mob-review round (Gemini caught regressions from round-1 fixes; Codex LGTM both rounds): - Remove the dual-source problem-frame.md skeleton: round-1 added the skeleton to methodology.md (owner) but left the amplifier copy with a "sync this copy" note — the exact anti-pattern rule 11/PR #112 warns against. Drop the inline copy in spectra-amplifier; point to methodology.md as the single owner. - Reconcile the low-effort contradiction: the effort table says low effort skips Step 4-5, so round-1's "route event-storming Notes into Step 4 at low effort" was unreachable. Step 4 now runs only at medium/high (W always exists); low effort does Step 1 only and does not formally import assumptions. - Close the event-storming → Step 0.5 import gap: Step 0 promised Notes import "at Step 0.5" but Step 0.5's procedure had no step for it. Add an explicit sub-step that merges event-storming.md Notes into W. - Align frame-concern terminology (因果律 → 領域因果律) in the SKILL.md quick table. - Standardize the path placeholder to openspec/changes/<name>/ (the plugin-wide convention used by event-storming, scripts, check_spec_coverage, bdd-trace); removes the within-amplifier <name>/<feature-name> mix. make ci green (pre-commit --all-files + 1129 tests).
Mob review — convergence update (3 rounds)All substantive findings resolved across 3 review rounds (Claude / Codex / Gemini).
Fix commits: |
Summary
Introduces the Problem Frames methodology skill to the SDD plugin, enabling structured problem decomposition before spec expansion. This addresses the core issue of AI-generated specs being non-reproducible due to implicit, unstated domain assumptions (W).
Key Changes
New skill:
problem-frames(plugins/sdd/skills/problem-frames/)methodology.md: Complete owner document covering Michael Jackson's Problem Frames theory, 5 frame types (Required Behaviour, Commanded Behaviour, Information Display, Simple Workpieces, Transformation), frame concerns, R/S/W decomposition, correctness proofs (S ∧ W ⟹ R), DBC correspondence, worked example, and anti-patternsSKILL.md: Compressed agent runbook with quick-start, frame type lookup table, handoff protocol to spectra-amplifier, and Phase 2 previewskills/problem-framesfor global skill discoveryIntegrated into spectra-amplifier workflow (
plugins/sdd/skills/spectra-amplifier/SKILL.md)lowskips;mediumwarns on incomplete frame concerns;highfailsproblem-frame.mdartifact to output directory structureUpdated plugin metadata
problem-framesto keywords inplugin.jsonandpackage.jsonUpdated skills index (
skills/README.md)Implementation Details
problem-frame.mdduring Step 0.5; Step 4 assumptions table must derive from/reference this, never duplicateRationale
Problem Frames forces explicit articulation of W (what the world must already be true for the spec to work), preventing AI from auto-filling different assumptions on each generation. This is "input convergence" — reducing sampling freedom before amplification begins. The methodology is positioned as prerequisite to spectra-amplifier for medium/high-effort changes, with low-effort changes able to skip it.
https://claude.ai/code/session_01UW8Pn7bto7E7Jqt4tUYssw