buildanything 1.7.1 → 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 (633) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +9 -3
  3. package/CHANGELOG.md +112 -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 +66 -0
  29. package/agents/ios-foundation-models-specialist.md +64 -0
  30. package/agents/ios-storekit-specialist.md +59 -0
  31. package/agents/ios-swift-architect.md +129 -0
  32. package/agents/ios-swift-search.md +137 -0
  33. package/agents/ios-swift-ui-design.md +136 -0
  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 +752 -332
  58. package/commands/fix.md +65 -0
  59. package/commands/self-check.md +121 -0
  60. package/commands/setup.md +114 -0
  61. package/commands/ux-review.md +63 -0
  62. package/commands/verify.md +69 -0
  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 +89 -2
  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 +28 -5
  77. package/protocols/architecture-schema.md +171 -0
  78. package/protocols/build-fix.md +52 -0
  79. package/protocols/cleanup.md +54 -0
  80. package/protocols/decision-log.md +131 -0
  81. package/protocols/eval-harness.md +61 -0
  82. package/protocols/fake-data-detector.md +64 -0
  83. package/protocols/ios-context.md +234 -0
  84. package/protocols/ios-frameworks-map.md +323 -0
  85. package/protocols/ios-phase-branches.md +337 -0
  86. package/protocols/ios-preflight.md +27 -0
  87. package/protocols/launch-readiness.md +258 -0
  88. package/protocols/metric-loop.md +153 -0
  89. package/protocols/smoke-test.md +118 -0
  90. package/protocols/state-schema.json +388 -0
  91. package/protocols/state-schema.md +172 -0
  92. package/protocols/verify.md +127 -0
  93. package/protocols/visual-dna.md +185 -0
  94. package/protocols/web-phase-branches.md +351 -0
  95. package/skills/ios/_VENDORED.md +62 -0
  96. package/skills/ios/activitykit/LICENSE +131 -0
  97. package/skills/ios/activitykit/SKILL.md +505 -0
  98. package/skills/ios/activitykit/references/activitykit-patterns.md +868 -0
  99. package/skills/ios/app-intents/LICENSE +131 -0
  100. package/skills/ios/app-intents/SKILL.md +494 -0
  101. package/skills/ios/app-intents/references/appintents-advanced.md +1076 -0
  102. package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
  103. package/skills/ios/apple-on-device-ai/LICENSE +131 -0
  104. package/skills/ios/apple-on-device-ai/SKILL.md +505 -0
  105. package/skills/ios/apple-on-device-ai/references/coreml-conversion.md +425 -0
  106. package/skills/ios/apple-on-device-ai/references/coreml-optimization.md +344 -0
  107. package/skills/ios/apple-on-device-ai/references/foundation-models.md +508 -0
  108. package/skills/ios/apple-on-device-ai/references/mlx-swift.md +285 -0
  109. package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
  110. package/skills/ios/hig-components-content/SKILL.md +86 -0
  111. package/skills/ios/hig-components-content/references/activity-views.md +79 -0
  112. package/skills/ios/hig-components-content/references/charts.md +180 -0
  113. package/skills/ios/hig-components-content/references/collections.md +48 -0
  114. package/skills/ios/hig-components-content/references/color-wells.md +42 -0
  115. package/skills/ios/hig-components-content/references/image-views.md +82 -0
  116. package/skills/ios/hig-components-content/references/image-wells.md +34 -0
  117. package/skills/ios/hig-components-content/references/lockups.md +78 -0
  118. package/skills/ios/hig-components-content/references/web-views.md +36 -0
  119. package/skills/ios/hig-components-controls/SKILL.md +88 -0
  120. package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
  121. package/skills/ios/hig-components-controls/references/controls.md +112 -0
  122. package/skills/ios/hig-components-controls/references/gauges.md +74 -0
  123. package/skills/ios/hig-components-controls/references/labels.md +92 -0
  124. package/skills/ios/hig-components-controls/references/pickers.md +128 -0
  125. package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
  126. package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
  127. package/skills/ios/hig-components-controls/references/sliders.md +92 -0
  128. package/skills/ios/hig-components-controls/references/steppers.md +40 -0
  129. package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
  130. package/skills/ios/hig-components-controls/references/text-views.md +56 -0
  131. package/skills/ios/hig-components-controls/references/toggles.md +127 -0
  132. package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
  133. package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
  134. package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
  135. package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
  136. package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
  137. package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
  138. package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
  139. package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
  140. package/skills/ios/hig-components-layout/SKILL.md +99 -0
  141. package/skills/ios/hig-components-layout/references/boxes.md +48 -0
  142. package/skills/ios/hig-components-layout/references/column-views.md +44 -0
  143. package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
  144. package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
  145. package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
  146. package/skills/ios/hig-components-layout/references/panels.md +75 -0
  147. package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
  148. package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
  149. package/skills/ios/hig-components-layout/references/split-views.md +110 -0
  150. package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
  151. package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
  152. package/skills/ios/hig-components-layout/references/windows.md +188 -0
  153. package/skills/ios/hig-components-menus/SKILL.md +81 -0
  154. package/skills/ios/hig-components-menus/references/action-button.md +61 -0
  155. package/skills/ios/hig-components-menus/references/buttons.md +261 -0
  156. package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
  157. package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
  158. package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
  159. package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
  160. package/skills/ios/hig-components-menus/references/menus.md +171 -0
  161. package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
  162. package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
  163. package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
  164. package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
  165. package/skills/ios/hig-components-search/SKILL.md +68 -0
  166. package/skills/ios/hig-components-search/references/page-controls.md +120 -0
  167. package/skills/ios/hig-components-search/references/path-controls.md +40 -0
  168. package/skills/ios/hig-components-search/references/search-fields.md +189 -0
  169. package/skills/ios/hig-components-status/SKILL.md +80 -0
  170. package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
  171. package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
  172. package/skills/ios/hig-components-status/references/status-bars.md +38 -0
  173. package/skills/ios/hig-components-system/SKILL.md +88 -0
  174. package/skills/ios/hig-components-system/references/app-clips.md +387 -0
  175. package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
  176. package/skills/ios/hig-components-system/references/complications.md +425 -0
  177. package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
  178. package/skills/ios/hig-components-system/references/live-activities.md +442 -0
  179. package/skills/ios/hig-components-system/references/notifications.md +153 -0
  180. package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
  181. package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
  182. package/skills/ios/hig-components-system/references/widgets.md +517 -0
  183. package/skills/ios/hig-foundations/SKILL.md +98 -0
  184. package/skills/ios/hig-foundations/references/accessibility.md +291 -0
  185. package/skills/ios/hig-foundations/references/app-icons.md +210 -0
  186. package/skills/ios/hig-foundations/references/branding.md +44 -0
  187. package/skills/ios/hig-foundations/references/color.md +274 -0
  188. package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
  189. package/skills/ios/hig-foundations/references/icons.md +263 -0
  190. package/skills/ios/hig-foundations/references/images.md +176 -0
  191. package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
  192. package/skills/ios/hig-foundations/references/inclusion.md +189 -0
  193. package/skills/ios/hig-foundations/references/layout.md +425 -0
  194. package/skills/ios/hig-foundations/references/materials.md +238 -0
  195. package/skills/ios/hig-foundations/references/motion.md +103 -0
  196. package/skills/ios/hig-foundations/references/privacy.md +231 -0
  197. package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
  198. package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
  199. package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
  200. package/skills/ios/hig-foundations/references/typography.md +1146 -0
  201. package/skills/ios/hig-foundations/references/writing.md +91 -0
  202. package/skills/ios/hig-inputs/SKILL.md +94 -0
  203. package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
  204. package/skills/ios/hig-inputs/references/camera-control.md +107 -0
  205. package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
  206. package/skills/ios/hig-inputs/references/eyes.md +120 -0
  207. package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
  208. package/skills/ios/hig-inputs/references/game-controls.md +156 -0
  209. package/skills/ios/hig-inputs/references/gestures.md +208 -0
  210. package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
  211. package/skills/ios/hig-inputs/references/keyboards.md +234 -0
  212. package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
  213. package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
  214. package/skills/ios/hig-inputs/references/remotes.md +67 -0
  215. package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
  216. package/skills/ios/hig-patterns/SKILL.md +104 -0
  217. package/skills/ios/hig-patterns/references/charting-data.md +81 -0
  218. package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
  219. package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
  220. package/skills/ios/hig-patterns/references/entering-data.md +69 -0
  221. package/skills/ios/hig-patterns/references/feedback.md +67 -0
  222. package/skills/ios/hig-patterns/references/file-management.md +135 -0
  223. package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
  224. package/skills/ios/hig-patterns/references/launching.md +81 -0
  225. package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
  226. package/skills/ios/hig-patterns/references/loading.md +59 -0
  227. package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
  228. package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
  229. package/skills/ios/hig-patterns/references/modality.md +82 -0
  230. package/skills/ios/hig-patterns/references/multitasking.md +131 -0
  231. package/skills/ios/hig-patterns/references/offering-help.md +117 -0
  232. package/skills/ios/hig-patterns/references/onboarding.md +69 -0
  233. package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
  234. package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
  235. package/skills/ios/hig-patterns/references/playing-video.md +180 -0
  236. package/skills/ios/hig-patterns/references/printing.md +50 -0
  237. package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
  238. package/skills/ios/hig-patterns/references/searching.md +70 -0
  239. package/skills/ios/hig-patterns/references/settings.md +84 -0
  240. package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
  241. package/skills/ios/hig-patterns/references/workouts.md +76 -0
  242. package/skills/ios/hig-platforms/SKILL.md +84 -0
  243. package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
  244. package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
  245. package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
  246. package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
  247. package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
  248. package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
  249. package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
  250. package/skills/ios/hig-project-context/SKILL.md +133 -0
  251. package/skills/ios/hig-technologies/SKILL.md +107 -0
  252. package/skills/ios/hig-technologies/references/airplay.md +125 -0
  253. package/skills/ios/hig-technologies/references/always-on.md +62 -0
  254. package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
  255. package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
  256. package/skills/ios/hig-technologies/references/carekit.md +224 -0
  257. package/skills/ios/hig-technologies/references/carplay.md +119 -0
  258. package/skills/ios/hig-technologies/references/game-center.md +343 -0
  259. package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
  260. package/skills/ios/hig-technologies/references/healthkit.md +120 -0
  261. package/skills/ios/hig-technologies/references/homekit.md +343 -0
  262. package/skills/ios/hig-technologies/references/icloud.md +52 -0
  263. package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
  264. package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
  265. package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
  266. package/skills/ios/hig-technologies/references/live-photos.md +54 -0
  267. package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
  268. package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
  269. package/skills/ios/hig-technologies/references/maps.md +221 -0
  270. package/skills/ios/hig-technologies/references/nfc.md +51 -0
  271. package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
  272. package/skills/ios/hig-technologies/references/researchkit.md +134 -0
  273. package/skills/ios/hig-technologies/references/shareplay.md +142 -0
  274. package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
  275. package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
  276. package/skills/ios/hig-technologies/references/siri.md +523 -0
  277. package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
  278. package/skills/ios/hig-technologies/references/voiceover.md +90 -0
  279. package/skills/ios/hig-technologies/references/wallet.md +420 -0
  280. package/skills/ios/ios-26-platform/SKILL.md +53 -0
  281. package/skills/ios/ios-26-platform/references/automatic-adoption.md +161 -0
  282. package/skills/ios/ios-26-platform/references/backward-compat.md +238 -0
  283. package/skills/ios/ios-26-platform/references/liquid-glass.md +255 -0
  284. package/skills/ios/ios-26-platform/references/swiftui-apis.md +277 -0
  285. package/skills/ios/ios-26-platform/references/toolbar-navigation.md +250 -0
  286. package/skills/ios/ios-bootstrap/SKILL.md +107 -0
  287. package/skills/ios/ios-bootstrap/references/apple-docs-mcp-config.md +28 -0
  288. package/skills/ios/ios-bootstrap/references/new-project-dialog.md +41 -0
  289. package/skills/ios/ios-bootstrap/references/xcode-mcp-config.md +29 -0
  290. package/skills/ios/ios-debugger-agent/LICENSE +21 -0
  291. package/skills/ios/ios-debugger-agent/SKILL.md +58 -0
  292. package/skills/ios/ios-debugger-agent/agents/openai.yaml +4 -0
  293. package/skills/ios/ios-entitlements-generator/SKILL.md +47 -0
  294. package/skills/ios/ios-info-plist-hardening/SKILL.md +130 -0
  295. package/skills/ios/ios-maestro-flow-author/SKILL.md +68 -0
  296. package/skills/ios/ios-maestro-flow-author/references/input-and-scroll.yaml +17 -0
  297. package/skills/ios/ios-maestro-flow-author/references/modal-and-dismiss.yaml +14 -0
  298. package/skills/ios/ios-maestro-flow-author/references/onboarding-flow.yaml +16 -0
  299. package/skills/ios/ios-maestro-flow-author/references/tab-navigation.yaml +13 -0
  300. package/skills/ios/ios-maestro-flow-author/references/tap-and-assert.yaml +9 -0
  301. package/skills/ios/swift-accessibility/LICENSE +21 -0
  302. package/skills/ios/swift-accessibility/SKILL.md +371 -0
  303. package/skills/ios/swift-accessibility/examples/before-after-appkit.md +446 -0
  304. package/skills/ios/swift-accessibility/examples/before-after-swiftui.md +441 -0
  305. package/skills/ios/swift-accessibility/examples/before-after-uikit.md +464 -0
  306. package/skills/ios/swift-accessibility/references/assistive-access.md +441 -0
  307. package/skills/ios/swift-accessibility/references/display-settings.md +491 -0
  308. package/skills/ios/swift-accessibility/references/dynamic-type.md +420 -0
  309. package/skills/ios/swift-accessibility/references/media-accessibility.md +421 -0
  310. package/skills/ios/swift-accessibility/references/motor-input.md +393 -0
  311. package/skills/ios/swift-accessibility/references/nutrition-labels.md +362 -0
  312. package/skills/ios/swift-accessibility/references/platform-specifics.md +515 -0
  313. package/skills/ios/swift-accessibility/references/semantic-structure.md +585 -0
  314. package/skills/ios/swift-accessibility/references/testing-auditing.md +507 -0
  315. package/skills/ios/swift-accessibility/references/voice-control.md +317 -0
  316. package/skills/ios/swift-accessibility/references/voiceover-swiftui.md +584 -0
  317. package/skills/ios/swift-accessibility/references/voiceover-uikit.md +519 -0
  318. package/skills/ios/swift-accessibility/references/wcag-mapping.md +167 -0
  319. package/skills/ios/swift-accessibility/resources/audit-template.swift +128 -0
  320. package/skills/ios/swift-accessibility/resources/qa-checklist.md +258 -0
  321. package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
  322. package/skills/ios/swift-concurrency/LICENSE +21 -0
  323. package/skills/ios/swift-concurrency/SKILL.md +171 -0
  324. package/skills/ios/swift-concurrency/references/_index.md +50 -0
  325. package/skills/ios/swift-concurrency/references/actors.md +660 -0
  326. package/skills/ios/swift-concurrency/references/async-algorithms.md +847 -0
  327. package/skills/ios/swift-concurrency/references/async-await-basics.md +266 -0
  328. package/skills/ios/swift-concurrency/references/async-sequences.md +710 -0
  329. package/skills/ios/swift-concurrency/references/core-data.md +560 -0
  330. package/skills/ios/swift-concurrency/references/glossary.md +135 -0
  331. package/skills/ios/swift-concurrency/references/linting.md +155 -0
  332. package/skills/ios/swift-concurrency/references/memory-management.md +569 -0
  333. package/skills/ios/swift-concurrency/references/migration.md +1104 -0
  334. package/skills/ios/swift-concurrency/references/performance.md +593 -0
  335. package/skills/ios/swift-concurrency/references/sendable.md +598 -0
  336. package/skills/ios/swift-concurrency/references/tasks.md +636 -0
  337. package/skills/ios/swift-concurrency/references/testing.md +592 -0
  338. package/skills/ios/swift-concurrency/references/threading.md +495 -0
  339. package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
  340. package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
  341. package/skills/ios/swift-security-expert/LICENSE +21 -0
  342. package/skills/ios/swift-security-expert/SKILL.md +470 -0
  343. package/skills/ios/swift-security-expert/references/biometric-authentication.md +565 -0
  344. package/skills/ios/swift-security-expert/references/certificate-trust.md +592 -0
  345. package/skills/ios/swift-security-expert/references/common-anti-patterns.md +690 -0
  346. package/skills/ios/swift-security-expert/references/compliance-owasp-mapping.md +537 -0
  347. package/skills/ios/swift-security-expert/references/credential-storage-patterns.md +721 -0
  348. package/skills/ios/swift-security-expert/references/cryptokit-public-key.md +505 -0
  349. package/skills/ios/swift-security-expert/references/cryptokit-symmetric.md +497 -0
  350. package/skills/ios/swift-security-expert/references/keychain-access-control.md +508 -0
  351. package/skills/ios/swift-security-expert/references/keychain-fundamentals.md +596 -0
  352. package/skills/ios/swift-security-expert/references/keychain-item-classes.md +476 -0
  353. package/skills/ios/swift-security-expert/references/keychain-sharing.md +458 -0
  354. package/skills/ios/swift-security-expert/references/migration-legacy-stores.md +727 -0
  355. package/skills/ios/swift-security-expert/references/secure-enclave.md +539 -0
  356. package/skills/ios/swift-security-expert/references/testing-security-code.md +781 -0
  357. package/skills/ios/swift-testing-expert/LICENSE +21 -0
  358. package/skills/ios/swift-testing-expert/SKILL.md +79 -0
  359. package/skills/ios/swift-testing-expert/references/_index.md +12 -0
  360. package/skills/ios/swift-testing-expert/references/async-testing-and-waiting.md +127 -0
  361. package/skills/ios/swift-testing-expert/references/expectations.md +145 -0
  362. package/skills/ios/swift-testing-expert/references/fundamentals.md +141 -0
  363. package/skills/ios/swift-testing-expert/references/migration-from-xctest.md +127 -0
  364. package/skills/ios/swift-testing-expert/references/parallelization-and-isolation.md +95 -0
  365. package/skills/ios/swift-testing-expert/references/parameterized-testing.md +284 -0
  366. package/skills/ios/swift-testing-expert/references/performance-and-best-practices.md +187 -0
  367. package/skills/ios/swift-testing-expert/references/traits-and-tags.md +114 -0
  368. package/skills/ios/swift-testing-expert/references/xcode-workflows.md +70 -0
  369. package/skills/ios/swiftdata-pro/LICENSE +21 -0
  370. package/skills/ios/swiftdata-pro/SKILL.md +102 -0
  371. package/skills/ios/swiftdata-pro/agents/openai.yaml +10 -0
  372. package/skills/ios/swiftdata-pro/assets/swiftdata-pro-icon.png +0 -0
  373. package/skills/ios/swiftdata-pro/assets/swiftdata-pro-icon.svg +29 -0
  374. package/skills/ios/swiftdata-pro/references/class-inheritance.md +104 -0
  375. package/skills/ios/swiftdata-pro/references/cloudkit.md +10 -0
  376. package/skills/ios/swiftdata-pro/references/core-rules.md +20 -0
  377. package/skills/ios/swiftdata-pro/references/indexing.md +27 -0
  378. package/skills/ios/swiftdata-pro/references/predicates.md +73 -0
  379. package/skills/ios/swiftui-design-principles/AGENTS.md +21 -0
  380. package/skills/ios/swiftui-design-principles/LICENSE +21 -0
  381. package/skills/ios/swiftui-design-principles/README.md +41 -0
  382. package/skills/ios/swiftui-design-principles/SKILL.md +605 -0
  383. package/skills/ios/swiftui-design-principles/metadata.json +10 -0
  384. package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
  385. package/skills/ios/swiftui-liquid-glass/LICENSE +21 -0
  386. package/skills/ios/swiftui-liquid-glass/SKILL.md +95 -0
  387. package/skills/ios/swiftui-liquid-glass/agents/openai.yaml +4 -0
  388. package/skills/ios/swiftui-liquid-glass/references/liquid-glass.md +280 -0
  389. package/skills/ios/swiftui-performance-audit/LICENSE +21 -0
  390. package/skills/ios/swiftui-performance-audit/SKILL.md +111 -0
  391. package/skills/ios/swiftui-performance-audit/agents/openai.yaml +4 -0
  392. package/skills/ios/swiftui-performance-audit/references/code-smells.md +150 -0
  393. package/skills/ios/swiftui-performance-audit/references/demystify-swiftui-performance-wwdc23.md +46 -0
  394. package/skills/ios/swiftui-performance-audit/references/optimizing-swiftui-performance-instruments.md +29 -0
  395. package/skills/ios/swiftui-performance-audit/references/profiling-intake.md +44 -0
  396. package/skills/ios/swiftui-performance-audit/references/report-template.md +47 -0
  397. package/skills/ios/swiftui-performance-audit/references/understanding-hangs-in-your-app.md +33 -0
  398. package/skills/ios/swiftui-performance-audit/references/understanding-improving-swiftui-performance.md +52 -0
  399. package/skills/ios/swiftui-pro/LICENSE +21 -0
  400. package/skills/ios/swiftui-pro/SKILL.md +108 -0
  401. package/skills/ios/swiftui-pro/agents/openai.yaml +10 -0
  402. package/skills/ios/swiftui-pro/assets/swiftui-pro-icon.png +0 -0
  403. package/skills/ios/swiftui-pro/assets/swiftui-pro-icon.svg +29 -0
  404. package/skills/ios/swiftui-pro/references/accessibility.md +13 -0
  405. package/skills/ios/swiftui-pro/references/api.md +39 -0
  406. package/skills/ios/swiftui-pro/references/data.md +43 -0
  407. package/skills/ios/swiftui-pro/references/design.md +31 -0
  408. package/skills/ios/swiftui-pro/references/hygiene.md +9 -0
  409. package/skills/ios/swiftui-pro/references/navigation.md +14 -0
  410. package/skills/ios/swiftui-pro/references/performance.md +46 -0
  411. package/skills/ios/swiftui-pro/references/swift.md +56 -0
  412. package/skills/ios/swiftui-pro/references/views.md +35 -0
  413. package/skills/ios/swiftui-ui-patterns/LICENSE +21 -0
  414. package/skills/ios/swiftui-ui-patterns/SKILL.md +100 -0
  415. package/skills/ios/swiftui-ui-patterns/agents/openai.yaml +4 -0
  416. package/skills/ios/swiftui-ui-patterns/references/app-wiring.md +201 -0
  417. package/skills/ios/swiftui-ui-patterns/references/async-state.md +96 -0
  418. package/skills/ios/swiftui-ui-patterns/references/components-index.md +50 -0
  419. package/skills/ios/swiftui-ui-patterns/references/controls.md +57 -0
  420. package/skills/ios/swiftui-ui-patterns/references/deeplinks.md +66 -0
  421. package/skills/ios/swiftui-ui-patterns/references/focus.md +90 -0
  422. package/skills/ios/swiftui-ui-patterns/references/form.md +97 -0
  423. package/skills/ios/swiftui-ui-patterns/references/grids.md +71 -0
  424. package/skills/ios/swiftui-ui-patterns/references/haptics.md +71 -0
  425. package/skills/ios/swiftui-ui-patterns/references/input-toolbar.md +51 -0
  426. package/skills/ios/swiftui-ui-patterns/references/lightweight-clients.md +93 -0
  427. package/skills/ios/swiftui-ui-patterns/references/list.md +86 -0
  428. package/skills/ios/swiftui-ui-patterns/references/loading-placeholders.md +38 -0
  429. package/skills/ios/swiftui-ui-patterns/references/macos-settings.md +71 -0
  430. package/skills/ios/swiftui-ui-patterns/references/matched-transitions.md +59 -0
  431. package/skills/ios/swiftui-ui-patterns/references/media.md +73 -0
  432. package/skills/ios/swiftui-ui-patterns/references/menu-bar.md +101 -0
  433. package/skills/ios/swiftui-ui-patterns/references/navigationstack.md +159 -0
  434. package/skills/ios/swiftui-ui-patterns/references/overlay.md +45 -0
  435. package/skills/ios/swiftui-ui-patterns/references/performance.md +62 -0
  436. package/skills/ios/swiftui-ui-patterns/references/previews.md +48 -0
  437. package/skills/ios/swiftui-ui-patterns/references/scroll-reveal.md +133 -0
  438. package/skills/ios/swiftui-ui-patterns/references/scrollview.md +87 -0
  439. package/skills/ios/swiftui-ui-patterns/references/searchable.md +71 -0
  440. package/skills/ios/swiftui-ui-patterns/references/sheets.md +155 -0
  441. package/skills/ios/swiftui-ui-patterns/references/split-views.md +72 -0
  442. package/skills/ios/swiftui-ui-patterns/references/tabview.md +114 -0
  443. package/skills/ios/swiftui-ui-patterns/references/theming.md +71 -0
  444. package/skills/ios/swiftui-ui-patterns/references/title-menus.md +93 -0
  445. package/skills/ios/swiftui-ui-patterns/references/top-bar.md +49 -0
  446. package/skills/ios/swiftui-view-refactor/LICENSE +21 -0
  447. package/skills/ios/swiftui-view-refactor/SKILL.md +207 -0
  448. package/skills/ios/swiftui-view-refactor/agents/openai.yaml +4 -0
  449. package/skills/ios/swiftui-view-refactor/references/mv-patterns.md +161 -0
  450. package/skills/ios/widgetkit/LICENSE +131 -0
  451. package/skills/ios/widgetkit/SKILL.md +502 -0
  452. package/skills/ios/widgetkit/references/widgetkit-advanced.md +871 -0
  453. package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
  454. package/skills/web/accessibility/SKILL.md +146 -0
  455. package/skills/web/aceternity-ui/SKILL.md +719 -0
  456. package/skills/web/aceternity-ui/metadata.json +10 -0
  457. package/skills/web/api-design/SKILL.md +523 -0
  458. package/skills/web/chart-accessibility/SKILL.md +332 -0
  459. package/skills/web/composition-patterns/AGENTS.md +946 -0
  460. package/skills/web/composition-patterns/README.md +60 -0
  461. package/skills/web/composition-patterns/SKILL.md +89 -0
  462. package/skills/web/composition-patterns/metadata.json +11 -0
  463. package/skills/web/composition-patterns/rules/_sections.md +29 -0
  464. package/skills/web/composition-patterns/rules/_template.md +24 -0
  465. package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  466. package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
  467. package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  468. package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  469. package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
  470. package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
  471. package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
  472. package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
  473. package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
  474. package/skills/web/database-migrations/SKILL.md +429 -0
  475. package/skills/web/deployment-patterns/SKILL.md +427 -0
  476. package/skills/web/docker-patterns/SKILL.md +364 -0
  477. package/skills/web/e2e-testing/SKILL.md +326 -0
  478. package/skills/web/lighthouse-ci/SKILL.md +361 -0
  479. package/skills/web/mcp-server-patterns/SKILL.md +69 -0
  480. package/skills/web/next-best-practices/SKILL.md +153 -0
  481. package/skills/web/next-best-practices/async-patterns.md +87 -0
  482. package/skills/web/next-best-practices/bundling.md +180 -0
  483. package/skills/web/next-best-practices/data-patterns.md +297 -0
  484. package/skills/web/next-best-practices/debug-tricks.md +105 -0
  485. package/skills/web/next-best-practices/directives.md +73 -0
  486. package/skills/web/next-best-practices/error-handling.md +227 -0
  487. package/skills/web/next-best-practices/file-conventions.md +140 -0
  488. package/skills/web/next-best-practices/font.md +245 -0
  489. package/skills/web/next-best-practices/functions.md +108 -0
  490. package/skills/web/next-best-practices/hydration-error.md +91 -0
  491. package/skills/web/next-best-practices/image.md +173 -0
  492. package/skills/web/next-best-practices/metadata.md +301 -0
  493. package/skills/web/next-best-practices/parallel-routes.md +287 -0
  494. package/skills/web/next-best-practices/route-handlers.md +146 -0
  495. package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
  496. package/skills/web/next-best-practices/runtime-selection.md +39 -0
  497. package/skills/web/next-best-practices/scripts.md +141 -0
  498. package/skills/web/next-best-practices/self-hosting.md +371 -0
  499. package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
  500. package/skills/web/next-cache-components/SKILL.md +411 -0
  501. package/skills/web/postgres-best-practices/SKILL.md +14 -0
  502. package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
  503. package/skills/web/react-best-practices/AGENTS.md +3810 -0
  504. package/skills/web/react-best-practices/README.md +123 -0
  505. package/skills/web/react-best-practices/SKILL.md +149 -0
  506. package/skills/web/react-best-practices/metadata.json +15 -0
  507. package/skills/web/react-best-practices/rules/_sections.md +46 -0
  508. package/skills/web/react-best-practices/rules/_template.md +28 -0
  509. package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  510. package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  511. package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
  512. package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
  513. package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
  514. package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  515. package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
  516. package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
  517. package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
  518. package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  519. package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  520. package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
  521. package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
  522. package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  523. package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  524. package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
  525. package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
  526. package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
  527. package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  528. package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
  529. package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
  530. package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
  531. package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
  532. package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
  533. package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
  534. package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
  535. package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
  536. package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
  537. package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
  538. package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
  539. package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
  540. package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
  541. package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
  542. package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  543. package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
  544. package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  545. package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
  546. package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
  547. package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  548. package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  549. package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  550. package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
  551. package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  552. package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
  553. package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  554. package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
  555. package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
  556. package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  557. package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
  558. package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  559. package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  560. package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  561. package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
  562. package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  563. package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  564. package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  565. package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  566. package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
  567. package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  568. package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  569. package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
  570. package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
  571. package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
  572. package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
  573. package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
  574. package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
  575. package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
  576. package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
  577. package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  578. package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
  579. package/skills/web/seo/SKILL.md +154 -0
  580. package/skills/web/web-design-guidelines/SKILL.md +39 -0
  581. package/skills/web/zap-scan-config/SKILL.md +444 -0
  582. package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
  583. package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
  584. package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
  585. package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
  586. package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
  587. package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
  588. package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
  589. package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
  590. package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
  591. package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
  592. package/src/lrr/aggregator.ts +80 -0
  593. package/src/orchestrator/hooks/context-header.ts +95 -0
  594. package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
  595. package/src/orchestrator/hooks/token-accounting.ts +101 -0
  596. package/src/orchestrator/mcp/cycle-counter.ts +129 -0
  597. package/src/orchestrator/mcp/scribe.ts +283 -0
  598. package/src/orchestrator/mcp/state-save.ts +149 -0
  599. package/src/orchestrator/mcp/write-lease.ts +167 -0
  600. package/src/orchestrator/phase4-shared-context.ts +41 -0
  601. package/src/orchestrator/schemas/backward-edge.ts +46 -0
  602. package/agents/agentic-identity-trust.md +0 -121
  603. package/agents/data-consolidation-agent.md +0 -39
  604. package/agents/design-image-prompt-engineer.md +0 -105
  605. package/agents/design-visual-storyteller.md +0 -147
  606. package/agents/design-whimsy-injector.md +0 -89
  607. package/agents/engineering-autonomous-optimization-architect.md +0 -105
  608. package/agents/market-intel.md +0 -35
  609. package/agents/marketing-instagram-curator.md +0 -111
  610. package/agents/marketing-reddit-community-builder.md +0 -121
  611. package/agents/marketing-social-media-strategist.md +0 -74
  612. package/agents/marketing-tiktok-strategist.md +0 -123
  613. package/agents/marketing-twitter-engager.md +0 -124
  614. package/agents/marketing-wechat-official-account.md +0 -143
  615. package/agents/marketing-xiaohongshu-specialist.md +0 -136
  616. package/agents/marketing-zhihu-strategist.md +0 -160
  617. package/agents/product-behavioral-nudge-engine.md +0 -78
  618. package/agents/project-management-experiment-tracker.md +0 -102
  619. package/agents/report-distribution-agent.md +0 -43
  620. package/agents/risk-analysis.md +0 -45
  621. package/agents/sales-data-extraction-agent.md +0 -46
  622. package/agents/specialized-cultural-intelligence-strategist.md +0 -65
  623. package/agents/specialized-developer-advocate.md +0 -146
  624. package/agents/support-analytics-reporter.md +0 -133
  625. package/agents/support-executive-summary-generator.md +0 -64
  626. package/agents/support-finance-tracker.md +0 -145
  627. package/agents/support-legal-compliance-checker.md +0 -129
  628. package/agents/support-support-responder.md +0 -91
  629. package/agents/testing-accessibility-auditor.md +0 -110
  630. package/agents/testing-test-results-analyzer.md +0 -97
  631. package/agents/testing-tool-evaluator.md +0 -76
  632. package/agents/testing-workflow-optimizer.md +0 -99
  633. package/agents/user-research.md +0 -40
@@ -0,0 +1,388 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$comment": "Schema version migration table: schema_version 1 = Stages 1-3; schema_version 2 = Stage 4 (adds backward_routing_count, backward_routing_count_by_target_phase, in_flight_backward_edge, mode_transitions); schema_version 3 = Stage 5 (adds lrr_cycle_state); schema_version 4 = Stage 6 (adds current_sprint_context_hash). --- Runtime validation rules (not encodable in JSON Schema, require code): Rule 5 — step prefix must match current phase number; Rule 6 — mode/autonomous consistency (mode==='autonomous' iff autonomous===true); Rule 7 — iOS fields gating (app_name, bundle_id, xcodeproj_path, ios_features, phase_progress.phase_minus_1 exist iff project_type==='ios'); Rule 10 — pending/in-progress disjoint (in_progress_task.task_id not in pending_tasks or completed_tasks); Rule 11 — resume_point.phase/step must not be ahead of top-level phase/step; Rule 12 — timestamps monotonic (session_last_saved >= session_started).",
4
+ "title": ".build-state.json",
5
+ "description": "Typed source of truth for BuildAnything build state. Validated by the PreToolUse schema lint hook (W2-2). additionalProperties: false enforces fail-closed per A8 SSOT rule.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+
9
+ "$defs": {
10
+ "completed_task": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["task_id", "task_name", "status", "evidence_files", "completed_at"],
14
+ "properties": {
15
+ "task_id": { "type": "string" },
16
+ "task_name": { "type": "string" },
17
+ "status": { "type": "string", "enum": ["done", "skipped", "deferred"] },
18
+ "evidence_files": { "type": "array", "items": { "type": "string" } },
19
+ "completed_at": { "type": "string", "format": "date-time" }
20
+ }
21
+ },
22
+
23
+ "in_progress_task": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "required": ["task_id", "task_name", "started_at"],
27
+ "properties": {
28
+ "task_id": { "type": "string" },
29
+ "task_name": { "type": "string" },
30
+ "started_at": { "type": "string", "format": "date-time" }
31
+ }
32
+ },
33
+
34
+ "metric_loop_entry": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": ["phase", "iteration", "score", "target", "top_issue", "timestamp"],
38
+ "properties": {
39
+ "phase": { "type": "integer" },
40
+ "iteration": { "type": "integer" },
41
+ "score": { "type": "number" },
42
+ "target": { "type": "number" },
43
+ "top_issue": { "type": "string" },
44
+ "timestamp": { "type": "string", "format": "date-time" },
45
+ "scoring_criteria_checklist": { "type": "string" },
46
+ "extraction_method": {
47
+ "type": "string",
48
+ "enum": ["mechanical", "one-shot-dispatch", "mixed"]
49
+ }
50
+ }
51
+ },
52
+
53
+ "active_metric_loop": {
54
+ "type": "object",
55
+ "additionalProperties": false,
56
+ "required": ["phase", "artifact", "metric", "target", "max_iterations", "current_iteration"],
57
+ "properties": {
58
+ "phase": { "type": "integer" },
59
+ "artifact": { "type": "string" },
60
+ "metric": { "type": "string" },
61
+ "target": { "type": "number" },
62
+ "max_iterations": { "type": "integer" },
63
+ "current_iteration": { "type": "integer" },
64
+ "scoring_criteria_checklist": { "type": "string" },
65
+ "extraction_method": {
66
+ "type": "string",
67
+ "enum": ["mechanical", "one-shot-dispatch", "mixed"]
68
+ }
69
+ }
70
+ },
71
+
72
+ "blocker": {
73
+ "type": "object",
74
+ "additionalProperties": false,
75
+ "required": ["id", "description", "surfaced_at", "type"],
76
+ "properties": {
77
+ "id": { "type": "string" },
78
+ "description": { "type": "string" },
79
+ "surfaced_at": { "type": "string", "format": "date-time" },
80
+ "type": { "type": "string", "enum": ["build", "design", "dep", "external"] }
81
+ }
82
+ },
83
+
84
+ "dispatch_counter": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": ["dispatches_since_save", "last_save_phase"],
88
+ "properties": {
89
+ "dispatches_since_save": { "type": "integer", "minimum": 0 },
90
+ "last_save_phase": { "type": "string" }
91
+ }
92
+ },
93
+
94
+ "resume_point": {
95
+ "type": "object",
96
+ "additionalProperties": false,
97
+ "required": ["phase", "step", "autonomous", "completed_summary", "git_branch"],
98
+ "properties": {
99
+ "phase": { "type": "integer", "enum": [-1, 0, 1, 2, 3, 4, 5, 6, 7] },
100
+ "step": { "type": "string" },
101
+ "autonomous": { "type": "boolean" },
102
+ "completed_summary": { "type": "string" },
103
+ "git_branch": { "type": "string" }
104
+ }
105
+ },
106
+
107
+ "verification": {
108
+ "type": "object",
109
+ "additionalProperties": false,
110
+ "required": ["last_verify_result", "last_verify_timestamp"],
111
+ "properties": {
112
+ "last_verify_result": {
113
+ "oneOf": [
114
+ { "type": "string", "enum": ["PRODUCTION_READY", "NEEDS_WORK", "BLOCKED"] },
115
+ { "type": "null" }
116
+ ]
117
+ },
118
+ "last_verify_timestamp": {
119
+ "oneOf": [
120
+ { "type": "string", "format": "date-time" },
121
+ { "type": "null" }
122
+ ]
123
+ }
124
+ }
125
+ },
126
+
127
+ "ios_features": {
128
+ "type": "object",
129
+ "additionalProperties": false,
130
+ "required": [
131
+ "widgets", "liveActivities", "appIntents", "foundationModels",
132
+ "storekit", "healthkit", "push", "cloudkit",
133
+ "siri", "location", "background", "cameraPhoto",
134
+ "microphone", "contacts", "calendar", "appleWatch"
135
+ ],
136
+ "properties": {
137
+ "widgets": { "type": "boolean" },
138
+ "liveActivities": { "type": "boolean" },
139
+ "appIntents": { "type": "boolean" },
140
+ "foundationModels": { "type": "boolean" },
141
+ "storekit": { "type": "boolean" },
142
+ "healthkit": { "type": "boolean" },
143
+ "push": { "type": "boolean" },
144
+ "cloudkit": { "type": "boolean" },
145
+ "siri": { "type": "boolean" },
146
+ "location": { "type": "boolean" },
147
+ "background": { "type": "boolean" },
148
+ "cameraPhoto": { "type": "boolean" },
149
+ "microphone": { "type": "boolean" },
150
+ "contacts": { "type": "boolean" },
151
+ "calendar": { "type": "boolean" },
152
+ "appleWatch": { "type": "boolean" }
153
+ }
154
+ },
155
+
156
+ "phase_progress": {
157
+ "type": "object",
158
+ "additionalProperties": false,
159
+ "required": [
160
+ "phase_0", "phase_1", "phase_2", "phase_3",
161
+ "phase_4", "phase_5", "phase_6", "phase_7"
162
+ ],
163
+ "properties": {
164
+ "phase_minus_1": { "type": "boolean" },
165
+ "phase_0": { "type": "boolean" },
166
+ "phase_1": { "type": "boolean" },
167
+ "phase_2": { "type": "boolean" },
168
+ "phase_3": { "type": "boolean" },
169
+ "phase_4": { "type": "boolean" },
170
+ "phase_5": { "type": "boolean" },
171
+ "phase_6": { "type": "boolean" },
172
+ "phase_7": { "type": "boolean" }
173
+ }
174
+ },
175
+
176
+ "in_flight_backward_edge": {
177
+ "$comment": "Stage 4+ (schema_version >= 2). Written atomically with counter increment on backward-route dispatch. Cleared by target phase on re-entry. Stale edges (>60s) trigger counter decrement on --resume.",
178
+ "type": "object",
179
+ "additionalProperties": false,
180
+ "required": ["decision_id", "target_phase", "counter_value", "started_at"],
181
+ "properties": {
182
+ "decision_id": { "type": "string" },
183
+ "target_phase": { "type": "string" },
184
+ "counter_value": { "type": "integer", "minimum": 0 },
185
+ "started_at": { "type": "string", "format": "date-time" }
186
+ }
187
+ },
188
+
189
+ "mode_transition": {
190
+ "$comment": "Stage 4+ (schema_version >= 2). Records SDK/markdown flag-flip events. Each entry captures which flag changed, the prior and new values, a full post-flip snapshot of all tracked flags, the session_id when known, and a timestamp.",
191
+ "type": "object",
192
+ "additionalProperties": false,
193
+ "required": ["flag", "old_value", "new_value", "timestamp"],
194
+ "properties": {
195
+ "flag": { "type": "string", "description": "Env-var name (e.g., BUILDANYTHING_SDK)." },
196
+ "old_value": { "type": "string" },
197
+ "new_value": { "type": "string" },
198
+ "post_flags": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Snapshot of all tracked flag values AFTER this flip." },
199
+ "session_id": { "type": ["string", "null"] },
200
+ "timestamp": { "type": "string", "format": "date-time" }
201
+ }
202
+ }
203
+ },
204
+
205
+ "required": [
206
+ "schema_version",
207
+ "project_type",
208
+ "phase",
209
+ "step",
210
+ "session_id",
211
+ "session_started",
212
+ "session_last_saved",
213
+ "autonomous",
214
+ "mode",
215
+ "build_request",
216
+ "context_level",
217
+ "git_branch",
218
+ "completed_tasks",
219
+ "pending_tasks",
220
+ "phase_artifacts",
221
+ "metric_loop_history",
222
+ "dispatch_counter",
223
+ "phase_progress",
224
+ "resume_point",
225
+ "verification"
226
+ ],
227
+
228
+ "properties": {
229
+ "schema_version": {
230
+ "type": "integer",
231
+ "minimum": 1,
232
+ "maximum": 4,
233
+ "description": "Currently 1 (Stages 1-3). Bumped to 2 at Stage 4, 3 at Stage 5, 4 at Stage 6."
234
+ },
235
+ "project_type": {
236
+ "type": "string",
237
+ "enum": ["ios", "web"],
238
+ "description": "Drives mode-branch routing."
239
+ },
240
+ "phase": {
241
+ "type": "integer",
242
+ "enum": [-1, 0, 1, 2, 3, 4, 5, 6, 7],
243
+ "description": "Current phase. -1 is iOS bootstrap only."
244
+ },
245
+ "step": {
246
+ "type": "string",
247
+ "description": "Dotted step identifier within the phase (e.g. '5.3b', '6.4', '-1.1')."
248
+ },
249
+ "session_id": {
250
+ "type": "string",
251
+ "format": "uuid",
252
+ "description": "UUID generated at session start; stable across compactions within a session."
253
+ },
254
+ "session_started": {
255
+ "type": "string",
256
+ "format": "date-time",
257
+ "description": "ISO 8601 timestamp when the current session began."
258
+ },
259
+ "session_last_saved": {
260
+ "type": "string",
261
+ "format": "date-time",
262
+ "description": "ISO 8601 timestamp of the most recent state write. Must be >= session_started."
263
+ },
264
+ "autonomous": {
265
+ "type": "boolean",
266
+ "description": "Whether --autonomous was passed. Must agree with mode field."
267
+ },
268
+ "mode": {
269
+ "type": "string",
270
+ "enum": ["interactive", "autonomous"],
271
+ "description": "interactive iff autonomous === false."
272
+ },
273
+ "build_request": {
274
+ "type": "string",
275
+ "description": "Original user prompt that initiated the build."
276
+ },
277
+ "context_level": {
278
+ "type": "string",
279
+ "enum": ["raw_idea", "decision_brief", "partial_context", "full_design"],
280
+ "description": "Richness of the initial context provided."
281
+ },
282
+ "git_branch": {
283
+ "type": "string",
284
+ "description": "Current branch; 'main' if uninitialized."
285
+ },
286
+ "completed_tasks": {
287
+ "type": "array",
288
+ "items": { "$ref": "#/$defs/completed_task" },
289
+ "description": "Tasks finished. May be empty []."
290
+ },
291
+ "pending_tasks": {
292
+ "type": "array",
293
+ "items": { "type": "string" },
294
+ "description": "task_ids still to be dispatched. May be empty []."
295
+ },
296
+ "phase_artifacts": {
297
+ "type": "object",
298
+ "additionalProperties": true,
299
+ "description": "Paths to persisted phase outputs. All properties optional; empty {} is valid."
300
+ },
301
+ "metric_loop_history": {
302
+ "type": "array",
303
+ "items": { "$ref": "#/$defs/metric_loop_entry" },
304
+ "description": "Scored iterations across all phases. May be empty []."
305
+ },
306
+ "dispatch_counter": {
307
+ "$ref": "#/$defs/dispatch_counter",
308
+ "description": "Used by the 'save every N dispatches' heuristic."
309
+ },
310
+ "phase_progress": {
311
+ "$ref": "#/$defs/phase_progress",
312
+ "description": "Boolean per phase. phase_minus_1 is optional (iOS only)."
313
+ },
314
+ "resume_point": {
315
+ "$ref": "#/$defs/resume_point",
316
+ "description": "Snapshot used by Phase-0 resume logic."
317
+ },
318
+ "verification": {
319
+ "$ref": "#/$defs/verification",
320
+ "description": "Last verify result and timestamp."
321
+ },
322
+
323
+ "app_name": {
324
+ "type": "string",
325
+ "description": "iOS only. App display name."
326
+ },
327
+ "bundle_id": {
328
+ "type": "string",
329
+ "description": "iOS only. Bundle identifier."
330
+ },
331
+ "xcodeproj_path": {
332
+ "type": "string",
333
+ "description": "iOS only. Absolute path to .xcodeproj."
334
+ },
335
+ "ios_features": {
336
+ "$ref": "#/$defs/ios_features",
337
+ "description": "iOS only. Exactly 16 boolean feature flags."
338
+ },
339
+ "in_progress_task": {
340
+ "$ref": "#/$defs/in_progress_task",
341
+ "description": "Task currently executing. Present only while a task is in flight."
342
+ },
343
+ "active_metric_loop": {
344
+ "$ref": "#/$defs/active_metric_loop",
345
+ "description": "Present only while a metric loop is running. Removed when loop completes."
346
+ },
347
+ "blockers": {
348
+ "type": "array",
349
+ "items": { "$ref": "#/$defs/blocker" },
350
+ "description": "Open blockers. Omitted when empty."
351
+ },
352
+ "decisions_next_id": {
353
+ "type": "object",
354
+ "additionalProperties": { "type": "integer", "minimum": 0 },
355
+ "description": "Keyed by phase number string. Integer values = next sequence. Deprecated under Stage 2 (scribe owns ID allocation); scheduled for removal at Stage 4 A7."
356
+ },
357
+
358
+ "backward_routing_count": {
359
+ "type": "object",
360
+ "additionalProperties": { "type": "integer", "minimum": 0 },
361
+ "description": "Stage 4+ (schema_version >= 2). Per-decision backward routing counter: decision_id -> count."
362
+ },
363
+ "backward_routing_count_by_target_phase": {
364
+ "type": "object",
365
+ "additionalProperties": { "type": "integer", "minimum": 0 },
366
+ "description": "Stage 4+ (schema_version >= 2). Per-target-phase backward routing counter: phase -> count."
367
+ },
368
+ "in_flight_backward_edge": {
369
+ "$ref": "#/$defs/in_flight_backward_edge",
370
+ "description": "Stage 4+ (schema_version >= 2). Present only while a backward-routing edge is in flight."
371
+ },
372
+ "mode_transitions": {
373
+ "type": "array",
374
+ "items": { "$ref": "#/$defs/mode_transition" },
375
+ "description": "Stage 4+ (schema_version >= 2). Records SDK/markdown flag-flip events."
376
+ },
377
+
378
+ "lrr_cycle_state": {
379
+ "type": "object",
380
+ "description": "Stage 5+ (schema_version >= 3). LRR cycle state and aggregator output fields."
381
+ },
382
+
383
+ "current_sprint_context_hash": {
384
+ "type": "string",
385
+ "description": "Stage 6+ (schema_version >= 4). Hash of sprint-scoped shared context; triggers re-render only on sprint boundary."
386
+ }
387
+ }
388
+ }
@@ -0,0 +1,172 @@
1
+ # .build-state.json Schema
2
+
3
+ ## Purpose
4
+
5
+ `docs/plans/.build-state.json` is the **typed source of truth** for build state. The human-readable `docs/plans/.build-state.md` file is an **auto-rendered view** regenerated on every state change — it is never edited directly. This document defines the required fields, their types, the rendering contract that produces the markdown view, and the validation rules a well-formed state file must satisfy. Introduced in Wave 1 (W1-2) to eliminate the drift observed in freeform markdown state (duplicate `Autonomous:` fields, Phase Progress append-instead-of-replace, mode branch collisions) and to give the Wave 2 `PreToolUse` schema lint hook something concrete to validate against.
6
+
7
+ **Machine-authoritative source:** `protocols/state-schema.json` is the SSOT (Stage 1 A8). If this prose doc and the JSON Schema diverge, the JSON Schema wins. Update both together; changes here that are not reflected there will be caught by the W2-2 lint hook.
8
+
9
+ ## Schema versions
10
+
11
+ `schema_version` is a monotonically increasing integer bumped on each Shape-B migration stage. The runtime reads the incoming `.build-state.json` and compares `schema_version` against its compiled-in `MAX_SUPPORTED_SCHEMA_VERSION` constant.
12
+
13
+ | Version | Stage | Fields added | Rollback semantics |
14
+ |---|---|---|---|
15
+ | 1 | Stages 1-3 | initial schema (all pre-Stage-4 fields) | n/a |
16
+ | 2 | Stage 4 | `backward_routing_count` (newly typed), `backward_routing_count_by_target_phase`, `in_flight_backward_edge`, `mode_transitions[]` | A7 forward-reject on `schema_version > MAX_SUPPORTED_SCHEMA_VERSION`; A3 stale-edge decrement on `--resume` |
17
+ | 3 | Stage 5 | `lrr_cycle_state` (object; interior fields loose-typed pending Stage 5 iteration — see "Fields added at v3" below) | `BUILDANYTHING_SDK_LRR=false` reverts to markdown aggregator; `lrr_cycle_state` becomes an ignored field on the orchestrator read path (additive-only, no data loss on downgrade) |
18
+ | 4 | Stage 6 | `current_sprint_context_hash` | `BUILDANYTHING_SDK_SPRINT_CONTEXT=false` (web) and/or `BUILDANYTHING_SDK_SPRINT_CONTEXT_IOS=false` (iOS parity gate) reverts Phase 4 to per-task refs re-send; `current_sprint_context_hash` becomes an ignored field on the orchestrator read path (additive-only, no data loss on downgrade) |
19
+
20
+ **A7 forward-reject rule.** When `bin/buildanything-runtime.ts` reads `.build-state.json` at session start, if `schema_version > MAX_SUPPORTED_SCHEMA_VERSION`, the runtime refuses to proceed and emits a clear error pointing to the compat matrix (`docs/migration/sdk-host-compat.md`). This is the A7 defense against silent schema drift — an old runtime must never silently ignore fields a newer runtime persisted. See **Task 4.5.2** for the runtime implementation (out of scope for this prose-only update).
21
+
22
+ ## Required fields
23
+
24
+ ```jsonc
25
+ {
26
+ "schema_version": 1,
27
+ "project_type": "ios",
28
+ "phase": 6,
29
+ "step": "6.4",
30
+ "session_id": "6f3a9c82-7d4e-4b51-9f2a-1e8c6d3f4a0b",
31
+ "session_started": "2026-04-13T09:12:00Z",
32
+ "session_last_saved": "2026-04-13T11:47:33Z",
33
+ "autonomous": false,
34
+ "mode": "interactive",
35
+ "build_request": "iOS app blocker that uses on-device AI to gate access to distracting apps.",
36
+ "context_level": "raw_idea",
37
+ "git_branch": "main",
38
+ "completed_tasks": [
39
+ { "task_id": "M3-T04", "task_name": "Implement Foundation Models allow/deny classifier", "status": "done", "evidence_files": ["cap/Features/Chat/GateClassifier.swift"], "completed_at": "2026-04-13T10:52:11Z" },
40
+ { "task_id": "M3-T03", "task_name": "Create shield configuration UI", "status": "done", "evidence_files": ["cap/Features/Shield/ShieldConfigView.swift"], "completed_at": "2026-04-13T10:30:00Z" }
41
+ ],
42
+ "pending_tasks": ["M3-T06", "M3-T07"],
43
+ "metric_loop_history": [
44
+ { "phase": 2, "iteration": 1, "score": 86, "target": 85, "top_issue": "Shield handoff data contract underspecified", "timestamp": "2026-04-13T10:05:00Z" }
45
+ // ... additional entries follow same pattern
46
+ ],
47
+ "resume_point": { "phase": 6, "step": "6.4", "autonomous": false, "completed_summary": "Phases -1..5 done; Reality Check in progress", "git_branch": "main" }
48
+ // ... additional fields per schema below
49
+ }
50
+ ```
51
+
52
+ ## Field definitions
53
+
54
+ | Field | Type | Required | Notes |
55
+ |---|---|---|---|
56
+ | `schema_version` | integer | yes | Currently `2` (Stage 4); see version table above. Bumped on each Shape-B migration stage. |
57
+ | `project_type` | enum | yes | `"ios"` or `"web"`. Drives mode-branch routing. |
58
+ | `phase` | integer | yes | Current phase, one of `-1, 0, 1, 2, 3, 4, 5, 6, 7`. |
59
+ | `step` | string | yes | Dotted step identifier within the phase (e.g., `"5.3b"`, `"6.4"`). |
60
+ | `session_id` | string | yes | UUID generated at session start; stable across compactions within a session. |
61
+ | `session_started` | ISO 8601 string | yes | When the current session began. |
62
+ | `session_last_saved` | ISO 8601 string | yes | Timestamp of the most recent state write. |
63
+ | `autonomous` | boolean | yes | Whether `--autonomous` was passed. |
64
+ | `mode` | enum | yes | `"interactive"` or `"autonomous"`. Must agree with `autonomous` (interactive iff `autonomous === false`). |
65
+ | `app_name` | string | iOS only | App display name; present iff `project_type === "ios"`. |
66
+ | `bundle_id` | string | iOS only | Bundle identifier; present iff `project_type === "ios"`. |
67
+ | `xcodeproj_path` | string | iOS only | Absolute path to `.xcodeproj`; present iff `project_type === "ios"`. |
68
+ | `build_request` | string | yes | Original user prompt that initiated the build. |
69
+ | `context_level` | enum | yes | `"raw_idea"`, `"decision_brief"`, `"partial_context"`, or `"full_design"`. |
70
+ | `git_branch` | string | yes | Current branch; `"main"` if uninitialized. |
71
+ | `completed_tasks` | array | yes | Tasks finished. Each: `{task_id, task_name, status, evidence_files[], completed_at}`. May be empty `[]`. |
72
+ | `in_progress_task` | object | no | Task currently executing. `{task_id, task_name, started_at}`. |
73
+ | `pending_tasks` | array of strings | yes | `task_id`s still to be dispatched. May be empty `[]`. |
74
+ | `phase_artifacts` | object | yes | Paths to persisted phase outputs. All properties optional; empty `{}` is valid. |
75
+ | `metric_loop_history` | array | yes | Scored iterations across all phases. Each: `{phase, iteration, score, target, top_issue, timestamp, scoring_criteria_checklist?, extraction_method?}`. May be empty. Optional `scoring_criteria_checklist` (string) records the extracted checklist for LRR audit trail. Optional `extraction_method` (`"mechanical"`, `"one-shot-dispatch"`, `"mixed"`). |
76
+ | `active_metric_loop` | object | no | Present only while a metric loop is running. Contains: `{phase, artifact, metric, target, max_iterations, scoring_criteria_checklist?, extraction_method?, current_iteration}`. Removed when the loop completes (results move to `metric_loop_history`). |
77
+ | `dispatch_counter` | object | yes | `{dispatches_since_save, last_save_phase}`. Used by the "save every N dispatches" heuristic. |
78
+ | `ios_features` | object | iOS only | YAML-in-JSON mirror of resolved feature flags (16 boolean keys). Present iff `project_type === "ios"`. |
79
+ | `phase_progress` | object | yes | Boolean per phase (`phase_minus_1` through `phase_7`). `phase_minus_1` is optional (iOS only). |
80
+ | `resume_point` | object | yes | `{phase, step, autonomous, completed_summary, git_branch}`. Snapshot used by Phase-0 resume logic. |
81
+ | `verification` | object | yes | `{last_verify_result, last_verify_timestamp}`. `last_verify_result` is one of `"PRODUCTION_READY"`, `"NEEDS_WORK"`, `"BLOCKED"`, or `null`. |
82
+ | `blockers` | array | no | Open blockers. Each: `{id, description, surfaced_at, type}`. Type is `"build"`, `"design"`, `"dep"`, or `"external"`. |
83
+
84
+ ### Fields added at v2 (Stage 4)
85
+
86
+ These fields are present only when `schema_version >= 2`. They support the Shape-B SDK migration's backward-routing bookkeeping (A3, A6) and SDK/markdown mode-flip audit trail.
87
+
88
+ | Field | Type | Required | Added in | Notes |
89
+ |---|---|---|---|---|
90
+ | `backward_routing_count` | object (string → integer ≥ 0) | no | v2 | Per-decision backward-routing counter keyed by `decision_id`. Existed informally pre-v2; formally typed at v2 and paired with the by-phase counter below. Incremented atomically with `in_flight_backward_edge` on dispatch. |
91
+ | `backward_routing_count_by_target_phase` | object (string → integer ≥ 0) | no | v2 | **A6 off-by-one fix.** Per-target-phase backward-routing counter keyed by target phase number (e.g., `"4"`, `"5"`). Lets the max-backward-routes guard count by destination phase rather than by decision, which previously miscounted when a single decision routed back to multiple phases. |
92
+ | `in_flight_backward_edge` | object | no | v2 | **A3 crash-seam defense.** Present only while a backward-route dispatch is mid-flight. Written atomically with the counter increment; cleared by the target phase on re-entry. Fields: `decision_id` (string), `target_phase` (string), `counter_value` (integer ≥ 0), `started_at` (ISO 8601). On `--resume`, stale edges (>60s old) trigger a counter decrement so a crashed dispatch does not permanently inflate the guard. |
93
+ | `mode_transitions` | array of objects | no | v2 | SDK/markdown flag-flip audit trail (Task 4.7.1). Each entry: `{flag, old_value, new_value, post_flags?, session_id?, timestamp}` — `flag` is the env-var name (e.g., `"BUILDANYTHING_SDK"`, `"BUILDANYTHING_ENFORCE_WRITER_OWNER"`); `old_value`/`new_value` are the string-typed prior and new values; `post_flags` is an optional snapshot (string→string) of all tracked flag values AFTER this flip; `session_id` is nullable; `timestamp` is ISO 8601. Append-only within a session. **A7 adversarial fix:** the v2-initial narrow shape `{from, to, timestamp}` could not identify WHICH flag flipped, making the audit trail useless for schema-rollback debugging — widened to capture `flag` + full post-flip snapshot. Canonical emitter: `hooks/record-mode-transitions.ts`. |
94
+
95
+ ### Fields added at v3 (Stage 5)
96
+
97
+ These fields are present only when `schema_version >= 3`. They support the Shape-B SDK migration's Lazy Reference Resolution (LRR) aggregator — the Phase 6 Launch Readiness Review aggregator promoted from prose to `src/lrr/aggregator.ts` (Task 5.1). The top-level shape is documented here; the aggregator's own output file `docs/plans/evidence/lrr-aggregate.json` is governed by `protocols/launch-readiness.md` and is NOT part of this state schema.
98
+
99
+ | Field | Type | Required | Added in | Notes |
100
+ |---|---|---|---|---|
101
+ | `lrr_cycle_state` | object | no | v3 | Per-cycle LRR bookkeeping written by the aggregator path (`src/lrr/aggregator.ts`). **Interior fields are intentionally loose-typed at v3** — the JSON Schema (`protocols/state-schema.json` `$defs.lrr_cycle_state` implied by `properties.lrr_cycle_state: {type: "object"}`) does not fix the field set because Stage 5 iteration on aggregator output fields (`combined_verdict`, `triggered_rule`, `star_rule_triggered`, `star_rule_decision_ids`, chapter-completion markers) is still in progress. Once Stage 5 lands, this entry will be tightened in a follow-up task (tracked under 5.4.2's "aggregator output fields" scope) and the `additionalProperties: true` implicit allowance will be removed. Present only when `BUILDANYTHING_SDK_LRR=true` (and hence `schema_version` has been bumped to `3`). |
102
+
103
+ **v3 migration concern — none in wild.** As of this task (5.4.1), Stage 5 has not shipped. No `.build-state.json` files with `schema_version: 3` exist outside development probes. `bin/buildanything-runtime.ts` `MAX_SUPPORTED_SCHEMA_VERSION_FALLBACK` is still `2` (see Task 4.5.2) — a v3 state file would currently be forward-rejected by A7, which is the intended pre-Stage-5 behavior. The runtime will be bumped to `3` as part of Stage 5 activation, not here.
104
+
105
+ **v3 rollback semantics.** Rollback is via `BUILDANYTHING_SDK_LRR=false` (see `MIGRATION-PLAN-FINAL.md` §Stage 5 rollback). Because `lrr_cycle_state` is additive and optional, a Stage 4 runtime reading a Stage 5 state file with `schema_version` downgraded to `2` will ignore the field without data loss on the read path. The persisted value survives in place until the next state write overwrites it; orchestrator code paths gated on `BUILDANYTHING_SDK_LRR` are responsible for not writing `lrr_cycle_state` under markdown aggregator mode.
106
+
107
+ ### Fields added at v4 (Stage 6)
108
+
109
+ These fields are present only when `schema_version >= 4`. They support the Shape-B SDK migration's archetype-aware Phase 4 shared-context hoisting (Stage 6, `MIGRATION-PLAN-FINAL.md` §11) — a sprint-scoped shared-context block is rendered once per sprint by `src/orchestrator/phase4-shared-context.ts` (Task 6.1.1) and injected into Phase 4 implementer/reviewer/critic dispatches via the Stage 3 SubagentStart hook. The hash is persisted in state so re-renders only fire on sprint boundary (or when refs mutate mid-sprint via the `state_save` invalidation callback).
110
+
111
+ | Field | Type | Required | Added in | Notes |
112
+ |---|---|---|---|---|
113
+ | `current_sprint_context_hash` | string | no | v4 | 16-char SHA-256 prefix (per `phase4-shared-context.ts`) of the rendered sprint-scoped shared-context block. Written by the Phase 4 orchestrator path when `BUILDANYTHING_SDK_SPRINT_CONTEXT=true` (web) / `BUILDANYTHING_SDK_SPRINT_CONTEXT_IOS=true` (iOS). Compared on each Phase 4 dispatch against a fresh render of `{buildState, refs, architecture, qualityTargets, iosFeatures?}`; mismatch forces re-render and rewrite before dispatch. Present only under Stage 6 flag; absent on markdown / Stage 5 runs. |
114
+
115
+ **v4 migration concern — none in wild.** As of this task (6.5.1), Stage 6 has not shipped. No `.build-state.json` files with `schema_version: 4` exist outside development probes (P6 Habita/Pacely evals per `MIGRATION-PLAN-FINAL.md` §11.3). `bin/buildanything-runtime.ts` `MAX_SUPPORTED_SCHEMA_VERSION_FALLBACK` is still `2` (see Task 4.5.2) — a v4 state file would currently be forward-rejected by A7, which is the intended pre-Stage-6 behavior. The runtime will be bumped to `4` as part of Stage 6 activation (after P6 probe gate passes), not here.
116
+
117
+ **v4 rollback semantics.** Rollback is via `BUILDANYTHING_SDK_SPRINT_CONTEXT=false` (web) and/or `BUILDANYTHING_SDK_SPRINT_CONTEXT_IOS=false` (iOS parity gate; see `MIGRATION-PLAN-FINAL.md` §Stage 6 rollback and Risk 2). Because `current_sprint_context_hash` is additive and optional, a Stage 5 runtime reading a Stage 6 state file with `schema_version` downgraded to `3` will ignore the field without data loss on the read path — Phase 4 simply reverts to per-task refs re-send. The persisted value survives in place until the next state write overwrites it; orchestrator code paths gated on the Stage 6 flags are responsible for not writing `current_sprint_context_hash` under per-task-refs mode.
118
+
119
+ **SSOT note.** Kiro-owned `protocols/state-schema.json` is authoritative: `properties.current_sprint_context_hash` (string) is already declared, `schema_version.maximum` is already `4`, and the top-level `$comment` migration table already lists Stage 6. This prose mirrors that shape; any future interior fields (should the sprint-context module persist more than a hash) will be documented by tightening this entry alongside a JSON Schema update.
120
+
121
+ ## Rendering contract
122
+
123
+ `.build-state.md` is regenerated from `.build-state.json` on every state change by the orchestrator's state-save routine. It is a view, not a source. The rendering is deterministic: same JSON in → same markdown out.
124
+
125
+ The rendered markdown MUST contain these sections in this order:
126
+
127
+ 1. **Header** — one line: `# Build State`
128
+ 2. **Current Phase** — `**project_type:** {project_type}`, `**Phase:** {phase} — {phase_name}`, `**Step:** {step}`, `**Mode:** {mode}`, `**Autonomous:** {autonomous}`. iOS builds also render `**app_name:**`, `**bundle_id:**`, `**xcodeproj:**`.
129
+ 3. **Input** — `**Build request:** {build_request}` and `**Context Level:** {context_level}`.
130
+ 4. **Dispatch Counter** — two lines: `- dispatches_since_save: {n}`, `- last_save: Phase {k}`.
131
+ 5. **Metric Loop Scores** — table rendered from `metric_loop_history`. Columns: Phase, Iteration, Score, Target, Top Issue. Rows sorted by phase then iteration.
132
+ 5a. **Active Metric Loop** (only if `active_metric_loop` is present) — render artifact, metric, target, current iteration, extraction method, and the scoring criteria checklist as a fenced block.
133
+ 6. **Resume Point** — bulleted `resume_point` fields.
134
+ 7. **Phase Artifacts** — bulleted list of `phase_artifacts` entries that are non-null.
135
+ 8. **iOS Features** (iOS only) — YAML fenced block mirroring `ios_features`.
136
+ 9. **Phase Progress** — checkbox list `[x]`/`[ ]` per phase from `phase_progress`. Rendered **once**, replacing any prior block. Never appended.
137
+ 10. **Blockers** (only if non-empty) — bulleted list of blocker descriptions with id and type.
138
+
139
+ The renderer MUST replace the entire file on write — never append, never diff-edit. This guarantees that drift introduced by partial writes (the capdotai `Phase Progress` duplication bug) is impossible by construction.
140
+
141
+ ## Atomic write protocol
142
+
143
+ Every orchestrator write to `.build-state.json` (and its rendered `.build-state.md` view) MUST use write-then-rename to survive mid-write interruption (compaction, crash, Ctrl-C):
144
+
145
+ 1. Write the full new contents to `docs/plans/.build-state.json.tmp`.
146
+ 2. Rename `.build-state.json.tmp` → `.build-state.json` (POSIX `mv`, which is atomic on the same filesystem).
147
+ 3. If step 1 or 2 fails, delete the leftover `.tmp` file. Never leave `.tmp` behind on a failed write.
148
+
149
+ Direct writes to `.build-state.json` are prohibited — a partial write leaves unparseable JSON and the build cannot resume.
150
+
151
+ **Read-side recovery check:** on session start / resume, if `.build-state.json.tmp` exists and `.build-state.json` does not (or is empty), treat it as a corrupted interrupted write. Do not auto-parse the `.tmp` file. Surface to the user and halt — resuming from partial state is worse than stopping.
152
+
153
+ This section is the authoritative write contract. Other protocol/command files that say "write to `.build-state.json`" mean "via this protocol."
154
+
155
+ ## Validation rules
156
+
157
+ A well-formed `.build-state.json` must satisfy:
158
+
159
+ 1. **Required fields present** — every field marked required above exists and is non-null (except where explicitly `null`-allowed like `verification.last_verify_result`).
160
+ 2. **No duplicate keys** — JSON parse succeeds with strict mode. (Addresses the duplicate-`Autonomous:` drift.)
161
+ 3. **Type correctness** — every field matches the declared type. Integers are integers, booleans are booleans, ISO timestamps parse.
162
+ 4. **Phase bounds** — `phase ∈ {-1, 0, 1, 2, 3, 4, 5, 6, 7}`. `phase === -1` only if `project_type === "ios"`.
163
+ 5. **Step matches phase** — `step` starts with the current phase number (e.g., phase 5 → `"5.x"`). Exception: iOS bootstrap step `"-1.x"`.
164
+ 6. **Mode/autonomous consistency** — `mode === "autonomous" iff autonomous === true`.
165
+ 7. **iOS fields gating** — `app_name`, `bundle_id`, `xcodeproj_path`, `ios_features`, `phase_progress.phase_minus_1` exist iff `project_type === "ios"`. On web builds these must be absent.
166
+ 8. **ios_features shape** — if present, contains exactly the 16 documented boolean keys. No extras, no omissions.
167
+ 9. **Completed tasks well-formed** — each entry has all five sub-fields; `evidence_files` is an array (possibly empty); `status ∈ {"done", "skipped", "deferred"}`.
168
+ 10. **Pending/in-progress disjoint** — `in_progress_task.task_id` (if present) does not appear in `pending_tasks` or `completed_tasks`.
169
+ 11. **Resume point consistency** — `resume_point.phase` and `resume_point.step` must not be ahead of the top-level `phase`/`step`.
170
+ 12. **Timestamps monotonic** — `session_last_saved >= session_started`.
171
+
172
+ The Wave 2 `PreToolUse` schema lint hook (W2-2) validates every Write|Edit to `.build-state.json` against these rules and denies writes that fail.