diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 3bbe391..e0a88b6 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -5,14 +5,14 @@ }, "metadata": { "description": "Thinloop skills and continuity hooks for Issue-backed discovery, read-only project-status navigation, multi-Issue project DAG decomposition and execution, evidence-backed reengineering and delivery, and approved skill evolution.", - "version": "0.20.0" + "version": "0.20.1" }, "plugins": [ { "name": "thinloop", "source": ".", "description": "Discovery, Web UIUX, architecture, Next project-status navigation, Project DAG decomposition, Execute READY-wave orchestration, Reengineering gates, QuickDev delivery, maintenance, knowledge, and evolution skills with continuity checks; Project itself remains non-executing.", - "version": "0.20.0" + "version": "0.20.1" } ] } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 57a024c..2e533f8 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "thinloop", - "version": "0.20.0", + "version": "0.20.1", "description": "Simplify complex development with Issue-backed discovery, risk-adaptive Web experience and architecture design, non-executing multi-Issue project decomposition into dependency DAGs, bounded READY-wave execution, read-only project-status navigation, project-scale refactoring and cross-stack reimplementation, autonomous single-Issue PR delivery, evidence-backed maintenance, concise experiential knowledge, and human-approved skill evolution.", "author": { "name": "mindcarver" diff --git a/.codebuddy-plugin/marketplace.json b/.codebuddy-plugin/marketplace.json index 3bbe391..e0a88b6 100644 --- a/.codebuddy-plugin/marketplace.json +++ b/.codebuddy-plugin/marketplace.json @@ -5,14 +5,14 @@ }, "metadata": { "description": "Thinloop skills and continuity hooks for Issue-backed discovery, read-only project-status navigation, multi-Issue project DAG decomposition and execution, evidence-backed reengineering and delivery, and approved skill evolution.", - "version": "0.20.0" + "version": "0.20.1" }, "plugins": [ { "name": "thinloop", "source": ".", "description": "Discovery, Web UIUX, architecture, Next project-status navigation, Project DAG decomposition, Execute READY-wave orchestration, Reengineering gates, QuickDev delivery, maintenance, knowledge, and evolution skills with continuity checks; Project itself remains non-executing.", - "version": "0.20.0" + "version": "0.20.1" } ] } diff --git a/.codebuddy-plugin/plugin.json b/.codebuddy-plugin/plugin.json index 353a1db..4dbaabc 100644 --- a/.codebuddy-plugin/plugin.json +++ b/.codebuddy-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "thinloop", - "version": "0.20.0", + "version": "0.20.1", "description": "Simplify complex development with Issue-backed discovery, risk-adaptive Web experience and architecture design, non-executing multi-Issue project decomposition into dependency DAGs, bounded READY-wave execution, read-only project-status navigation, project-scale refactoring and cross-stack reimplementation, autonomous single-Issue PR delivery, evidence-backed maintenance, concise experiential knowledge, and human-approved skill evolution.", "author": { "name": "mindcarver" diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 485d1f2..6ba1510 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "thinloop", - "version": "0.20.0", + "version": "0.20.1", "description": "Simplify complex development with Issue-backed discovery, risk-adaptive Web experience and architecture design, non-executing multi-Issue project decomposition into dependency DAGs, bounded READY-wave execution, read-only project-status navigation, project-scale refactoring and cross-stack reimplementation, autonomous single-Issue PR delivery, evidence-backed maintenance, concise experiential knowledge, and human-approved skill evolution.", "author": { "name": "mindcarver" diff --git a/.scd/evolution/history.jsonl b/.scd/evolution/history.jsonl index 7608115..a1fa424 100644 --- a/.scd/evolution/history.jsonl +++ b/.scd/evolution/history.jsonl @@ -4,3 +4,6 @@ {"schema_version":"1.0","event_id":"EVE-20260803-quickdev-scope-drift-proposed","candidate_id":"EVO-20260803-quickdev-midflight-scope-shift","run_id":"RUN-20260803-evolve-quickdev-drift","recorded_at":"2026-08-03T16:10:00Z","status":"proposed","previous_status":null,"target_skills":["scd-quickdev"],"candidate_level":"exploratory","coverage":"full-transcript","root_cause":"scd-quickdev selects its delivery path once at intake and never re-checks; nothing tells the agent to stop widening the current branch when in-flight debugging crosses the Discovery/Project boundary, so a single bug fix silently grows into an unapproved redesign.","coupling_rationale":null,"change_kinds":["instruction"],"attribution":{"primary":"thinloop-skill","rationale":"The skill has a one-time path-selection gate and only reactive, fragmented scope-drift hints that assume the agent already noticed the drift. In the observed session the agent kept widening one Issue's branch across a different root cause, layer, and finally a user-supplied architecture proposal, instead of recognizing a new Discovery/Project path had emerged.","possible_misattribution":"Agent-limit or requirements: the diagnosing agent could have noticed the drift on its own, and the user's framing stayed terse. Both contributed, but the skill is the only editable lever and the missing rule (re-select path when in-flight scope crosses the Discovery/Project threshold) is the cheapest durable fix."},"matched_signals":["skill instructions led to scope expansion (bug fix branch widened into adapter, config, and E2E harness work outside the Issue acceptance)","user corrected skill-driven behavior (user pasted own architecture proposal and manually invoked scd-discovery and scd-project to redirect the flow)"],"unmatched_signals":["no deterministic skill script or format failed; the skill prose executed as written","documented trigger matched and skill was invoked correctly for the initial bug delivery","no isolated replay was performed; evidence is a single observation"],"evidence":{"types":["conversation","user-correction","tool-output"],"summary":"A long multi-task session opened as a scd-quickdev bug diagnosis and was delivered cleanly, but the request then evolved into a multi-decision product architecture redesign. The agent kept extending the original Issue's branch with adjacent problems and did not route to scd-discovery until the user manually supplied an architecture proposal and explicitly invoked that skill.","fingerprint":"sha256:726d265eb61cb1343e09c0bf5ba7a28394c1cd60933215cdd96f4bdaecf208fd","evidence_redacted":true},"operations":[{"action":"add","path":"skills/scd-quickdev/SKILL.md","summary":"Add a '## Re-select the path when scope shifts mid-flight' section after path selection: three drift signals (adjacent out-of-scope fixes, user design proposal, multi-delivery or unauthorized decisions) that require stopping branch widening and handing off to scd-discovery or scd-project."}],"validation":{"kind":"independent-session","checks":[{"name":"deterministic structure check (unique heading, intact ## nesting, source-installed parity)","result":"unverified","evidence":"to run after edit"},{"name":"fresh isolated agent forward test using the session opening (bug report then evolving into architecture proposal)","result":"unverified","evidence":"to run after edit; expected: agent surfaces scd-discovery/scd-project handoff instead of silently widening branch"}]},"versions":{"before":"0.13.0","after":"0.13.1"},"self_evolution":{"is_self_evolution":false,"source_run_id":null}} {"schema_version":"1.0","event_id":"EVE-20260803-quickdev-scope-drift-trial","candidate_id":"EVO-20260803-quickdev-midflight-scope-shift","run_id":"RUN-20260803-evolve-quickdev-drift","recorded_at":"2026-08-03T16:11:00Z","status":"trial","previous_status":"proposed","target_skills":["scd-quickdev"],"candidate_level":"exploratory","coverage":"full-transcript","root_cause":"scd-quickdev selects its delivery path once at intake and never re-checks; nothing tells the agent to stop widening the current branch when in-flight debugging crosses the Discovery/Project boundary, so a single bug fix silently grows into an unapproved redesign.","coupling_rationale":null,"change_kinds":["instruction"],"attribution":{"primary":"thinloop-skill","rationale":"The skill has a one-time path-selection gate and only reactive, fragmented scope-drift hints that assume the agent already noticed the drift. In the observed session the agent kept widening one Issue's branch across a different root cause, layer, and finally a user-supplied architecture proposal, instead of recognizing a new Discovery/Project path had emerged.","possible_misattribution":"Agent-limit or requirements: the diagnosing agent could have noticed the drift on its own, and the user's framing stayed terse. Both contributed, but the skill is the only editable lever and the missing rule (re-select path when in-flight scope crosses the Discovery/Project threshold) is the cheapest durable fix."},"matched_signals":["skill instructions led to scope expansion (bug fix branch widened into adapter, config, and E2E harness work outside the Issue acceptance)","user corrected skill-driven behavior (user pasted own architecture proposal and manually invoked scd-discovery and scd-project to redirect the flow)"],"unmatched_signals":["no deterministic skill script or format failed; the skill prose executed as written","documented trigger matched and skill was invoked correctly for the initial bug delivery","no isolated replay was performed; evidence is a single observation"],"evidence":{"types":["conversation","user-correction","tool-output"],"summary":"A long multi-task session opened as a scd-quickdev bug diagnosis and was delivered cleanly, but the request then evolved into a multi-decision product architecture redesign. The agent kept extending the original Issue's branch with adjacent problems and did not route to scd-discovery until the user manually supplied an architecture proposal and explicitly invoked that skill.","fingerprint":"sha256:726d265eb61cb1343e09c0bf5ba7a28394c1cd60933215cdd96f4bdaecf208fd","evidence_redacted":true},"operations":[{"action":"add","path":"skills/scd-quickdev/SKILL.md","summary":"Add a '## Re-select the path when scope shifts mid-flight' section after path selection: three drift signals (adjacent out-of-scope fixes, user design proposal, multi-delivery or unauthorized decisions) that require stopping branch widening and handing off to scd-discovery or scd-project."}],"validation":{"kind":"independent-session","checks":[{"name":"deterministic structure check (unique heading, intact ## nesting, source-installed parity)","result":"unverified","evidence":"to run after edit"},{"name":"fresh isolated agent forward test using the session opening (bug report then evolving into architecture proposal)","result":"unverified","evidence":"to run after edit; expected: agent surfaces scd-discovery/scd-project handoff instead of silently widening branch"}]},"versions":{"before":"0.13.0","after":"0.13.1"},"self_evolution":{"is_self_evolution":false,"source_run_id":null}} {"schema_version":"1.0","event_id":"EVE-20260803-quickdev-scope-drift-accepted","candidate_id":"EVO-20260803-quickdev-midflight-scope-shift","run_id":"RUN-20260803-evolve-quickdev-drift","recorded_at":"2026-08-03T16:20:00Z","status":"accepted","previous_status":"trial","target_skills":["scd-quickdev"],"candidate_level":"exploratory","coverage":"full-transcript","root_cause":"scd-quickdev selects its delivery path once at intake and never re-checks; nothing tells the agent to stop widening the current branch when in-flight debugging crosses the Discovery/Project boundary, so a single bug fix silently grows into an unapproved redesign.","coupling_rationale":null,"change_kinds":["instruction"],"attribution":{"primary":"thinloop-skill","rationale":"The skill has a one-time path-selection gate and only reactive, fragmented scope-drift hints that assume the agent already noticed the drift. In the observed session the agent kept widening one Issue's branch across a different root cause, layer, and finally a user-supplied architecture proposal, instead of recognizing a new Discovery/Project path had emerged.","possible_misattribution":"Agent-limit or requirements: the diagnosing agent could have noticed the drift on its own, and the user's framing stayed terse. Both contributed, but the skill is the only editable lever and the missing rule (re-select path when in-flight scope crosses the Discovery/Project threshold) is the cheapest durable fix."},"matched_signals":["skill instructions led to scope expansion (bug fix branch widened into adapter, config, and E2E harness work outside the Issue acceptance)","user corrected skill-driven behavior (user pasted own architecture proposal and manually invoked scd-discovery and scd-project to redirect the flow)"],"unmatched_signals":["no deterministic skill script or format failed; the skill prose executed as written","documented trigger matched and skill was invoked correctly for the initial bug delivery","no isolated replay was performed; evidence is a single observation"],"evidence":{"types":["conversation","user-correction","tool-output"],"summary":"A long multi-task session opened as a scd-quickdev bug diagnosis and was delivered cleanly, but the request then evolved into a multi-decision product architecture redesign. The agent kept extending the original Issue's branch with adjacent problems and did not route to scd-discovery until the user manually supplied an architecture proposal and explicitly invoked that skill.","fingerprint":"sha256:726d265eb61cb1343e09c0bf5ba7a28394c1cd60933215cdd96f4bdaecf208fd","evidence_redacted":true},"operations":[{"action":"add","path":"skills/scd-quickdev/SKILL.md","summary":"Add a '## Re-select the path when scope shifts mid-flight' section after path selection: three drift signals (adjacent out-of-scope fixes, user design proposal, multi-delivery or unauthorized decisions) that require stopping branch widening and handing off to scd-discovery or scd-project."}],"validation":{"kind":"independent-session","checks":[{"name":"deterministic structure check","result":"pass","evidence":"git diff is purely additive (+22/0 deletions); new ## heading is unique at top level; surrounding anchors preserved; all 7 manifests parse and equal 0.13.1; no 0.13.0 remains in JSON manifests"},{"name":"fresh isolated agent forward test using the session opening (bug report then user-supplied architecture proposal)","result":"pass","evidence":"independent subagent loaded the edited skill and returned PASS, quoting the new section's triggers (adjacent out-of-scope fixes; user design proposal) and the mandated action (stop widening the branch; point at scd-discovery or scd-project; a bug fix that turns into a redesign is a new path)"}]},"versions":{"before":"0.13.0","after":"0.13.1"},"self_evolution":{"is_self_evolution":false,"source_run_id":null}} +{"schema_version":"1.0","candidate_id":"EVO-20261109-uiux-design-intelligence","run_id":"RUN-20261109-evolve-uiux-taste","target_skills":["scd-uiux"],"candidate_level":"confirmed","coverage":"visible-context","root_cause":"scd-uiux delegates all design quality to the eight-dimension checklist, which is a verification frame rather than generation knowledge: no pre-generation direction block, no anti-pattern bans, no concrete numeric thresholds and no token discipline, so visual output regresses to the mean.","coupling_rationale":null,"change_kinds":["instruction","workflow"],"attribution":{"primary":"thinloop-skill","rationale":"The user judged scd-uiux design output quality as low. Source analysis of five high-star peer skills (pre-generation decide block plus banned defaults, searchable design knowledge, DTCG three-tier tokens, two-fidelity design loop, dual-persona review) shows this capability class is entirely absent from scd-uiux, whose only design-quality artifact is the shared eight-dimension checklist.","possible_misattribution":"model-limit: a stronger model could compensate with its own taste; but the skill must carry portable design judgment, and the peer-standard gap is structural."},"matched_signals":["user directly judged scd-uiux output design quality as low and requested comparison with popular high-star skills","user approved the five-item P0+P1 checklist and explicitly confirmed candidate ID EVO-20261109-uiux-design-intelligence"],"unmatched_signals":["no interactive failure trace was diagnosed; this is a user-initiated research-backed improvement","no live consumer-project output of scd-uiux was examined in this conversation"],"evidence":{"types":["conversation","user-correction","tool-output"],"summary":"User reported low design quality and asked for popular alternatives; agent read core source files of five high-star repos (design-taste rules with banned defaults, DTCG token architecture, WDS two-fidelity design loop, HIG dual-persona review, context-fidelity discipline) and mapped the shared capability gap onto scd-uiux; user then approved the bounded five-operation checklist and confirmed the candidate ID.","fingerprint":"sha256:0e59c0c268ba6b32678808cad024351e079053342f2036a94b70177ca29346e0","evidence_redacted":true},"operations":[{"action":"add","path":"skills/scd-uiux/references/design-taste.md","summary":"New shared reference: mandatory pre-generation direction block (domain, mood, motion depth, layout family, reference anchor) before any visual artifact; banned-defaults table with reason and replacement per item; mobile-first baseline rule."},{"action":"add","path":"skills/scd-uiux/references/design-tokens.md","summary":"New shared reference: three-tier token discipline (primitive, semantic, component; primitives never referenced directly), naming convention, dark mode swapped at the semantic layer, semantic-structure vs visual-style separation."},{"action":"replace","path":"skills/scd-uiux/SKILL.md","summary":"Hook design-taste.md into the visual-delivery section: direction block required before generating visual artifacts; governance flow unchanged."},{"action":"replace","path":"skills/scd-uiux/references/experience-contract.md","summary":"Hook design-tokens.md into the visual and component discipline section: token discipline applies when contracts describe visual increments."},{"action":"replace","path":"skills/scd-uiux/references/visual-quality.md","summary":"Eight-dimension table upgraded to thresholds plus anti-patterns (contrast 4.5:1, touch 44px, headline 2.5x body, measure 45-75ch, 4px spacing ladder, outer greater than inner, one primary one accent); self-review rounds gain direction-decision and change-reason fields."},{"action":"replace","path":"skills/scd-uiux/references/visual-evidence.md","summary":"Two-fidelity loop added to the fidelity table: low fidelity resolves structure and hierarchy only (no typography or color debate), confirmation freezes the reference before high fidelity; discuss before wireframing."},{"action":"replace","path":"skills/scd-uiux/assets/ux-contract.md","summary":"Add a design decision log column to the visual direction and system increment section of the UX contract template."}],"validation":{"kind":"mixed","checks":[{"name":"deterministic structure check (internal links resolve, shared-file consistency with scd-ui-polish and scd-quickdev, line budgets, manifests equal)","result":"unverified","evidence":"to run after edit"},{"name":"fresh isolated agent forward test: new-page design brief must yield the pre-generation direction block and banned-default screening before any visual artifact","result":"unverified","evidence":"to run after edit; expected: agent writes the five-line direction block and screens anti-patterns before generating visuals"}]},"versions":{"before":"0.20.0","after":"0.20.1"},"self_evolution":{"is_self_evolution":false,"source_run_id":null},"status":"proposed","previous_status":null,"recorded_at":"2026-11-09T22:17:26+08:00","event_id":"EVE-20261109-uiux-design-taste-proposed"} +{"schema_version":"1.0","candidate_id":"EVO-20261109-uiux-design-intelligence","run_id":"RUN-20261109-evolve-uiux-taste","target_skills":["scd-uiux"],"candidate_level":"confirmed","coverage":"visible-context","root_cause":"scd-uiux delegates all design quality to the eight-dimension checklist, which is a verification frame rather than generation knowledge: no pre-generation direction block, no anti-pattern bans, no concrete numeric thresholds and no token discipline, so visual output regresses to the mean.","coupling_rationale":null,"change_kinds":["instruction","workflow"],"attribution":{"primary":"thinloop-skill","rationale":"The user judged scd-uiux design output quality as low. Source analysis of five high-star peer skills (pre-generation decide block plus banned defaults, searchable design knowledge, DTCG three-tier tokens, two-fidelity design loop, dual-persona review) shows this capability class is entirely absent from scd-uiux, whose only design-quality artifact is the shared eight-dimension checklist.","possible_misattribution":"model-limit: a stronger model could compensate with its own taste; but the skill must carry portable design judgment, and the peer-standard gap is structural."},"matched_signals":["user directly judged scd-uiux output design quality as low and requested comparison with popular high-star skills","user approved the five-item P0+P1 checklist and explicitly confirmed candidate ID EVO-20261109-uiux-design-intelligence"],"unmatched_signals":["no interactive failure trace was diagnosed; this is a user-initiated research-backed improvement","no live consumer-project output of scd-uiux was examined in this conversation"],"evidence":{"types":["conversation","user-correction","tool-output"],"summary":"User reported low design quality and asked for popular alternatives; agent read core source files of five high-star repos (design-taste rules with banned defaults, DTCG token architecture, WDS two-fidelity design loop, HIG dual-persona review, context-fidelity discipline) and mapped the shared capability gap onto scd-uiux; user then approved the bounded five-operation checklist and confirmed the candidate ID.","fingerprint":"sha256:0e59c0c268ba6b32678808cad024351e079053342f2036a94b70177ca29346e0","evidence_redacted":true},"operations":[{"action":"add","path":"skills/scd-uiux/references/design-taste.md","summary":"New shared reference: mandatory pre-generation direction block (domain, mood, motion depth, layout family, reference anchor) before any visual artifact; banned-defaults table with reason and replacement per item; mobile-first baseline rule."},{"action":"add","path":"skills/scd-uiux/references/design-tokens.md","summary":"New shared reference: three-tier token discipline (primitive, semantic, component; primitives never referenced directly), naming convention, dark mode swapped at the semantic layer, semantic-structure vs visual-style separation."},{"action":"replace","path":"skills/scd-uiux/SKILL.md","summary":"Hook design-taste.md into the visual-delivery section: direction block required before generating visual artifacts; governance flow unchanged."},{"action":"replace","path":"skills/scd-uiux/references/experience-contract.md","summary":"Hook design-tokens.md into the visual and component discipline section: token discipline applies when contracts describe visual increments."},{"action":"replace","path":"skills/scd-uiux/references/visual-quality.md","summary":"Eight-dimension table upgraded to thresholds plus anti-patterns (contrast 4.5:1, touch 44px, headline 2.5x body, measure 45-75ch, 4px spacing ladder, outer greater than inner, one primary one accent); self-review rounds gain direction-decision and change-reason fields."},{"action":"replace","path":"skills/scd-uiux/references/visual-evidence.md","summary":"Two-fidelity loop added to the fidelity table: low fidelity resolves structure and hierarchy only (no typography or color debate), confirmation freezes the reference before high fidelity; discuss before wireframing."},{"action":"replace","path":"skills/scd-uiux/assets/ux-contract.md","summary":"Add a design decision log column to the visual direction and system increment section of the UX contract template."}],"validation":{"kind":"mixed","checks":[{"name":"deterministic structure check (internal links resolve, shared-file consistency with scd-ui-polish and scd-quickdev, line budgets, manifests equal)","result":"unverified","evidence":"to run after edit"},{"name":"fresh isolated agent forward test: new-page design brief must yield the pre-generation direction block and banned-default screening before any visual artifact","result":"unverified","evidence":"to run after edit; expected: agent writes the five-line direction block and screens anti-patterns before generating visuals"}]},"versions":{"before":"0.20.0","after":"0.20.1"},"self_evolution":{"is_self_evolution":false,"source_run_id":null},"status":"trial","previous_status":"proposed","recorded_at":"2026-11-09T22:17:28+08:00","event_id":"EVE-20261109-uiux-design-taste-trial"} +{"schema_version":"1.0","event_id":"EVE-20261109-uiux-design-taste-accepted","candidate_id":"EVO-20261109-uiux-design-intelligence","run_id":"RUN-20261109-evolve-uiux-taste","recorded_at":"2026-11-09T22:26:36+08:00","status":"accepted","previous_status":"trial","target_skills":["scd-uiux"],"candidate_level":"confirmed","coverage":"visible-context","root_cause":"scd-uiux delegates all design quality to the eight-dimension checklist, which is a verification frame rather than generation knowledge: no pre-generation direction block, no anti-pattern bans, no concrete numeric thresholds and no token discipline, so visual output regresses to the mean.","coupling_rationale":null,"change_kinds":["instruction","workflow"],"attribution":{"primary":"thinloop-skill","rationale":"The user judged scd-uiux design output quality as low. Source analysis of five high-star peer skills shows the missing capability class (pre-generation direction, banned defaults, thresholds, tokens, fidelity loop) is structural; the trial injected exactly that layer and the isolated session applied it unprompted.","possible_misattribution":"model-limit: a stronger model could compensate with its own taste; portable skill judgment remains the durable fix."},"matched_signals":["user directly judged scd-uiux output design quality as low and requested comparison with popular high-star skills","user approved the five-item P0+P1 checklist and explicitly confirmed candidate ID EVO-20261109-uiux-design-intelligence"],"unmatched_signals":["no interactive failure trace was diagnosed; this is a user-initiated research-backed improvement","no live consumer-project output of scd-uiux was examined in this conversation"],"evidence":{"types":["conversation","user-correction","tool-output"],"summary":"User reported low design quality; agent mapped the capability gap from five high-star repos onto scd-uiux; user approved the bounded checklist and confirmed the candidate ID; implementation and both validations completed in the trial branch.","fingerprint":"sha256:0e59c0c268ba6b32678808cad024351e079053342f2036a94b70177ca29346e0","evidence_redacted":true},"operations":[{"action":"add","path":"skills/scd-uiux/references/design-taste.md","summary":"New shared reference: mandatory pre-generation direction block (domain, mood, motion depth, layout family, reference anchor) before any visual artifact; banned-defaults table with reason and replacement per item; mobile-first baseline rule."},{"action":"add","path":"skills/scd-uiux/references/design-tokens.md","summary":"New shared reference: three-tier token discipline (primitive, semantic, component; primitives never referenced directly), naming convention, dark mode swapped at the semantic layer, semantic-structure vs visual-style separation."},{"action":"replace","path":"skills/scd-uiux/SKILL.md","summary":"Hook design-taste.md into the visual-delivery section: direction block required before generating visual artifacts; governance flow unchanged."},{"action":"replace","path":"skills/scd-uiux/references/experience-contract.md","summary":"Hook design-tokens.md into the visual and component discipline section: token discipline applies when contracts describe visual increments."},{"action":"replace","path":"skills/scd-uiux/references/visual-quality.md","summary":"Eight-dimension table upgraded to thresholds plus anti-patterns (contrast 4.5:1, touch 44px, headline 2.5x body, measure 45-75ch, 4px spacing ladder, outer greater than inner, one primary one accent); self-review rounds gain direction-decision and change-reason fields."},{"action":"replace","path":"skills/scd-uiux/references/visual-evidence.md","summary":"Two-fidelity loop added to the fidelity table: low fidelity resolves structure and hierarchy only (no typography or color debate), confirmation freezes the reference before high fidelity; discuss before wireframing."},{"action":"replace","path":"skills/scd-uiux/assets/ux-contract.md","summary":"Add a design decision log column to the visual direction and system increment section of the UX contract template."}],"validation":{"kind":"mixed","checks":[{"name":"deterministic structure check (internal links resolve, shared-file consistency with scd-ui-polish and scd-quickdev, line budgets, manifests equal)","result":"pass","evidence":"all relative links in skills/scd-uiux, README and docs resolve; scd-ui-polish and quickdev references to visual-quality intact; eight-dim terminology preserved; 7 manifests parse and equal 0.20.1 with no 0.20.0 residue; release-note links resolve"},{"name":"fresh isolated agent forward test: new-page design brief must yield the pre-generation direction block and banned-default screening before any visual artifact","result":"pass","evidence":"post-edit isolated subagent loaded the edited skill, wrote the five-item direction block (restrained mood, varied four-section layout family, named anchors), screened all ten blacklist entries with hit handling, and stated low fidelity forbids typography and color debate"}]},"versions":{"before":"0.20.0","after":"0.20.1"},"self_evolution":{"is_self_evolution":false,"source_run_id":null}} diff --git a/.scd/plans/20261109-221831-uiux-design-intelligence/decisions.md b/.scd/plans/20261109-221831-uiux-design-intelligence/decisions.md new file mode 100644 index 0000000..08e1abd --- /dev/null +++ b/.scd/plans/20261109-221831-uiux-design-intelligence/decisions.md @@ -0,0 +1,29 @@ +--- +status: approved +version: 2 +created_at: 2026-11-09T22:18:31+08:00 +updated_at: 2026-11-09T22:26:00+08:00 +recorded_timezone: Asia/Shanghai +--- + +# 决策与事件 + +- 事件ID:DEC-1 +- 类型:批准 +- 文件及文档版本:requirements.md v1、implementation.md v1、plan.md v1(本目录) +- 目标Git SHA:`64125e3acfa3de5e57d5c3ca742af3cdbc7b9a37`(计划首个提交,含四份计划文档与演进 proposed/trial 事件) +- 用户实际依据:用户对五项改造清单回复"没问题"(清单含逐项内容、优先级 P0+P1、落点文件、验收方式与"走 scd-evolve 立一个 Issue 实施"的路径建议),上下文为本对话研究结论展示。 +- 任务或Issue范围:EVO-20261109-uiux-design-intelligence 全部 7 项文件操作与版本提升 +- occurred_at:null # 用户消息原始时间未知(会话内口头确认,无消息ID) +- recorded_at:2026-11-09T22:26:00+08:00 +- 未决选择:无(P2 两项明确暂不实施,不属未决) + +- 事件ID:DEC-2 +- 类型:开工 +- 文件及文档版本:同 DEC-1;决策事件本身记录于 decisions.md v2 +- 目标Git SHA:`64125e3acfa3de5e57d5c3ca742af3cdbc7b9a37` +- 用户实际依据:对正式候选项展示(含稳定候选 ID、7 项操作、试验验证与分发边界、"确认 EVO-20261109-uiux-design-intelligence 开始试验,或拒绝该 ID",及是否写入 `~/.scd/config.json` 的可选项)回复"可以"。 +- 任务或Issue范围:Issue #120(scd-uiux 补入设计智力层);开工授权覆盖 7 项文件操作、确定性检查、隔离会话前向测试、版本提升与普通交付序列;`thinloop_source_root` 配置写入已同步执行并回读。 +- occurred_at:null # 用户消息原始时间未知(会话内口头确认,无消息ID) +- recorded_at:2026-11-09T22:26:00+08:00 +- 未决选择:无 diff --git a/.scd/plans/20261109-221831-uiux-design-intelligence/implementation.md b/.scd/plans/20261109-221831-uiux-design-intelligence/implementation.md new file mode 100644 index 0000000..6f87982 --- /dev/null +++ b/.scd/plans/20261109-221831-uiux-design-intelligence/implementation.md @@ -0,0 +1,38 @@ +--- +status: approved +version: 1 +created_at: 2026-11-09T22:18:31+08:00 +updated_at: 2026-11-09T22:18:31+08:00 +recorded_timezone: Asia/Shanghai +--- + +# 实施计划 + +## 文件与顺序 + +| 序 | 文件 | 操作 | 依赖 | +|---|---|---|---| +| 1 | `skills/scd-uiux/references/design-taste.md` | 新建(约 70–100 行) | 无 | +| 2 | `skills/scd-uiux/references/design-tokens.md` | 新建(约 45–60 行) | 无 | +| 3 | `skills/scd-uiux/references/visual-quality.md` | 八维表加"阈值/反模式"双列;黑名单链接;轮次记录加方向决策与变更原因 | 1 | +| 4 | `skills/scd-uiux/references/visual-evidence.md` | 保真度表加两阶段行;新增"两阶段保真度循环"小节 | 1 | +| 5 | `skills/scd-uiux/references/experience-contract.md` | "视觉与组件纪律"挂接 design-tokens 一句 | 2 | +| 6 | `skills/scd-uiux/assets/ux-contract.md` | "视觉方向与系统增量"加方向块占位与设计决策日志栏 | 1、3 | +| 7 | `skills/scd-uiux/SKILL.md` | "形成可实施的视觉交付"挂接 design-taste 一句 | 1 | +| 8 | 发布清单(`.codex-plugin/plugin.json`、`.claude-plugin/plugin.json` 等 grep 确认全集) | 0.20.0→0.20.1 | 1–7 通过验证后 | + +## 验证 + +1. 确定性:全部新增/修改文件的内部相对链接可解析;`grep -r "visual-quality"` 确认 scd-ui-polish/quickdev 引用不受破坏;八维术语保留;各文件行数在预算内;全部发布清单版本相等且无 0.20.0 残留。 +2. 隔离会话前向测试(instruction+workflow 必需):编辑后新起子代理,仅提供修改后技能路径与一个新页面设计简报提示词,期望:先产出五项方向块并排查黑名单,再生成视觉产物。 +3. 交付门:PR 独立验收子代理返回 PASS;页面类变更不适用(本任务为技能文档,无页面交互)。 + +## 交付 + +分支 `evo/20261109-uiux-design-intelligence` → PR → 独立验收 PASS → 合并 → 同步本地 main → 按 Thinloop 交付默认核对已安装 ZCode / Claude Code / Codex 与合并后 main 一致(含仓库内变更的负载刷新)。 + +## 风险与停止条件 + +- 隔离会话测试失败:按 trial 契约从 `/tmp/thinloop-evo-20261109-snapshot` 恢复候选文件并追加 `reverted`,报告差距。 +- 共用 visual-quality.md 的相邻技能行为回归:八维行名与"八维都要考虑;未触发维度记录 N/A"等共用语句保持原文不动,只增列与小节。 +- 清单版本同步遗漏:以 `grep -rn '0\.20\.0'` 全仓核对归零。 diff --git a/.scd/plans/20261109-221831-uiux-design-intelligence/plan.md b/.scd/plans/20261109-221831-uiux-design-intelligence/plan.md new file mode 100644 index 0000000..35ce634 --- /dev/null +++ b/.scd/plans/20261109-221831-uiux-design-intelligence/plan.md @@ -0,0 +1,14 @@ +--- +status: approved +version: 1 +created_at: 2026-11-09T22:18:31+08:00 +updated_at: 2026-11-09T22:18:31+08:00 +recorded_timezone: Asia/Shanghai +--- + +# 任务索引 + +- 任务与Issue:EVO-20261109-uiux-design-intelligence——scd-uiux 补入设计智力层(P0+P1 共 7 项文件操作);治理 Issue 见 decisions.md DEC-2 范围记录 +- 所需文档及版本:requirements.md v1、implementation.md v1、decisions.md v1 +- 基线来源:`skills/scd-uiux/`(main @ `12cc21e`,演进历史 `.scd/evolution/history.jsonl` 8 事件,本候选 proposed/trial 已登记) +- 批准与开工事件:decisions.md `DEC-1`(方案批准:五项改造清单)、`DEC-2`(开工授权与候选 ID 确认) diff --git a/.scd/plans/20261109-221831-uiux-design-intelligence/requirements.md b/.scd/plans/20261109-221831-uiux-design-intelligence/requirements.md new file mode 100644 index 0000000..0bd7b9d --- /dev/null +++ b/.scd/plans/20261109-221831-uiux-design-intelligence/requirements.md @@ -0,0 +1,34 @@ +--- +status: approved +version: 1 +created_at: 2026-11-09T22:18:31+08:00 +updated_at: 2026-11-09T22:18:31+08:00 +recorded_timezone: Asia/Shanghai +--- + +# 需求 + +scd-uiux 是流程治理型技能,设计质量全部委托给八维检查表(验收框架),缺少生成侧设计智力,导致视觉产出回落均值。经对 plugin87/ux-ui-agent-skills、ui-ux-pro-max、BMAD WDS、apple-design-skill、superdesign-skill 五个高星项目的源码分析,确认补入以下能力(用户已逐项确认清单与优先级,P2 两项暂不实施)。 + +## P0 + +1. 新增 `skills/scd-uiux/references/design-taste.md`:生成前五项方向决策块(领域与气质/受众与语气/动效深度/布局族/参考锚点,命名不出不得生成)、反模式黑名单(等权重卡片、全居中、#000压#fff、emoji 图标、满投影、彩虹强调色、单侧彩条、营销空话文案,逐条含原因与替代)、移动优先基准。 +2. 升级 `skills/scd-uiux/references/visual-quality.md` 八维表为"具体阈值+反模式":对比≥4.5:1、触控≥44×44px、最大标题≥2.5×正文、行长 45–75ch、4px 间距阶梯、外距>内距、一个主色至多一个强调色;自审轮次记录增加方向决策与变更原因。 + +## P1 + +3. 新增 `skills/scd-uiux/references/design-tokens.md`:三层令牌(primitive→semantic→component,原始令牌禁止直接引用)、命名规范、暗色在语义层切换、语义结构与视觉样式分离。 +4. `skills/scd-uiux/references/visual-evidence.md` 增加两阶段保真度循环:先讨论再画图;低保真只决结构与层级(禁谈字体颜色);确认即冻结参考后再高保真。 +5. `skills/scd-uiux/assets/ux-contract.md` 增加设计决策日志栏。 + +## 挂接 + +- `skills/scd-uiux/SKILL.md`「形成可实施的视觉交付」挂接 design-taste。 +- `skills/scd-uiux/references/experience-contract.md`「视觉与组件纪律」挂接 design-tokens。 + +## 边界(不得超出) + +- 不改治理流程、状态机、确认机制或与其他技能的分工。 +- 不引入外部服务依赖、大型知识库或多 agent 人格体系。 +- visual-quality.md 为 scd-ui-polish 与 quickdev 共用,只做增量升级,不破坏既有"八维"术语与共用契约。 +- 验收:确定性检查(内部链接、共用文件一致性、行数约束、发布清单版本相等)+ 编辑后新起隔离会话用真实提示词前向测试;通过后补丁版本 0.20.0→0.20.1 并同步全部发布清单。 diff --git a/.zcode-plugin/plugin.json b/.zcode-plugin/plugin.json index d0c4d67..6a0de30 100644 --- a/.zcode-plugin/plugin.json +++ b/.zcode-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "thinloop", - "version": "0.20.0", + "version": "0.20.1", "description": "Simplify complex development with Issue-backed discovery, risk-adaptive Web experience and architecture design, non-executing multi-Issue project decomposition into dependency DAGs, bounded READY-wave execution, read-only project-status navigation, project-scale refactoring and cross-stack reimplementation, autonomous single-Issue PR delivery, evidence-backed maintenance, concise experiential knowledge, and human-approved skill evolution.", "author": { "name": "mindcarver" diff --git a/README.md b/README.md index 145fc03..603be1e 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@

- v0.20.0 + v0.20.1   ISSUE-DRIVEN   diff --git a/docs/installation.md b/docs/installation.md index 63047ae..c719512 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -403,3 +403,4 @@ ZCode:使用 $scd-evolve 诊断本次使用过的 Thinloop Skill。 方案与开工前提:按[计划确认契约](../skills/scd-quickdev/references/planning-contract.md)先确认具体技术选择、精确Git计划版本和开工范围,再连续完成普通交付;新选择或实质变更重新确认。纯状态查询不创建开发计划。 - 升级到 v0.20.0:新增独立 `scd-research`,支持产品前期用户、竞品、替代方案和假设验证;Discovery 消费研究结论,保留清晰变更快速路径。已有客户端按原安装形态更新并核对十四个技能,详见 [`v0.20.0`](./releases/v0.20.0.md)。 +- 升级到 v0.20.1:`scd-uiux` 补入设计智力层——生成前方向块、反模式黑名单、三层设计令牌纪律与两阶段保真度循环,八维检查升级为阈值加反模式双列。详见 [`v0.20.1`](./releases/v0.20.1.md)。 diff --git a/docs/releases/v0.20.1.md b/docs/releases/v0.20.1.md new file mode 100644 index 0000000..68b2585 --- /dev/null +++ b/docs/releases/v0.20.1.md @@ -0,0 +1,7 @@ +# Thinloop v0.20.1 + +`scd-uiux` 补入生成侧设计智力,新增[设计品味](../../skills/scd-uiux/references/design-taste.md)与[设计令牌](../../skills/scd-uiux/references/design-tokens.md)两份参考。生成任何视觉产物前必须先写五项方向块(领域与气质、受众与语气、动效深度、布局族、参考锚点)并逐条排查反模式黑名单;[八维检查](../../skills/scd-uiux/references/visual-quality.md)升级为具体阈值加反模式双列(正文对比 4.5:1、触控 44px、最大标题 2.5 倍正文、行长 45–75ch、4px 间距阶梯等);重要页面默认两阶段保真度循环,低保真只决结构与层级;UX 契约模板增加设计决策日志。治理流程与状态机不变,共用文件对 `scd-ui-polish` 与 QuickDev 保持兼容。 + +设计判断参考 plugin87/ux-ui-agent-skills、BMAD WDS、ui-ux-pro-max、apple-design-skill、superdesign-skill 等开源技能的公开方法(MIT 许可),按本仓库语言与治理结构改写;未引入外部插件或运行时依赖。 + +结构检查与隔离行为场景只验证本次指令路径,不证明跨模型一致的视觉效果;实际设计质量以用户真实使用验收为准。 diff --git a/marketplace.json b/marketplace.json index cb3835a..57cb0bb 100644 --- a/marketplace.json +++ b/marketplace.json @@ -6,7 +6,7 @@ "name": "thinloop", "source": ".", "description": "Discovery, Web UIUX, architecture, Next project-status navigation, Project DAG decomposition, Execute READY-wave orchestration, Reengineering gates, QuickDev delivery, maintenance, knowledge, and evolution skills with continuity checks; Project itself remains non-executing.", - "version": "0.20.0" + "version": "0.20.1" } ] } diff --git a/skills/scd-uiux/SKILL.md b/skills/scd-uiux/SKILL.md index db7f637..b57e79e 100644 --- a/skills/scd-uiux/SKILL.md +++ b/skills/scd-uiux/SKILL.md @@ -66,7 +66,7 @@ description: "在生产实施前设计或完善 Web 产品的用户体验和界 ## 形成可实施的视觉交付 -创建或验证线框图、视觉稿或原型前,阅读 `references/visual-evidence.md`。 +创建或验证线框图、视觉稿或原型前,阅读 `references/visual-evidence.md`。生成任何视觉产物前,先按[设计品味](references/design-taste.md)写出五项方向块并逐条排查反模式黑名单;命名不出方向时不得开始生成。 视觉设计自动使用共用的[页面视觉质量](references/visual-quality.md):统一方向、八维检查、实际渲染的有限轮次自审与可核对对比。已有页面只需视觉打磨时可独立使用 [scd-ui-polish](../scd-ui-polish/SKILL.md);生产实施仍交给 QuickDev,清晰局部变更不增加设计阶段。 - 明显的文案、颜色、间距或局部组件变更继续使用简洁的交互增量说明,不强制扩大成设计项目。 diff --git a/skills/scd-uiux/assets/ux-contract.md b/skills/scd-uiux/assets/ux-contract.md index f55e01c..b06685d 100644 --- a/skills/scd-uiux/assets/ux-contract.md +++ b/skills/scd-uiux/assets/ux-contract.md @@ -23,9 +23,16 @@ recorded_timezone: Asia/Shanghai ## 视觉方向与系统增量 +- <生成前方向块:领域与气质 / 受众与语气 / 动效深度 / 布局族 / 参考锚点;局部变更只写增量> - <统一方向、共用页面视觉质量的八维观察及适用视口;引用来源与证据,不复制标准> - <修改前基线或新页面 N/A 理由、各轮自审记录及前后对比;实施对照沿用下方视觉 ID> +### 设计决策日志 + +| 日期 | 决策 | 变更原因或依据 | +|---|---|---| +| | <方向或令牌决策> | <原因、参考或验收依据> | + ## 视觉交付清单 | 视觉 ID | 界面或组件族 | 状态 | 旅程或验收 | 视口 | 保真度 | 项目文件 | 已检查 | diff --git a/skills/scd-uiux/references/design-taste.md b/skills/scd-uiux/references/design-taste.md new file mode 100644 index 0000000..4866455 --- /dev/null +++ b/skills/scd-uiux/references/design-taste.md @@ -0,0 +1,40 @@ +# 设计品味 + +UIUX 设计在生成任何视觉产物前共用本参考。它负责生成侧判断:先固定方向、封死模板化默认。产物验收仍按[页面视觉质量](visual-quality.md)的八维、轮次与证据执行;二者冲突时先统一再继续。 + +## 生成前方向块 + +生成线框、视觉稿或原型前,先把五项方向决策写入 UX 契约「视觉方向与系统增量」。说不出任一项时不得开始生成;说不出方向的生成必然回落均值: + +- 领域与气质:产品类别,加一个结果必须成立的一个词气质(如「克制」「精密」「温暖」); +- 受众与语气:专家或新手、冷静或活力、高级或实用; +- 动效深度:无 / 仅反馈 / 表达性编排,三选一并说明; +- 布局族:命名的分节序列,说明每节构图如何变化,不重复同一行式; +- 参考锚点:对标的具名系统或作品,来源可核对;无法联网对标时按页面视觉质量的外部对标规则记录。 + +方向块先于产物存在。产物偏离方向块时,先改方向块或改产物并记录原因,不得事后解释成「风格选择」。清晰局部变更继承现有方向,只写增量。 + +## 反模式黑名单 + +以下默认每一个都是缺陷,不是起点。生成时逐条规避,自审时命中即按对应维度 `FAIL`: + +| 默认 | 为什么读起来像生成物 | 替代 | +|---|---|---| +| 三个或四个等权重卡片并排 | 视线无处落 | 让一个要素领先:更大、更重或独占一行 | +| 整页居中 | 无张力、无层级 | 真实网格上的不对称;居中是刻意例外 | +| 同一「左文右图」行式重复 | 明显模板化 | 每节构图有意变化 | +| 标题只是加粗正文 | 没有显示层级 | 最大标题至少 2.5 倍正文,短,18–24 字符行长 | +| 每个盒子都有投影 | 浑浊、过时的深度 | 大部分平面;阴影稀有而分层 | +| `#000` 压 `#fff` | 刺眼、业余 | 主题内的暖白底配非纯黑文字 | +| 强调色彩虹 | 无纪律 | 一个主色,至多一个强调色;中性色承担主体 | +| emoji 当图标、项目符或状态点 | 最响的生成物痕迹 | 内联 SVG 图标用 `currentColor`,或纯文字 | +| 单侧彩色边条 | 陈词滥调的装饰 | 完整细边框或面分隔;状态用图标加文字 | +| 拥挤的垂直节奏 | 密集、焦虑 | 分节之间保留慷慨的宏观留白 | + +## 文案纪律 + +界面文案禁用:营销填充词(「赋能」「无缝」「解锁」「极致」)、空洞三连(「强大、直观、美观」)、假结构标签(「SECTION 01」、lorem ipsum、「在此输入标题」)和过度对冲的微文案。写具体的、可验证的事;读出来像新闻稿就删短、写具体。 + +## 移动优先 + +基础样式即窄屏布局,更宽的屏幕用 `min-width` 逐层叠加。禁止桌面优先、回头再补移动端。`max-width` 属性用于阅读行长、容器上限与图片约束,不受此限制。 diff --git a/skills/scd-uiux/references/design-tokens.md b/skills/scd-uiux/references/design-tokens.md new file mode 100644 index 0000000..6b18b91 --- /dev/null +++ b/skills/scd-uiux/references/design-tokens.md @@ -0,0 +1,29 @@ +# 设计令牌 + +UX 契约描述视觉增量与组件规则时共用本参考。目的:让视觉决策可复用、可换肤、可交接,而不是散落的一次性像素值。 + +## 三层令牌 + +```text +组件令牌(代码使用) button-bg-primary -> semantic.action.primary +语义令牌(设计与通用样式) action.primary -> primitive.blue.600 +原始令牌(禁止直接引用) blue.600 -> #2563EB +``` + +- 原始令牌:色板与原始值;组件实现不得直接引用; +- 语义令牌:按用途命名(text、surface、action、feedback),设计决策与通用样式使用; +- 组件令牌:限定具体组件,实现时使用。 + +命名遵循 `{类别}.{属性}.{变体}-{状态}`,例如 `semantic.text.primary`、`component.button.primary-bg-hover`。 + +## 语义结构与视觉样式分离 + +HTML 与结构表达「它是什么」,令牌表达「它看起来如何」,二者保持独立。禁止把视觉样式硬编码在语义标签上(如标题元素上散落字号与色值);同类元素的外观变更通过令牌统一生效,而不是逐处改样式。 + +## 暗色模式 + +原始令牌不变;暗色在语义层切换(CSS 自定义属性配合 `[data-theme]` 或 `prefers-color-scheme`)。每个组件状态都要在两种模式下核对,不得只验证亮色。 + +## 契约中的用法 + +存在仓库设计系统时优先沿用其令牌体系,只定义增量。UX 契约的「视觉与组件增量」用语义令牌表达决策;现有令牌能够表达时禁止写一次性像素值。需要新增令牌时说明层级归属与命名。不为单个功能创建完整设计系统。 diff --git a/skills/scd-uiux/references/experience-contract.md b/skills/scd-uiux/references/experience-contract.md index e1147fd..f7b90e0 100644 --- a/skills/scd-uiux/references/experience-contract.md +++ b/skills/scd-uiux/references/experience-contract.md @@ -123,7 +123,7 @@ WCAG 术语能够澄清要求时可以使用,但不要把通用清单粘贴到 ## 视觉与组件纪律 -存在设计系统或组件来源时写明。只描述功能特定的新增或覆盖。组件契约应区分: +存在设计系统或组件来源时写明。只描述功能特定的新增或覆盖。视觉增量与组件规则遵循[设计令牌](design-tokens.md)的三层令牌纪律与语义结构分离。组件契约应区分: - 用途与允许场景; - 内容与组成; diff --git a/skills/scd-uiux/references/visual-evidence.md b/skills/scd-uiux/references/visual-evidence.md index 00b8054..1191720 100644 --- a/skills/scd-uiux/references/visual-evidence.md +++ b/skills/scd-uiux/references/visual-evidence.md @@ -9,11 +9,22 @@ | 清晰的文案、令牌、间距或局部组件增量 | 书面或标注的增量说明 | | 显式 UIUX 设计、重要新页面、重要流程或整体改版 | 项目内可渲染的主要界面与关键状态视觉图 | | 层级、导航、表单分组或响应式重排需要设计 | 低保真线框图及已触发视口 | +| 整体结构或层级存在多个待比较方案 | 先讨论结构与内容归属,再低保真线框(禁谈字体与颜色),确认后进入高保真 | | 有状态交互、多步骤任务或恢复行为 | 可点击或可运行的轻量原型 | | 品牌、视觉语言、数据密度或组件外观属于关键验收 | 高保真关键界面和状态 | 保真度不是项目状态。0 到 1 产品仍可能只需要线框图;聚焦改版也可能需要高保真。 +## 两阶段保真度循环 + +重要新页面、重要流程或整体改版默认分两阶段推进: + +1. 先讨论再画图:主操作是什么、移动端隐藏什么、信任信号放哪等硬问题在讨论中解决;把错误的东西画得更快没有价值。 +2. 低保真只决结构与层级:布局、信息归属和分节顺序;禁止在此阶段争论字体与颜色,那属于高保真和浏览器复核阶段。 +3. 低保真获得用户确认后即冻结为参考(并入既有设计确认机制,不另造审批),再进入高保真视觉稿与实施;后续调整按视觉 ID 迭代并记录原因。 + +清晰的局部变更按上表直接交付增量说明,不强制两阶段。 + ## 从环境中选择工具 用户已有设计来源时直接使用。否则选择成本最低且能让决策可评审的工具: diff --git a/skills/scd-uiux/references/visual-quality.md b/skills/scd-uiux/references/visual-quality.md index 379d3d1..6004a4e 100644 --- a/skills/scd-uiux/references/visual-quality.md +++ b/skills/scd-uiux/references/visual-quality.md @@ -20,18 +20,18 @@ UIUX 设计、QuickDev 的真实页面差异及 `scd-ui-polish` 共用本参考 ## 八维检查 -| 维度 | 检查与改善方向 | -|---|---| -| typography / 排版 | 标题、正文和辅助信息层级;字体气质、字重、字号、行高、行长与中英文混排,服务于阅读和品牌。 | -| whitespace / 留白 | 一致的间距、对齐、分组和阅读节奏;消除拥挤及无意义空洞,不机械放大所有间距。 | -| visual_hierarchy / 视觉层级 | 首屏主题、阅读焦点、内容顺序、主次操作与区块关系,让用户理解下一步。 | -| color / 色彩 | 背景、文字、强调色、状态色职责清晰且一致;核对关键对比,不只依赖颜色传达状态。 | -| motion / 动效 | 用于状态、注意力或空间关系,节奏一致且流畅;检查减少动态效果偏好。无需动效时记录理由,不为过表添加动画。 | -| micro_interaction / 微交互 | 实际操作按钮、链接、表单、导航与展开组件;核对适用的 hover、focus、active、disabled、loading 及反馈。 | -| responsive / 响应式 | 布局重排、字号、间距、图片裁切、导航与阅读顺序;检查溢出、遮挡和触控区域,不只等比缩小桌面。 | -| originality / 辨识度 | 用符合产品内容的构图、排版、素材和细节形成特点;避免模板化装饰,不偏离已确认视觉语言。 | - -八维都要考虑;未触发维度记录 `N/A` 和具体原因。无视觉变更或无关区域不得借此扩展修改范围。 +| 维度 | 阈值与检查方向 | 高频反模式 | +|---|---|---| +| typography / 排版 | 标题、正文和辅助信息层级;字体气质、字重、字号、行高、行长与中英文混排。正文行长 45–75ch;行高正文约 1.5、大标题不超过 1.25;UI 用一族字体,编辑内容可用衬线,代码等宽;h1 每页一次且不跳级。 | 标题只是加粗正文;灰上灰;正文小于 12px。 | +| whitespace / 留白 | 一致的间距、对齐、分组和阅读节奏。间距走 4px 基数阶梯;外距大于内距(容器边距 > 元素间隙 > 元素内边距);相关元素靠得更近。不机械放大所有间距,消除无意义空洞。 | 机械放大所有间距;拥挤的垂直节奏。 | +| visual_hierarchy / 视觉层级 | 首屏主题、阅读焦点、内容顺序、主次操作与区块关系。每节一个焦点;主次操作在尺寸或权重上可区分;分节构图有意变化。 | 等权重卡片并排;整页居中;同一行式重复。 | +| color / 色彩 | 背景、文字、强调色、状态色职责清晰且一致。正文对比至少 4.5:1、大字至少 3:1;一个主色至多一个强调色;不只依赖颜色传达状态。 | 纯黑压纯白;强调色彩虹;灰上灰。 | +| motion / 动效 | 用于状态、注意力或空间关系,节奏一致且流畅;检查减少动态效果偏好。无需动效时记录理由,不为过表添加动画。 | 一个时长包打所有过渡;动画 width/height;无减少动态效果适配。 | +| micro_interaction / 微交互 | 实际操作按钮、链接、表单、导航与展开组件;核对适用的 hover、focus、active、disabled、loading 及反馈。触控目标至少 44×44px 且相邻间距至少 8px;禁止 0ms 突变。 | 仅 hover 的交互;移除焦点环。 | +| responsive / 响应式 | 布局重排、字号、间距、图片裁切、导航与阅读顺序;检查溢出、遮挡和触控区域。基础样式即窄屏布局,宽屏逐层叠加。 | 桌面等比缩小;桌面优先再补窄屏。 | +| originality / 辨识度 | 用符合产品内容的构图、排版、素材和细节形成特点;不偏离已确认视觉语言。 | emoji 当图标;单侧彩色边条;模板化装饰。 | + +八维都要考虑;未触发维度记录 `N/A` 和具体原因。无视觉变更或无关区域不得借此扩展修改范围。生成侧完整禁令以[设计品味](design-taste.md)的反模式黑名单为准;黑名单命中计入对应维度 `FAIL`,不以风格偏好辩解。 ## 有限自审与修正 @@ -41,7 +41,7 @@ UIUX 设计、QuickDev 的真实页面差异及 `scd-ui-polish` 共用本参考 2. 第二轮在更新后的产物或页面检查细节、响应式、交互状态及新增退步;按八维复核并保存证据。 3. 第二轮仍有明确问题时增加第三轮,优先修正阻塞约定验收的问题。第三轮仍未解决时记录具体差距和原因,停止无界打磨;必需项未通过不能声明完成。 -每轮记录实际目标版本、视口/状态、观察、修改或无需修改的理由、重查结果与证据引用。浏览器刷新后确认修改已生效;截图不能证明已操作交互,代码检查和构建成功也不能代替实际渲染检查。 +每轮记录实际目标版本、视口/状态、观察、修改或无需修改的理由、重查结果与证据引用。首轮记录还须包含生成前方向块(或其增量);后续各轮记录方向决策的变更与原因。浏览器刷新后确认修改已生效;截图不能证明已操作交互,代码检查和构建成功也不能代替实际渲染检查。 设计阶段检查项目内视觉产物及可操作原型,不要求尚不存在的生产页面。实施阶段必须检查真实应用。缺少阶段必需的浏览器、状态或证据时记录 `BLOCKED`,不能由自评分数或文字描述替代。 diff --git a/tests/chinese-skill-payload.test.mjs b/tests/chinese-skill-payload.test.mjs index e1f2016..4faa73c 100644 --- a/tests/chinese-skill-payload.test.mjs +++ b/tests/chinese-skill-payload.test.mjs @@ -32,7 +32,7 @@ test("全部 Thinloop Skill 文本载荷均包含中文", () => { .flatMap((entry) => collectPayloadFiles(path.join(skillsRoot, entry.name))) .sort(); - assert.equal(files.length, 77); // Shared visual and step communication references. + assert.equal(files.length, 79); // Adds shared design-taste and design-token references. for (const file of files) { assert.match(read(file), han, file); }