buildanything 1.8.0 → 2.0.0

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 (458) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +9 -3
  3. package/CHANGELOG.md +57 -0
  4. package/README.md +2 -2
  5. package/agents/a11y-architect.md +166 -0
  6. package/agents/business-model.md +80 -29
  7. package/agents/code-architect.md +75 -0
  8. package/agents/code-reviewer.md +255 -0
  9. package/agents/code-simplifier.md +64 -0
  10. package/agents/design-brand-guardian.md +293 -53
  11. package/agents/design-critic.md +139 -0
  12. package/agents/design-inclusive-visuals-specialist.md +6 -19
  13. package/agents/design-ui-designer.md +335 -56
  14. package/agents/design-ux-architect.md +403 -55
  15. package/agents/design-ux-researcher.md +264 -49
  16. package/agents/engineering-ai-engineer.md +26 -36
  17. package/agents/engineering-backend-architect.md +185 -36
  18. package/agents/engineering-data-engineer.md +225 -43
  19. package/agents/engineering-devops-automator.md +227 -74
  20. package/agents/engineering-frontend-developer.md +210 -34
  21. package/agents/engineering-mobile-app-builder.md +6 -1
  22. package/agents/engineering-rapid-prototyper.md +30 -9
  23. package/agents/engineering-security-engineer.md +263 -61
  24. package/agents/engineering-senior-developer.md +128 -19
  25. package/agents/engineering-sre.md +84 -0
  26. package/agents/engineering-technical-writer.md +285 -41
  27. package/agents/feature-intel.md +110 -0
  28. package/agents/ios-app-review-guardian.md +19 -2
  29. package/agents/ios-foundation-models-specialist.md +20 -2
  30. package/agents/ios-storekit-specialist.md +9 -2
  31. package/agents/ios-swift-architect.md +28 -1
  32. package/agents/ios-swift-search.md +8 -1
  33. package/agents/ios-swift-ui-design.md +33 -1
  34. package/agents/marketing-app-store-optimizer.md +246 -64
  35. package/agents/planner.md +216 -0
  36. package/agents/pr-test-analyzer.md +63 -0
  37. package/agents/product-feedback-synthesizer.md +8 -2
  38. package/agents/refactor-cleaner.md +102 -0
  39. package/agents/security-reviewer.md +128 -0
  40. package/agents/silent-failure-hunter.md +54 -0
  41. package/agents/swift-build-resolver.md +119 -0
  42. package/agents/swift-reviewer.md +112 -0
  43. package/agents/tech-feasibility.md +21 -1
  44. package/agents/testing-api-tester.md +236 -59
  45. package/agents/testing-evidence-collector.md +26 -1
  46. package/agents/testing-performance-benchmarker.md +21 -1
  47. package/agents/testing-reality-checker.md +6 -1
  48. package/agents/visual-research.md +116 -0
  49. package/bin/adapters/cycle-counter-tool.ts +155 -0
  50. package/bin/adapters/scribe-tool.ts +71 -0
  51. package/bin/adapters/state-save-tool.ts +130 -0
  52. package/bin/adapters/write-lease-tool.ts +127 -0
  53. package/bin/buildanything-runtime.js +15 -0
  54. package/bin/buildanything-runtime.ts +328 -0
  55. package/bin/setup.js +83 -8
  56. package/commands/add-feature.md +2 -0
  57. package/commands/build.md +782 -266
  58. package/commands/fix.md +1 -1
  59. package/commands/self-check.md +121 -0
  60. package/commands/setup.md +50 -9
  61. package/commands/ux-review.md +2 -2
  62. package/commands/verify.md +6 -9
  63. package/docs/migration/agents.yaml +729 -0
  64. package/docs/migration/phase-graph.yaml +1088 -0
  65. package/docs/migration/sdk-host-compat.md +18 -0
  66. package/hooks/compile-writer-owner-cache.ts +171 -0
  67. package/hooks/hooks.json +36 -0
  68. package/hooks/pre-tool-use +19 -0
  69. package/hooks/pre-tool-use.ts +776 -0
  70. package/hooks/record-mode-transitions.ts +178 -0
  71. package/hooks/session-start +71 -1
  72. package/hooks/subagent-start +17 -0
  73. package/hooks/subagent-start.ts +471 -0
  74. package/hooks/subagent-stop +17 -0
  75. package/hooks/subagent-stop.ts +153 -0
  76. package/package.json +24 -4
  77. package/protocols/architecture-schema.md +171 -0
  78. package/protocols/decision-log.md +131 -0
  79. package/protocols/ios-context.md +10 -11
  80. package/protocols/ios-phase-branches.md +208 -33
  81. package/protocols/launch-readiness.md +258 -0
  82. package/protocols/metric-loop.md +62 -2
  83. package/protocols/smoke-test.md +9 -1
  84. package/protocols/state-schema.json +388 -0
  85. package/protocols/state-schema.md +172 -0
  86. package/protocols/verify.md +62 -2
  87. package/protocols/visual-dna.md +185 -0
  88. package/protocols/web-phase-branches.md +222 -72
  89. package/skills/ios/_VENDORED.md +2 -0
  90. package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
  91. package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
  92. package/skills/ios/hig-components-content/SKILL.md +86 -0
  93. package/skills/ios/hig-components-content/references/activity-views.md +79 -0
  94. package/skills/ios/hig-components-content/references/charts.md +180 -0
  95. package/skills/ios/hig-components-content/references/collections.md +48 -0
  96. package/skills/ios/hig-components-content/references/color-wells.md +42 -0
  97. package/skills/ios/hig-components-content/references/image-views.md +82 -0
  98. package/skills/ios/hig-components-content/references/image-wells.md +34 -0
  99. package/skills/ios/hig-components-content/references/lockups.md +78 -0
  100. package/skills/ios/hig-components-content/references/web-views.md +36 -0
  101. package/skills/ios/hig-components-controls/SKILL.md +88 -0
  102. package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
  103. package/skills/ios/hig-components-controls/references/controls.md +112 -0
  104. package/skills/ios/hig-components-controls/references/gauges.md +74 -0
  105. package/skills/ios/hig-components-controls/references/labels.md +92 -0
  106. package/skills/ios/hig-components-controls/references/pickers.md +128 -0
  107. package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
  108. package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
  109. package/skills/ios/hig-components-controls/references/sliders.md +92 -0
  110. package/skills/ios/hig-components-controls/references/steppers.md +40 -0
  111. package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
  112. package/skills/ios/hig-components-controls/references/text-views.md +56 -0
  113. package/skills/ios/hig-components-controls/references/toggles.md +127 -0
  114. package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
  115. package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
  116. package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
  117. package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
  118. package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
  119. package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
  120. package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
  121. package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
  122. package/skills/ios/hig-components-layout/SKILL.md +99 -0
  123. package/skills/ios/hig-components-layout/references/boxes.md +48 -0
  124. package/skills/ios/hig-components-layout/references/column-views.md +44 -0
  125. package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
  126. package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
  127. package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
  128. package/skills/ios/hig-components-layout/references/panels.md +75 -0
  129. package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
  130. package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
  131. package/skills/ios/hig-components-layout/references/split-views.md +110 -0
  132. package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
  133. package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
  134. package/skills/ios/hig-components-layout/references/windows.md +188 -0
  135. package/skills/ios/hig-components-menus/SKILL.md +81 -0
  136. package/skills/ios/hig-components-menus/references/action-button.md +61 -0
  137. package/skills/ios/hig-components-menus/references/buttons.md +261 -0
  138. package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
  139. package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
  140. package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
  141. package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
  142. package/skills/ios/hig-components-menus/references/menus.md +171 -0
  143. package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
  144. package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
  145. package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
  146. package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
  147. package/skills/ios/hig-components-search/SKILL.md +68 -0
  148. package/skills/ios/hig-components-search/references/page-controls.md +120 -0
  149. package/skills/ios/hig-components-search/references/path-controls.md +40 -0
  150. package/skills/ios/hig-components-search/references/search-fields.md +189 -0
  151. package/skills/ios/hig-components-status/SKILL.md +80 -0
  152. package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
  153. package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
  154. package/skills/ios/hig-components-status/references/status-bars.md +38 -0
  155. package/skills/ios/hig-components-system/SKILL.md +88 -0
  156. package/skills/ios/hig-components-system/references/app-clips.md +387 -0
  157. package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
  158. package/skills/ios/hig-components-system/references/complications.md +425 -0
  159. package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
  160. package/skills/ios/hig-components-system/references/live-activities.md +442 -0
  161. package/skills/ios/hig-components-system/references/notifications.md +153 -0
  162. package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
  163. package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
  164. package/skills/ios/hig-components-system/references/widgets.md +517 -0
  165. package/skills/ios/hig-foundations/SKILL.md +98 -0
  166. package/skills/ios/hig-foundations/references/accessibility.md +291 -0
  167. package/skills/ios/hig-foundations/references/app-icons.md +210 -0
  168. package/skills/ios/hig-foundations/references/branding.md +44 -0
  169. package/skills/ios/hig-foundations/references/color.md +274 -0
  170. package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
  171. package/skills/ios/hig-foundations/references/icons.md +263 -0
  172. package/skills/ios/hig-foundations/references/images.md +176 -0
  173. package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
  174. package/skills/ios/hig-foundations/references/inclusion.md +189 -0
  175. package/skills/ios/hig-foundations/references/layout.md +425 -0
  176. package/skills/ios/hig-foundations/references/materials.md +238 -0
  177. package/skills/ios/hig-foundations/references/motion.md +103 -0
  178. package/skills/ios/hig-foundations/references/privacy.md +231 -0
  179. package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
  180. package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
  181. package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
  182. package/skills/ios/hig-foundations/references/typography.md +1146 -0
  183. package/skills/ios/hig-foundations/references/writing.md +91 -0
  184. package/skills/ios/hig-inputs/SKILL.md +94 -0
  185. package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
  186. package/skills/ios/hig-inputs/references/camera-control.md +107 -0
  187. package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
  188. package/skills/ios/hig-inputs/references/eyes.md +120 -0
  189. package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
  190. package/skills/ios/hig-inputs/references/game-controls.md +156 -0
  191. package/skills/ios/hig-inputs/references/gestures.md +208 -0
  192. package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
  193. package/skills/ios/hig-inputs/references/keyboards.md +234 -0
  194. package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
  195. package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
  196. package/skills/ios/hig-inputs/references/remotes.md +67 -0
  197. package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
  198. package/skills/ios/hig-patterns/SKILL.md +104 -0
  199. package/skills/ios/hig-patterns/references/charting-data.md +81 -0
  200. package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
  201. package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
  202. package/skills/ios/hig-patterns/references/entering-data.md +69 -0
  203. package/skills/ios/hig-patterns/references/feedback.md +67 -0
  204. package/skills/ios/hig-patterns/references/file-management.md +135 -0
  205. package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
  206. package/skills/ios/hig-patterns/references/launching.md +81 -0
  207. package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
  208. package/skills/ios/hig-patterns/references/loading.md +59 -0
  209. package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
  210. package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
  211. package/skills/ios/hig-patterns/references/modality.md +82 -0
  212. package/skills/ios/hig-patterns/references/multitasking.md +131 -0
  213. package/skills/ios/hig-patterns/references/offering-help.md +117 -0
  214. package/skills/ios/hig-patterns/references/onboarding.md +69 -0
  215. package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
  216. package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
  217. package/skills/ios/hig-patterns/references/playing-video.md +180 -0
  218. package/skills/ios/hig-patterns/references/printing.md +50 -0
  219. package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
  220. package/skills/ios/hig-patterns/references/searching.md +70 -0
  221. package/skills/ios/hig-patterns/references/settings.md +84 -0
  222. package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
  223. package/skills/ios/hig-patterns/references/workouts.md +76 -0
  224. package/skills/ios/hig-platforms/SKILL.md +84 -0
  225. package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
  226. package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
  227. package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
  228. package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
  229. package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
  230. package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
  231. package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
  232. package/skills/ios/hig-project-context/SKILL.md +133 -0
  233. package/skills/ios/hig-technologies/SKILL.md +107 -0
  234. package/skills/ios/hig-technologies/references/airplay.md +125 -0
  235. package/skills/ios/hig-technologies/references/always-on.md +62 -0
  236. package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
  237. package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
  238. package/skills/ios/hig-technologies/references/carekit.md +224 -0
  239. package/skills/ios/hig-technologies/references/carplay.md +119 -0
  240. package/skills/ios/hig-technologies/references/game-center.md +343 -0
  241. package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
  242. package/skills/ios/hig-technologies/references/healthkit.md +120 -0
  243. package/skills/ios/hig-technologies/references/homekit.md +343 -0
  244. package/skills/ios/hig-technologies/references/icloud.md +52 -0
  245. package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
  246. package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
  247. package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
  248. package/skills/ios/hig-technologies/references/live-photos.md +54 -0
  249. package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
  250. package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
  251. package/skills/ios/hig-technologies/references/maps.md +221 -0
  252. package/skills/ios/hig-technologies/references/nfc.md +51 -0
  253. package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
  254. package/skills/ios/hig-technologies/references/researchkit.md +134 -0
  255. package/skills/ios/hig-technologies/references/shareplay.md +142 -0
  256. package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
  257. package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
  258. package/skills/ios/hig-technologies/references/siri.md +523 -0
  259. package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
  260. package/skills/ios/hig-technologies/references/voiceover.md +90 -0
  261. package/skills/ios/hig-technologies/references/wallet.md +420 -0
  262. package/skills/ios/ios-bootstrap/SKILL.md +16 -7
  263. package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
  264. package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
  265. package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
  266. package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
  267. package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
  268. package/skills/web/accessibility/SKILL.md +146 -0
  269. package/skills/web/aceternity-ui/SKILL.md +719 -0
  270. package/skills/web/aceternity-ui/metadata.json +10 -0
  271. package/skills/web/api-design/SKILL.md +523 -0
  272. package/skills/web/chart-accessibility/SKILL.md +332 -0
  273. package/skills/web/composition-patterns/AGENTS.md +946 -0
  274. package/skills/web/composition-patterns/README.md +60 -0
  275. package/skills/web/composition-patterns/SKILL.md +89 -0
  276. package/skills/web/composition-patterns/metadata.json +11 -0
  277. package/skills/web/composition-patterns/rules/_sections.md +29 -0
  278. package/skills/web/composition-patterns/rules/_template.md +24 -0
  279. package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  280. package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
  281. package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  282. package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  283. package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
  284. package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
  285. package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
  286. package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
  287. package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
  288. package/skills/web/database-migrations/SKILL.md +429 -0
  289. package/skills/web/deployment-patterns/SKILL.md +427 -0
  290. package/skills/web/docker-patterns/SKILL.md +364 -0
  291. package/skills/web/e2e-testing/SKILL.md +326 -0
  292. package/skills/web/lighthouse-ci/SKILL.md +361 -0
  293. package/skills/web/mcp-server-patterns/SKILL.md +69 -0
  294. package/skills/web/next-best-practices/SKILL.md +153 -0
  295. package/skills/web/next-best-practices/async-patterns.md +87 -0
  296. package/skills/web/next-best-practices/bundling.md +180 -0
  297. package/skills/web/next-best-practices/data-patterns.md +297 -0
  298. package/skills/web/next-best-practices/debug-tricks.md +105 -0
  299. package/skills/web/next-best-practices/directives.md +73 -0
  300. package/skills/web/next-best-practices/error-handling.md +227 -0
  301. package/skills/web/next-best-practices/file-conventions.md +140 -0
  302. package/skills/web/next-best-practices/font.md +245 -0
  303. package/skills/web/next-best-practices/functions.md +108 -0
  304. package/skills/web/next-best-practices/hydration-error.md +91 -0
  305. package/skills/web/next-best-practices/image.md +173 -0
  306. package/skills/web/next-best-practices/metadata.md +301 -0
  307. package/skills/web/next-best-practices/parallel-routes.md +287 -0
  308. package/skills/web/next-best-practices/route-handlers.md +146 -0
  309. package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
  310. package/skills/web/next-best-practices/runtime-selection.md +39 -0
  311. package/skills/web/next-best-practices/scripts.md +141 -0
  312. package/skills/web/next-best-practices/self-hosting.md +371 -0
  313. package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
  314. package/skills/web/next-cache-components/SKILL.md +411 -0
  315. package/skills/web/postgres-best-practices/SKILL.md +14 -0
  316. package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
  317. package/skills/web/react-best-practices/AGENTS.md +3810 -0
  318. package/skills/web/react-best-practices/README.md +123 -0
  319. package/skills/web/react-best-practices/SKILL.md +149 -0
  320. package/skills/web/react-best-practices/metadata.json +15 -0
  321. package/skills/web/react-best-practices/rules/_sections.md +46 -0
  322. package/skills/web/react-best-practices/rules/_template.md +28 -0
  323. package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  324. package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  325. package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
  326. package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
  327. package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
  328. package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  329. package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
  330. package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
  331. package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
  332. package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  333. package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  334. package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
  335. package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
  336. package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  337. package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  338. package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
  339. package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
  340. package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
  341. package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  342. package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
  343. package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
  344. package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
  345. package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
  346. package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
  347. package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
  348. package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
  349. package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
  350. package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
  351. package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
  352. package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
  353. package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
  354. package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
  355. package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
  356. package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  357. package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
  358. package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  359. package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
  360. package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
  361. package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  362. package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  363. package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  364. package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
  365. package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  366. package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
  367. package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  368. package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
  369. package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
  370. package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  371. package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
  372. package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  373. package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  374. package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  375. package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
  376. package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  377. package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  378. package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  379. package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  380. package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
  381. package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  382. package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  383. package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
  384. package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
  385. package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
  386. package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
  387. package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
  388. package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
  389. package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
  390. package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
  391. package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  392. package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
  393. package/skills/web/seo/SKILL.md +154 -0
  394. package/skills/web/web-design-guidelines/SKILL.md +39 -0
  395. package/skills/web/zap-scan-config/SKILL.md +444 -0
  396. package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
  397. package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
  398. package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
  399. package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
  400. package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
  401. package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
  402. package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
  403. package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
  404. package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
  405. package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
  406. package/src/lrr/aggregator.ts +80 -0
  407. package/src/orchestrator/hooks/context-header.ts +95 -0
  408. package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
  409. package/src/orchestrator/hooks/token-accounting.ts +101 -0
  410. package/src/orchestrator/mcp/cycle-counter.ts +129 -0
  411. package/src/orchestrator/mcp/scribe.ts +283 -0
  412. package/src/orchestrator/mcp/state-save.ts +149 -0
  413. package/src/orchestrator/mcp/write-lease.ts +167 -0
  414. package/src/orchestrator/phase4-shared-context.ts +41 -0
  415. package/src/orchestrator/schemas/backward-edge.ts +46 -0
  416. package/agents/agentic-identity-trust.md +0 -121
  417. package/agents/data-consolidation-agent.md +0 -39
  418. package/agents/design-image-prompt-engineer.md +0 -105
  419. package/agents/design-visual-storyteller.md +0 -147
  420. package/agents/design-whimsy-injector.md +0 -89
  421. package/agents/engineering-autonomous-optimization-architect.md +0 -105
  422. package/agents/market-intel.md +0 -35
  423. package/agents/marketing-instagram-curator.md +0 -111
  424. package/agents/marketing-reddit-community-builder.md +0 -121
  425. package/agents/marketing-social-media-strategist.md +0 -74
  426. package/agents/marketing-tiktok-strategist.md +0 -123
  427. package/agents/marketing-twitter-engager.md +0 -124
  428. package/agents/marketing-wechat-official-account.md +0 -143
  429. package/agents/marketing-xiaohongshu-specialist.md +0 -136
  430. package/agents/marketing-zhihu-strategist.md +0 -160
  431. package/agents/product-behavioral-nudge-engine.md +0 -78
  432. package/agents/project-management-experiment-tracker.md +0 -102
  433. package/agents/report-distribution-agent.md +0 -43
  434. package/agents/risk-analysis.md +0 -45
  435. package/agents/sales-data-extraction-agent.md +0 -46
  436. package/agents/specialized-cultural-intelligence-strategist.md +0 -65
  437. package/agents/specialized-developer-advocate.md +0 -146
  438. package/agents/support-analytics-reporter.md +0 -133
  439. package/agents/support-executive-summary-generator.md +0 -64
  440. package/agents/support-finance-tracker.md +0 -145
  441. package/agents/support-legal-compliance-checker.md +0 -129
  442. package/agents/support-support-responder.md +0 -91
  443. package/agents/testing-accessibility-auditor.md +0 -110
  444. package/agents/testing-test-results-analyzer.md +0 -97
  445. package/agents/testing-tool-evaluator.md +0 -76
  446. package/agents/testing-workflow-optimizer.md +0 -99
  447. package/agents/user-research.md +0 -40
  448. package/protocols/brainstorm.md +0 -99
  449. package/protocols/design.md +0 -269
  450. package/protocols/planning.md +0 -87
  451. package/skills/ios/ios-hig/SKILL.md +0 -41
  452. package/skills/ios/ios-hig/references/accessibility.md +0 -81
  453. package/skills/ios/ios-hig/references/content.md +0 -142
  454. package/skills/ios/ios-hig/references/feedback.md +0 -123
  455. package/skills/ios/ios-hig/references/interaction.md +0 -199
  456. package/skills/ios/ios-hig/references/performance-platform.md +0 -129
  457. package/skills/ios/ios-hig/references/privacy-permissions.md +0 -181
  458. package/skills/ios/ios-hig/references/visual-design.md +0 -84
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: Performance Benchmarker
2
+ name: testing-performance-benchmarker
3
3
  description: Expert performance testing and optimization specialist focused on measuring, analyzing, and improving system performance across all applications and infrastructure
4
4
  color: orange
5
5
  ---
@@ -8,6 +8,26 @@ color: orange
8
8
 
9
9
  You are a performance testing and optimization specialist who ensures systems meet performance requirements and deliver exceptional user experiences through comprehensive benchmarking.
10
10
 
11
+ ## Skill Access
12
+
13
+ The orchestrator passes these variables into your dispatch prompt: `project_type` and `phase`.
14
+
15
+ **Rules:**
16
+ - Load skills from this shortlist ONLY. Never consult skills outside this list, even if familiar.
17
+ - No defaulting. When no gate matches a skill, do NOT load it.
18
+ - No substitutions.
19
+
20
+ General load/stress/endurance benchmarking is measurement-first against SLOs and framework-agnostic. Platform-specific audits (Core Web Vitals, SwiftUI rendering) benefit from vendored framework guidance.
21
+
22
+ **Project-type gated (iOS):**
23
+ - `project_type=ios AND phase=5` → `skills/ios/swiftui-performance-audit` — diagnose slow rendering, janky scrolling, high CPU, excessive view updates; code-first review + Instruments profiling guide
24
+
25
+ **Project-type gated (web):**
26
+ - `project_type=web AND phase ∈ {5, 7}` → `skills/web/lighthouse-ci` — Lighthouse-driven performance audits, Core Web Vitals budgets, asset optimization
27
+
28
+ **Forbidden defaults:**
29
+ - Do NOT load `skills/ios/swift-concurrency` (older) — superseded by `swift-concurrency-6-2`.
30
+
11
31
  ## Core Responsibilities
12
32
 
13
33
  - Execute load, stress, endurance, and scalability testing across all systems
@@ -1,13 +1,18 @@
1
1
  ---
2
- name: Reality Checker
2
+ name: testing-reality-checker
3
3
  description: Stops fantasy approvals, evidence-based certification - Default to "NEEDS WORK", requires overwhelming proof for production readiness
4
4
  color: red
5
+ model: opus
5
6
  ---
6
7
 
7
8
  # Reality Checker
8
9
 
9
10
  You are a senior integration specialist who stops fantasy approvals and requires overwhelming evidence before production certification -- default verdict is NEEDS WORK.
10
11
 
12
+ ## Skill Access
13
+
14
+ This agent does not consult vendored skills. It operates from its system prompt alone. Reality-checking is evidence-gating — it reads screenshots, logs, and claims and renders a verdict; it does not write or design code.
15
+
11
16
  ## Core Principles
12
17
 
13
18
  - You are the last line of defense against unrealistic assessments
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: visual-research
3
+ description: Playwright-driven visual sweep of rival UIs or awards sites. Runs in two input modes — Competitive Audit or Inspiration Mining — and returns design-references.md grouped by DNA axis.
4
+ color: blue
5
+ ---
6
+
7
+ # Visual Research
8
+
9
+ ## Skill Access
10
+
11
+ This agent does not consult vendored skills. It operates from its system prompt alone. Visual sweep via Playwright is evidence collection against the locked DNA axes; it does not need framework implementation guidance. Library catalog decisions happen in the downstream design agents.
12
+
13
+ You run the Phase 3.1 visual sweep. The 6-axis Visual DNA has already been locked by Brand Guardian at Step 3.0 — your job is to validate and enrich that choice with concrete reference material, not to decide the direction. You are goal-directed, not exploratory. Every screenshot you return must be tagged with the DNA axis it exemplifies; anything else is catalogue noise.
14
+
15
+ You run in one of two input modes, chosen by the caller:
16
+
17
+ - **`competitive-audit`** — find 5-8 rival products that exemplify the locked DNA (not all competitors, just the ones that nail the axes we chose)
18
+ - **`inspiration-mining`** — find 5-8 Awwwards / Godly / SiteInspire sites that match the DNA
19
+
20
+ Both modes run the same Playwright capture loop with different URL seeds.
21
+
22
+ ## Inputs
23
+
24
+ - Path to `visual-dna.md` — the locked 6-axis DNA card
25
+ - Mode flag: `competitive-audit` or `inspiration-mining`
26
+ - Optional list of specific site URLs from the user or earlier research
27
+ - Optional path to `findings-digest.md` (for competitor hints from Phase 1)
28
+
29
+ ## Core Responsibilities
30
+
31
+ - Walk 5-8 candidate sites per run using Playwright MCP at desktop 1920x1080 and mobile 375x812
32
+ - Analyze which DNA axes each site nails and which it fails on
33
+ - Discard candidates that score below target on 3+ axes — they are not references for this DNA
34
+ - Group surviving references by DNA axis in `design-references.md` (motion refs, material refs, typography refs, density refs, character refs)
35
+ - Record the file:line or section locator where the reference element lives on each captured site
36
+
37
+ ## Hard Rules
38
+
39
+ - Goal-directed, not exploratory. You are validating and enriching the locked DNA — you are not cataloguing the landscape. A reference that doesn't exemplify at least one locked DNA axis does not go in the file.
40
+ - Every screenshot is tagged with the DNA axis or axes it exemplifies. Untagged captures are rejected.
41
+ - Desktop 1920x1080 AND mobile 375x812 for every site. Breakpoint parity matters for the downstream Design Critic.
42
+ - No self-authored commentary on rival products. Describe the visual treatment, cite the axis, move on.
43
+ - If fewer than 4 candidates survive the filter, widen the URL seed list and re-run rather than padding with weak matches.
44
+
45
+ ## Workflow
46
+
47
+ ### Shared setup
48
+ 1. Read `visual-dna.md`. Write the 6 axis values (Scope, Density, Character, Material, Motion, Type) to a local scratchpad so every capture can be scored against them.
49
+ 2. Pick the mode branch below based on the input flag.
50
+
51
+ ### Competitive Audit mode
52
+ 3a. Build the candidate URL list:
53
+ - Start with user-provided URLs if any
54
+ - Read `findings-digest.md` if present and pull named rivals
55
+ - Otherwise, use WebFetch / WebSearch to find 10-15 products in the same category as the design-doc
56
+ 4a. For each candidate, visit the landing page, pricing page, and one core product screen. Score each against the 6 DNA axes on a 0-3 scale. Keep candidates with total ≥ 12.
57
+ 5a. For each survivor, capture desktop + mobile screenshots of the DNA-exemplifying sections (hero, key interactive, motion moments). Tag each capture with the DNA axis it exemplifies.
58
+
59
+ ### Inspiration Mining mode
60
+ 3b. Build the candidate URL list:
61
+ - Query Awwwards, Godly.website, and SiteInspire via WebFetch for recent entries matching the DNA Character and Material values
62
+ - Supplement with user-provided URLs if any
63
+ 4b. For each candidate, visit the main page and any case-study detail pages that match the DNA. Apply the same 0-3 × 6-axis score. Keep candidates with total ≥ 12.
64
+ 5b. Capture desktop + mobile screenshots of the DNA-exemplifying sections. Tag each capture.
65
+
66
+ ### Shared finalize
67
+ 6. Group captured references by DNA axis in `design-references.md`:
68
+ - `## Motion references` — 2-5 entries, each with URL, file path to screenshot, and one-line description of why it exemplifies the Motion axis
69
+ - `## Material references` — same format
70
+ - `## Typography references` — same format
71
+ - `## Density references` — same format
72
+ - `## Character references` — same format
73
+ 7. For any axis with fewer than 2 references, note it as a gap in the file footer. The Design Critic will work with what exists; the gap is an honest signal, not a failure.
74
+ 8. Write `design-references.md` to the plan directory using the Write tool. Return the file path plus a short summary (count per axis, mode used, survivor ratio).
75
+
76
+ ## Output Format
77
+
78
+ `design-references.md` shape:
79
+
80
+ ```markdown
81
+ ---
82
+ mode: competitive-audit
83
+ dna_source: visual-dna.md
84
+ captured_at: 2026-04-14
85
+ candidate_count: 12
86
+ survivor_count: 6
87
+ ---
88
+
89
+ # Design References
90
+
91
+ ## Motion references
92
+ - [Linear](https://linear.app) — `screens/linear-home-desktop.png` — scroll-bound section reveals exemplify Cinematic motion with long cubic-bezier curves
93
+ - [Raycast](https://raycast.com) — `screens/raycast-hero-mobile.png` — micro-interactions on the hero CTA show Expressive motion without overshooting Cinematic
94
+
95
+ ## Material references
96
+ - ...
97
+
98
+ ## Typography references
99
+ - ...
100
+
101
+ ## Density references
102
+ - ...
103
+
104
+ ## Character references
105
+ - ...
106
+
107
+ ## Gaps
108
+ - Motion references for "Cinematic + Dashboard" combination underpopulated — only 1 survivor. Design Critic should treat as weak evidence.
109
+ ```
110
+
111
+ ## Tools
112
+
113
+ - Playwright MCP (primary) — `browser_navigate`, `browser_take_screenshot`, `browser_resize` for breakpoint parity
114
+ - WebFetch / WebSearch for URL discovery
115
+ - Write for the final `design-references.md`
116
+ - Read for `visual-dna.md` and `findings-digest.md`
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Adapter: wraps Kiro's cycle-counter handlers in the SdkMcpToolDefinition
3
+ * shape required by @anthropic-ai/claude-agent-sdk.
4
+ *
5
+ * Kiro's file (src/orchestrator/mcp/cycle-counter.ts) is owned by Kiro and
6
+ * must not be edited; this adapter lives here to preserve that boundary and
7
+ * to keep the SDK-specific zod/CallToolResult surface out of the handler core.
8
+ *
9
+ * Kiro's handlers mutate the CounterState object in place. The adapter echoes
10
+ * the updated state back to the caller so the orchestrator can pipe it into
11
+ * a single atomic state_save (A3 crash-seam protocol).
12
+ *
13
+ * Spec: docs/migration/sdk-hybrid/MIGRATION-PLAN-FINAL.md §4 Stage 4
14
+ * Task: 4.2.4
15
+ */
16
+
17
+ import { z } from "zod";
18
+ import {
19
+ cycleCounterCheck,
20
+ clearInFlightEdge,
21
+ handleStaleEdge,
22
+ type CounterState,
23
+ } from "../../src/orchestrator/mcp/cycle-counter.js";
24
+
25
+ type ToolConstructor = typeof import("@anthropic-ai/claude-agent-sdk").tool;
26
+
27
+ const inFlightEdgeSchema = z.object({
28
+ decision_id: z.string().min(1),
29
+ target_phase: z.string().min(1),
30
+ counter_value: z.number().int().nonnegative(),
31
+ started_at: z.string().min(1),
32
+ });
33
+
34
+ const counterStateSchema = z.object({
35
+ backward_routing_count: z.record(z.string(), z.number().int().nonnegative()),
36
+ backward_routing_count_by_target_phase: z.record(z.string(), z.number().int().nonnegative()),
37
+ in_flight_backward_edge: inFlightEdgeSchema.optional(),
38
+ });
39
+
40
+ const checkInputShape = {
41
+ state: counterStateSchema,
42
+ input: z.object({
43
+ decision_id: z.string().min(1),
44
+ target_phase: z.string().min(1),
45
+ }),
46
+ max_cycles: z.number().int().positive().optional(),
47
+ };
48
+
49
+ const clearInputShape = {
50
+ state: counterStateSchema,
51
+ };
52
+
53
+ const staleInputShape = {
54
+ state: counterStateSchema,
55
+ threshold_ms: z.number().int().positive().optional(),
56
+ };
57
+
58
+ export function buildCycleCounterCheckTool(tool: ToolConstructor) {
59
+ return tool(
60
+ "cycle_counter_check",
61
+ "Check and increment backward-routing counters (per-decision + per-target-phase). Returns {action: allow|escalate_to_user, decision_count, phase_count, state} where state is the mutated CounterState to persist via state_save.",
62
+ checkInputShape,
63
+ async (args) => {
64
+ try {
65
+ const state = args.state as CounterState;
66
+ const result = cycleCounterCheck(state, args.input, args.max_cycles);
67
+ return {
68
+ content: [
69
+ {
70
+ type: "text",
71
+ text: JSON.stringify({ ...result, state }),
72
+ },
73
+ ],
74
+ };
75
+ } catch (err) {
76
+ const message = err instanceof Error ? err.message : String(err);
77
+ return {
78
+ isError: true,
79
+ content: [
80
+ {
81
+ type: "text",
82
+ text: `cycle_counter_check error: ${message}`,
83
+ },
84
+ ],
85
+ };
86
+ }
87
+ },
88
+ );
89
+ }
90
+
91
+ export function buildClearInFlightEdgeTool(tool: ToolConstructor) {
92
+ return tool(
93
+ "clear_in_flight_edge",
94
+ "Clear the in_flight_backward_edge field (called by target phase on re-entry). Returns {state} for the caller to persist via state_save.",
95
+ clearInputShape,
96
+ async (args) => {
97
+ try {
98
+ const state = args.state as CounterState;
99
+ clearInFlightEdge(state);
100
+ return {
101
+ content: [
102
+ {
103
+ type: "text",
104
+ text: JSON.stringify({ state }),
105
+ },
106
+ ],
107
+ };
108
+ } catch (err) {
109
+ const message = err instanceof Error ? err.message : String(err);
110
+ return {
111
+ isError: true,
112
+ content: [
113
+ {
114
+ type: "text",
115
+ text: `clear_in_flight_edge error: ${message}`,
116
+ },
117
+ ],
118
+ };
119
+ }
120
+ },
121
+ );
122
+ }
123
+
124
+ export function buildHandleStaleEdgeTool(tool: ToolConstructor) {
125
+ return tool(
126
+ "handle_stale_edge",
127
+ "On --resume, if in_flight_backward_edge is older than threshold_ms (default 60000), decrement both counters and clear the edge. Returns {cleaned:boolean, state}.",
128
+ staleInputShape,
129
+ async (args) => {
130
+ try {
131
+ const state = args.state as CounterState;
132
+ const cleaned = handleStaleEdge(state, args.threshold_ms);
133
+ return {
134
+ content: [
135
+ {
136
+ type: "text",
137
+ text: JSON.stringify({ cleaned, state }),
138
+ },
139
+ ],
140
+ };
141
+ } catch (err) {
142
+ const message = err instanceof Error ? err.message : String(err);
143
+ return {
144
+ isError: true,
145
+ content: [
146
+ {
147
+ type: "text",
148
+ text: `handle_stale_edge error: ${message}`,
149
+ },
150
+ ],
151
+ };
152
+ }
153
+ },
154
+ );
155
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Adapter: wraps Kiro's scribeDecision(input, filePath) handler in the
3
+ * SdkMcpToolDefinition shape required by @anthropic-ai/claude-agent-sdk.
4
+ *
5
+ * Kiro's file (src/orchestrator/mcp/scribe.ts) is owned by Kiro and must
6
+ * not be edited; this adapter lives here to preserve that boundary and to
7
+ * keep the SDK-specific zod/CallToolResult surface out of the handler core.
8
+ *
9
+ * Spec: docs/migration/sdk-hybrid/MIGRATION-PLAN-FINAL.md §4 Stage 1
10
+ * Task: 1.2.4
11
+ */
12
+
13
+ import { resolve } from "node:path";
14
+ import { z } from "zod";
15
+ import { scribeDecision, loadCounters } from "../../src/orchestrator/mcp/scribe.js";
16
+
17
+ type ToolConstructor = typeof import("@anthropic-ai/claude-agent-sdk").tool;
18
+
19
+ const DEFAULT_DECISIONS_PATH = "docs/plans/decisions.jsonl";
20
+
21
+ const rejectedAlternativeSchema = z.object({
22
+ approach: z.string().min(1),
23
+ reason: z.string().min(1),
24
+ revisit_criterion: z.string().min(1),
25
+ });
26
+
27
+ const scribeInputShape = {
28
+ phase: z.string().min(1),
29
+ category: z.string().min(1),
30
+ summary: z.string().min(1),
31
+ decided_by: z.string().min(1),
32
+ impact_level: z.enum(["low", "medium", "high", "critical"]),
33
+ chosen_approach: z.string().min(1),
34
+ rejected_alternatives: z.array(rejectedAlternativeSchema).max(3).optional(),
35
+ ref: z.string().optional(),
36
+ };
37
+
38
+ export function buildScribeTool(tool: ToolConstructor, cwd: string) {
39
+ const decisionsPath = resolve(cwd, DEFAULT_DECISIONS_PATH);
40
+ loadCounters(decisionsPath);
41
+
42
+ return tool(
43
+ "scribe_decision",
44
+ "Append a decision row to docs/plans/decisions.jsonl. Single-writer per migration plan; validates against decisions.schema.json.",
45
+ scribeInputShape,
46
+ async (args) => {
47
+ try {
48
+ const row = scribeDecision(args, decisionsPath);
49
+ return {
50
+ content: [
51
+ {
52
+ type: "text",
53
+ text: JSON.stringify(row),
54
+ },
55
+ ],
56
+ };
57
+ } catch (err) {
58
+ const message = err instanceof Error ? err.message : String(err);
59
+ return {
60
+ isError: true,
61
+ content: [
62
+ {
63
+ type: "text",
64
+ text: `scribe_decision error: ${message}`,
65
+ },
66
+ ],
67
+ };
68
+ }
69
+ },
70
+ );
71
+ }
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Adapter: wraps Kiro's state-save handler (stateSave/stateRead/verifyIntegrity)
3
+ * in the SdkMcpToolDefinition shape required by @anthropic-ai/claude-agent-sdk.
4
+ *
5
+ * Kiro's file (src/orchestrator/mcp/state-save.ts) is owned by Kiro and must
6
+ * not be edited; this adapter lives here to preserve that boundary and to
7
+ * keep the SDK-specific zod/CallToolResult surface out of the handler core.
8
+ *
9
+ * Spec: docs/migration/sdk-hybrid/MIGRATION-PLAN-FINAL.md §4 Stage 3
10
+ * Task: 3.2.4
11
+ */
12
+
13
+ import { z } from "zod";
14
+ import {
15
+ stateSave,
16
+ stateRead,
17
+ verifyIntegrity,
18
+ } from "../../src/orchestrator/mcp/state-save.js";
19
+
20
+ type ToolConstructor = typeof import("@anthropic-ai/claude-agent-sdk").tool;
21
+
22
+ const saveInputShape = {
23
+ path: z.string().min(1),
24
+ state: z.record(z.string(), z.unknown()),
25
+ };
26
+
27
+ const readInputShape = {
28
+ path: z.string().min(1),
29
+ };
30
+
31
+ const verifyInputShape = {
32
+ path: z.string().min(1),
33
+ expected_sha256: z.string().min(1),
34
+ };
35
+
36
+ export function buildStateSaveTool(tool: ToolConstructor) {
37
+ return tool(
38
+ "state_save",
39
+ "Atomically persist state to a JSON file via write-to-.tmp + fsync + rename. Returns {success, path, sha256, bytesWritten}. Single writer for .build-state.json.",
40
+ saveInputShape,
41
+ async (args) => {
42
+ try {
43
+ const result = stateSave(args.path, args.state as Record<string, unknown>);
44
+ return {
45
+ content: [
46
+ {
47
+ type: "text",
48
+ text: JSON.stringify(result),
49
+ },
50
+ ],
51
+ };
52
+ } catch (err) {
53
+ const message = err instanceof Error ? err.message : String(err);
54
+ return {
55
+ isError: true,
56
+ content: [
57
+ {
58
+ type: "text",
59
+ text: `state_save error: ${message}`,
60
+ },
61
+ ],
62
+ };
63
+ }
64
+ },
65
+ );
66
+ }
67
+
68
+ export function buildStateReadTool(tool: ToolConstructor) {
69
+ return tool(
70
+ "state_read",
71
+ "Read state from a JSON file and compute its SHA-256 checksum. Returns {state, sha256}.",
72
+ readInputShape,
73
+ async (args) => {
74
+ try {
75
+ const result = stateRead(args.path);
76
+ return {
77
+ content: [
78
+ {
79
+ type: "text",
80
+ text: JSON.stringify(result),
81
+ },
82
+ ],
83
+ };
84
+ } catch (err) {
85
+ const message = err instanceof Error ? err.message : String(err);
86
+ return {
87
+ isError: true,
88
+ content: [
89
+ {
90
+ type: "text",
91
+ text: `state_read error: ${message}`,
92
+ },
93
+ ],
94
+ };
95
+ }
96
+ },
97
+ );
98
+ }
99
+
100
+ export function buildVerifyIntegrityTool(tool: ToolConstructor) {
101
+ return tool(
102
+ "verify_integrity",
103
+ "Verify a state file's SHA-256 matches the expected checksum. Returns {matches:boolean}.",
104
+ verifyInputShape,
105
+ async (args) => {
106
+ try {
107
+ const matches = verifyIntegrity(args.path, args.expected_sha256);
108
+ return {
109
+ content: [
110
+ {
111
+ type: "text",
112
+ text: JSON.stringify({ matches }),
113
+ },
114
+ ],
115
+ };
116
+ } catch (err) {
117
+ const message = err instanceof Error ? err.message : String(err);
118
+ return {
119
+ isError: true,
120
+ content: [
121
+ {
122
+ type: "text",
123
+ text: `verify_integrity error: ${message}`,
124
+ },
125
+ ],
126
+ };
127
+ }
128
+ },
129
+ );
130
+ }
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Adapter: wraps Kiro's write-lease handler (acquire/release/list) in the
3
+ * SdkMcpToolDefinition shape required by @anthropic-ai/claude-agent-sdk.
4
+ *
5
+ * Kiro's file (src/orchestrator/mcp/write-lease.ts) is owned by Kiro and must
6
+ * not be edited; this adapter lives here to preserve that boundary and to
7
+ * keep the SDK-specific zod/CallToolResult surface out of the handler core.
8
+ *
9
+ * Spec: docs/migration/sdk-hybrid/MIGRATION-PLAN-FINAL.md §A5
10
+ * Task: 2.3.4
11
+ */
12
+
13
+ import { z } from "zod";
14
+ import {
15
+ acquireWriteLease,
16
+ releaseLease,
17
+ getActiveLeases,
18
+ } from "../../src/orchestrator/mcp/write-lease.js";
19
+
20
+ type ToolConstructor = typeof import("@anthropic-ai/claude-agent-sdk").tool;
21
+
22
+ const acquireInputShape = {
23
+ task_id: z.string().min(1),
24
+ file_paths: z.array(z.string().min(1)).min(1),
25
+ };
26
+
27
+ const releaseInputShape = {
28
+ task_id: z.string().min(1),
29
+ };
30
+
31
+ const listInputShape = {} as const;
32
+
33
+ export function buildAcquireWriteLeaseTool(tool: ToolConstructor) {
34
+ return tool(
35
+ "acquire_write_lease",
36
+ "Acquire an exclusive write lease on one or more file paths for a task. Returns granted:true with the lease, or granted:false with conflict details when another task holds an overlapping lease.",
37
+ acquireInputShape,
38
+ async (args) => {
39
+ try {
40
+ const result = acquireWriteLease(args.task_id, args.file_paths);
41
+ return {
42
+ content: [
43
+ {
44
+ type: "text",
45
+ text: JSON.stringify(result),
46
+ },
47
+ ],
48
+ };
49
+ } catch (err) {
50
+ const message = err instanceof Error ? err.message : String(err);
51
+ return {
52
+ isError: true,
53
+ content: [
54
+ {
55
+ type: "text",
56
+ text: `acquire_write_lease error: ${message}`,
57
+ },
58
+ ],
59
+ };
60
+ }
61
+ },
62
+ );
63
+ }
64
+
65
+ export function buildReleaseWriteLeaseTool(tool: ToolConstructor) {
66
+ return tool(
67
+ "release_write_lease",
68
+ "Release all write leases held by a task. Called by SubagentStop hook on dispatch return. Returns released:true if a lease existed, false otherwise.",
69
+ releaseInputShape,
70
+ async (args) => {
71
+ try {
72
+ const released = releaseLease(args.task_id);
73
+ return {
74
+ content: [
75
+ {
76
+ type: "text",
77
+ text: JSON.stringify({ released }),
78
+ },
79
+ ],
80
+ };
81
+ } catch (err) {
82
+ const message = err instanceof Error ? err.message : String(err);
83
+ return {
84
+ isError: true,
85
+ content: [
86
+ {
87
+ type: "text",
88
+ text: `release_write_lease error: ${message}`,
89
+ },
90
+ ],
91
+ };
92
+ }
93
+ },
94
+ );
95
+ }
96
+
97
+ export function buildListWriteLeasesTool(tool: ToolConstructor) {
98
+ return tool(
99
+ "list_write_leases",
100
+ "List all active write leases (holder, paths, acquired_at). Read-only; intended for orchestrator diagnostics and .build-state.json persistence snapshots.",
101
+ listInputShape,
102
+ async () => {
103
+ try {
104
+ const leases = getActiveLeases();
105
+ return {
106
+ content: [
107
+ {
108
+ type: "text",
109
+ text: JSON.stringify({ leases }),
110
+ },
111
+ ],
112
+ };
113
+ } catch (err) {
114
+ const message = err instanceof Error ? err.message : String(err);
115
+ return {
116
+ isError: true,
117
+ content: [
118
+ {
119
+ type: "text",
120
+ text: `list_write_leases error: ${message}`,
121
+ },
122
+ ],
123
+ };
124
+ }
125
+ },
126
+ );
127
+ }
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ // Thin shim: delegates to the TypeScript entry via tsx.
5
+ // Mirrors the hook pattern (npx --no-install tsx) used by subagent-start,
6
+ // pre-tool-use, and compile-writer-owner-cache — consistent behavior across
7
+ // the whole plugin when tsx is not globally installed.
8
+ const { spawnSync } = require('child_process');
9
+ const path = require('path');
10
+
11
+ const tsEntry = path.join(__dirname, 'buildanything-runtime.ts');
12
+ const result = spawnSync('npx', ['--no-install', 'tsx', tsEntry, ...process.argv.slice(2)], {
13
+ stdio: 'inherit',
14
+ });
15
+ process.exit(result.status ?? (result.error ? 1 : 0));