maestro-flow 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/insight-challenge/SKILL.md +228 -0
- package/.agents/skills/insight-challenge/specs/challenge-protocol.md +154 -0
- package/.agents/skills/insight-challenge/specs/verdict-schema.md +239 -0
- package/.agents/skills/maestro/SKILL.md +6 -6
- package/.agents/skills/maestro-help/SKILL.md +1 -1
- package/.agents/skills/maestro-help/index/catalog.json +3 -2
- package/.agents/skills/maestro-ralph/SKILL.md +11 -10
- package/.agents/skills/maestro-ralph-beta/SKILL.md +11 -10
- package/.agents/skills/odyssey-debug/SKILL.md +475 -0
- package/.agents/skills/odyssey-improve/SKILL.md +507 -0
- package/.agents/skills/odyssey-planex/SKILL.md +603 -0
- package/.agents/skills/odyssey-review-test-fix/SKILL.md +429 -0
- package/.agents/skills/odyssey-ui/SKILL.md +464 -0
- package/.agy/skills/insight-challenge/SKILL.md +230 -0
- package/.agy/skills/insight-challenge/specs/challenge-protocol.md +154 -0
- package/.agy/skills/insight-challenge/specs/verdict-schema.md +239 -0
- package/.agy/skills/maestro/SKILL.md +6 -6
- package/.agy/skills/maestro-help/SKILL.md +1 -1
- package/.agy/skills/maestro-help/index/catalog.json +3 -2
- package/.agy/skills/maestro-ralph/SKILL.md +11 -10
- package/.agy/skills/maestro-ralph-beta/SKILL.md +11 -10
- package/.agy/skills/odyssey-debug/SKILL.md +475 -0
- package/.agy/skills/odyssey-improve/SKILL.md +507 -0
- package/.agy/skills/odyssey-planex/SKILL.md +603 -0
- package/.agy/skills/odyssey-review-test-fix/SKILL.md +429 -0
- package/.agy/skills/odyssey-ui/SKILL.md +464 -0
- package/.claude/commands/maestro-ralph-beta.md +11 -10
- package/.claude/commands/maestro-ralph.md +11 -10
- package/.claude/commands/maestro.md +6 -6
- package/.claude/commands/odyssey-debug.md +473 -0
- package/.claude/commands/odyssey-improve.md +505 -0
- package/.claude/commands/odyssey-planex.md +601 -0
- package/.claude/commands/odyssey-review-test-fix.md +427 -0
- package/.claude/commands/odyssey-ui.md +462 -0
- package/.claude/skills/insight-challenge/SKILL.md +226 -0
- package/.claude/skills/insight-challenge/specs/challenge-protocol.md +154 -0
- package/.claude/skills/insight-challenge/specs/verdict-schema.md +239 -0
- package/.claude/skills/maestro-help/SKILL.md +1 -1
- package/.claude/skills/maestro-help/index/catalog.json +3 -2
- package/.codex/skills/codify-to-knowhow/SKILL.md +1 -1
- package/.codex/skills/maestro-companion/SKILL.md +1 -1
- package/.codex/skills/maestro-help/SKILL.md +1 -1
- package/.codex/skills/maestro-impeccable/SKILL.md +1 -1
- package/.codex/skills/maestro-next/SKILL.md +1 -1
- package/.codex/skills/maestro-ralph-beta/SKILL.md +1 -1
- package/.codex/skills/odyssey-debug/SKILL.md +456 -0
- package/.codex/skills/odyssey-improve/SKILL.md +466 -0
- package/.codex/skills/odyssey-planex/SKILL.md +409 -0
- package/.codex/skills/odyssey-review-test-fix/SKILL.md +377 -0
- package/.codex/skills/odyssey-ui/SKILL.md +411 -0
- package/dashboard/dist/assets/{ArtifactsPage-BLvAqQlQ.js → ArtifactsPage-B6z23DfG.js} +2 -2
- package/dashboard/dist/assets/{ChatInput-DU9YGZKX.js → ChatInput-tBtGKV2i.js} +1 -1
- package/dashboard/dist/assets/{ChatPage-DYHfheXC.js → ChatPage-CcggDVs4.js} +2 -2
- package/dashboard/dist/assets/{CollabPage-CSlmvEa-.js → CollabPage-FaZeqqeS.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-RYWf0dYC.js → ExecutionPanel-DNRwYDXp.js} +1 -1
- package/dashboard/dist/assets/{KanbanPage-N55Iv0-X.js → KanbanPage-B2xh2s_N.js} +1 -1
- package/dashboard/dist/assets/{MaestroCoordinatePage-BxwZ6yy5.js → MaestroCoordinatePage-DCMGHDAL.js} +1 -1
- package/dashboard/dist/assets/{MarkdownRenderer-ZGtOY7Ti.js → MarkdownRenderer-C3FvTqVe.js} +1 -1
- package/dashboard/dist/assets/McpPage-HKaJ8cQP.js +16 -0
- package/dashboard/dist/assets/{MeetingRoomPage-CxHRn1xx.js → MeetingRoomPage-DGN5oUXH.js} +1 -1
- package/dashboard/dist/assets/{OutputPanel-DaL8c1i5.js → OutputPanel-BiCteH5k.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-BQTd5812.js → ProblemsPanel-Dk4v9tol.js} +1 -1
- package/dashboard/dist/assets/{RequirementBoardPage-22y9u1qh.js → RequirementBoardPage-D10A26gi.js} +1 -1
- package/dashboard/dist/assets/{RequirementPage-_mO743Xm.js → RequirementPage-Cs-2omLz.js} +1 -1
- package/dashboard/dist/assets/{RoomsPage-CExTbOGr.js → RoomsPage-tKQQhw1W.js} +1 -1
- package/dashboard/dist/assets/SpecsPage-LK1QCtcg.js +36 -0
- package/dashboard/dist/assets/{TeamsPage-BxEXLb5g.js → TeamsPage-C-bEwB8E.js} +1 -1
- package/dashboard/dist/assets/{TreeBrowser-CVtPF5C9.js → TreeBrowser-1YP-DfTY.js} +2 -2
- package/dashboard/dist/assets/{WorkflowPage-BoN18Lhs.js → WorkflowPage-dGHPsDDr.js} +2 -2
- package/dashboard/dist/assets/{arrow-left-C5ROg97G.js → arrow-left-BPFSEpfO.js} +1 -1
- package/dashboard/dist/assets/{check-Bs8PM0tQ.js → check-D5hOViiQ.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-SmErd_1F.js → chevron-right-D9BsXrIg.js} +1 -1
- package/dashboard/dist/assets/{circle-CjpslL_D.js → circle-Cn5fNpmp.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-CuzAg2fd.js → circle-alert-CZvK3B1K.js} +1 -1
- package/dashboard/dist/assets/{circle-check-BIkDU5D5.js → circle-check-DApOBP0J.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-CYctV8bK.js → circle-check-big-Cd9ztJpl.js} +1 -1
- package/dashboard/dist/assets/{code-DoB7rfxt.js → code-C3TuHjMs.js} +1 -1
- package/dashboard/dist/assets/{columns-3-Ch5KIyRa.js → columns-3-CO2SvNJb.js} +1 -1
- package/dashboard/dist/assets/{download-DadtG2Nr.js → download-BuKGI7KX.js} +1 -1
- package/dashboard/dist/assets/{en-2h6fD0j8.js → en-BmpYsIfb.js} +1 -1
- package/dashboard/dist/assets/folder-Chwj_P4A.js +11 -0
- package/dashboard/dist/assets/folder-open-S72FbKvn.js +6 -0
- package/dashboard/dist/assets/{index-BL4h1OKY.js → index-CN0YdC9M.js} +1 -1
- package/dashboard/dist/assets/{index-DQIlX2w_.js → index-Cbs79erW.js} +5 -5
- package/dashboard/dist/assets/{index-DaFwSmVJ.js → index-CdT1WNND.js} +1 -1
- package/dashboard/dist/assets/index-DEvP8cgc.css +1 -0
- package/dashboard/dist/assets/{list-CI-XIPZh.js → list-Dg_ojUpi.js} +1 -1
- package/dashboard/dist/assets/{loader-DpdMoQvh.js → loader-CMcc73C_.js} +1 -1
- package/dashboard/dist/assets/{minus-BVbfXGrC.js → minus-KxmVOIB7.js} +1 -1
- package/dashboard/dist/assets/pen-line-D1YTNDPw.js +11 -0
- package/dashboard/dist/assets/{pencil-I7GE0y29.js → pencil-BAjxSHuh.js} +1 -1
- package/dashboard/dist/assets/{proxy-CcYyZZWI.js → proxy-BewnIei6.js} +1 -1
- package/dashboard/dist/assets/{refresh-cw-BG9V_T4R.js → refresh-cw-Chc0RcRY.js} +1 -1
- package/dashboard/dist/assets/{rows-2-DP6NjQFk.js → rows-2-DWJuw8OM.js} +1 -1
- package/dashboard/dist/assets/{search-b78eLlw2.js → search-CPGb2sEw.js} +1 -1
- package/dashboard/dist/assets/{shallow-CJEesgtu.js → shallow-Dy0-7n5s.js} +1 -1
- package/dashboard/dist/assets/{table-B_lk-a1d.js → table-VI5scWpO.js} +1 -1
- package/dashboard/dist/assets/{team-types-Se7f9LfJ.js → team-types-Cu8zCPN3.js} +1 -1
- package/dashboard/dist/assets/{terminal-DXx4tvzq.js → terminal-Bqt5c6Ny.js} +1 -1
- package/dashboard/dist/assets/{trash-2-CVh9mnRj.js → trash-2-BcTVifbw.js} +1 -1
- package/dashboard/dist/assets/{users-Da9zGME5.js → users-BhFAHz4H.js} +1 -1
- package/dashboard/dist/assets/{zap-C0zaC7gJ.js → zap-BWbLhgr6.js} +1 -1
- package/dashboard/dist/assets/{zh-CN-r3AvxxOL.js → zh-CN-BIRiTdAD.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/search.d.ts +14 -14
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js +188 -56
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +37 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +560 -22
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +6 -2
- package/dashboard/dist-server/src/types/index.d.ts +9 -0
- package/dist/src/cli.js +3 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +50 -8
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/domain.d.ts +9 -0
- package/dist/src/commands/domain.d.ts.map +1 -0
- package/dist/src/commands/domain.js +445 -0
- package/dist/src/commands/domain.js.map +1 -0
- package/dist/src/commands/hooks.d.ts +10 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +132 -22
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +82 -204
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/kg.d.ts.map +1 -1
- package/dist/src/commands/kg.js +183 -90
- package/dist/src/commands/kg.js.map +1 -1
- package/dist/src/commands/search.d.ts +15 -8
- package/dist/src/commands/search.d.ts.map +1 -1
- package/dist/src/commands/search.js +205 -59
- package/dist/src/commands/search.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +9 -1
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +0 -7
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/wiki.d.ts.map +1 -1
- package/dist/src/commands/wiki.js +8 -1
- package/dist/src/commands/wiki.js.map +1 -1
- package/dist/src/commands/workspace.d.ts +12 -0
- package/dist/src/commands/workspace.d.ts.map +1 -0
- package/dist/src/commands/workspace.js +230 -0
- package/dist/src/commands/workspace.js.map +1 -0
- package/dist/src/config/cli-tools-config.d.ts +5 -0
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +31 -0
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/config/index.d.ts +9 -1
- package/dist/src/config/index.d.ts.map +1 -1
- package/dist/src/config/index.js +35 -1
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/core/install-executor.d.ts +31 -0
- package/dist/src/core/install-executor.d.ts.map +1 -0
- package/dist/src/core/install-executor.js +231 -0
- package/dist/src/core/install-executor.js.map +1 -0
- package/dist/src/core/install-profile.d.ts +103 -0
- package/dist/src/core/install-profile.d.ts.map +1 -0
- package/dist/src/core/install-profile.js +225 -0
- package/dist/src/core/install-profile.js.map +1 -0
- package/dist/src/graph/kg/credibility.d.ts +37 -0
- package/dist/src/graph/kg/credibility.d.ts.map +1 -0
- package/dist/src/graph/kg/credibility.js +141 -0
- package/dist/src/graph/kg/credibility.js.map +1 -0
- package/dist/src/graph/kg/db/connection.d.ts +28 -0
- package/dist/src/graph/kg/db/connection.d.ts.map +1 -0
- package/dist/src/graph/kg/db/connection.js +142 -0
- package/dist/src/graph/kg/db/connection.js.map +1 -0
- package/dist/src/graph/kg/db/index.d.ts +5 -0
- package/dist/src/graph/kg/db/index.d.ts.map +1 -0
- package/dist/src/graph/kg/db/index.js +6 -0
- package/dist/src/graph/kg/db/index.js.map +1 -0
- package/dist/src/graph/kg/db/migrations.d.ts +8 -0
- package/dist/src/graph/kg/db/migrations.d.ts.map +1 -0
- package/dist/src/graph/kg/db/migrations.js +88 -0
- package/dist/src/graph/kg/db/migrations.js.map +1 -0
- package/dist/src/graph/kg/db/queries.d.ts +84 -0
- package/dist/src/graph/kg/db/queries.d.ts.map +1 -0
- package/dist/src/graph/kg/db/queries.js +471 -0
- package/dist/src/graph/kg/db/queries.js.map +1 -0
- package/dist/src/graph/kg/db/types.d.ts +123 -0
- package/dist/src/graph/kg/db/types.d.ts.map +1 -0
- package/dist/src/graph/kg/db/types.js +75 -0
- package/dist/src/graph/kg/db/types.js.map +1 -0
- package/dist/src/graph/kg/engine.d.ts +87 -0
- package/dist/src/graph/kg/engine.d.ts.map +1 -0
- package/dist/src/graph/kg/engine.js +247 -0
- package/dist/src/graph/kg/engine.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/code-extractor.d.ts +40 -0
- package/dist/src/graph/kg/extraction/code/code-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/code-extractor.js +296 -0
- package/dist/src/graph/kg/extraction/code/code-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/dfm-extractor.d.ts +3 -0
- package/dist/src/graph/kg/extraction/code/dfm-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/dfm-extractor.js +122 -0
- package/dist/src/graph/kg/extraction/code/dfm-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/generated-detection.d.ts +14 -0
- package/dist/src/graph/kg/extraction/code/generated-detection.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/generated-detection.js +65 -0
- package/dist/src/graph/kg/extraction/code/generated-detection.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/languages/index.d.ts +9 -0
- package/dist/src/graph/kg/extraction/code/languages/index.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/languages/index.js +2119 -0
- package/dist/src/graph/kg/extraction/code/languages/index.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/languages/typescript.d.ts +5 -0
- package/dist/src/graph/kg/extraction/code/languages/typescript.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/languages/typescript.js +191 -0
- package/dist/src/graph/kg/extraction/code/languages/typescript.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/liquid-extractor.d.ts +3 -0
- package/dist/src/graph/kg/extraction/code/liquid-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/liquid-extractor.js +117 -0
- package/dist/src/graph/kg/extraction/code/liquid-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/mybatis-extractor.d.ts +3 -0
- package/dist/src/graph/kg/extraction/code/mybatis-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/mybatis-extractor.js +84 -0
- package/dist/src/graph/kg/extraction/code/mybatis-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/svelte-extractor.d.ts +3 -0
- package/dist/src/graph/kg/extraction/code/svelte-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/svelte-extractor.js +92 -0
- package/dist/src/graph/kg/extraction/code/svelte-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/tree-sitter-types.d.ts +61 -0
- package/dist/src/graph/kg/extraction/code/tree-sitter-types.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/tree-sitter-types.js +53 -0
- package/dist/src/graph/kg/extraction/code/tree-sitter-types.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/tree-sitter.d.ts +55 -0
- package/dist/src/graph/kg/extraction/code/tree-sitter.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/tree-sitter.js +227 -0
- package/dist/src/graph/kg/extraction/code/tree-sitter.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/vue-extractor.d.ts +6 -0
- package/dist/src/graph/kg/extraction/code/vue-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/vue-extractor.js +109 -0
- package/dist/src/graph/kg/extraction/code/vue-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/code/wasm-stability.d.ts +44 -0
- package/dist/src/graph/kg/extraction/code/wasm-stability.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/code/wasm-stability.js +140 -0
- package/dist/src/graph/kg/extraction/code/wasm-stability.js.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.d.ts +3 -0
- package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.js +149 -0
- package/dist/src/graph/kg/extraction/knowledge/codebase-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts +4 -0
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js +114 -0
- package/dist/src/graph/kg/extraction/knowledge/domain-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/issue-extractor.d.ts +3 -0
- package/dist/src/graph/kg/extraction/knowledge/issue-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/issue-extractor.js +84 -0
- package/dist/src/graph/kg/extraction/knowledge/issue-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/spec-extractor.d.ts +3 -0
- package/dist/src/graph/kg/extraction/knowledge/spec-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/spec-extractor.js +173 -0
- package/dist/src/graph/kg/extraction/knowledge/spec-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.d.ts +3 -0
- package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.js +165 -0
- package/dist/src/graph/kg/extraction/knowledge/wiki-extractor.js.map +1 -0
- package/dist/src/graph/kg/extraction/orchestrator.d.ts +6 -0
- package/dist/src/graph/kg/extraction/orchestrator.d.ts.map +1 -0
- package/dist/src/graph/kg/extraction/orchestrator.js +208 -0
- package/dist/src/graph/kg/extraction/orchestrator.js.map +1 -0
- package/dist/src/graph/kg/index.d.ts +29 -0
- package/dist/src/graph/kg/index.d.ts.map +1 -0
- package/dist/src/graph/kg/index.js +35 -0
- package/dist/src/graph/kg/index.js.map +1 -0
- package/dist/src/graph/kg/query/context-builder.d.ts +38 -0
- package/dist/src/graph/kg/query/context-builder.d.ts.map +1 -0
- package/dist/src/graph/kg/query/context-builder.js +184 -0
- package/dist/src/graph/kg/query/context-builder.js.map +1 -0
- package/dist/src/graph/kg/query/index.d.ts +8 -0
- package/dist/src/graph/kg/query/index.d.ts.map +1 -0
- package/dist/src/graph/kg/query/index.js +6 -0
- package/dist/src/graph/kg/query/index.js.map +1 -0
- package/dist/src/graph/kg/query/scoring.d.ts +19 -0
- package/dist/src/graph/kg/query/scoring.d.ts.map +1 -0
- package/dist/src/graph/kg/query/scoring.js +158 -0
- package/dist/src/graph/kg/query/scoring.js.map +1 -0
- package/dist/src/graph/kg/query/search.d.ts +59 -0
- package/dist/src/graph/kg/query/search.d.ts.map +1 -0
- package/dist/src/graph/kg/query/search.js +158 -0
- package/dist/src/graph/kg/query/search.js.map +1 -0
- package/dist/src/graph/kg/query/traversal.d.ts +75 -0
- package/dist/src/graph/kg/query/traversal.d.ts.map +1 -0
- package/dist/src/graph/kg/query/traversal.js +420 -0
- package/dist/src/graph/kg/query/traversal.js.map +1 -0
- package/dist/src/graph/kg/resolution/callback-synthesizer.d.ts +41 -0
- package/dist/src/graph/kg/resolution/callback-synthesizer.d.ts.map +1 -0
- package/dist/src/graph/kg/resolution/callback-synthesizer.js +450 -0
- package/dist/src/graph/kg/resolution/callback-synthesizer.js.map +1 -0
- package/dist/src/graph/kg/resolution/frameworks/index.d.ts +18 -0
- package/dist/src/graph/kg/resolution/frameworks/index.d.ts.map +1 -0
- package/dist/src/graph/kg/resolution/frameworks/index.js +632 -0
- package/dist/src/graph/kg/resolution/frameworks/index.js.map +1 -0
- package/dist/src/graph/kg/resolution/import-resolver.d.ts +73 -0
- package/dist/src/graph/kg/resolution/import-resolver.d.ts.map +1 -0
- package/dist/src/graph/kg/resolution/import-resolver.js +257 -0
- package/dist/src/graph/kg/resolution/import-resolver.js.map +1 -0
- package/dist/src/graph/kg/resolution/index.d.ts +11 -0
- package/dist/src/graph/kg/resolution/index.d.ts.map +1 -0
- package/dist/src/graph/kg/resolution/index.js +7 -0
- package/dist/src/graph/kg/resolution/index.js.map +1 -0
- package/dist/src/graph/kg/resolution/knowledge-resolver.d.ts +22 -0
- package/dist/src/graph/kg/resolution/knowledge-resolver.d.ts.map +1 -0
- package/dist/src/graph/kg/resolution/knowledge-resolver.js +288 -0
- package/dist/src/graph/kg/resolution/knowledge-resolver.js.map +1 -0
- package/dist/src/graph/kg/resolution/name-matcher.d.ts +25 -0
- package/dist/src/graph/kg/resolution/name-matcher.d.ts.map +1 -0
- package/dist/src/graph/kg/resolution/name-matcher.js +162 -0
- package/dist/src/graph/kg/resolution/name-matcher.js.map +1 -0
- package/dist/src/graph/kg/schema.sql +210 -0
- package/dist/src/graph/kg/surface/cli.d.ts +3 -0
- package/dist/src/graph/kg/surface/cli.d.ts.map +1 -0
- package/dist/src/graph/kg/surface/cli.js +500 -0
- package/dist/src/graph/kg/surface/cli.js.map +1 -0
- package/dist/src/graph/kg/surface/hook-injector.d.ts +33 -0
- package/dist/src/graph/kg/surface/hook-injector.d.ts.map +1 -0
- package/dist/src/graph/kg/surface/hook-injector.js +172 -0
- package/dist/src/graph/kg/surface/hook-injector.js.map +1 -0
- package/dist/src/graph/kg/surface/index.d.ts +6 -0
- package/dist/src/graph/kg/surface/index.d.ts.map +1 -0
- package/dist/src/graph/kg/surface/index.js +5 -0
- package/dist/src/graph/kg/surface/index.js.map +1 -0
- package/dist/src/graph/kg/surface/mcp-tools.d.ts +20 -0
- package/dist/src/graph/kg/surface/mcp-tools.d.ts.map +1 -0
- package/dist/src/graph/kg/surface/mcp-tools.js +253 -0
- package/dist/src/graph/kg/surface/mcp-tools.js.map +1 -0
- package/dist/src/graph/kg/sync/incremental-sync.d.ts +24 -0
- package/dist/src/graph/kg/sync/incremental-sync.d.ts.map +1 -0
- package/dist/src/graph/kg/sync/incremental-sync.js +71 -0
- package/dist/src/graph/kg/sync/incremental-sync.js.map +1 -0
- package/dist/src/graph/kg/sync/index.d.ts +5 -0
- package/dist/src/graph/kg/sync/index.d.ts.map +1 -0
- package/dist/src/graph/kg/sync/index.js +4 -0
- package/dist/src/graph/kg/sync/index.js.map +1 -0
- package/dist/src/graph/kg/sync/watch-policy.d.ts +33 -0
- package/dist/src/graph/kg/sync/watch-policy.d.ts.map +1 -0
- package/dist/src/graph/kg/sync/watch-policy.js +90 -0
- package/dist/src/graph/kg/sync/watch-policy.js.map +1 -0
- package/dist/src/hooks/constants.d.ts +0 -2
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +0 -2
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/keyword-spec-injector.d.ts +6 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/keyword-spec-injector.js +157 -81
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -1
- package/dist/src/hooks/kg-auto-init.d.ts +13 -0
- package/dist/src/hooks/kg-auto-init.d.ts.map +1 -0
- package/dist/src/hooks/kg-auto-init.js +38 -0
- package/dist/src/hooks/kg-auto-init.js.map +1 -0
- package/dist/src/hooks/kg-context-injector.d.ts +1 -3
- package/dist/src/hooks/kg-context-injector.d.ts.map +1 -1
- package/dist/src/hooks/kg-context-injector.js +12 -17
- package/dist/src/hooks/kg-context-injector.js.map +1 -1
- package/dist/src/hooks/kg-sync-hook.d.ts +1 -9
- package/dist/src/hooks/kg-sync-hook.d.ts.map +1 -1
- package/dist/src/hooks/kg-sync-hook.js +21 -90
- package/dist/src/hooks/kg-sync-hook.js.map +1 -1
- package/dist/src/hooks/spec-analytics.d.ts +1 -0
- package/dist/src/hooks/spec-analytics.d.ts.map +1 -1
- package/dist/src/hooks/spec-analytics.js +1 -3
- package/dist/src/hooks/spec-analytics.js.map +1 -1
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +65 -1
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/i18n/locales/en.d.ts.map +1 -1
- package/dist/src/i18n/locales/en.js +52 -9
- package/dist/src/i18n/locales/en.js.map +1 -1
- package/dist/src/i18n/locales/zh.d.ts.map +1 -1
- package/dist/src/i18n/locales/zh.js +52 -9
- package/dist/src/i18n/locales/zh.js.map +1 -1
- package/dist/src/i18n/types.d.ts +40 -4
- package/dist/src/i18n/types.d.ts.map +1 -1
- package/dist/src/tools/__tests__/domain-search-debug.d.ts +2 -0
- package/dist/src/tools/__tests__/domain-search-debug.d.ts.map +1 -0
- package/dist/src/tools/__tests__/domain-search-debug.js +32 -0
- package/dist/src/tools/__tests__/domain-search-debug.js.map +1 -0
- package/dist/src/tools/domain-loader.d.ts +63 -0
- package/dist/src/tools/domain-loader.d.ts.map +1 -0
- package/dist/src/tools/domain-loader.js +295 -0
- package/dist/src/tools/domain-loader.js.map +1 -0
- package/dist/src/tools/domain-matcher.d.ts +24 -0
- package/dist/src/tools/domain-matcher.d.ts.map +1 -0
- package/dist/src/tools/domain-matcher.js +117 -0
- package/dist/src/tools/domain-matcher.js.map +1 -0
- package/dist/src/tools/domain-scanner.d.ts +32 -0
- package/dist/src/tools/domain-scanner.d.ts.map +1 -0
- package/dist/src/tools/domain-scanner.js +263 -0
- package/dist/src/tools/domain-scanner.js.map +1 -0
- package/dist/src/tools/domain-schema.d.ts +18 -0
- package/dist/src/tools/domain-schema.d.ts.map +1 -0
- package/dist/src/tools/domain-schema.js +104 -0
- package/dist/src/tools/domain-schema.js.map +1 -0
- package/dist/src/tools/spec-entry-parser.d.ts +1 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -1
- package/dist/src/tools/spec-entry-parser.js +1 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -1
- package/dist/src/tools/spec-loader.d.ts +5 -0
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +10 -2
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tui/install-ui/ConfigPanel.d.ts.map +1 -1
- package/dist/src/tui/install-ui/ConfigPanel.js +9 -1
- package/dist/src/tui/install-ui/ConfigPanel.js.map +1 -1
- package/dist/src/tui/install-ui/GroupedHub.d.ts +55 -0
- package/dist/src/tui/install-ui/GroupedHub.d.ts.map +1 -0
- package/dist/src/tui/install-ui/GroupedHub.js +210 -0
- package/dist/src/tui/install-ui/GroupedHub.js.map +1 -0
- package/dist/src/tui/install-ui/HooksConfig.d.ts +10 -5
- package/dist/src/tui/install-ui/HooksConfig.d.ts.map +1 -1
- package/dist/src/tui/install-ui/HooksConfig.js +83 -18
- package/dist/src/tui/install-ui/HooksConfig.js.map +1 -1
- package/dist/src/tui/install-ui/InstallConfirm.d.ts +1 -30
- package/dist/src/tui/install-ui/InstallConfirm.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallConfirm.js +72 -12
- package/dist/src/tui/install-ui/InstallConfirm.js.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.d.ts +4 -21
- package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.js +89 -260
- package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/tui/install-ui/InstallFlow.d.ts +3 -7
- package/dist/src/tui/install-ui/InstallFlow.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallFlow.js +45 -267
- package/dist/src/tui/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/tui/install-ui/InstallHub.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallHub.js +2 -4
- package/dist/src/tui/install-ui/InstallHub.js.map +1 -1
- package/dist/src/tui/install-ui/InstallResult.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallResult.js +1 -5
- package/dist/src/tui/install-ui/InstallResult.js.map +1 -1
- package/dist/src/tui/install-ui/index.d.ts +5 -1
- package/dist/src/tui/install-ui/index.d.ts.map +1 -1
- package/dist/src/tui/install-ui/index.js +1 -0
- package/dist/src/tui/install-ui/index.js.map +1 -1
- package/dist/src/tui/install-ui/types.d.ts +39 -0
- package/dist/src/tui/install-ui/types.d.ts.map +1 -1
- package/dist/src/tui/install-ui/types.js +1 -1
- package/dist/src/tui/install-ui/types.js.map +1 -1
- package/dist/src/tui/install-ui/useInstallFlowState.d.ts +69 -0
- package/dist/src/tui/install-ui/useInstallFlowState.d.ts.map +1 -0
- package/dist/src/tui/install-ui/useInstallFlowState.js +288 -0
- package/dist/src/tui/install-ui/useInstallFlowState.js.map +1 -0
- package/dist/src/tui/shared/components.d.ts +4 -0
- package/dist/src/tui/shared/components.d.ts.map +1 -1
- package/dist/src/tui/shared/components.js +4 -0
- package/dist/src/tui/shared/components.js.map +1 -1
- package/dist/src/tui/shared/index.d.ts +1 -1
- package/dist/src/tui/shared/index.d.ts.map +1 -1
- package/dist/src/tui/shared/index.js +1 -1
- package/dist/src/tui/shared/index.js.map +1 -1
- package/dist/src/tui/shared/tokens.d.ts +5 -5
- package/dist/src/tui/shared/tokens.js +5 -5
- package/dist/src/tui/shared/tokens.js.map +1 -1
- package/dist/src/types/index.d.ts +9 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/utils/cli-format.d.ts +2 -1
- package/dist/src/utils/cli-format.d.ts.map +1 -1
- package/dist/src/utils/cli-format.js +14 -3
- package/dist/src/utils/cli-format.js.map +1 -1
- package/dist/src/utils/cooldown-guard.d.ts +17 -0
- package/dist/src/utils/cooldown-guard.d.ts.map +1 -0
- package/dist/src/utils/cooldown-guard.js +59 -0
- package/dist/src/utils/cooldown-guard.js.map +1 -0
- package/dist/src/utils/jsonl-log.d.ts.map +1 -1
- package/dist/src/utils/jsonl-log.js +2 -1
- package/dist/src/utils/jsonl-log.js.map +1 -1
- package/dist/src/utils/update-notices.js +17 -4
- package/dist/src/utils/update-notices.js.map +1 -1
- package/package.json +4 -5
- package/workflows/claude-instructions.md +23 -0
- package/workflows/codex-instructions.md +22 -0
- package/workflows/finish-work.md +25 -0
- package/workflows/updates/update-v3-setup.md +7 -15
- package/dashboard/dist/assets/McpPage-Im6s4pGR.js +0 -21
- package/dashboard/dist/assets/SpecsPage-gr4KX51-.js +0 -36
- package/dashboard/dist/assets/folder-B8ODoZfb.js +0 -16
- package/dashboard/dist/assets/index-6-yE5Yl9.css +0 -1
- package/dashboard/dist/assets/pen-line-CR8GaHt-.js +0 -6
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: odyssey-ui
|
|
3
|
+
description: Long-running UI optimization cycle — visual survey, multi-dimensional audit, divergent exploration, fix, verify, generalize, and design knowledge persistence
|
|
4
|
+
argument-hint: <target> [--dimensions <list>] [--skip-fix] [--skip-generalize] [--auto] [-y] [-c]
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- ask_question
|
|
7
|
+
- define_subagent
|
|
8
|
+
- grep_search
|
|
9
|
+
- invoke_subagent
|
|
10
|
+
- manage_subagents
|
|
11
|
+
- replace_file_content
|
|
12
|
+
- run_command
|
|
13
|
+
- send_message
|
|
14
|
+
- view_file
|
|
15
|
+
- write_to_file
|
|
16
|
+
---
|
|
17
|
+
<purpose>
|
|
18
|
+
Deep UI polish cycle: survey (capture current state) → audit (6 dimensions) → diverge (creative
|
|
19
|
+
exploration beyond bugs) → fix → verify → generalize (举一反三) → discover → persist.
|
|
20
|
+
|
|
21
|
+
Unlike `maestro-impeccable` (single command/chain execution), this is a persistent session with
|
|
22
|
+
evidence trails, decision journal, and iterative improvement. Every visual detail is an opportunity
|
|
23
|
+
to learn and replicate.
|
|
24
|
+
|
|
25
|
+
Core philosophy:
|
|
26
|
+
- **Every pixel tells a story** — subtle details create the experience
|
|
27
|
+
- **Diverge before converge** — explore creatively, then implement methodically
|
|
28
|
+
- **Find one, polish all** — a single improvement reveals a class of opportunities
|
|
29
|
+
- **Browser is truth** — verify in real rendering, not just in code
|
|
30
|
+
|
|
31
|
+
**三句哲学约束(穷尽迭代):**
|
|
32
|
+
1. **零遗留** — 每个 finding/idea 必须是 action item(修复 / issue / 决策),不允许只报告不处理
|
|
33
|
+
2. **穷尽迭代** — 按 impact×severity 递降逐轮修复,直到 0 remaining actionable findings 才退出 fix loop
|
|
34
|
+
3. **改进即标准** — 每次修复后重审同区域,发现新视觉问题继续修,直到该区域无可改善
|
|
35
|
+
|
|
36
|
+
Entry: `/odyssey-ui "target"` (full cycle) | `-c` (resume) | `--skip-fix` (audit-only)
|
|
37
|
+
</purpose>
|
|
38
|
+
|
|
39
|
+
<boundary>
|
|
40
|
+
**范围内:** 目标组件/页面的视觉体验优化 — 审查 6 维度 → 发散探索 → 修复 → 泛化到兄弟组件
|
|
41
|
+
**范围外:** 后端逻辑 / 数据模型 / API 设计 / 业务规则 → `/odyssey-planex` | 深度 bug 调查 → `/odyssey-debug` | 代码质量审查 → `/odyssey-review-test-fix`
|
|
42
|
+
**探索自由度:** 边界内最大自由 — S_DIVERGE 阶段鼓励发散思维,不设创意上限。审查 + 发散可发现任何视觉/交互/可访问性细节。在约束下尽可能完善每个像素。
|
|
43
|
+
</boundary>
|
|
44
|
+
|
|
45
|
+
<execution_discipline>
|
|
46
|
+
**三条铁律(所有阶段适用):**
|
|
47
|
+
|
|
48
|
+
1. **Phase auto-commit** — 每个阶段完成后**自动** `git commit`,无需用户确认
|
|
49
|
+
- 代码变更 + understanding.md → `git add` → `git commit -m "odyssey-ui({slug}): {phase} — {摘要}"`
|
|
50
|
+
- session.json / evidence.ndjson 为运行时状态,不纳入 commit
|
|
51
|
+
|
|
52
|
+
2. **有把握才改** — 仅修改自己有把握的内容;不确定的记录决策等人判断
|
|
53
|
+
- 视觉确定性高(缺少 hover state、对比度不足等)→ 直接修复
|
|
54
|
+
- 设计方向不确定(色彩选择、布局重构等)→ 记录 decision 等用户判断
|
|
55
|
+
- 禁止猜测性修改,尤其是品牌/风格层面的改动
|
|
56
|
+
|
|
57
|
+
3. **多 CLI 辅助** — 利用 `maestro delegate` 调用多个 CLI 工具交叉验证
|
|
58
|
+
- survey 阶段: `--role explore` 发现设计系统用法
|
|
59
|
+
- audit/diverge: `--role analyze` 获取多视角创意
|
|
60
|
+
- fix 前后: `--role review` 确认视觉正确性
|
|
61
|
+
</execution_discipline>
|
|
62
|
+
|
|
63
|
+
<context>
|
|
64
|
+
$ARGUMENTS — target and optional flags.
|
|
65
|
+
|
|
66
|
+
**Target resolution:**
|
|
67
|
+
| Input | Resolution |
|
|
68
|
+
|-------|-----------|
|
|
69
|
+
| Component path | Audit that component |
|
|
70
|
+
| Page/route path | Audit that page |
|
|
71
|
+
| `staged` / `HEAD` | Review UI changes in diff |
|
|
72
|
+
| Feature area name | Resolve to related components/pages |
|
|
73
|
+
|
|
74
|
+
**Flags:**
|
|
75
|
+
| Flag | Effect | Default |
|
|
76
|
+
|------|--------|---------|
|
|
77
|
+
| `--dimensions <list>` | Comma-separated subset of 6 dimensions | all 6 |
|
|
78
|
+
| `--fix-threshold <severity>` | 修复到哪个 severity 为止(all = 全部修复)| all |
|
|
79
|
+
| `--skip-fix` | Audit + diverge only, no code changes | false |
|
|
80
|
+
| `--skip-generalize` | Skip S_GENERALIZE and S_DISCOVER | false |
|
|
81
|
+
| `--auto` | CLI delegates without confirmation | false |
|
|
82
|
+
| `-y` | Auto-confirm all decisions (see appendix) | false |
|
|
83
|
+
| `-c` | Resume most recent session | — |
|
|
84
|
+
|
|
85
|
+
**Session**: `SESSION_DIR = .workflow/scratch/{YYYYMMDD}-ui-odyssey-{slug}/`
|
|
86
|
+
|
|
87
|
+
**Output — 3 files:**
|
|
88
|
+
```
|
|
89
|
+
SESSION_DIR/
|
|
90
|
+
├── session.json # state + audit_result + diverge_result + patterns + phase_goals
|
|
91
|
+
├── evidence.ndjson # append-only (phase: survey|audit|diverge|fix|discovery|decision|self-iteration)
|
|
92
|
+
└── understanding.md # 8-section evolving narrative
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**session.json schema:**
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"session_id": "ui-odyssey-{YYYYMMDD-HHmmss}",
|
|
99
|
+
"target": "", "dimensions": [],
|
|
100
|
+
"flags": { "skip_fix": false, "skip_generalize": false, "auto": false, "auto_confirm": false },
|
|
101
|
+
"current_state": "S_INTAKE",
|
|
102
|
+
"audit_result": { "dimensions_audited": [], "finding_count": 0, "severity_distribution": { "critical": 0, "high": 0, "medium": 0, "low": 0 } },
|
|
103
|
+
"diverge_result": { "improvements_proposed": 0, "creative_ideas": 0 },
|
|
104
|
+
"patterns": [{ "id": "P1", "source_finding": "F1", "layer": "syntax|semantic|structural", "signature": "", "description": "", "risk": "", "fix_template": "", "confidence": "high|medium|low" }],
|
|
105
|
+
"confirmation": { "test_result": {}, "cli_review": {}, "overall": "confirmed|needs_rework" },
|
|
106
|
+
"generalization_stats": { "patterns_extracted": 0, "total_hits": 0, "cross_layer_confirmed": 0, "regression_risks": 0, "by_layer": {}, "deepening_triggered": false },
|
|
107
|
+
"phase_goals": [], "phase_goals_all_done": false,
|
|
108
|
+
"self_iteration_log": [],
|
|
109
|
+
"cross_phase_loops": 0, "max_loops": 3,
|
|
110
|
+
"created_at": "", "updated_at": ""
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**evidence.ndjson unified schema:** `{"ts":"","phase":"<phase>","type":"<type>","dimension":"","title":"","severity":"","file":"","line":0,"description":"","suggestion":"","category":"","impact":"","effort":""}`
|
|
115
|
+
|
|
116
|
+
**phase_goals[]:**
|
|
117
|
+
| ID | Goal | Phase | skip_when |
|
|
118
|
+
|----|------|-------|-----------|
|
|
119
|
+
| G1 | Survey completed | S_SURVEY | — |
|
|
120
|
+
| G2 | Audit completed | S_AUDIT | — |
|
|
121
|
+
| G3 | Divergent exploration done | S_DIVERGE | — |
|
|
122
|
+
| G4 | Zero remaining: all findings/ideas fixed and verified | 0 remaining actionable within fix_threshold | S_VERIFY | skip_fix |
|
|
123
|
+
| G5 | Pattern generalized | S_GENERALIZE | skip_generalize |
|
|
124
|
+
| G6 | Discoveries triaged | S_DISCOVER | skip_generalize |
|
|
125
|
+
| G7 | Learnings persisted | S_RECORD | — |
|
|
126
|
+
|
|
127
|
+
Lifecycle: `pending → done | skipped | failed` (all set `completion_confirmed`)
|
|
128
|
+
|
|
129
|
+
### Pre-load(可选,缺失不阻塞)
|
|
130
|
+
|
|
131
|
+
| 层级 | 命令 | 作用 |
|
|
132
|
+
|------|------|------|
|
|
133
|
+
| Codebase docs | Read `.workflow/codebase/ARCHITECTURE.md` | 模块边界,组件结构 |
|
|
134
|
+
| Wiki search | `maestro search "<target keywords>" --json` | 先前 UI 决策(取 top 5) |
|
|
135
|
+
| UI specs | `maestro spec load --category ui` | 设计规范、token、组件约定 |
|
|
136
|
+
| Coding specs | `maestro spec load --category coding` | 编码规范 |
|
|
137
|
+
| Role knowledge | `maestro search --category ui` → 选相关 → `maestro wiki load <id>` | 累积设计知识 |
|
|
138
|
+
| Prior sessions | `grep_search(".workflow/scratch/*-ui-odyssey-*")` | 相关会话 |
|
|
139
|
+
|
|
140
|
+
### Knowledge Persistence(S_RECORD 中写入产出文件)
|
|
141
|
+
|
|
142
|
+
S_RECORD 阶段将可沉淀知识 **写入 understanding.md §8 Learnings**,按以下分类结构化:
|
|
143
|
+
|
|
144
|
+
| 分类 | 写入内容 | 后续建议命令 |
|
|
145
|
+
|------|---------|-------------|
|
|
146
|
+
| 设计 pattern | 组件模式 + 适用场景 + token 引用 | `/spec-add ui "..."` |
|
|
147
|
+
| 交互规范 | 状态定义 + 转场规则 + 反馈模式 | `/spec-add ui "..."` |
|
|
148
|
+
| 可访问性规则 | WCAG 要求 + 实现方案 | `/spec-add ui "..."` |
|
|
149
|
+
| 可复用泛化 pattern | pattern 签名 + 应用范围 | `/spec-add coding "..."` |
|
|
150
|
+
|
|
151
|
+
**两步模式:** 执行中写入产出文件(临时记录)→ 任务完成后用户通过 next_step_routing 沉淀为永久知识。执行过程中不调用外部 Skill。
|
|
152
|
+
</context>
|
|
153
|
+
|
|
154
|
+
<self_iteration>
|
|
155
|
+
**Quality Gate** — auto-evaluate after each analytical phase. Insufficient → re-enter (max 2 rounds).
|
|
156
|
+
|
|
157
|
+
| Dimension | Sufficient | Insufficient |
|
|
158
|
+
|-----------|-----------|-------------|
|
|
159
|
+
| Coverage | All target components/pages analyzed across dimensions | Missed files discoverable via grep/glob |
|
|
160
|
+
| Depth | ≥80% findings have file:line evidence | Most findings lack specifics |
|
|
161
|
+
| Actionability | Each conclusion has concrete improvement action | "Consider reviewing" without action |
|
|
162
|
+
|
|
163
|
+
**Expansion:** Round 1 = widen scope (more components, deeper import chain, extra delegate angles). Round 2 = shift perspective (different CLI tool, reverse dependency trace, manual code reading).
|
|
164
|
+
|
|
165
|
+
**Log:** `evidence.ndjson ← {"phase":"self-iteration","type":"quality-gate","stage":"S_XXX","round":N,"assessment":{},"expansion":""}`
|
|
166
|
+
|
|
167
|
+
**Applicable stages:** S_SURVEY, S_AUDIT, S_DIVERGE, S_GENERALIZE
|
|
168
|
+
</self_iteration>
|
|
169
|
+
|
|
170
|
+
<state_machine>
|
|
171
|
+
|
|
172
|
+
<states>
|
|
173
|
+
S_INTAKE — Parse target, load design context, resume session PERSIST: session.json + understanding.md §1
|
|
174
|
+
S_SURVEY — Visual landscape: design tokens, pattern inventory PERSIST: evidence.ndjson (survey) + understanding.md §2
|
|
175
|
+
S_AUDIT — 6-dimension parallel review PERSIST: evidence.ndjson (audit) + understanding.md §3
|
|
176
|
+
S_DIVERGE — Divergent creative exploration: polish + delight PERSIST: evidence.ndjson (diverge) + understanding.md §4
|
|
177
|
+
S_FIX — Implement improvements (skip if --skip-fix) PERSIST: code changes + evidence.ndjson (fix)
|
|
178
|
+
S_VERIFY — Visual verification + test (skip if --skip-fix) PERSIST: session.json.confirmation + understanding.md §5
|
|
179
|
+
S_GENERALIZE — Pattern extraction + 4-agent scan (skip if --skip-gen) PERSIST: session.json.patterns + understanding.md §6
|
|
180
|
+
S_DISCOVER — Classify hits, create issues (skip if --skip-gen) PERSIST: evidence.ndjson (discovery|decision) + understanding.md §7
|
|
181
|
+
S_RECORD — Design knowledge persistence + final report PERSIST: understanding.md §8 + spec entries
|
|
182
|
+
</states>
|
|
183
|
+
|
|
184
|
+
<transitions>
|
|
185
|
+
S_INTAKE:
|
|
186
|
+
→ S_INTAKE WHEN -c + session found DO A_RESUME
|
|
187
|
+
→ S_SURVEY WHEN target resolved DO A_INTAKE
|
|
188
|
+
→ S_INTAKE WHEN no target DO ask_question
|
|
189
|
+
|
|
190
|
+
S_SURVEY → S_AUDIT DO A_SURVEY
|
|
191
|
+
|
|
192
|
+
S_AUDIT → S_DIVERGE DO A_AUDIT
|
|
193
|
+
|
|
194
|
+
S_DIVERGE:
|
|
195
|
+
→ S_FIX WHEN !skip_fix AND actionable findings/ideas DO A_DIVERGE
|
|
196
|
+
→ S_GENERALIZE WHEN (skip_fix OR no actionable) AND !skip_gen DO A_DIVERGE
|
|
197
|
+
→ S_RECORD WHEN (skip_fix OR no actionable) AND skip_gen DO A_DIVERGE
|
|
198
|
+
|
|
199
|
+
S_FIX → S_VERIFY DO A_FIX
|
|
200
|
+
|
|
201
|
+
S_VERIFY:
|
|
202
|
+
→ S_GENERALIZE WHEN verified AND !skip_gen DO A_VERIFY
|
|
203
|
+
→ S_RECORD WHEN verified AND skip_gen DO A_VERIFY
|
|
204
|
+
→ S_FIX WHEN needs_rework DO A_VERIFY
|
|
205
|
+
|
|
206
|
+
S_GENERALIZE:
|
|
207
|
+
→ S_DISCOVER WHEN hits found DO A_GENERALIZE
|
|
208
|
+
→ S_RECORD WHEN no hits DO A_GENERALIZE
|
|
209
|
+
|
|
210
|
+
S_DISCOVER → S_AUDIT : discovery reveals new component to audit, loops < max_loops → cross_phase_loops++
|
|
211
|
+
S_DISCOVER → S_FIX : discovery finds fixable sibling, !skip_fix, loops < max_loops → cross_phase_loops++
|
|
212
|
+
S_DISCOVER → S_RECORD : triage complete OR loops >= max_loops (剩余项 → issue/decision)
|
|
213
|
+
|
|
214
|
+
S_RECORD → END DO A_RECORD
|
|
215
|
+
</transitions>
|
|
216
|
+
|
|
217
|
+
<actions>
|
|
218
|
+
|
|
219
|
+
### A_INTAKE
|
|
220
|
+
1. Parse arguments: target description, flags, `--dimensions` subset
|
|
221
|
+
2. Generate slug, create `SESSION_DIR`
|
|
222
|
+
3. Search: `maestro search "<keywords>"` + Glob prior sessions + ARCHITECTURE.md + spec load ui/coding
|
|
223
|
+
4. Derive `phase_goals[]` from flags (apply `skip_when`)
|
|
224
|
+
5. Write `session.json` + `understanding.md` §1 (Target & Design Context)
|
|
225
|
+
6. Emit Goal Prompt (see Appendix)
|
|
226
|
+
|
|
227
|
+
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-ui({slug}): INTAKE — 目标解析"`
|
|
228
|
+
|
|
229
|
+
### A_RESUME
|
|
230
|
+
Find latest session via Glob → read `session.json` → display summary → jump to `current_state`.
|
|
231
|
+
|
|
232
|
+
### A_SURVEY
|
|
233
|
+
Visual landscape survey — understand the current state before proposing changes.
|
|
234
|
+
|
|
235
|
+
1. **Design system inventory**: Scan target files for design tokens, CSS variables, theme imports. Catalog what's used.
|
|
236
|
+
2. **Current state analysis**: Read component code, identify styling patterns, layout strategy, component hierarchy.
|
|
237
|
+
3. **CLI-assisted survey** (optional):
|
|
238
|
+
```bash
|
|
239
|
+
maestro delegate "PURPOSE: Survey UI design state of: {target}
|
|
240
|
+
TASK: Identify design tokens in use | Catalog spacing/typography patterns | Map component hierarchy | Check consistency with design system
|
|
241
|
+
MODE: analysis
|
|
242
|
+
CONTEXT: @{target_files}
|
|
243
|
+
EXPECTED: JSON {tokens_used, spacing_patterns, typography_scale, component_hierarchy, consistency_issues}
|
|
244
|
+
" --role analyze --mode analysis
|
|
245
|
+
```
|
|
246
|
+
Run_in_background, STOP, wait for callback.
|
|
247
|
+
|
|
248
|
+
4. Append evidence.ndjson (phase: "survey"). Update `understanding.md` §2. Mark G1 done.
|
|
249
|
+
|
|
250
|
+
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-ui({slug}): SURVEY — 视觉调查"`
|
|
251
|
+
|
|
252
|
+
### A_AUDIT
|
|
253
|
+
Spawn 6 parallel Agents (one per dimension, or `--dimensions` subset):
|
|
254
|
+
|
|
255
|
+
| Agent | Dimension | Focus |
|
|
256
|
+
|-------|-----------|-------|
|
|
257
|
+
| Visual Hierarchy | visual_hierarchy | Spacing, typography scale, color contrast, alignment, whitespace, visual weight |
|
|
258
|
+
| Interaction States | interaction_states | Hover, focus, active, disabled, loading, error, empty, selected states |
|
|
259
|
+
| Accessibility | accessibility | WCAG AA contrast, focus management, aria labels, keyboard nav, screen reader |
|
|
260
|
+
| Responsiveness | responsiveness | Breakpoints, overflow, touch targets, fluid typography, container queries |
|
|
261
|
+
| Micro-interactions | micro_interactions | Transitions, animations, feedback indicators, loading states, progress |
|
|
262
|
+
| Edge Cases | edge_cases | Long text truncation, empty data, error states, extreme values, i18n, RTL |
|
|
263
|
+
|
|
264
|
+
Each returns `[{title, severity, file, line, description, suggestion, dimension}]`.
|
|
265
|
+
Merge → evidence.ndjson (phase: "audit"). Write `session.json.audit_result`.
|
|
266
|
+
Update `understanding.md` §3 (findings by dimension + severity matrix). Mark G2 done.
|
|
267
|
+
|
|
268
|
+
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-ui({slug}): AUDIT — 多维审查"`
|
|
269
|
+
|
|
270
|
+
### A_DIVERGE
|
|
271
|
+
**The unique phase** — divergent creative exploration. Goes beyond defect fixing to ask "what would make this delightful?"
|
|
272
|
+
|
|
273
|
+
**Step 1 — Creative exploration (2 parallel Agents):**
|
|
274
|
+
|
|
275
|
+
| Agent | Angle | Prompt Focus |
|
|
276
|
+
|-------|-------|-------------|
|
|
277
|
+
| Polish Agent | "What subtle details are missing?" | Shadows, borders, transitions, hover states, feedback, empty states, skeleton loading, scroll behavior |
|
|
278
|
+
| Delight Agent | "What would make this experience memorable?" | Motion design, progressive disclosure, smart defaults, contextual hints, celebratory feedback, personality in copy |
|
|
279
|
+
|
|
280
|
+
Each returns: `[{idea, category (polish|delight), impact (high|medium|low), effort (small|medium|large), description, inspiration}]`
|
|
281
|
+
|
|
282
|
+
**Step 2 — CLI-assisted design review** (optional):
|
|
283
|
+
```bash
|
|
284
|
+
maestro delegate "PURPOSE: Creative UI review of: {target}
|
|
285
|
+
TASK: Identify polish opportunities | Suggest micro-interaction improvements | Review visual rhythm and harmony | Propose delight moments
|
|
286
|
+
MODE: analysis
|
|
287
|
+
CONTEXT: @{target_files} | Audit summary: {audit_findings_summary}
|
|
288
|
+
EXPECTED: JSON [{category, idea, rationale, reference}]
|
|
289
|
+
" --role analyze --mode analysis
|
|
290
|
+
```
|
|
291
|
+
Run_in_background, STOP, wait for callback.
|
|
292
|
+
|
|
293
|
+
**Step 3 — Consolidate**: Merge audit findings + divergent ideas → prioritized improvement list (severity x impact x effort matrix).
|
|
294
|
+
Append evidence.ndjson (phase: "diverge"). Update `understanding.md` §4. Mark G3 done.
|
|
295
|
+
|
|
296
|
+
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-ui({slug}): DIVERGE — 发散探索"`
|
|
297
|
+
|
|
298
|
+
### A_FIX
|
|
299
|
+
Skip if `--skip-fix`. Implement improvements prioritized by impact.
|
|
300
|
+
|
|
301
|
+
1. **穷尽修复**: Fix ALL findings/ideas by priority tier (critical→high→medium→low + high-impact ideas), not just top items. After each tier, re-review modified area — new findings append.
|
|
302
|
+
2. For each fix: implement → append evidence.ndjson (phase: "fix")
|
|
303
|
+
3. **Normal**: ask_question per-fix confirmation. **`-y`**: auto-proceed, record `deferred`.
|
|
304
|
+
|
|
305
|
+
📌 **Auto-commit**: `git add -A && git commit -m "odyssey-ui({slug}): FIX — 优化实现"`
|
|
306
|
+
|
|
307
|
+
### A_VERIFY
|
|
308
|
+
Visual verification — confirm improvements work in practice.
|
|
309
|
+
|
|
310
|
+
1. Run tests if applicable (lint, unit, visual regression)
|
|
311
|
+
2. **CLI-assisted visual review**:
|
|
312
|
+
```bash
|
|
313
|
+
maestro delegate "PURPOSE: Verify UI improvements for: {target}
|
|
314
|
+
TASK: Check visual correctness | Verify interaction states | Confirm accessibility | Test responsive behavior
|
|
315
|
+
MODE: analysis
|
|
316
|
+
CONTEXT: @{modified_files} | Improvements: {fix_summary}
|
|
317
|
+
EXPECTED: JSON {verdict, verified_improvements, remaining_issues, regression_risk}
|
|
318
|
+
" --role review --mode analysis
|
|
319
|
+
```
|
|
320
|
+
Run_in_background, STOP, wait for callback.
|
|
321
|
+
|
|
322
|
+
3. `needs_rework` → S_FIX. `verified` → mark G4 done, advance.
|
|
323
|
+
4. Update `understanding.md` §5. Write `session.json.confirmation`.
|
|
324
|
+
|
|
325
|
+
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-ui({slug}): VERIFY — 验证"`
|
|
326
|
+
|
|
327
|
+
### A_GENERALIZE
|
|
328
|
+
Multi-layer pattern extraction from findings + improvements → 4-agent scan → cross-layer dedup.
|
|
329
|
+
|
|
330
|
+
**Pattern extraction** from audit findings + diverge ideas (severity >= medium OR impact = high):
|
|
331
|
+
|
|
332
|
+
| Layer | Method | Example |
|
|
333
|
+
|-------|--------|---------|
|
|
334
|
+
| Syntax | Regex → direct Grep | Missing `aria-label`, hardcoded px values, inline styles |
|
|
335
|
+
| Semantic | Agent understands anti-pattern → scans | Inconsistent hover states, missing loading feedback |
|
|
336
|
+
| Structural | File/module structure similarity | Same component type missing responsive treatment |
|
|
337
|
+
|
|
338
|
+
Write `session.json.patterns[]`.
|
|
339
|
+
|
|
340
|
+
**4-agent parallel scan** (single message):
|
|
341
|
+
|
|
342
|
+
| Agent | Strategy | Scope |
|
|
343
|
+
|-------|----------|-------|
|
|
344
|
+
| Syntax grep | Grep CSS/style patterns matching found issues | Full project |
|
|
345
|
+
| Semantic scan | Find components with same interaction pattern but missing states | Related modules |
|
|
346
|
+
| Structural match | Find structurally similar components (same imports, layout) | Full project |
|
|
347
|
+
| Historical grep | `git log -S "{pattern}"` for when similar UI patterns were introduced/fixed | Git history |
|
|
348
|
+
|
|
349
|
+
**Cross-layer dedup**: Multi-layer hit → boost confidence. Single-layer → `needs_review`. Historical match on fixed code → `regression_risk`.
|
|
350
|
+
|
|
351
|
+
**Iterative deepening**: Module with ≥3 hits → targeted deep scan (max 1 round).
|
|
352
|
+
|
|
353
|
+
Update `understanding.md` §6 (per-pattern summary, cross-layer matrix). Write `session.json.generalization_stats`. Mark G5 done.
|
|
354
|
+
|
|
355
|
+
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-ui({slug}): GENERALIZE — 泛化扫描"`
|
|
356
|
+
|
|
357
|
+
### A_DISCOVER
|
|
358
|
+
Classify each hit: `needs_treatment` / `low_risk` / `already_handled`.
|
|
359
|
+
**Normal**: ask_question for routing. **`-y`**: auto create issue, `deferred`.
|
|
360
|
+
Append evidence (phase: "discovery" + "decision"). Update `understanding.md` §7. Mark G6 done.
|
|
361
|
+
|
|
362
|
+
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-ui({slug}): DISCOVER — 发现分类"`
|
|
363
|
+
|
|
364
|
+
### A_RECORD
|
|
365
|
+
1. Finalize `understanding.md` §8: design learnings
|
|
366
|
+
2. Write learnings to understanding.md §8: 按 Knowledge Persistence 表分类记录(临时),completion summary 列出建议的 `/spec-add` 命令
|
|
367
|
+
3. Pending decisions: **Normal** → ask_question. **`-y`** → skip, display deferred count
|
|
368
|
+
4. **Goal audit**: all `phase_goals[*].completion_confirmed` true → `phase_goals_all_done = true`. Any false: **Normal** → ask_question (回退/跳过/接受) | **`-y`** → auto accept
|
|
369
|
+
5. Mark G7 done. `current_state = "COMPLETED"`. Emit completion summary:
|
|
370
|
+
```
|
|
371
|
+
--- UI ODYSSEY COMPLETE ---
|
|
372
|
+
Target: {target}
|
|
373
|
+
Dimensions: {dimensions_audited}
|
|
374
|
+
Findings: {C}C {H}H {M}M {L}L
|
|
375
|
+
Diverge: {improvements} polish + {creative} delight ideas
|
|
376
|
+
Fix: {fixed_count} applied, verified={yes|skipped}
|
|
377
|
+
Patterns: {extracted} ({by_layer} distribution)
|
|
378
|
+
Scan hits: {total} ({cross_layer} cross-layer confirmed)
|
|
379
|
+
Issues: {N} created
|
|
380
|
+
Decisions: {N} resolved, {M} pending, {K} deferred
|
|
381
|
+
Learnings: {N} entries in understanding.md §8
|
|
382
|
+
Self-iter: {N} quality gate rounds across {M} stages
|
|
383
|
+
Goals: {done}/{total} ({skipped} skipped)
|
|
384
|
+
---
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
📌 **Auto-commit**: `git add understanding.md && git commit -m "odyssey-ui({slug}): RECORD — 会话总结"`
|
|
388
|
+
|
|
389
|
+
</actions>
|
|
390
|
+
|
|
391
|
+
<appendix>
|
|
392
|
+
|
|
393
|
+
### Goal Prompt Template
|
|
394
|
+
**⚠️ 时机守卫:仅在 A_INTAKE 完成后显示一次(session 创建后、开始 survey 前)。A_RECORD 完成时禁止重新显示。**
|
|
395
|
+
|
|
396
|
+
```
|
|
397
|
+
📋 UI Odyssey 会话已创建。可随时复制以下 /goal 设定终止条件(执行过程中输入即可):
|
|
398
|
+
|
|
399
|
+
/goal 穷尽迭代:直到 session.json 的 audit + diverge findings 均已处理(fix/issue/decision)
|
|
400
|
+
且 phase_goals_all_done=true 才停。修复按 impact×severity 逐轮迭代。
|
|
401
|
+
每轮修复后重审修改区域,新发现追加继续修。
|
|
402
|
+
遇到 phase=decision 的 pending 必须 ask_question。不允许"只报告不处理"。
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
完成时仅输出 completion summary,不重复此提示。
|
|
406
|
+
|
|
407
|
+
### `-y` Auto-Confirm (5 decision points)
|
|
408
|
+
| Decision Point | Normal | `-y` |
|
|
409
|
+
|----------------|--------|------|
|
|
410
|
+
| A_FIX improvement confirmation | ask_question | auto-proceed, `deferred` |
|
|
411
|
+
| A_DISCOVER hit routing | ask_question | auto create issue, `deferred` |
|
|
412
|
+
| A_DISCOVER ambiguous items | ask_question | all `deferred` |
|
|
413
|
+
| A_RECORD pending decisions | ask_question | skip, show deferred count |
|
|
414
|
+
| A_RECORD goal audit | ask_question | auto accept |
|
|
415
|
+
|
|
416
|
+
`deferred` items shown as "待决策" in completion summary; recoverable via `-c`.
|
|
417
|
+
|
|
418
|
+
### Phase Goal Lifecycle
|
|
419
|
+
`pending → done (confirmed=true)` normal | `pending → skipped (confirmed=true)` flags/manual | `pending → failed (confirmed=false)` exception
|
|
420
|
+
|
|
421
|
+
`phase_goals_all_done = true` only when ALL goals have `completion_confirmed == true`.
|
|
422
|
+
|
|
423
|
+
</appendix>
|
|
424
|
+
|
|
425
|
+
</state_machine>
|
|
426
|
+
|
|
427
|
+
<error_codes>
|
|
428
|
+
| Code | Severity | Condition | Recovery |
|
|
429
|
+
|------|----------|-----------|----------|
|
|
430
|
+
| E001 | error | No target specified | Provide target |
|
|
431
|
+
| E002 | error | Target path not found | Check path |
|
|
432
|
+
| E003 | error | Resume but no session found | Start new session |
|
|
433
|
+
| W001 | warning | No design system detected | Proceed with defaults |
|
|
434
|
+
| W002 | warning | Some dimension agents failed | Partial coverage |
|
|
435
|
+
| W003 | warning | Generalization 0 hits | Skip discovery |
|
|
436
|
+
| W004 | warning | Delegate parse failed | Use raw output |
|
|
437
|
+
</error_codes>
|
|
438
|
+
|
|
439
|
+
<success_criteria>
|
|
440
|
+
- [ ] Target resolved and session created
|
|
441
|
+
- [ ] Design system inventory captured in survey
|
|
442
|
+
- [ ] All dimensions audited (6 parallel agents) with structured findings
|
|
443
|
+
- [ ] Severity matrix produced
|
|
444
|
+
- [ ] Divergent exploration: polish + delight ideas generated
|
|
445
|
+
- [ ] Improvements implemented and verified (unless --skip-fix)
|
|
446
|
+
- [ ] Multi-layer generalization scan + cross-layer dedup (unless --skip-generalize)
|
|
447
|
+
- [ ] Quality Gate self-iteration triggered when insufficient
|
|
448
|
+
- [ ] Discoveries classified and routed
|
|
449
|
+
- [ ] understanding.md §8 finalized with design learnings
|
|
450
|
+
- [ ] phase_goals G1-G7 tracked and audited
|
|
451
|
+
- [ ] Goal Prompt displayed once
|
|
452
|
+
- [ ] `-y`: no blocking prompts, deferred counted
|
|
453
|
+
- [ ] Session resumable via -c
|
|
454
|
+
</success_criteria>
|
|
455
|
+
|
|
456
|
+
<next_step_routing>
|
|
457
|
+
| Condition | Next step |
|
|
458
|
+
|-----------|-----------|
|
|
459
|
+
| Finding needs deeper debug | `/odyssey-debug "<finding>"` |
|
|
460
|
+
| Issues created from discoveries | `/manage-issue list --source ui-odyssey` |
|
|
461
|
+
| Design pattern worth documenting | `/spec-add ui "..."` |
|
|
462
|
+
| Want full review of changes | `/odyssey-review-test-fix <changed-files>` |
|
|
463
|
+
| Sibling components to polish | `/odyssey-ui "<sibling>"` |
|
|
464
|
+
</next_step_routing>
|
|
@@ -299,14 +299,15 @@ resolve_milestone(phase_number):
|
|
|
299
299
|
| phase 已存在 + 无任何 artifact | `analyze` |
|
|
300
300
|
| phase 已存在 + 最新 artifact = analyze | `plan` |
|
|
301
301
|
| phase 已存在 + 最新 artifact = plan | `execute` |
|
|
302
|
-
| phase 已存在 + 最新 artifact = execute |
|
|
303
|
-
| phase 已存在 + 最新 artifact = verify | → refine from result files |
|
|
302
|
+
| phase 已存在 + 最新 artifact = execute | → refine from post-execute results |
|
|
304
303
|
|
|
305
|
-
**Refine from
|
|
304
|
+
**Refine from post-execute results:**
|
|
305
|
+
|
|
306
|
+
在 execute artifact 的 scratch dir 中检查结果文件(verification.json 由 execute 内置 gate 产出):
|
|
306
307
|
|
|
307
308
|
| Condition | Position |
|
|
308
309
|
|-----------|----------|
|
|
309
|
-
| verification.json
|
|
310
|
+
| 无 verification.json 或 passed==false 或 gaps[] | `execute` (触发 post-execute fix loop) |
|
|
310
311
|
| passed==true, no review.json | `business-test` |
|
|
311
312
|
| review.json: verdict=="BLOCK" | `review-failed` |
|
|
312
313
|
| review.json: verdict!="BLOCK" | `test` |
|
|
@@ -332,7 +333,7 @@ resolve_milestone(phase_number):
|
|
|
332
333
|
|
|
333
334
|
读 `session.quality_mode_override`(CLI `--quality`),无则按规则推断:
|
|
334
335
|
|
|
335
|
-
| Condition | Mode | Pipeline (
|
|
336
|
+
| Condition | Mode | Pipeline (execute 之后) |
|
|
336
337
|
|-----------|------|-------------------------|
|
|
337
338
|
| Has `specs/REQ-*.md` + 当前 phase 业务范围明确 | `full` | business-test → review → test-gen → test |
|
|
338
339
|
| Default | `standard` | review → test-gen (当 coverage<80%) → test |
|
|
@@ -361,7 +362,7 @@ options:
|
|
|
361
362
|
- label: "统一规划 (Recommended)"
|
|
362
363
|
description: "一次性分析+规划整个里程碑所有 phase,analyze/plan 走里程碑级,适合 phase 间关联紧密"
|
|
363
364
|
- label: "独立规划"
|
|
364
|
-
description: "逐个 phase 走完整生命周期(analyze→plan→execute
|
|
365
|
+
description: "逐个 phase 走完整生命周期(analyze→plan→execute→...),适合 phase 间独立性高"
|
|
365
366
|
```
|
|
366
367
|
|
|
367
368
|
写入 `session.planning_mode`(`"unified"` 或 `"independent"`)。
|
|
@@ -393,7 +394,7 @@ narrow → derive defaults from intent + codebase, skip questions.
|
|
|
393
394
|
{ "id": "G1", "goal": "<deliverable>", "boundary": "<in/out note>",
|
|
394
395
|
"done_when": "<objectively checkable condition>",
|
|
395
396
|
"evidence": "verification.json|review.json|uat.md|<test path>",
|
|
396
|
-
"lifecycle": ["analyze","execute"
|
|
397
|
+
"lifecycle": ["analyze","execute"], "status": "pending" }
|
|
397
398
|
```
|
|
398
399
|
`done_when` 必须客观可验证,且引用 ralph 已产出的 artifact;`lifecycle` 字段映射到产出 evidence 的生命周期 stage。
|
|
399
400
|
|
|
@@ -430,7 +431,7 @@ narrow → derive defaults from intent + codebase, skip questions.
|
|
|
430
431
|
2. **跳过已完成**:跳过当前 milestone+phase 下已有 completed artifact 的 stage(按 `session.phase` 过滤);unified 按 milestone 过滤
|
|
431
432
|
3. **quality_mode 过滤**:按 `session.quality_mode` 排除不匹配 stage
|
|
432
433
|
4. **决策节点**:每个 Decision after 非空的 stage 之后插入 `{ decision: "<gate>", retry_count: 0, max_retries: 2, command_scope: null, command_path: null }`
|
|
433
|
-
5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(
|
|
434
|
+
5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(execute/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
|
|
434
435
|
6. **终点硬约束**:chain 以 `milestone-complete` 结尾
|
|
435
436
|
7. **goal_ref 传播**:`task_decomposition` 存在时,每个 step 按 `step.stage ∈ g.lifecycle` 匹配 `step.goal_ref = g.id`(多匹配取字典序最小);decision 节点不打 goal_ref
|
|
436
437
|
8. **占位符**:independent 保留 `{phase}` `{intent}`;unified 不带 `{phase}`
|
|
@@ -657,7 +658,7 @@ Write enriched args back to status.json.
|
|
|
657
658
|
3. `medium` / `small`:
|
|
658
659
|
- 删除 `goal-audit` 之前未完成的 `roadmap` + `analyze` (phase) step
|
|
659
660
|
- 下一个未完成的 `plan` step → `maestro-plan --from analyze:{analyze_macro_id}`,去掉 `{phase}`,`source_artifact_ref = analyze:{analyze_macro_id}`
|
|
660
|
-
- 后续 `execute`
|
|
661
|
+
- 后续 `execute` 等沿用同一 standalone scope
|
|
661
662
|
4. `unknown`:非 auto_confirm → AskUserQuestion 二选一(large / medium-small);auto_confirm → 默认 large
|
|
662
663
|
5. release 协议 — 完成分支;reindex
|
|
663
664
|
6. Display: ◆ Scope verdict: {verdict} → {kept|collapsed to standalone via analyze:{ANL_ID}}
|
|
@@ -754,7 +755,7 @@ Display: `[{index}/{total}] ✗ {step.skill} 失败,会话已暂停。/maestro
|
|
|
754
755
|
"index": 0,
|
|
755
756
|
"skill": "", // 执行 step 有值;decision 节点为空字符串/null
|
|
756
757
|
"args": "",
|
|
757
|
-
"stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute
|
|
758
|
+
"stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute|...
|
|
758
759
|
"scope": null, // "phase"|"standalone"|"milestone"|null(plan 等需要)
|
|
759
760
|
"decision": null, // null = 执行 step;非 null = decision step (值为 gate 名)
|
|
760
761
|
"retry_count": 0, // decision step
|
|
@@ -269,8 +269,7 @@ resolve_milestone(phase_number):
|
|
|
269
269
|
| phase 已存在 + 无任何 artifact | `analyze` |
|
|
270
270
|
| phase 已存在 + 最新 artifact = analyze | `plan` |
|
|
271
271
|
| phase 已存在 + 最新 artifact = plan | `execute` |
|
|
272
|
-
| phase 已存在 + 最新 artifact = execute |
|
|
273
|
-
| phase 已存在 + 最新 artifact = verify | → refine from result files |
|
|
272
|
+
| phase 已存在 + 最新 artifact = execute | → refine from post-execute results |
|
|
274
273
|
|
|
275
274
|
**关键不变量**:artifact 过滤按 `session.phase`,不读 `state.json.current_phase`。`phase_is_new` → 直接 `analyze`。
|
|
276
275
|
|
|
@@ -289,11 +288,13 @@ resolve_milestone(phase_number):
|
|
|
289
288
|
| `medium` / `small` | analyze-macro → plan --from analyze:{ANL_ID} → execute → ...(跳过 roadmap + analyze-phase) |
|
|
290
289
|
| `unknown` | 默认走 large 路径,post-analyze-scope 决策节点再纠正 |
|
|
291
290
|
|
|
292
|
-
**Refine from
|
|
291
|
+
**Refine from post-execute results:**
|
|
292
|
+
|
|
293
|
+
在 execute artifact 的 scratch dir 中检查结果文件(verification.json 由 execute 内置 gate 产出):
|
|
293
294
|
|
|
294
295
|
| Condition | Position |
|
|
295
296
|
|-----------|----------|
|
|
296
|
-
| verification.json
|
|
297
|
+
| 无 verification.json 或 passed==false 或 gaps[] | `execute` (触发 post-execute fix loop) |
|
|
297
298
|
| passed==true, no review.json | `business-test` |
|
|
298
299
|
| review.json: verdict=="BLOCK" | `review-failed` |
|
|
299
300
|
| review.json: verdict!="BLOCK" | `test` |
|
|
@@ -304,7 +305,7 @@ resolve_milestone(phase_number):
|
|
|
304
305
|
|
|
305
306
|
决定下游质量管线长度。读 `session.quality_mode_override`(CLI 标志 `--quality`),无则按规则推断:
|
|
306
307
|
|
|
307
|
-
| Condition | Mode | Pipeline (
|
|
308
|
+
| Condition | Mode | Pipeline (execute 之后) |
|
|
308
309
|
|-----------|------|-------------------------|
|
|
309
310
|
| Has `specs/REQ-*.md` + 当前 phase 业务范围明确 | `full` | business-test → review → test-gen → test |
|
|
310
311
|
| Default | `standard` | review → test-gen (当 coverage<80%) → test |
|
|
@@ -335,7 +336,7 @@ options:
|
|
|
335
336
|
- label: "统一规划 (Recommended)"
|
|
336
337
|
description: "一次性分析+规划整个里程碑所有 phase,analyze/plan 走里程碑级,适合 phase 间关联紧密"
|
|
337
338
|
- label: "独立规划"
|
|
338
|
-
description: "逐个 phase 走完整生命周期(analyze→plan→execute
|
|
339
|
+
description: "逐个 phase 走完整生命周期(analyze→plan→execute→...),适合 phase 间独立性高"
|
|
339
340
|
```
|
|
340
341
|
|
|
341
342
|
写入 `session.planning_mode`(`"unified"` 或 `"independent"`)。`A_BUILD_STEPS` 据此决定 skill args 是否携带 `{phase}` 占位符。
|
|
@@ -369,7 +370,7 @@ narrow → derive defaults from intent + codebase, skip questions.
|
|
|
369
370
|
{ "id": "G1", "goal": "<deliverable>", "boundary": "<in/out note>",
|
|
370
371
|
"done_when": "<objectively checkable condition>",
|
|
371
372
|
"evidence": "verification.json|review.json|uat.md|<test path>",
|
|
372
|
-
"lifecycle": ["analyze","execute"
|
|
373
|
+
"lifecycle": ["analyze","execute"], "status": "pending" }
|
|
373
374
|
```
|
|
374
375
|
`done_when` 必须客观可验证,且引用 ralph 已产出的 artifact;`lifecycle` 字段映射到产出 evidence 的生命周期 stage。
|
|
375
376
|
|
|
@@ -410,7 +411,7 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
|
|
|
410
411
|
3. **quality_mode 过滤**:按 `session.quality_mode` 排除不匹配 stage
|
|
411
412
|
3.5. **grill auto_confirm 跳过**:`auto_confirm == true` 时删除 `grill` stage(grill 为交互式苏格拉底拷问,不支持自动模式);brainstorm args 不含 `--from grill:*`
|
|
412
413
|
4. **决策节点**:每个 Decision after 非空的 stage 之后插入 `{ decision: "<gate>", retry_count: 0, max_retries: 2, command_scope: null, command_path: null }`
|
|
413
|
-
5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(
|
|
414
|
+
5. **goal-audit 插入**:`task_decomposition` 存在时,在最后一个 evidence-producing stage(execute/review/test)之后、`milestone-complete` 之前插入 `decision:post-goal-audit`
|
|
414
415
|
6. **终点硬约束**:chain 以 `milestone-complete` 结尾
|
|
415
416
|
7. **goal_ref 传播**:`task_decomposition` 存在时,每个 step 按 `step.stage ∈ g.lifecycle` 匹配 `step.goal_ref = g.id`(多匹配取字典序最小);decision 节点不打 goal_ref
|
|
416
417
|
8. **占位符**:independent 保留 `{phase}` `{intent}`;unified 不带 `{phase}`
|
|
@@ -558,7 +559,7 @@ Runs only when `task_decomposition` present.
|
|
|
558
559
|
3. 路径 B(`medium` / `small`):
|
|
559
560
|
- 删除 `goal-audit` 之前所有未完成的 `roadmap` + `analyze` (phase) step
|
|
560
561
|
- 把下一个未完成的 `plan` step 改为 `maestro-plan --from analyze:{analyze_macro_id}`,去掉 `{phase}`,`source_artifact_ref = analyze:{analyze_macro_id}`
|
|
561
|
-
- 后续 `execute`
|
|
562
|
+
- 后续 `execute` 等沿用同一 standalone scope(不带 `{phase}`,由 plan 写出的 task 列表驱动)
|
|
562
563
|
4. 路径 C(`unknown`):
|
|
563
564
|
- 非 auto_confirm → AskUserQuestion 二选一(large / medium-small);auto_confirm → 默认 large
|
|
564
565
|
5. Reindex steps,标 decision completed,write status.json
|
|
@@ -619,7 +620,7 @@ Runs only when `task_decomposition` present.
|
|
|
619
620
|
"index": 0,
|
|
620
621
|
"skill": "", // 执行 step 有值;decision 节点为空字符串/null
|
|
621
622
|
"args": "",
|
|
622
|
-
"stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute
|
|
623
|
+
"stage": "", // brainstorm|blueprint|init|analyze-macro|roadmap|analyze|plan|execute|...
|
|
623
624
|
"scope": null, // "phase"|"standalone"|"milestone"|null(plan 等需要)
|
|
624
625
|
"decision": null, // 非 null → decision 节点(值为 gate 名,如 "post-execute");null → 执行 step
|
|
625
626
|
"retry_count": 0, // decision 节点专用
|
|
@@ -50,7 +50,7 @@ $ARGUMENTS — user intent text, or special keywords.
|
|
|
50
50
|
4. **Decomposition contract shared with maestro-ralph** — broad/lifecycle intents run S_DECOMPOSE producing the SAME additive block (`boundary_contract`, `execution_criteria`, `task_decomposition`)。Reference maestro-ralph `A_DECOMPOSE_TASKS`
|
|
51
51
|
5. **status.json 唯一真源** — 不生成 `goal-checklist.md` 或外部清单
|
|
52
52
|
6. **执行步骤统一通过 `maestro ralph next` 加载** — `command_scope`/`command_path` 由 `maestro ralph skills --platform claude --json --quiet` 预校验(project 覆盖 global,限定 `.claude/`);decision 节点不走 CLI,走 `Skill("maestro-ralph")` handoff
|
|
53
|
-
7. **Topology awareness** — chain catalog 含 grill / brainstorm / blueprint / analyze-macro / analyze / roadmap / plan(三路径) / execute /
|
|
53
|
+
7. **Topology awareness** — chain catalog 含 grill / brainstorm / blueprint / analyze-macro / analyze / roadmap / plan(三路径) / execute / ...;scope_verdict 由 ralph 在 `post-analyze-scope` 决定
|
|
54
54
|
8. **Grill is interactive-only** — `-y` auto mode MUST skip grill stage and route directly to brainstorm; grill requires Socratic Q&A with the user
|
|
55
55
|
9. **D-007 milestone 反查** — 数字 phase 的 `milestone_id` 由 `state.json.milestones[].phase_slugs` 反查
|
|
56
56
|
10. **每个 step 必须 `completion_confirmed: true`** — 由 `maestro ralph complete N --status DONE|DONE_WITH_CONCERNS` 写入
|
|
@@ -141,9 +141,9 @@ S_FALLBACK:
|
|
|
141
141
|
- 正式规格/spec-generate/7-phase → `blueprint`
|
|
142
142
|
- 项目初始化 → `init`
|
|
143
143
|
- 宽/中等意图 + 无数字 phase → `analyze-macro`(产 scope_verdict,由 ralph 在 `post-analyze-scope` 决定是否插入 roadmap+analyze 或直跳 plan --from analyze)
|
|
144
|
-
- 数字 phase 上下文 → `analyze {phase}` → `plan {phase}` → `execute {phase}` →
|
|
145
|
-
- 已有 analyze artifact 想直达执行 → `plan --from analyze:{ANL_ID}` → execute →
|
|
146
|
-
- 已有 blueprint artifact → `plan --from blueprint:{BLP_ID}` → execute →
|
|
144
|
+
- 数字 phase 上下文 → `analyze {phase}` → `plan {phase}` → `execute {phase}` → quality pipeline
|
|
145
|
+
- 已有 analyze artifact 想直达执行 → `plan --from analyze:{ANL_ID}` → execute → quality pipeline
|
|
146
|
+
- 已有 blueprint artifact → `plan --from blueprint:{BLP_ID}` → execute → quality pipeline
|
|
147
147
|
4. 执行 step:`Bash("maestro ralph skills --platform claude --json --quiet")` 预校验 skill 名,命中写绝对路径到 `command_path`,未命中标 `missing`;同时写 `step.stage` / `step.scope` / `step.source_artifact_ref`。decision 节点不解析 command_path
|
|
148
148
|
|
|
149
149
|
### A_CLARIFY
|
|
@@ -159,7 +159,7 @@ S_FALLBACK:
|
|
|
159
159
|
2. broad/medium → `AskUserQuestion` ≤3 轮:Scope / Constraints / Definition of Done
|
|
160
160
|
3. 派生 `execution_criteria` + `task_decomposition`(每个 sub-goal 含 `done_when` + `evidence` + `lifecycle` + `completion_confirmed: false`)
|
|
161
161
|
4. **status.json 唯一真源**:写入 `boundary_contract` / `execution_criteria` / `task_decomposition`;不生成 markdown 清单
|
|
162
|
-
5. 在最后一个 evidence-producing stage(
|
|
162
|
+
5. 在最后一个 evidence-producing stage(execute/review/test)之后、`milestone-complete` 之前追加 `decision:post-goal-audit`。ralph-execute 在该节点按需动态生长 `steps[]`
|
|
163
163
|
6. **输出 `/goal` 绑定提示词(不阻塞,用户可在执行过程中随时输入):**
|
|
164
164
|
```
|
|
165
165
|
📋 任务分解完成。可随时复制下面一行设定目标(执行过程中输入即可):
|
|
@@ -221,7 +221,7 @@ S_FALLBACK:
|
|
|
221
221
|
### Success Criteria
|
|
222
222
|
|
|
223
223
|
- [ ] Intent classified with task_type, complexity, clarity_score
|
|
224
|
-
- [ ] Chain catalog 覆盖 grill / brainstorm / blueprint / analyze-macro / analyze / roadmap / plan(三路径) / execute /
|
|
224
|
+
- [ ] Chain catalog 覆盖 grill / brainstorm / blueprint / analyze-macro / analyze / roadmap / plan(三路径) / execute / quality pipeline
|
|
225
225
|
- [ ] `-y` 模式不触发 grill(交互式压力测试不支持自动模式,跳过直接走 brainstorm)
|
|
226
226
|
- [ ] D-007: 数字 phase 步骤的 `milestone_id` 通过 `state.json.milestones[].phase_slugs` 反查
|
|
227
227
|
- [ ] macro analyze 后跟 `decision:post-analyze-scope`(由 ralph 评估 scope_verdict 决定下游链路)
|