@jack200714/mafw 4.5.1 → 4.5.2

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.
Files changed (320) hide show
  1. package/README.md +5 -2
  2. package/bin/mafw.js +16 -14
  3. package/package.json +1 -7
  4. package/.opencode/mafw/.backup-v61/parametric/base-skill-manifest.yaml +0 -2
  5. package/.opencode/mafw/STATUS.md +0 -6
  6. package/.opencode/mafw/ledger.md +0 -20
  7. package/.opencode/mafw/memory/.harmonic_index.json +0 -28
  8. package/.opencode/mafw/memory/.review_queue.json +0 -1
  9. package/.opencode/mafw/memory/tier3/parametric.json +0 -13
  10. package/.opencode/mafw/memory/tier3/test-goal.json +0 -19
  11. package/.opencode/mafw/memory-index.json +0 -6
  12. package/.opencode/mafw/parametric/base-skill-manifest.yaml +0 -2
  13. package/.opencode/mafw/waves.json +0 -4
  14. package/.opencode/opencode.json +0 -3
  15. package/.opencode/plugins/mafw-plugin.ts +0 -8
  16. package/.opencode/skills/banner-design/SKILL.md +0 -196
  17. package/.opencode/skills/banner-design/references/banner-sizes-and-styles.md +0 -118
  18. package/.opencode/skills/brand/SKILL.md +0 -97
  19. package/.opencode/skills/brand/references/approval-checklist.md +0 -169
  20. package/.opencode/skills/brand/references/asset-organization.md +0 -157
  21. package/.opencode/skills/brand/references/brand-guideline-template.md +0 -140
  22. package/.opencode/skills/brand/references/color-palette-management.md +0 -186
  23. package/.opencode/skills/brand/references/consistency-checklist.md +0 -94
  24. package/.opencode/skills/brand/references/logo-usage-rules.md +0 -185
  25. package/.opencode/skills/brand/references/messaging-framework.md +0 -85
  26. package/.opencode/skills/brand/references/typography-specifications.md +0 -214
  27. package/.opencode/skills/brand/references/update.md +0 -118
  28. package/.opencode/skills/brand/references/visual-identity.md +0 -96
  29. package/.opencode/skills/brand/references/voice-framework.md +0 -88
  30. package/.opencode/skills/brand/scripts/extract-colors.cjs +0 -341
  31. package/.opencode/skills/brand/scripts/inject-brand-context.cjs +0 -349
  32. package/.opencode/skills/brand/scripts/sync-brand-to-tokens.cjs +0 -248
  33. package/.opencode/skills/brand/scripts/tests/test_sync_brand_to_tokens.py +0 -52
  34. package/.opencode/skills/brand/scripts/validate-asset.cjs +0 -387
  35. package/.opencode/skills/brand/templates/brand-guidelines-starter.md +0 -275
  36. package/.opencode/skills/design/SKILL.md +0 -313
  37. package/.opencode/skills/design/data/cip/deliverables.csv +0 -51
  38. package/.opencode/skills/design/data/cip/industries.csv +0 -21
  39. package/.opencode/skills/design/data/cip/mockup-contexts.csv +0 -21
  40. package/.opencode/skills/design/data/cip/styles.csv +0 -21
  41. package/.opencode/skills/design/data/icon/styles.csv +0 -16
  42. package/.opencode/skills/design/data/logo/colors.csv +0 -56
  43. package/.opencode/skills/design/data/logo/industries.csv +0 -56
  44. package/.opencode/skills/design/data/logo/styles.csv +0 -56
  45. package/.opencode/skills/design/references/banner-sizes-and-styles.md +0 -118
  46. package/.opencode/skills/design/references/cip-deliverable-guide.md +0 -95
  47. package/.opencode/skills/design/references/cip-design.md +0 -121
  48. package/.opencode/skills/design/references/cip-prompt-engineering.md +0 -84
  49. package/.opencode/skills/design/references/cip-style-guide.md +0 -68
  50. package/.opencode/skills/design/references/design-routing.md +0 -207
  51. package/.opencode/skills/design/references/icon-design.md +0 -122
  52. package/.opencode/skills/design/references/logo-color-psychology.md +0 -101
  53. package/.opencode/skills/design/references/logo-design.md +0 -92
  54. package/.opencode/skills/design/references/logo-prompt-engineering.md +0 -158
  55. package/.opencode/skills/design/references/logo-style-guide.md +0 -109
  56. package/.opencode/skills/design/references/slides-copywriting-formulas.md +0 -84
  57. package/.opencode/skills/design/references/slides-create.md +0 -4
  58. package/.opencode/skills/design/references/slides-html-template.md +0 -295
  59. package/.opencode/skills/design/references/slides-layout-patterns.md +0 -137
  60. package/.opencode/skills/design/references/slides-strategies.md +0 -94
  61. package/.opencode/skills/design/references/slides.md +0 -42
  62. package/.opencode/skills/design/references/social-photos-design.md +0 -329
  63. package/.opencode/skills/design/scripts/cip/core.py +0 -215
  64. package/.opencode/skills/design/scripts/cip/generate.py +0 -484
  65. package/.opencode/skills/design/scripts/cip/render-html.py +0 -424
  66. package/.opencode/skills/design/scripts/cip/search.py +0 -127
  67. package/.opencode/skills/design/scripts/icon/generate.py +0 -487
  68. package/.opencode/skills/design/scripts/logo/core.py +0 -175
  69. package/.opencode/skills/design/scripts/logo/generate.py +0 -362
  70. package/.opencode/skills/design/scripts/logo/search.py +0 -114
  71. package/.opencode/skills/design-system/SKILL.md +0 -244
  72. package/.opencode/skills/design-system/data/slide-backgrounds.csv +0 -11
  73. package/.opencode/skills/design-system/data/slide-charts.csv +0 -26
  74. package/.opencode/skills/design-system/data/slide-color-logic.csv +0 -14
  75. package/.opencode/skills/design-system/data/slide-copy.csv +0 -26
  76. package/.opencode/skills/design-system/data/slide-layout-logic.csv +0 -16
  77. package/.opencode/skills/design-system/data/slide-layouts.csv +0 -26
  78. package/.opencode/skills/design-system/data/slide-strategies.csv +0 -16
  79. package/.opencode/skills/design-system/data/slide-typography.csv +0 -15
  80. package/.opencode/skills/design-system/references/component-specs.md +0 -236
  81. package/.opencode/skills/design-system/references/component-tokens.md +0 -214
  82. package/.opencode/skills/design-system/references/primitive-tokens.md +0 -203
  83. package/.opencode/skills/design-system/references/semantic-tokens.md +0 -215
  84. package/.opencode/skills/design-system/references/states-and-variants.md +0 -241
  85. package/.opencode/skills/design-system/references/tailwind-integration.md +0 -251
  86. package/.opencode/skills/design-system/references/token-architecture.md +0 -224
  87. package/.opencode/skills/design-system/scripts/embed-tokens.cjs +0 -99
  88. package/.opencode/skills/design-system/scripts/fetch-background.py +0 -317
  89. package/.opencode/skills/design-system/scripts/generate-slide.py +0 -770
  90. package/.opencode/skills/design-system/scripts/generate-tokens.cjs +0 -205
  91. package/.opencode/skills/design-system/scripts/html-token-validator.py +0 -327
  92. package/.opencode/skills/design-system/scripts/search-slides.py +0 -218
  93. package/.opencode/skills/design-system/scripts/slide-token-validator.py +0 -35
  94. package/.opencode/skills/design-system/scripts/slide_search_core.py +0 -453
  95. package/.opencode/skills/design-system/scripts/tests/test_validate_tokens.py +0 -48
  96. package/.opencode/skills/design-system/scripts/validate-tokens.cjs +0 -246
  97. package/.opencode/skills/design-system/templates/design-tokens-starter.json +0 -143
  98. package/.opencode/skills/frontend-design/LICENSE.txt +0 -21
  99. package/.opencode/skills/frontend-design/SKILL.md +0 -115
  100. package/.opencode/skills/mafw-automation-interview/SKILL.md +0 -43
  101. package/.opencode/skills/mafw-cli-scanner/SKILL.md +0 -37
  102. package/.opencode/skills/mafw-compression-verifier/SKILL.md +0 -52
  103. package/.opencode/skills/mafw-desktop-inspector/SKILL.md +0 -170
  104. package/.opencode/skills/mafw-execute/SKILL.md +0 -62
  105. package/.opencode/skills/mafw-gateway-restart/SKILL.md +0 -87
  106. package/.opencode/skills/mafw-github-scanner/SKILL.md +0 -38
  107. package/.opencode/skills/mafw-goal/SKILL.md +0 -76
  108. package/.opencode/skills/mafw-interview/SKILL.md +0 -68
  109. package/.opencode/skills/mafw-memory-extractor/SKILL.md +0 -65
  110. package/.opencode/skills/mafw-plan/SKILL.md +0 -58
  111. package/.opencode/skills/mafw-review/SKILL.md +0 -85
  112. package/.opencode/skills/runtime-plugin-authoring/SKILL.md +0 -791
  113. package/.opencode/skills/slides/SKILL.md +0 -40
  114. package/.opencode/skills/slides/references/copywriting-formulas.md +0 -84
  115. package/.opencode/skills/slides/references/create.md +0 -4
  116. package/.opencode/skills/slides/references/html-template.md +0 -295
  117. package/.opencode/skills/slides/references/layout-patterns.md +0 -137
  118. package/.opencode/skills/slides/references/slide-strategies.md +0 -94
  119. package/.opencode/skills/ui-styling/LICENSE.txt +0 -202
  120. package/.opencode/skills/ui-styling/SKILL.md +0 -324
  121. package/.opencode/skills/ui-styling/references/canvas-design-system.md +0 -320
  122. package/.opencode/skills/ui-styling/references/shadcn-accessibility.md +0 -471
  123. package/.opencode/skills/ui-styling/references/shadcn-components.md +0 -424
  124. package/.opencode/skills/ui-styling/references/shadcn-theming.md +0 -373
  125. package/.opencode/skills/ui-styling/references/tailwind-customization.md +0 -483
  126. package/.opencode/skills/ui-styling/references/tailwind-responsive.md +0 -382
  127. package/.opencode/skills/ui-styling/references/tailwind-utilities.md +0 -455
  128. package/.opencode/skills/ui-styling/scripts/requirements.txt +0 -17
  129. package/.opencode/skills/ui-styling/scripts/shadcn_add.py +0 -308
  130. package/.opencode/skills/ui-styling/scripts/tailwind_config_gen.py +0 -473
  131. package/.opencode/skills/ui-styling/scripts/tests/coverage-ui.json +0 -1
  132. package/.opencode/skills/ui-styling/scripts/tests/requirements.txt +0 -3
  133. package/.opencode/skills/ui-styling/scripts/tests/test_shadcn_add.py +0 -266
  134. package/.opencode/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +0 -394
  135. package/.opencode/skills/ui-ux-pro-max/SKILL.md +0 -388
  136. package/.opencode/skills/ui-ux-pro-max/data/app-interface.csv +0 -31
  137. package/.opencode/skills/ui-ux-pro-max/data/charts.csv +0 -26
  138. package/.opencode/skills/ui-ux-pro-max/data/colors.csv +0 -193
  139. package/.opencode/skills/ui-ux-pro-max/data/google-fonts.csv +0 -1924
  140. package/.opencode/skills/ui-ux-pro-max/data/icons.csv +0 -106
  141. package/.opencode/skills/ui-ux-pro-max/data/landing.csv +0 -35
  142. package/.opencode/skills/ui-ux-pro-max/data/motion.csv +0 -17
  143. package/.opencode/skills/ui-ux-pro-max/data/products.csv +0 -193
  144. package/.opencode/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
  145. package/.opencode/skills/ui-ux-pro-max/data/stacks/angular.csv +0 -51
  146. package/.opencode/skills/ui-ux-pro-max/data/stacks/astro.csv +0 -54
  147. package/.opencode/skills/ui-ux-pro-max/data/stacks/avalonia.csv +0 -57
  148. package/.opencode/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
  149. package/.opencode/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
  150. package/.opencode/skills/ui-ux-pro-max/data/stacks/javafx.csv +0 -76
  151. package/.opencode/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
  152. package/.opencode/skills/ui-ux-pro-max/data/stacks/laravel.csv +0 -51
  153. package/.opencode/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
  154. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -71
  155. package/.opencode/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
  156. package/.opencode/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
  157. package/.opencode/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
  158. package/.opencode/skills/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
  159. package/.opencode/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
  160. package/.opencode/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
  161. package/.opencode/skills/ui-ux-pro-max/data/stacks/threejs.csv +0 -54
  162. package/.opencode/skills/ui-ux-pro-max/data/stacks/uno.csv +0 -60
  163. package/.opencode/skills/ui-ux-pro-max/data/stacks/uwp.csv +0 -56
  164. package/.opencode/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
  165. package/.opencode/skills/ui-ux-pro-max/data/stacks/winui.csv +0 -60
  166. package/.opencode/skills/ui-ux-pro-max/data/stacks/wpf.csv +0 -57
  167. package/.opencode/skills/ui-ux-pro-max/data/styles.csv +0 -85
  168. package/.opencode/skills/ui-ux-pro-max/data/typography.csv +0 -75
  169. package/.opencode/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -162
  170. package/.opencode/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
  171. package/.opencode/skills/ui-ux-pro-max/scripts/core.py +0 -464
  172. package/.opencode/skills/ui-ux-pro-max/scripts/design_system.py +0 -1479
  173. package/.opencode/skills/ui-ux-pro-max/scripts/search.py +0 -162
  174. package/.opencode/skills/ui-ux-pro-max/scripts/tests/test_core.py +0 -134
  175. package/.opencode/skills/ui-ux-pro-max/scripts/tests/test_design_system_mode.py +0 -159
  176. package/.opencode/skills/ui-ux-pro-max/scripts/validate_data.py +0 -114
  177. package/dist/hooks/bash-python-guide.d.ts +0 -4
  178. package/dist/hooks/bash-python-guide.d.ts.map +0 -1
  179. package/dist/hooks/bash-python-guide.js +0 -67
  180. package/dist/hooks/bash-python-guide.js.map +0 -1
  181. package/dist/hooks/handoff.d.ts +0 -9
  182. package/dist/hooks/handoff.d.ts.map +0 -1
  183. package/dist/hooks/handoff.js +0 -8
  184. package/dist/hooks/handoff.js.map +0 -1
  185. package/dist/hooks/hook-manager.d.ts +0 -32
  186. package/dist/hooks/hook-manager.d.ts.map +0 -1
  187. package/dist/hooks/hook-manager.js +0 -91
  188. package/dist/hooks/hook-manager.js.map +0 -1
  189. package/dist/hooks/llm-after.d.ts +0 -8
  190. package/dist/hooks/llm-after.d.ts.map +0 -1
  191. package/dist/hooks/llm-after.js +0 -8
  192. package/dist/hooks/llm-after.js.map +0 -1
  193. package/dist/hooks/media-ingest.d.ts +0 -43
  194. package/dist/hooks/media-ingest.d.ts.map +0 -1
  195. package/dist/hooks/media-ingest.js +0 -269
  196. package/dist/hooks/media-ingest.js.map +0 -1
  197. package/dist/hooks/memory-guide.d.ts +0 -3
  198. package/dist/hooks/memory-guide.d.ts.map +0 -1
  199. package/dist/hooks/memory-guide.js +0 -47
  200. package/dist/hooks/memory-guide.js.map +0 -1
  201. package/dist/hooks/observation-capture.d.ts +0 -17
  202. package/dist/hooks/observation-capture.d.ts.map +0 -1
  203. package/dist/hooks/observation-capture.js +0 -20
  204. package/dist/hooks/observation-capture.js.map +0 -1
  205. package/dist/hooks/session-compacting.d.ts +0 -6
  206. package/dist/hooks/session-compacting.d.ts.map +0 -1
  207. package/dist/hooks/session-compacting.js +0 -6
  208. package/dist/hooks/session-compacting.js.map +0 -1
  209. package/dist/hooks/session-ending.d.ts +0 -20
  210. package/dist/hooks/session-ending.d.ts.map +0 -1
  211. package/dist/hooks/session-ending.js +0 -113
  212. package/dist/hooks/session-ending.js.map +0 -1
  213. package/dist/hooks/session-recall.d.ts +0 -2
  214. package/dist/hooks/session-recall.d.ts.map +0 -1
  215. package/dist/hooks/session-recall.js +0 -103
  216. package/dist/hooks/session-recall.js.map +0 -1
  217. package/dist/hooks/session-start.d.ts +0 -9
  218. package/dist/hooks/session-start.d.ts.map +0 -1
  219. package/dist/hooks/session-start.js +0 -42
  220. package/dist/hooks/session-start.js.map +0 -1
  221. package/dist/hooks/tool-before.d.ts +0 -10
  222. package/dist/hooks/tool-before.d.ts.map +0 -1
  223. package/dist/hooks/tool-before.js +0 -6
  224. package/dist/hooks/tool-before.js.map +0 -1
  225. package/dist/hooks/tool-executed.d.ts +0 -19
  226. package/dist/hooks/tool-executed.d.ts.map +0 -1
  227. package/dist/hooks/tool-executed.js +0 -12
  228. package/dist/hooks/tool-executed.js.map +0 -1
  229. package/dist/hooks/user-profile.d.ts +0 -2
  230. package/dist/hooks/user-profile.d.ts.map +0 -1
  231. package/dist/hooks/user-profile.js +0 -30
  232. package/dist/hooks/user-profile.js.map +0 -1
  233. package/dist/hooks/user-prompt.d.ts +0 -9
  234. package/dist/hooks/user-prompt.d.ts.map +0 -1
  235. package/dist/hooks/user-prompt.js +0 -8
  236. package/dist/hooks/user-prompt.js.map +0 -1
  237. package/dist/hooks/voice-guide.d.ts +0 -8
  238. package/dist/hooks/voice-guide.d.ts.map +0 -1
  239. package/dist/hooks/voice-guide.js +0 -101
  240. package/dist/hooks/voice-guide.js.map +0 -1
  241. package/dist/plugin.d.ts +0 -55
  242. package/dist/plugin.d.ts.map +0 -1
  243. package/dist/plugin.js +0 -342
  244. package/dist/plugin.js.map +0 -1
  245. package/dist/tools/add-memory.d.ts +0 -17
  246. package/dist/tools/add-memory.d.ts.map +0 -1
  247. package/dist/tools/add-memory.js +0 -60
  248. package/dist/tools/add-memory.js.map +0 -1
  249. package/dist/tools/media-ask.d.ts +0 -14
  250. package/dist/tools/media-ask.d.ts.map +0 -1
  251. package/dist/tools/media-ask.js +0 -224
  252. package/dist/tools/media-ask.js.map +0 -1
  253. package/dist/tools/media-speak.d.ts +0 -16
  254. package/dist/tools/media-speak.d.ts.map +0 -1
  255. package/dist/tools/media-speak.js +0 -78
  256. package/dist/tools/media-speak.js.map +0 -1
  257. package/dist/tools/media-upload.d.ts +0 -14
  258. package/dist/tools/media-upload.d.ts.map +0 -1
  259. package/dist/tools/media-upload.js +0 -155
  260. package/dist/tools/media-upload.js.map +0 -1
  261. package/dist/tools/python-exec.d.ts +0 -13
  262. package/dist/tools/python-exec.d.ts.map +0 -1
  263. package/dist/tools/python-exec.js +0 -99
  264. package/dist/tools/python-exec.js.map +0 -1
  265. package/dist/tools/python-restart.d.ts +0 -11
  266. package/dist/tools/python-restart.d.ts.map +0 -1
  267. package/dist/tools/python-restart.js +0 -33
  268. package/dist/tools/python-restart.js.map +0 -1
  269. package/dist/utils/circuit-breaker.d.ts +0 -23
  270. package/dist/utils/circuit-breaker.d.ts.map +0 -1
  271. package/dist/utils/circuit-breaker.js +0 -75
  272. package/dist/utils/circuit-breaker.js.map +0 -1
  273. package/dist/utils/config-loader.d.ts +0 -20
  274. package/dist/utils/config-loader.d.ts.map +0 -1
  275. package/dist/utils/config-loader.js +0 -194
  276. package/dist/utils/config-loader.js.map +0 -1
  277. package/dist/utils/fallback.d.ts +0 -7
  278. package/dist/utils/fallback.d.ts.map +0 -1
  279. package/dist/utils/fallback.js +0 -20
  280. package/dist/utils/fallback.js.map +0 -1
  281. package/dist/utils/git.d.ts +0 -24
  282. package/dist/utils/git.d.ts.map +0 -1
  283. package/dist/utils/git.js +0 -71
  284. package/dist/utils/git.js.map +0 -1
  285. package/dist/utils/github.d.ts +0 -37
  286. package/dist/utils/github.d.ts.map +0 -1
  287. package/dist/utils/github.js +0 -53
  288. package/dist/utils/github.js.map +0 -1
  289. package/dist/utils/global-path.d.ts +0 -2
  290. package/dist/utils/global-path.d.ts.map +0 -1
  291. package/dist/utils/global-path.js +0 -32
  292. package/dist/utils/global-path.js.map +0 -1
  293. package/dist/utils/logger.d.ts +0 -6
  294. package/dist/utils/logger.d.ts.map +0 -1
  295. package/dist/utils/logger.js +0 -69
  296. package/dist/utils/logger.js.map +0 -1
  297. package/dist/utils/obs-capture.d.ts +0 -7
  298. package/dist/utils/obs-capture.d.ts.map +0 -1
  299. package/dist/utils/obs-capture.js +0 -49
  300. package/dist/utils/obs-capture.js.map +0 -1
  301. package/dist/utils/retry.d.ts +0 -11
  302. package/dist/utils/retry.d.ts.map +0 -1
  303. package/dist/utils/retry.js +0 -45
  304. package/dist/utils/retry.js.map +0 -1
  305. package/dist/utils/self-wiring.d.ts +0 -13
  306. package/dist/utils/self-wiring.d.ts.map +0 -1
  307. package/dist/utils/self-wiring.js +0 -86
  308. package/dist/utils/self-wiring.js.map +0 -1
  309. package/dist/utils/state.d.ts +0 -106
  310. package/dist/utils/state.d.ts.map +0 -1
  311. package/dist/utils/state.js +0 -166
  312. package/dist/utils/state.js.map +0 -1
  313. package/dist/utils/status.d.ts +0 -47
  314. package/dist/utils/status.d.ts.map +0 -1
  315. package/dist/utils/status.js +0 -147
  316. package/dist/utils/status.js.map +0 -1
  317. package/dist/utils/ttl-map.d.ts +0 -17
  318. package/dist/utils/ttl-map.d.ts.map +0 -1
  319. package/dist/utils/ttl-map.js +0 -67
  320. package/dist/utils/ttl-map.js.map +0 -1
@@ -1,170 +0,0 @@
1
- # MAFW Desktop Inspector Skill
2
-
3
- ## 角色
4
-
5
- Desktop Inspector — 通过 6 个 CLI 工具操作 MAFW Desktop GUI,截取视觉反馈,验证 UI 是否达到预期效果。
6
-
7
- ## 入口条件
8
-
9
- - MAFW Desktop 应用正在运行(Electron 窗口可见)
10
- - Gateway 已连接(检查 `mafw_list_automation_rules` 可用)
11
- - `~/.config/mafw/desktop-automation.json` 存在(Desktop 启动时自动写入)
12
- - 调用 `mafw_desktop_*` 之前无需额外初始化
13
-
14
- ## 可用工具(6 个)
15
-
16
- | 工具 | 层 | 用途 | 返回 |
17
- |------|----|------|------|
18
- | `mafw_desktop_screenshot(selector?)` | 1 | 截取全屏或指定区域,保存 PNG | `{ filePath, width, height }` |
19
- | `mafw_desktop_get_ui_state()` | 1 | 获取当前 UI 结构和可见元素 | `{ tab, elements[], dimensions, scrollPos }` |
20
- | `mafw_desktop_navigate(tab)` | 2 | 切换到指定标签页 | `{ ok, currentTab }` |
21
- | `mafw_desktop_click(selector)` | 2 | 用 CSS 选择器点击元素 | `{ clicked, element: {tag,text,bbox} }` |
22
- | `mafw_desktop_type(selector, text)` | 2 | 向输入框填写文字 | `{ typed, value }` |
23
- | `mafw_desktop_scroll(direction, amount?)` | 2 | 滚动页面 | `{ ok }` |
24
-
25
- ## 工作流程
26
-
27
- ### 标准检查流(最常用)
28
-
29
- ```
30
- 1. mafw_desktop_navigate({ tab: "目标页" })
31
- → 导航到目标标签页
32
- 2. mafw_desktop_get_ui_state()
33
- → 读取当前 DOM,确认关键元素存在、文本正确
34
- 3. mafw_desktop_screenshot({ selector: ".mafw-content" })
35
- → 截取证据,保存到 .mafw/screenshots/ss-xxx.png
36
- 4. 使用 Read 工具读取截图文件,进行视觉比对
37
- 5. 输出结构化检查报告
38
- ```
39
-
40
- ### 交互流(需要操作 UI 时)
41
-
42
- ```
43
- 1. navigate → get_ui_state(确认目标元素存在且可见)
44
- 2. click / type / scroll(执行操作)
45
- 3. get_ui_state(确认状态变化)
46
- 4. screenshot(保留前后对比证据)
47
- 5. 输出报告
48
- ```
49
-
50
- ### 恢复流(操作后还原状态)
51
-
52
- ```
53
- 1. get_ui_state → 记录操作前状态
54
- 2. 执行操作(click/type)
55
- 3. 截图 + 验证
56
- 4. 执行反向操作恢复原状态
57
- 5. 输出报告
58
- ```
59
-
60
- ## CSS 选择器最佳实践
61
-
62
- 优先使用以下选择器类型:
63
- - 语义标签: `button`, `h2`, `input[type=text]`
64
- - 指定 class: `.mafw-tab`, `.mafw-content`, `.mafw-rail`
65
- - 层级组合: `.automations-panel button:first-child`, `.mafw-tab:nth-child(3)`
66
- - 文本属性: `[aria-label="Automation"]`, `[title="Configuration"]`
67
- - 文本内容: `button:has-text("Enable")`(如果框架支持)
68
-
69
- 避免:
70
- - 自动生成的 hash class(如 `css-1abc2de`)
71
- - ID 选择器 `#xxx`(可能动态变化)
72
- - 过于复杂 > 4 层的嵌套选择器
73
-
74
- ## 标签页映射
75
-
76
- | Tab 值 | 对应页面 | DOM 特征 |
77
- |--------|----------|----------|
78
- | `chat` | 对话页面 | `.mafw-chat`, `.mafw-session-turn-container` |
79
- | `goals` | Goal 看板 | Dashboard KPI 卡片 + Goal 列表 |
80
- | `memory` | 记忆搜索 | 搜索框 + 记忆单元列表 |
81
- | `approvals` | 审批队列 | 待审批问题列表 |
82
- | `triage` | 问题分类 | Triage 条目列表 |
83
- | `automation` | 自动化规则 | 规则卡片(enable/disable 开关) |
84
-
85
- ## 输出报告格式
86
-
87
- 每次检查完成后,必须输出结构化报告:
88
-
89
- ```json
90
- {
91
- "page": "automation",
92
- "checks": [
93
- { "type": "element_exists", "selector": "h2", "expected": "MAFW", "actual": "MAFW", "pass": true },
94
- { "type": "element_count", "selector": ".rule-card", "expected": 4, "actual": 4, "pass": true },
95
- { "type": "text_match", "selector": ".rule-card:first-child span.status", "expected": "ON", "actual": "ON", "pass": true },
96
- { "type": "screenshot", "filePath": ".mafw/screenshots/screenshot-xxx.png", "pass": true }
97
- ],
98
- "screenshots": [".mafw/screenshots/screenshot-xxx.png"],
99
- "verdict": "PASS",
100
- "issues": []
101
- }
102
- ```
103
-
104
- ## 约束
105
-
106
- - **不要连续快速截图**:每次截图间隔至少 500ms,等渲染完成
107
- - **click 前必须 get_ui_state**:确认目标元素在当前视口内,且 boundingBox 有合理值
108
- - **navigate 后等待 300ms**:等 SolidJS 响应式渲染完成再执行下一步
109
- - **screenshot 返回的是文件路径**:需要用 Read 工具读取截图文件进行视觉验证
110
- - **type 仅对 INPUT/TEXTAREA/contentEditable 生效**:对其他元素使用 type 会返回错误
111
- - **scroll 对 .mafw-content 容器最有效**:这是主内容区的滚动容器
112
- - **click 后必须 verify**:调用 get_ui_state 确认 click 产生了预期效果
113
- - **所有操作有 10 秒超时**:如果 Desktop 无响应,调用会超时报错
114
-
115
- ## 典型场景
116
-
117
- ### 场景 1:验证自动化规则列表渲染正确
118
-
119
- ```
120
- 1. mafw_desktop_navigate({ tab: "automation" })
121
- 2. mafw_desktop_get_ui_state()
122
- → 检查 elements 中是否包含预期规则名
123
- 3. mafw_desktop_screenshot({ selector: ".mafw-content" })
124
- → 保存截图到 .mafw/screenshots/ss-xxx.png
125
- 4. [Read 工具] 读取截图文件
126
- 5. 输出报告(含 veredict)
127
- ```
128
-
129
- ### 场景 2:测试规则启用/禁用开关
130
-
131
- ```
132
- 1. navigate → get_ui_state → 记录切换前状态
133
- 2. click(".rule-card:first-child button.toggle")
134
- 3. get_ui_state → 验证状态翻转(ON→OFF 或 OFF→ON)
135
- 4. screenshot → 保留证据
136
- 5. click(".rule-card:first-child button.toggle") ← 恢复原状态
137
- 6. 输出报告
138
- ```
139
-
140
- ### 场景 3:导航到多个页面,分别截图
141
-
142
- ```
143
- 1. navigate → screenshot ("chat")
144
- 2. navigate → screenshot ("memory")
145
- 3. navigate → screenshot ("automation")
146
- 4. 输出报告(含多页对比)
147
- ```
148
-
149
- ### 场景 4:填写搜索框并验证结果
150
-
151
- ```
152
- 1. navigate("memory")
153
- 2. get_ui_state() → 确认搜索框存在
154
- 3. type("input[type=search]", "memory decay")
155
- 4. 等待 500ms
156
- 5. get_ui_state() → 检查搜索结果是否出现
157
- 6. screenshot → 保留证据
158
- 7. 输出报告
159
- ```
160
-
161
- ## 自检清单
162
-
163
- 每次任务完成后必须回答:
164
- - [ ] 是否 navigate 到了正确 tab?
165
- - [ ] 是否 get_ui_state 确认了目标元素存在且可见?
166
- - [ ] 是否有 screenshot 作为视觉证据?
167
- - [ ] 输出报告是否 JSON 格式,含 veredict?
168
- - [ ] 如果执行了 click/type,是否 verify 了状态变化?
169
- - [ ] 截图文件路径是否正确(`.mafw/screenshots/`)?
170
- - [ ] 如果修改了 UI 状态(toggle),是否恢复了原状态?
@@ -1,62 +0,0 @@
1
- # MAFW Execute Agent — Execution Skill
2
-
3
- ## 角色
4
-
5
- Execute Agent — 根据 Plan 编写代码,生成 Receipt。
6
-
7
- ## 职责
8
-
9
- 1. 读取 Task 定义(验收标准 + affected_files + constraints)
10
- 2. 读取 Waves 配置
11
- 3. 准备 Goal Worktree(goal/{goalId} 分支)
12
- 4. 串行执行 Wave,Wave 内 Task 并行(各自 change/{taskId} 分支)
13
- 5. 每个 Task: 调用 LLM 编写代码,git commit
14
- 6. 合并 Wave 到 Goal 分支
15
- 7. 远程 CLI 同步(如果配置)
16
- 8. 写入 receipts/{goalId}/
17
- 9. **【显式】更新 state.json → nextAction: CREATE_REVIEW_SESSION**
18
-
19
- ## 输入
20
-
21
- - waves.json(Plan 产出)
22
- - tasks/{id}.md(Task 定义)
23
- - L3 Constraint Δ(硬边界)
24
- - L3 Prompt Δ(认知偏差修正)
25
-
26
- ## 输出
27
-
28
- - 代码变更(Git diff on change/{taskId} 分支)
29
- - receipts/{goalId}/(执行结果)
30
- - state/{goalId}.json(nextAction: CREATE_REVIEW_SESSION)
31
-
32
- ## 核心约束
33
-
34
- - 验收标准必须满足,否则标记为 FAILED
35
- - 遵守 L3 硬约束,违反必须标记为 DEGRADED
36
- - 每个功能必须有边界测试(空值、超长输入、特殊字符、时序攻击)
37
- - 加密配置必须引用 AGENTS.md,禁止直觉选择
38
- - 测试覆盖率 < 80% 且非 prototype/spike → 标记 DEGRADED
39
- - 每个 Task 使用独立 Git 分支(change/{taskId})
40
- - Wave 间串行,Wave 内并行
41
-
42
- ## 状态更新
43
-
44
- Skill Entry 函数末尾必须显式调用:
45
- ```typescript
46
- await transitionPhase(goalId, {
47
- from: 'EXECUTING',
48
- to: 'EXECUTING_COMPLETE',
49
- nextAction: 'CREATE_REVIEW_SESSION',
50
- artifacts: { execute: 'receipts/{goalId}/' }
51
- });
52
- ```
53
-
54
- ## 自检清单
55
-
56
- 执行完成后,必须回答:
57
- 1. [ ] 验收标准是否全部满足?
58
- 2. [ ] 是否有边界测试?
59
- 3. [ ] 是否遵守了 L3 硬约束?
60
- 4. [ ] 覆盖率是否达标?
61
- 5. [ ] 是否有 lint 错误?
62
- 6. [ ] **是否显式更新了 state.json?**
@@ -1,87 +0,0 @@
1
- ---
2
- name: mafw-gateway-restart
3
- description: 当需要重启或自更新 MAFW Gateway 时使用。覆盖完整流程:判断是否需要重启、修改代码、构建门禁、写重启令牌、goal state 续跑标记、等待更新完成通知。触发词:重启 gateway / 更新 gateway / 让改动生效 / self-update。
4
- ---
5
-
6
- # MAFW Gateway 重启 / 自更新 Skill
7
-
8
- ## 第一步:判断是否需要重启
9
-
10
- | 改动对象 | 是否需要重启 |
11
- |---|---|
12
- | `.mafw/config.yaml`(搜索/记忆/成本参数等) | ❌ 热生效(gateway watch config 文件,~300ms 内自动 reload;server/paths 段会提示"需重启") |
13
- | `.mafw/automations/*.json` | ❌ 热生效(规则自动 reload) |
14
- | `gateway/src/**`、`gateway/package.json` | ✅ **必须走本 Skill 的重启流程** |
15
- | `.mafw/constraints.json` 等运行期读取文件 | ❌ 每次请求读取 |
16
-
17
- 只有"gateway 代码/依赖"改动才需要重启。改配置类文件直接写即可,**不要**为此重启。
18
-
19
- ## 流程(七步)
20
-
21
- ### ① 修改代码
22
- 改动面限定:`gateway/src/**`、`gateway/package.json`。所有文件写入/命令执行都会走 MAFW 审批(PermissionCard),无需额外申请。
23
-
24
- > **注意**:manager agent 的 `edit`/`write`/`apply_patch` 工具已被权限配置禁用(与 plan 对齐)。**本流程的全部文件操作(改码、写令牌)必须用 bash 命令执行**(bash 默认允许)。gateway 的 MCP 工具(`mafw_*`)不受影响,可正常使用。
25
-
26
- ### ② 构建(必须通过)
27
- ```powershell
28
- cd gateway; npm run build
29
- ```
30
- - 构建失败 → 修复后重试,**禁止**继续后续步骤(旧 gateway 继续运行不受影响)
31
- - 建议先 `git add -A; git commit -m "..."` 留下回滚点(回滚:`git reset --hard <commit>`)
32
-
33
- ### ③ 写重启令牌(原子写,先 .tmp 再 rename)
34
- ```powershell
35
- $token = @{
36
- target = "gateway"
37
- action = "update"
38
- reason = "<简要说明>"
39
- requestedAt = (Get-Date).ToString("o")
40
- delayMs = 5000
41
- commit = (git rev-parse --short HEAD 2>$null)
42
- } | ConvertTo-Json
43
- $dst = "$env:USERPROFILE\.mafw\pending-restart.json"
44
- New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.mafw" | Out-Null
45
- Set-Content -Path "$dst.tmp" -Value $token -Encoding UTF8
46
- Rename-Item "$dst.tmp" $dst -Force
47
- ```
48
- - `action` 必须是 `update`(gateway 自行 build)或 `restart`(已手动 build,仅重启)
49
- - `delayMs` 默认 5000:给 agent 时间把回复发给用户,重启发生在回复送达后
50
- - gateway 每 2s 轮询该文件;发现后先删除(防循环),按 delayMs 延迟后自举重启
51
-
52
- ### ④ goal state 写续跑标记
53
- ```powershell
54
- # 用 mafw_update_state 工具或直接更新 state/{goalId}.json 的 nextAction,
55
- # 让重启后恢复的 agent 知道下一步做什么
56
- ```
57
-
58
- ### ⑤ 回复用户
59
- "已修改 X 并请求重启 gateway,约 5 秒后生效,完成后我会在本会话继续。"
60
-
61
- ### ⑥ 等待更新完成通知
62
- 重启完成后,新 gateway 会向**本会话**注入一条 `[MAFW SYSTEM] Gateway 自更新已完成...` 消息(触发新一轮 turn):
63
- - 收到通知 → 读 goal state → 继续执行 `nextAction`
64
- - **兜底**:若 60 秒内未收到通知,检查 `$env:USERPROFILE\.mafw\last-restart.json`:
65
- - `notified: true` → 更新已完成,正常继续
66
- - `notifyFailed: true` / 文件不存在 → 手动确认 gateway 健康(`Invoke-WebRequest http://127.0.0.1:3000/health`)后继续
67
-
68
- ### ⑦ 继续执行
69
- 读 goal state,执行 `nextAction`,向用户汇报结果。
70
-
71
- ## 等价路径
72
- - 用户/其他会话也可执行 `mafw update`(CLI 写同一令牌;无会话上下文,通知走 manager 会话兜底)
73
-
74
- ## 错误排查
75
-
76
- | 现象 | 处理 |
77
- |---|---|
78
- | build 失败 | 修复代码重新 build;gateway 不受影响继续运行 |
79
- | 写令牌后无反应(>10s) | 检查 `$env:USERPROFILE\.mafw\pending-restart.json` 是否还在(gateway 未删=未处理);`mafw status` 确认 gateway 在跑;令牌内容是否正确(target/action) |
80
- | 重启后起不来 | gateway 会先 spawn 新进程并确认存活才退出旧进程;新进程 2s 内崩溃则旧进程取消重启继续服务。检查 `~/.mafw/logs/mafw.log` 的 `[SelfUpdate]`/`[Scheduler]` 日志 |
81
- | 令牌是坏 JSON | gateway 连续 5 次解析失败后删除并记录错误(不重启) |
82
- | 通知没收到 | 按第⑥步兜底检查 last-restart.json;gateway 健康检查 |
83
-
84
- ## 非目标
85
- - 不修改 `package.json` version(版本记录用 commit+时间戳,见 last-restart.json)
86
- - dev 模式(ts-node)下自举以 dist 产物为准;开发调试请手动重启
87
- - 不支持 git 远端拉取(当前无 remote)
@@ -1,38 +0,0 @@
1
- # MAFW GitHub Scanner Skill
2
-
3
- ## 职责
4
-
5
- 扫描 GitHub 仓库,发现需要 Agent 处理的工作。
6
-
7
- ## 工作流程
8
-
9
- 1. 读取 args.repo 确定目标仓库
10
- 2. 读取 args.filters 确定扫描范围
11
- 3. 调用 GitHub API 获取数据
12
- 4. 返回 findings 列表
13
-
14
- ## 输入
15
-
16
- ```json
17
- {
18
- "repo": "my-org/myapp",
19
- "filters": ["open_prs", "pending_reviews", "ci_failed"]
20
- }
21
- ```
22
-
23
- ## 输出
24
-
25
- ```json
26
- {
27
- "findings": [
28
- { "type": "open_pr", "count": 3 },
29
- { "type": "ci_failed", "count": 1 }
30
- ]
31
- }
32
- ```
33
-
34
- ## 约束
35
-
36
- - 需要 GitHub token(从环境变量读取)
37
- - 不直接创建 Goal,只返回 findings
38
- - Automation Engine 决定如何处理 findings
@@ -1,76 +0,0 @@
1
- # MAFW Goal Agent — Interview Skill
2
-
3
- ## 角色
4
-
5
- Goal Agent — 在 Phase 接力启动前与用户进行 Interview,确立目标、指标、边界。
6
-
7
- ## 职责
8
-
9
- 1. 追问用户,明确 Goal 的具体需求
10
- 2. 确立可量化的指标(metrics)
11
- 3. 确立不可逾越的边界(boundaries)
12
- 4. 输出 Goal Charter(goals/{id}.md)
13
- 5. 写入请求文件(requests/{id}.json)
14
- 6. **初始化状态机(state/{id}.json → nextAction: CREATE_PLAN_SESSION)**
15
- 7. 等待用户确认(说"确认")
16
-
17
- ## 输入
18
-
19
- 用户输入的初始 Goal 描述,如:"实现用户认证系统"
20
-
21
- ## 输出
22
-
23
- ```markdown
24
- # Goal Charter — 用户认证系统
25
-
26
- > Goal ID: 001-auth
27
- > 创建时间: 2026-06-21T15:00:00Z
28
-
29
- ## 目标
30
-
31
- 实现用户认证系统,包含 JWT 登录、注册、refresh token 功能。
32
-
33
- ## 指标(必须可量化)
34
-
35
- | 指标 | 目标值 | 验证方式 |
36
- |------|--------|----------|
37
- | 测试覆盖率 | >= 80% | jest --coverage |
38
- | lint 错误 | 0 | eslint |
39
- | 接口响应时间 | < 200ms | 集成测试 |
40
-
41
- ## 边界(不可逾越)
42
-
43
- - [ ] 禁止使用内存 Map 存储 refresh token(生产环境必须用 Redis)
44
- - [ ] 所有 JWT 必须使用 RS256 算法(AGENTS.md §3.1)
45
- - [ ] 密码必须 bcrypt 加密,禁止明文存储
46
-
47
- ## 范围
48
-
49
- - 包含:登录 API、注册 API、refresh token API、JWT 中间件
50
- - 不包含:前端 UI、OAuth 第三方登录、权限管理(RBAC)
51
-
52
- ## 风险
53
-
54
- | 风险 | 概率 | 影响 | 缓解 |
55
- |------|------|------|------|
56
- | JWT 算法选择错误 | 中 | 高 | 强制引用 AGENTS.md §3.1 |
57
- | 覆盖率不足 | 高 | 中 | 自动标记 DEGRADED |
58
-
59
- ## 确认
60
-
61
- 用户确认后,此 Goal Charter 锁定,Scheduler 自动创建 Plan Session。
62
- ```
63
-
64
- ## 追问模板
65
-
66
- 1. 目标具体化:"实现用户认证系统" → 需要哪些功能?登录/注册/refresh token?
67
- 2. 指标量化:测试覆盖率期望多少?lint 标准?
68
- 3. 边界明确:是否有特定算法要求?是否有外部依赖限制?
69
- 4. 范围排除:明确哪些功能不在本次范围内。
70
-
71
- ## 约束
72
-
73
- - 用户未确认前,不得写入 state.json
74
- - 指标必须可量化,不可模糊(如"尽量好"不可接受)
75
- - 边界必须引用 AGENTS.md 条款(如存在)
76
- - 必须初始化 state.json(nextAction: CREATE_PLAN_SESSION)
@@ -1,68 +0,0 @@
1
- # MAFW Interview Skill — Goal Interview Agent
2
-
3
- ## 职责
4
-
5
- 在 Phase 接力启动前与用户进行 Interview,确立目标、指标、边界。
6
-
7
- ## 工作流程
8
-
9
- 1. 追问用户,明确 Goal 的具体需求(3-5 个问题)
10
- 2. 确立可量化的指标(metrics)
11
- 3. 确立不可逾越的边界(boundaries)
12
- 4. 输出 Goal Charter(goals/{id}.md)
13
- 5. 写入请求文件(requests/{id}.json)
14
- 6. 初始化状态机(state/{id}.json → nextAction: CREATE_PLAN_SESSION)
15
- 7. 等待用户确认(说"确认")
16
-
17
- ## 输出格式
18
-
19
- ```markdown
20
- # Goal Charter — {title}
21
-
22
- > Goal ID: {goalId}
23
- > 创建时间: {createdAt}
24
-
25
- ## 目标
26
-
27
- {description}
28
-
29
- ## 指标(必须可量化)
30
-
31
- | 指标 | 目标值 | 验证方式 |
32
- |------|--------|----------|
33
- | test_coverage | >= 80% | jest --coverage |
34
-
35
- ## 边界(不可逾越)
36
-
37
- - [ ] 禁止使用内存 Map 存储 refresh token
38
- - [ ] 所有 JWT 必须使用 RS256 算法
39
-
40
- ## 范围
41
-
42
- - 包含:...
43
- - 不包含:...
44
-
45
- ## 风险
46
-
47
- | 风险 | 概率 | 影响 | 缓解 |
48
- |------|------|------|------|
49
- | ... | 中 | 高 | ... |
50
-
51
- ## 确认
52
-
53
- 用户确认后,此 Goal Charter 锁定,Gateway 自动创建 Plan Session。
54
- ```
55
-
56
- ## 约束
57
-
58
- - 用户未确认前,不得写入 state.json
59
- - 指标必须可量化,不可模糊(如"尽量好"不可接受)
60
- - 边界必须引用 AGENTS.md 条款(如存在)
61
- - 必须初始化 state.json(nextAction: CREATE_PLAN_SESSION)
62
-
63
- ## 状态更新
64
-
65
- 用户确认后,写入:
66
- - goals/{goalId}.md
67
- - requests/{goalId}.json
68
- - state/{goalId}.json(nextAction: CREATE_PLAN_SESSION)
@@ -1,65 +0,0 @@
1
- # MAFW Memory Extractor — Δ Extraction Skill
2
-
3
- ## 角色
4
-
5
- Memory Extractor Agent — 从 Review 失败中提取参数化记忆(Δ)。
6
-
7
- ## 职责
8
-
9
- 1. 读取 L2 压缩后的 YAML lesson
10
- 2. 分析 Review 报告中的失败原因
11
- 3. 从 AGENTS.md 检测规范引用
12
- 4. 提取 0~2 个 Δ(Constraint / Prompt / Pattern)
13
- 5. 自检:是否可验证、是否过于刚性、是否重复
14
-
15
- ## 输入
16
-
17
- - L2 YAML Lesson(compacted)
18
- - Review 报告(verdict=fail)
19
- - AGENTS.md(检测规范引用)
20
-
21
- ## 输出
22
-
23
- 0~2 个 Δ yaml,例如:
24
-
25
- ```yaml
26
- id: "review-coverage-v2"
27
- scope: ["plan", "execute"]
28
- enforcement: "hard"
29
- trigger_condition:
30
- domain: ["auth", "api"]
31
- task_type: ["coding", "test"]
32
- loop_stage: ["planning", "executing"]
33
- rule: "测试覆盖率低于 80% 的代码必须标记为 DEGRADED,除非 Task 标签包含 'prototype' 或 'spike'。"
34
- origin:
35
- goal: "001-auth"
36
- loop: 1
37
- task: "001-2-jwt-config"
38
- lesson_anchor: "lessons/001-auth.md#L12"
39
- created_at: "2026-06-21T15:00:00Z"
40
- energy_score: 0.65
41
- verified: false
42
- priority: 9
43
- ```
44
-
45
- ## 提取规则
46
-
47
- 1. **Constraint Δ**:从 violation.rule 提取,必须可验证(布尔判断)
48
- 2. **Prompt Δ**:从 lesson 中的检查清单提取,软提示
49
- 3. **Pattern Δ**:仅在特定 domain(auth/api/user-system)的 Wave 分解模式提取
50
-
51
- ## 核心约束
52
-
53
- - 只输出 `enforcement: hard` 的布尔约束(可验证)
54
- - 禁止软性建议(如"建议"、"可以考虑")
55
- - 必须标注 origin_loop 和 origin_task
56
- - 最多 2 个 Δ,避免过度约束
57
- - 必须与 AGENTS.md 已有条款对比,避免重复
58
-
59
- ## 自检清单
60
-
61
- 提取完成后,必须回答:
62
- 1. [ ] 这个 Δ 是否可验证?(是/否 能判断)
63
- 2. [ ] 是否过于刚性?(会不会导致误伤)
64
- 3. [ ] 是否与已有 Δ 重复?
65
- 4. [ ] 是否标注了 origin_loop 和 origin_task?
@@ -1,58 +0,0 @@
1
- # MAFW Plan Agent — Planning Skill
2
-
3
- ## 角色
4
-
5
- Plan Agent — 根据 Goal Charter 生成详细的 Waves 和 Tasks 执行计划。
6
-
7
- ## 职责
8
-
9
- 1. 读取 Goal Charter (L1)
10
- 2. 读取相关 Lessons (L2 检索)
11
- 3. 加载 Parametric Δ (L3 注入)
12
- 4. 拼接完整 Prompt
13
- 5. 调用 LLM 生成 Plan
14
- 6. 解析回复为 waves.json
15
- 7. 写入 tasks/{id}.md
16
- 8. **【显式】更新 state.json → nextAction: CREATE_EXECUTE_SESSION**
17
-
18
- ## 输入
19
-
20
- - goals/{goalId}.md (Goal Charter)
21
- - lessons/ (L2 检索结果)
22
- - parametric/ Δ (L3 注入)
23
- - state/{goalId}.json (当前 loop)
24
-
25
- ## 输出
26
-
27
- - waves.json (Plan 产出)
28
- - tasks/{id}.md (Task 定义)
29
- - state/{goalId}.json (nextAction: CREATE_EXECUTE_SESSION)
30
-
31
- ## 核心约束
32
-
33
- - Plan 必须包含可验收的指标
34
- - 每个 Wave 的 Task 必须标注 affected_files
35
- - 必须考虑 L3 Δ 约束(如覆盖率检查清单)
36
- - 多 Loop 时,必须读取上一 Loop 的 Lesson
37
-
38
- ## 状态更新
39
-
40
- Skill Entry 函数末尾必须显式调用:
41
- ```typescript
42
- await transitionPhase(goalId, {
43
- from: 'PLANNING',
44
- to: 'PLANNING_COMPLETE',
45
- nextAction: 'CREATE_EXECUTE_SESSION',
46
- artifacts: { plan: 'waves.json' }
47
- });
48
- ```
49
-
50
- ## 自检清单
51
-
52
- Plan 完成后,必须回答:
53
- 1. [ ] 是否读取了 Goal Charter?
54
- 2. [ ] 是否加载了相关 Lessons?
55
- 3. [ ] 是否注入了 Parametric Δ?
56
- 4. [ ] 是否生成了 waves.json?
57
- 5. [ ] 是否写入 tasks/{id}.md?
58
- 6. [ ] **是否显式更新了 state.json?**