buildanything 1.8.0 → 2.1.1

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 (494) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +17 -3
  3. package/CHANGELOG.md +57 -0
  4. package/README.md +57 -61
  5. package/agents/a11y-architect.md +168 -0
  6. package/agents/briefing-officer.md +172 -0
  7. package/agents/business-model.md +82 -29
  8. package/agents/code-architect.md +80 -0
  9. package/agents/code-reviewer.md +256 -0
  10. package/agents/code-simplifier.md +72 -0
  11. package/agents/design-brand-guardian.md +312 -53
  12. package/agents/design-critic.md +144 -0
  13. package/agents/design-inclusive-visuals-specialist.md +8 -19
  14. package/agents/design-ui-designer.md +352 -56
  15. package/agents/design-ux-architect.md +418 -55
  16. package/agents/design-ux-researcher.md +359 -49
  17. package/agents/engineering-ai-engineer.md +28 -36
  18. package/agents/engineering-backend-architect.md +187 -36
  19. package/agents/engineering-data-engineer.md +227 -43
  20. package/agents/engineering-devops-automator.md +229 -74
  21. package/agents/engineering-frontend-developer.md +223 -34
  22. package/agents/engineering-mobile-app-builder.md +8 -1
  23. package/agents/engineering-rapid-prototyper.md +45 -11
  24. package/agents/engineering-security-engineer.md +265 -61
  25. package/agents/engineering-senior-developer.md +141 -19
  26. package/agents/engineering-sre.md +86 -0
  27. package/agents/engineering-technical-writer.md +287 -41
  28. package/agents/feature-intel.md +111 -0
  29. package/agents/ios-app-review-guardian.md +21 -2
  30. package/agents/ios-foundation-models-specialist.md +22 -2
  31. package/agents/ios-product-reality-auditor.md +292 -0
  32. package/agents/ios-storekit-specialist.md +11 -2
  33. package/agents/ios-swift-architect.md +29 -1
  34. package/agents/ios-swift-search.md +9 -1
  35. package/agents/ios-swift-ui-design.md +40 -5
  36. package/agents/marketing-app-store-optimizer.md +248 -64
  37. package/agents/planner.md +221 -0
  38. package/agents/pr-test-analyzer.md +64 -0
  39. package/agents/product-feedback-synthesizer.md +70 -2
  40. package/agents/product-owner.md +163 -0
  41. package/agents/product-reality-auditor.md +216 -0
  42. package/agents/product-spec-writer.md +176 -0
  43. package/agents/refactor-cleaner.md +110 -0
  44. package/agents/security-reviewer.md +129 -0
  45. package/agents/silent-failure-hunter.md +55 -0
  46. package/agents/swift-build-resolver.md +121 -0
  47. package/agents/swift-reviewer.md +113 -0
  48. package/agents/tech-feasibility.md +26 -4
  49. package/agents/testing-api-tester.md +238 -59
  50. package/agents/testing-evidence-collector.md +50 -1
  51. package/agents/testing-performance-benchmarker.md +23 -1
  52. package/agents/testing-reality-checker.md +7 -1
  53. package/agents/visual-research.md +118 -0
  54. package/bin/adapters/cycle-counter-tool.ts +155 -0
  55. package/bin/adapters/scribe-tool.ts +73 -0
  56. package/bin/adapters/state-save-tool.ts +130 -0
  57. package/bin/adapters/write-lease-tool.ts +127 -0
  58. package/bin/buildanything-runtime.js +15 -0
  59. package/bin/buildanything-runtime.ts +241 -0
  60. package/bin/graph-index.js +24 -0
  61. package/bin/graph-index.ts +340 -0
  62. package/bin/mcp-servers/graph-mcp.js +26 -0
  63. package/bin/mcp-servers/graph-mcp.ts +481 -0
  64. package/bin/mcp-servers/orchestrator-mcp.js +26 -0
  65. package/bin/mcp-servers/orchestrator-mcp.ts +361 -0
  66. package/bin/setup.js +312 -76
  67. package/commands/add-feature.md +2 -0
  68. package/commands/build.md +994 -265
  69. package/commands/fix.md +1 -1
  70. package/commands/idea-sweep.md +2 -2
  71. package/commands/self-check.md +121 -0
  72. package/commands/setup.md +61 -9
  73. package/commands/ux-review.md +5 -5
  74. package/commands/verify.md +9 -9
  75. package/docs/migration/agents.yaml +729 -0
  76. package/docs/migration/phase-graph.yaml +1504 -0
  77. package/docs/migration/sdk-host-compat.md +18 -0
  78. package/hooks/compile-writer-owner-cache.ts +171 -0
  79. package/hooks/design-md-lint +4 -0
  80. package/hooks/design-md-lint.ts +295 -0
  81. package/hooks/hooks.json +36 -0
  82. package/hooks/pre-tool-use +19 -0
  83. package/hooks/pre-tool-use.ts +807 -0
  84. package/hooks/record-mode-transitions.ts +235 -0
  85. package/hooks/session-start +71 -1
  86. package/hooks/subagent-start +17 -0
  87. package/hooks/subagent-start.ts +472 -0
  88. package/hooks/subagent-stop +17 -0
  89. package/hooks/subagent-stop.ts +153 -0
  90. package/package.json +26 -4
  91. package/protocols/agent-prompt-authoring.md +165 -0
  92. package/protocols/architecture-schema.md +178 -0
  93. package/protocols/cleanup.md +4 -0
  94. package/protocols/decision-log.md +135 -0
  95. package/protocols/design-md-authoring.md +520 -0
  96. package/protocols/design-md-spec.md +362 -0
  97. package/protocols/fake-data-detector.md +1 -1
  98. package/protocols/ios-context.md +10 -11
  99. package/protocols/ios-fake-data-detector.md +65 -0
  100. package/protocols/ios-phase-branches.md +299 -39
  101. package/protocols/launch-readiness.md +262 -0
  102. package/protocols/metric-loop.md +62 -2
  103. package/protocols/page-spec-schema.md +234 -0
  104. package/protocols/product-spec-schema.md +354 -0
  105. package/protocols/smoke-test.md +9 -1
  106. package/protocols/sprint-tasks-schema.md +53 -0
  107. package/protocols/state-schema.json +423 -0
  108. package/protocols/state-schema.md +202 -0
  109. package/protocols/verify.md +91 -3
  110. package/protocols/web-phase-branches.md +395 -75
  111. package/skills/ios/_VENDORED.md +2 -0
  112. package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
  113. package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
  114. package/skills/ios/hig-components-content/SKILL.md +86 -0
  115. package/skills/ios/hig-components-content/references/activity-views.md +79 -0
  116. package/skills/ios/hig-components-content/references/charts.md +180 -0
  117. package/skills/ios/hig-components-content/references/collections.md +48 -0
  118. package/skills/ios/hig-components-content/references/color-wells.md +42 -0
  119. package/skills/ios/hig-components-content/references/image-views.md +82 -0
  120. package/skills/ios/hig-components-content/references/image-wells.md +34 -0
  121. package/skills/ios/hig-components-content/references/lockups.md +78 -0
  122. package/skills/ios/hig-components-content/references/web-views.md +36 -0
  123. package/skills/ios/hig-components-controls/SKILL.md +88 -0
  124. package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
  125. package/skills/ios/hig-components-controls/references/controls.md +112 -0
  126. package/skills/ios/hig-components-controls/references/gauges.md +74 -0
  127. package/skills/ios/hig-components-controls/references/labels.md +92 -0
  128. package/skills/ios/hig-components-controls/references/pickers.md +128 -0
  129. package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
  130. package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
  131. package/skills/ios/hig-components-controls/references/sliders.md +92 -0
  132. package/skills/ios/hig-components-controls/references/steppers.md +40 -0
  133. package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
  134. package/skills/ios/hig-components-controls/references/text-views.md +56 -0
  135. package/skills/ios/hig-components-controls/references/toggles.md +127 -0
  136. package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
  137. package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
  138. package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
  139. package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
  140. package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
  141. package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
  142. package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
  143. package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
  144. package/skills/ios/hig-components-layout/SKILL.md +99 -0
  145. package/skills/ios/hig-components-layout/references/boxes.md +48 -0
  146. package/skills/ios/hig-components-layout/references/column-views.md +44 -0
  147. package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
  148. package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
  149. package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
  150. package/skills/ios/hig-components-layout/references/panels.md +75 -0
  151. package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
  152. package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
  153. package/skills/ios/hig-components-layout/references/split-views.md +110 -0
  154. package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
  155. package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
  156. package/skills/ios/hig-components-layout/references/windows.md +188 -0
  157. package/skills/ios/hig-components-menus/SKILL.md +81 -0
  158. package/skills/ios/hig-components-menus/references/action-button.md +61 -0
  159. package/skills/ios/hig-components-menus/references/buttons.md +261 -0
  160. package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
  161. package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
  162. package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
  163. package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
  164. package/skills/ios/hig-components-menus/references/menus.md +171 -0
  165. package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
  166. package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
  167. package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
  168. package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
  169. package/skills/ios/hig-components-search/SKILL.md +68 -0
  170. package/skills/ios/hig-components-search/references/page-controls.md +120 -0
  171. package/skills/ios/hig-components-search/references/path-controls.md +40 -0
  172. package/skills/ios/hig-components-search/references/search-fields.md +189 -0
  173. package/skills/ios/hig-components-status/SKILL.md +80 -0
  174. package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
  175. package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
  176. package/skills/ios/hig-components-status/references/status-bars.md +38 -0
  177. package/skills/ios/hig-components-system/SKILL.md +88 -0
  178. package/skills/ios/hig-components-system/references/app-clips.md +387 -0
  179. package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
  180. package/skills/ios/hig-components-system/references/complications.md +425 -0
  181. package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
  182. package/skills/ios/hig-components-system/references/live-activities.md +442 -0
  183. package/skills/ios/hig-components-system/references/notifications.md +153 -0
  184. package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
  185. package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
  186. package/skills/ios/hig-components-system/references/widgets.md +517 -0
  187. package/skills/ios/hig-foundations/SKILL.md +98 -0
  188. package/skills/ios/hig-foundations/references/accessibility.md +291 -0
  189. package/skills/ios/hig-foundations/references/app-icons.md +210 -0
  190. package/skills/ios/hig-foundations/references/branding.md +44 -0
  191. package/skills/ios/hig-foundations/references/color.md +274 -0
  192. package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
  193. package/skills/ios/hig-foundations/references/icons.md +263 -0
  194. package/skills/ios/hig-foundations/references/images.md +176 -0
  195. package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
  196. package/skills/ios/hig-foundations/references/inclusion.md +189 -0
  197. package/skills/ios/hig-foundations/references/layout.md +425 -0
  198. package/skills/ios/hig-foundations/references/materials.md +238 -0
  199. package/skills/ios/hig-foundations/references/motion.md +103 -0
  200. package/skills/ios/hig-foundations/references/privacy.md +231 -0
  201. package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
  202. package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
  203. package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
  204. package/skills/ios/hig-foundations/references/typography.md +1146 -0
  205. package/skills/ios/hig-foundations/references/writing.md +91 -0
  206. package/skills/ios/hig-inputs/SKILL.md +94 -0
  207. package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
  208. package/skills/ios/hig-inputs/references/camera-control.md +107 -0
  209. package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
  210. package/skills/ios/hig-inputs/references/eyes.md +120 -0
  211. package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
  212. package/skills/ios/hig-inputs/references/game-controls.md +156 -0
  213. package/skills/ios/hig-inputs/references/gestures.md +208 -0
  214. package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
  215. package/skills/ios/hig-inputs/references/keyboards.md +234 -0
  216. package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
  217. package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
  218. package/skills/ios/hig-inputs/references/remotes.md +67 -0
  219. package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
  220. package/skills/ios/hig-patterns/SKILL.md +104 -0
  221. package/skills/ios/hig-patterns/references/charting-data.md +81 -0
  222. package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
  223. package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
  224. package/skills/ios/hig-patterns/references/entering-data.md +69 -0
  225. package/skills/ios/hig-patterns/references/feedback.md +67 -0
  226. package/skills/ios/hig-patterns/references/file-management.md +135 -0
  227. package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
  228. package/skills/ios/hig-patterns/references/launching.md +81 -0
  229. package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
  230. package/skills/ios/hig-patterns/references/loading.md +59 -0
  231. package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
  232. package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
  233. package/skills/ios/hig-patterns/references/modality.md +82 -0
  234. package/skills/ios/hig-patterns/references/multitasking.md +131 -0
  235. package/skills/ios/hig-patterns/references/offering-help.md +117 -0
  236. package/skills/ios/hig-patterns/references/onboarding.md +69 -0
  237. package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
  238. package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
  239. package/skills/ios/hig-patterns/references/playing-video.md +180 -0
  240. package/skills/ios/hig-patterns/references/printing.md +50 -0
  241. package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
  242. package/skills/ios/hig-patterns/references/searching.md +70 -0
  243. package/skills/ios/hig-patterns/references/settings.md +84 -0
  244. package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
  245. package/skills/ios/hig-patterns/references/workouts.md +76 -0
  246. package/skills/ios/hig-platforms/SKILL.md +84 -0
  247. package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
  248. package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
  249. package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
  250. package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
  251. package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
  252. package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
  253. package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
  254. package/skills/ios/hig-project-context/SKILL.md +133 -0
  255. package/skills/ios/hig-technologies/SKILL.md +107 -0
  256. package/skills/ios/hig-technologies/references/airplay.md +125 -0
  257. package/skills/ios/hig-technologies/references/always-on.md +62 -0
  258. package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
  259. package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
  260. package/skills/ios/hig-technologies/references/carekit.md +224 -0
  261. package/skills/ios/hig-technologies/references/carplay.md +119 -0
  262. package/skills/ios/hig-technologies/references/game-center.md +343 -0
  263. package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
  264. package/skills/ios/hig-technologies/references/healthkit.md +120 -0
  265. package/skills/ios/hig-technologies/references/homekit.md +343 -0
  266. package/skills/ios/hig-technologies/references/icloud.md +52 -0
  267. package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
  268. package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
  269. package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
  270. package/skills/ios/hig-technologies/references/live-photos.md +54 -0
  271. package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
  272. package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
  273. package/skills/ios/hig-technologies/references/maps.md +221 -0
  274. package/skills/ios/hig-technologies/references/nfc.md +51 -0
  275. package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
  276. package/skills/ios/hig-technologies/references/researchkit.md +134 -0
  277. package/skills/ios/hig-technologies/references/shareplay.md +142 -0
  278. package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
  279. package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
  280. package/skills/ios/hig-technologies/references/siri.md +523 -0
  281. package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
  282. package/skills/ios/hig-technologies/references/voiceover.md +90 -0
  283. package/skills/ios/hig-technologies/references/wallet.md +420 -0
  284. package/skills/ios/ios-bootstrap/SKILL.md +17 -8
  285. package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
  286. package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
  287. package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
  288. package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
  289. package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
  290. package/skills/web/accessibility/SKILL.md +146 -0
  291. package/skills/web/aceternity-ui/SKILL.md +719 -0
  292. package/skills/web/aceternity-ui/metadata.json +10 -0
  293. package/skills/web/api-design/SKILL.md +523 -0
  294. package/skills/web/chart-accessibility/SKILL.md +332 -0
  295. package/skills/web/composition-patterns/AGENTS.md +946 -0
  296. package/skills/web/composition-patterns/README.md +60 -0
  297. package/skills/web/composition-patterns/SKILL.md +89 -0
  298. package/skills/web/composition-patterns/metadata.json +11 -0
  299. package/skills/web/composition-patterns/rules/_sections.md +29 -0
  300. package/skills/web/composition-patterns/rules/_template.md +24 -0
  301. package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  302. package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
  303. package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  304. package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
  305. package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
  306. package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
  307. package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
  308. package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
  309. package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
  310. package/skills/web/database-migrations/SKILL.md +429 -0
  311. package/skills/web/deployment-patterns/SKILL.md +427 -0
  312. package/skills/web/docker-patterns/SKILL.md +364 -0
  313. package/skills/web/e2e-testing/SKILL.md +326 -0
  314. package/skills/web/lighthouse-ci/SKILL.md +361 -0
  315. package/skills/web/mcp-server-patterns/SKILL.md +69 -0
  316. package/skills/web/next-best-practices/SKILL.md +153 -0
  317. package/skills/web/next-best-practices/async-patterns.md +87 -0
  318. package/skills/web/next-best-practices/bundling.md +180 -0
  319. package/skills/web/next-best-practices/data-patterns.md +297 -0
  320. package/skills/web/next-best-practices/debug-tricks.md +105 -0
  321. package/skills/web/next-best-practices/directives.md +73 -0
  322. package/skills/web/next-best-practices/error-handling.md +227 -0
  323. package/skills/web/next-best-practices/file-conventions.md +140 -0
  324. package/skills/web/next-best-practices/font.md +245 -0
  325. package/skills/web/next-best-practices/functions.md +108 -0
  326. package/skills/web/next-best-practices/hydration-error.md +91 -0
  327. package/skills/web/next-best-practices/image.md +173 -0
  328. package/skills/web/next-best-practices/metadata.md +301 -0
  329. package/skills/web/next-best-practices/parallel-routes.md +287 -0
  330. package/skills/web/next-best-practices/route-handlers.md +146 -0
  331. package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
  332. package/skills/web/next-best-practices/runtime-selection.md +39 -0
  333. package/skills/web/next-best-practices/scripts.md +141 -0
  334. package/skills/web/next-best-practices/self-hosting.md +371 -0
  335. package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
  336. package/skills/web/next-cache-components/SKILL.md +411 -0
  337. package/skills/web/postgres-best-practices/SKILL.md +14 -0
  338. package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
  339. package/skills/web/react-best-practices/AGENTS.md +3810 -0
  340. package/skills/web/react-best-practices/README.md +123 -0
  341. package/skills/web/react-best-practices/SKILL.md +149 -0
  342. package/skills/web/react-best-practices/metadata.json +15 -0
  343. package/skills/web/react-best-practices/rules/_sections.md +46 -0
  344. package/skills/web/react-best-practices/rules/_template.md +28 -0
  345. package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  346. package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  347. package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
  348. package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
  349. package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
  350. package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  351. package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
  352. package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
  353. package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
  354. package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  355. package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  356. package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
  357. package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
  358. package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  359. package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  360. package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
  361. package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
  362. package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
  363. package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  364. package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
  365. package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
  366. package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
  367. package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
  368. package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
  369. package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
  370. package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
  371. package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
  372. package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
  373. package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
  374. package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
  375. package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
  376. package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
  377. package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
  378. package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  379. package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
  380. package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  381. package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
  382. package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
  383. package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  384. package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  385. package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  386. package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
  387. package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
  388. package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
  389. package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  390. package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
  391. package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
  392. package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  393. package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
  394. package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  395. package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  396. package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  397. package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
  398. package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  399. package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
  400. package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  401. package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  402. package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
  403. package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  404. package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  405. package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
  406. package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
  407. package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
  408. package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
  409. package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
  410. package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
  411. package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
  412. package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
  413. package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  414. package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
  415. package/skills/web/seo/SKILL.md +154 -0
  416. package/skills/web/web-design-guidelines/SKILL.md +39 -0
  417. package/skills/web/zap-scan-config/SKILL.md +444 -0
  418. package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
  419. package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
  420. package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
  421. package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
  422. package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
  423. package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
  424. package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
  425. package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
  426. package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
  427. package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
  428. package/src/graph/ids.ts +86 -0
  429. package/src/graph/index.ts +32 -0
  430. package/src/graph/parser/architecture.ts +603 -0
  431. package/src/graph/parser/component-manifest.ts +268 -0
  432. package/src/graph/parser/decisions-jsonl.ts +407 -0
  433. package/src/graph/parser/design-md-pass2.ts +253 -0
  434. package/src/graph/parser/design-md.ts +477 -0
  435. package/src/graph/parser/page-spec.ts +496 -0
  436. package/src/graph/parser/product-spec.ts +930 -0
  437. package/src/graph/parser/screenshot.ts +342 -0
  438. package/src/graph/parser/sprint-tasks.ts +317 -0
  439. package/src/graph/storage/index.ts +1154 -0
  440. package/src/graph/types.ts +432 -0
  441. package/src/graph/util/dhash.ts +84 -0
  442. package/src/lrr/aggregator.ts +175 -0
  443. package/src/orchestrator/hooks/context-header.ts +119 -0
  444. package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
  445. package/src/orchestrator/hooks/token-accounting.ts +112 -0
  446. package/src/orchestrator/mcp/cycle-counter.ts +130 -0
  447. package/src/orchestrator/mcp/scribe.ts +294 -0
  448. package/src/orchestrator/mcp/state-save.ts +149 -0
  449. package/src/orchestrator/mcp/write-lease.ts +184 -0
  450. package/src/orchestrator/phase4-shared-context.ts +57 -0
  451. package/src/orchestrator/schemas/backward-edge.ts +46 -0
  452. package/agents/agentic-identity-trust.md +0 -121
  453. package/agents/data-consolidation-agent.md +0 -39
  454. package/agents/design-image-prompt-engineer.md +0 -105
  455. package/agents/design-visual-storyteller.md +0 -147
  456. package/agents/design-whimsy-injector.md +0 -89
  457. package/agents/engineering-autonomous-optimization-architect.md +0 -105
  458. package/agents/market-intel.md +0 -35
  459. package/agents/marketing-instagram-curator.md +0 -111
  460. package/agents/marketing-reddit-community-builder.md +0 -121
  461. package/agents/marketing-social-media-strategist.md +0 -74
  462. package/agents/marketing-tiktok-strategist.md +0 -123
  463. package/agents/marketing-twitter-engager.md +0 -124
  464. package/agents/marketing-wechat-official-account.md +0 -143
  465. package/agents/marketing-xiaohongshu-specialist.md +0 -136
  466. package/agents/marketing-zhihu-strategist.md +0 -160
  467. package/agents/product-behavioral-nudge-engine.md +0 -78
  468. package/agents/project-management-experiment-tracker.md +0 -102
  469. package/agents/report-distribution-agent.md +0 -43
  470. package/agents/risk-analysis.md +0 -45
  471. package/agents/sales-data-extraction-agent.md +0 -46
  472. package/agents/specialized-cultural-intelligence-strategist.md +0 -65
  473. package/agents/specialized-developer-advocate.md +0 -146
  474. package/agents/support-analytics-reporter.md +0 -133
  475. package/agents/support-executive-summary-generator.md +0 -64
  476. package/agents/support-finance-tracker.md +0 -145
  477. package/agents/support-legal-compliance-checker.md +0 -129
  478. package/agents/support-support-responder.md +0 -91
  479. package/agents/testing-accessibility-auditor.md +0 -110
  480. package/agents/testing-test-results-analyzer.md +0 -97
  481. package/agents/testing-tool-evaluator.md +0 -76
  482. package/agents/testing-workflow-optimizer.md +0 -99
  483. package/agents/user-research.md +0 -40
  484. package/protocols/brainstorm.md +0 -99
  485. package/protocols/design.md +0 -269
  486. package/protocols/planning.md +0 -87
  487. package/skills/ios/ios-hig/SKILL.md +0 -41
  488. package/skills/ios/ios-hig/references/accessibility.md +0 -81
  489. package/skills/ios/ios-hig/references/content.md +0 -142
  490. package/skills/ios/ios-hig/references/feedback.md +0 -123
  491. package/skills/ios/ios-hig/references/interaction.md +0 -199
  492. package/skills/ios/ios-hig/references/performance-platform.md +0 -129
  493. package/skills/ios/ios-hig/references/privacy-permissions.md +0 -181
  494. package/skills/ios/ios-hig/references/visual-design.md +0 -84
@@ -0,0 +1,165 @@
1
+ # Agent Prompt Authoring Standard
2
+
3
+ You are producing text that will become another agent's prompt. Task briefs, finding reports, routing rows, fix specs, critic verdicts — when your output is read by a downstream agent and shapes its behavior, the quality of your text is the quality of that next dispatch's input.
4
+
5
+ This protocol defines how to write that text well.
6
+
7
+ ## Who this applies to
8
+
9
+ - `briefing-officer` — writes per-task briefs read by implementers
10
+ - `product-feedback-synthesizer` — writes routing rows read by Phase 5.5 fix dispatches
11
+ - `product-reality-auditor` — writes findings.json read by the synthesizer
12
+ - `design-critic` — writes findings that drive metric-loop fix prompts
13
+ - `product-owner` — writes feature-delegation plans read by briefing officers
14
+ - `code-architect` — writes implementation blueprints read by sprint planner + implementers
15
+ - LRR chapter judges — write verdicts read by the aggregator for backward routing
16
+
17
+ If your output is consumed by a human, this protocol does not apply — write for humans normally.
18
+
19
+ ## The single rule
20
+
21
+ The receiving agent has not seen this conversation. It cannot ask follow-up questions. It will read your output and act. If a smart colleague reading the same text would be confused, the receiving agent will be too.
22
+
23
+ ## Standards
24
+
25
+ ### 1. Ground in quotes, not paraphrase
26
+
27
+ When your output references a source artifact (product-spec, page-spec, decisions.jsonl, findings.json, architecture.md), quote the source verbatim and carry the source location as a trailing reference. Paraphrase reintroduces the drift the graph layer was built to prevent.
28
+
29
+ - Weak: `User has 3 attempts to enter a code per the spec`
30
+ - Good: `User has 3 verification attempts before lockout (from product-spec.md L142)`
31
+
32
+ If the graph returns the field directly, copy it character-for-character. ID-to-label resolution and list-filtering are the only allowed transformations.
33
+
34
+ When the source field is negative by design (DNA `Don'ts`, banned phrases, system invariants), quote it verbatim — do not rewrite to positive framing. Standard 1 (verbatim) wins over Standard 2 (positive) when the source itself is intentionally negative.
35
+
36
+ ### 2. Tell the receiver what to do, not what not to do
37
+
38
+ Positive prescriptions are unambiguous. Negative prescriptions force the receiver to enumerate the negative space and pick something from it — that's where drift happens.
39
+
40
+ - Weak: `Don't use generic colors`
41
+ - Good: `Use locked DNA palette: primary #0F172A, accent #F59E0B`
42
+
43
+ - Weak: `Don't skip error handling`
44
+ - Good: `On 4xx response, render the error toast component with the API body's message field`
45
+
46
+ Negative framing is justified for actual invariants the receiver would otherwise rationalize around — see Standard 5 for when to escalate.
47
+
48
+ ### 3. Add the why for non-obvious constraints
49
+
50
+ Without motivation, the receiver cannot judge edge cases. A stated reason lets it reason about whether the rule applies in a borderline situation.
51
+
52
+ - Weak: `Use the manifest entry`
53
+ - Good: `Use the manifest entry — this slot is HARD-GATE; rebuilding it from scratch will fail Phase 5 brand audit`
54
+
55
+ - Weak: `Cap retries at 3`
56
+ - Good: `Cap retries at 3 — backend rate-limits at 5 req/sec per user (from architecture.md L88)`
57
+
58
+ ### 4. Wrap structured inputs in XML tags
59
+
60
+ When you slot a complex artifact into your output (wireframe, acceptance criteria, persona constraints, API contract), wrap it. The receiver parses the boundary unambiguously.
61
+
62
+ ```
63
+ <wireframe>
64
+ [verbatim ASCII from page-specs/checkout.md L20-45]
65
+ </wireframe>
66
+
67
+ <acceptance_criteria>
68
+ - Form renders all required fields per layout
69
+ - Submitting valid input calls POST /api/checkout once
70
+ </acceptance_criteria>
71
+ ```
72
+
73
+ This matters most when your output contains long-form quoted content (>10 lines). Short inline values do not need tags.
74
+
75
+ ### 5. Reserve HARD-GATE language for actual invariants
76
+
77
+ `MUST`, `STOP`, `do NOT` lose force when overused. Reserve them for rules where violation breaks the pipeline. Soft preferences dressed up as hard gates dilute the genuine ones.
78
+
79
+ Use HARD-GATE language for:
80
+ - Pipeline-breaking failures (graph-call failure → STOP, no silent fallback)
81
+ - Race-condition triggers (writer-owner violations corrupt files)
82
+ - Audit-blocking decisions (manifest `hard_gate: true` slots)
83
+ - Drift-introducing transformations on graph fields (verbatim slotting)
84
+
85
+ Use normal prescriptive language for everything else: "Use", "Include", "Quote", "Reference". A rule stated once with rationale is stronger than the same rule stated three times in escalating caps.
86
+
87
+ If you find yourself repeating a rule, the rule is fragile — fix it once at the source instead.
88
+
89
+ ## Worked example — task brief block
90
+
91
+ ### Weak brief
92
+
93
+ ```
94
+ ### Task 4.1: Build checkout
95
+ - Agent: engineering-frontend-developer
96
+ - Context:
97
+ - Build the checkout flow per the spec
98
+ - Make sure errors are handled
99
+ - Use good design
100
+ - Acceptance: works
101
+ ```
102
+
103
+ Violations: pointer-not-content (Standard 1), vague verb "handled" (Standard 2), uninstantiated "good design" (Standard 2), no testable criteria.
104
+
105
+ ### Improved brief
106
+
107
+ ```
108
+ ### Task 4.1: Build checkout payment-method form
109
+ - Agent: engineering-frontend-developer
110
+ - Skills: react-best-practices, shadcn-composition
111
+ - Context:
112
+ <wireframe>
113
+ [verbatim ASCII from page-specs/checkout.md L20-45]
114
+ </wireframe>
115
+ - Components: shadcn Form.field, shadcn Input.text, shadcn Button.primary
116
+ - Tokens: colors.primary, spacing.lg
117
+ - API: POST /api/checkout, body {payment_method_id: string, amount_cents: number}, returns 200 {order_id} or 4xx {error: string}
118
+ - Error states:
119
+ - 402 → toast "Payment declined. Try a different card." (from product-spec.md L142)
120
+ - 422 → inline field error "Invalid card number" (from product-spec.md L145)
121
+ - Business rules: amount_cents minimum 50 (from product-spec.md L156)
122
+ - Persona: [Buyer] complete checkout in 3 fields max (from product-spec.md L167)
123
+ - Acceptance:
124
+ - Form renders all fields specified in wireframe
125
+ - Submitting valid payment_method_id calls POST /api/checkout once
126
+ - 402 response shows toast within 200ms
127
+ - 422 response shows inline error tied to the offending field
128
+ ```
129
+
130
+ Why this works: wireframe quoted verbatim, components carry library + variant, every constraint has a source ref, acceptance criteria are testable.
131
+
132
+ ## Worked example — synthesizer routing row
133
+
134
+ ### Weak finding
135
+
136
+ ```json
137
+ {
138
+ "finding_id": "f-042",
139
+ "description": "Checkout has issues with persona requirements",
140
+ "target_phase": 1
141
+ }
142
+ ```
143
+
144
+ ### Improved finding
145
+
146
+ ```json
147
+ {
148
+ "finding_id": "f-042",
149
+ "source": "product-reality",
150
+ "feature_id": "checkout",
151
+ "target_phase": 1,
152
+ "target_task_or_step": "1.6",
153
+ "description": "Buyer persona constraint at product-spec.md L167 requires 3-field checkout, but spec also requires billing_address (5 fields) and shipping_address (5 fields). Constraint and required fields are mutually exclusive — spec needs disambiguation before Phase 4 can proceed.",
154
+ "evidence_path": "evidence/product-reality/checkout/findings.json#f-042"
155
+ }
156
+ ```
157
+
158
+ Why this works: contradiction stated concretely with line refs, evidence pointer is reachable, routing decision (`target_phase: 1`) is justified by the description text rather than asserted.
159
+
160
+ ## When you are tempted to break these rules
161
+
162
+ - **"It's faster to summarize than to quote"** — the time you save now is paid with interest by the implementer who has to re-read the source to recover what you summarized away.
163
+ - **"The receiver will figure it out"** — the receiver has no conversation history. It will guess, and the guess will be plausible-looking but wrong.
164
+ - **"Adding the source ref is noisy"** — Phase 5 auditors and reviewers use source refs to spot-check. Without them, every claim is unverifiable.
165
+ - **"This rule is critical, I should repeat it for emphasis"** — repetition signals fragility. State it once with the why; if the rule actually breaks the pipeline, escalate to HARD-GATE language at the rule's source instead of restating in every dispatch.
@@ -0,0 +1,178 @@
1
+ # architecture.md Anchor Convention
2
+
3
+ ## Purpose
4
+
5
+ Phase 2.3's architecture synthesizer emits `docs/plans/architecture.md` with **stable section anchors** so that Phase 5.1 implementer agents can receive content-addressed **refs** (file path + anchor name) instead of pasted content slices. This document defines the required top-level sections, the anchor naming convention, the minimum subsection anchors each top-level section must provide, the exact ref format Phase 5.1 prompts inject, and the synthesizer's output contract. Introduced in Wave 1 (W1-4) to close the capdotai Phase 5 regression where the orchestrator loaded a 43KB architecture doc into its own context 48 times to slice it — violating the "dispatcher not doer" HARD-GATE at `commands/build.md:24` and burning ~528K tokens on slicing alone.
6
+
7
+ ## Required top-level sections
8
+
9
+ The synthesized `architecture.md` MUST contain these top-level headings, in this order:
10
+
11
+ - `# Overview`
12
+ - `# Frontend`
13
+ - `# Backend`
14
+ - `# Data Model`
15
+ - `# Security`
16
+ - `# Infrastructure`
17
+ - `# Scope`
18
+ - `# Out of Scope`
19
+
20
+ For iOS builds, `# Frontend` MAY be titled `# App` and `# Backend` MAY be omitted if the app is fully on-device (the `refs.json` index reflects whatever headings exist). For web builds, all eight headings are required.
21
+
22
+ ## Anchor naming rules
23
+
24
+ - Anchors are **kebab-case** within a section — lowercase, hyphen-separated, no spaces.
25
+ - Subsections use a **nested anchor** of the form `parent/child`. For example, `frontend/checkout` refers to a `## Checkout` subsection under `# Frontend`.
26
+ - Anchors must be **stable across synthesizer reruns**. A rerun of the synthesizer on the same inputs must produce the same anchors, so that refs cached in `refs.json` or in implementer prompts do not break.
27
+ - Anchors are **referenced via `architecture.md#parent/child`** in prompt bodies and in `refs.json`. The `#` separator is a plain markdown fragment — no special escaping.
28
+ - Deeper nesting (`parent/child/grandchild`) is allowed but discouraged. Prefer two levels.
29
+ - Anchor names MUST NOT include spaces, uppercase letters, punctuation other than `-` and `/`, or numeric prefixes like `1-frontend`.
30
+
31
+ ## Required subsection anchors (minimum)
32
+
33
+ Every synthesized `architecture.md` MUST provide at least these subsection anchors under the named top-level section. Additional subsections are allowed; fewer is a synthesizer failure.
34
+
35
+ ### Under `# Frontend`
36
+
37
+ - `frontend/layout` — page hierarchy, routing, navigation structure. MUST state whether the product exposes a public, unauthenticated, content-indexable surface (yes / no / partial) — downstream SEO skill loading keys off this answer. MUST include a navigation map listing every route with its nav element (sidebar item, tab, breadcrumb, direct URL only).
38
+ - `frontend/components` — core component list and responsibilities.
39
+ - `frontend/state` — state management approach (stores, context, local state boundaries).
40
+ - `frontend/styling` — design tokens, CSS/styling approach.
41
+
42
+ ### Under `# Backend`
43
+
44
+ - `backend/services` — service boundaries and responsibilities.
45
+ - `backend/api` — API contracts (routes, request/response shapes). Each endpoint heading MUST include feature attribution annotations: `**POST /api/orders** (provides: order-placement)` or `**GET /api/inventory/{id}** (provides: inventory) (consumes: order-placement)`. Use the feature's kebab-case name from `product-spec.md`. `provides` = the feature that implements this endpoint; `consumes` = features that call it. These annotations are parsed by the graph indexer to emit `feature_provides_endpoint` / `feature_consumes_endpoint` edges — without them, the Product Owner cannot group features by API dependency.
46
+ - `backend/persistence` — data layer, ORM choice, query patterns.
47
+
48
+ ### Under `# Data Model`
49
+
50
+ - `data-model/entities` — entities and their relationships.
51
+ - `data-model/migrations` — migration strategy (omit only if no persistence layer exists).
52
+
53
+ ### Under `# Security`
54
+
55
+ - `security/auth` — authentication and authorization model.
56
+ - `security/input-validation` — boundary validation rules.
57
+ - `security/secrets` — secret storage and rotation.
58
+
59
+ ### Under `# Infrastructure`
60
+
61
+ - `infrastructure/deployment` — deployment target (Vercel, AWS, self-hosted, TestFlight), CI/CD approach, environment strategy (dev/staging/prod).
62
+ - `infrastructure/caching` — caching strategy (CDN, in-memory, database query cache), cache invalidation approach, what's cached and for how long. Stub with "N/A — no caching layer needed" if the product doesn't warrant it.
63
+ - `infrastructure/background-jobs` — async processing model (email sending, webhook handling, scheduled tasks, queue system). Stub with "N/A — no background processing needed" if all operations are synchronous.
64
+ - `infrastructure/env-vars` — required environment variables and secrets for each environment (dev/staging/prod). List every key the app needs to run, which service it authenticates with, and whether it's a secret or a config value. Format: `STRIPE_SECRET_KEY — Stripe payment processing — secret — required`.
65
+
66
+ ## Ref format used by implementer prompts
67
+
68
+ Phase 5.1 implementer prompts inject a `ARCHITECTURE REFS:` block in place of pasted architecture content. The block is parsed by the implementer agent, which uses the `Read` tool to fetch refs on demand.
69
+
70
+ ```
71
+ ARCHITECTURE REFS:
72
+ - architecture.md#frontend/checkout (primary)
73
+ - architecture.md#data-model/orders (secondary — read if touching order creation)
74
+ - architecture.md#security/auth (read if touching /api/checkout)
75
+ ```
76
+
77
+ Rules:
78
+
79
+ - `(primary)` — the implementer MUST Read this ref before starting work.
80
+ - `(secondary — read if touching X)` — conditional; the implementer reads only if the task description overlaps with the hint.
81
+ - Refs are one per line, bullet-prefixed `-`, with two-space indent.
82
+ - File paths are relative to the repo root. Anchors are kebab-case per the rules above.
83
+
84
+ The orchestrator NEVER pastes section content into the implementer prompt. It emits only refs. If the implementer needs more context, it Reads additional refs or opens the full `architecture.md`.
85
+
86
+ ## Phase 2.3 synthesizer output contract
87
+
88
+ The Phase 2.3 architecture synthesizer MUST produce one artifact:
89
+
90
+ 1. `docs/plans/architecture.md` — the human-readable architecture doc, containing:
91
+ - All eight required top-level headings (or the iOS-adjusted set).
92
+ - All required subsection anchors for each top-level section present.
93
+ - Prose content under each subsection sufficient for an implementer to ground their work.
94
+
95
+ The synthesizer does NOT write `refs.json`. The Phase 2.2 Refs Indexer owns that file (see below).
96
+
97
+ The synthesizer MUST fail loudly (emit a BLOCKED verdict) if it cannot produce all required subsection anchors — e.g., if the architecture is too thin to have a meaningful `security/auth` section, the synthesizer stubs the anchor with a one-line "N/A — {reason}" rather than omitting it.
98
+
99
+ ## refs.json — the live downstream docs index
100
+
101
+ `refs.json` is the live downstream docs index. It covers every anchor in:
102
+
103
+ - `design-doc.md` (THE PRD)
104
+ - `architecture.md`
105
+ - `sprint-tasks.md`
106
+ - `visual-design-spec.md` (if exists)
107
+ - `quality-targets.json` (via flat key anchors)
108
+
109
+ Writer: Phase 2.2 Refs Indexer step (dispatched as INTERNAL inline role-string). Consumers: Phase 3+ agents via the Briefing Officer per-task context map (no full pastes). Phase 1 raw research files are NOT in `refs.json` — they are spent after Phase 2 hybrid routing distributes them to architects.
110
+
111
+ The Phase 2.2 Refs Indexer (INTERNAL inline role-string dispatched by the orchestrator) is the sole writer of `refs.json`. It runs after the architecture synthesizer and Sprint Breakdown steps, reads the live docs (`design-doc.md`, `architecture.md`, `sprint-tasks.md`, `visual-design-spec.md` if exists, `quality-targets.json`), and emits the multi-doc anchor index.
112
+
113
+ See `commands/build.md` Phase 2.2 Step 2.3 Refs Indexer dispatch for the exact generation prompt.
114
+
115
+ ## refs.json example
116
+
117
+ ```json
118
+ {
119
+ "schema_version": "2.0",
120
+ "generated_at": "2026-04-13T10:00:00Z",
121
+ "generated_by": "Phase 2.2 Refs Indexer",
122
+ "anchors": [
123
+ {
124
+ "file_path": "docs/plans/design-doc.md",
125
+ "anchor": "#persona",
126
+ "topic": "primary user persona + JTBD",
127
+ "line_start": 12,
128
+ "line_end": 38
129
+ },
130
+ {
131
+ "file_path": "docs/plans/architecture.md",
132
+ "anchor": "#frontend/checkout",
133
+ "topic": "checkout flow component tree",
134
+ "line_start": 102,
135
+ "line_end": 145
136
+ },
137
+ {
138
+ "file_path": "docs/plans/architecture.md",
139
+ "anchor": "#data-model/orders",
140
+ "topic": "Orders entity, status enum, relations to users and items",
141
+ "line_start": 302,
142
+ "line_end": 358
143
+ },
144
+ {
145
+ "file_path": "docs/plans/sprint-tasks.md",
146
+ "anchor": "#sprint-1-task-3",
147
+ "topic": "wire checkout form to /api/checkout",
148
+ "line_start": 88,
149
+ "line_end": 104
150
+ }
151
+ ]
152
+ }
153
+ ```
154
+
155
+ Fields:
156
+
157
+ - `schema_version` (string) — currently `"2.0"`. Bumped from `1` when the index was extended from architecture-only to the multi-doc scope above.
158
+ - `generated_at` (ISO 8601) — Refs Indexer run timestamp.
159
+ - `generated_by` (string) — `"Phase 2.2 Refs Indexer"`.
160
+ - `anchors` (array) — one entry per anchor across all indexed files. Each: `{file_path, anchor, topic, line_start, line_end}`.
161
+ - `file_path` — repo-relative path of the file the anchor lives in. Required. Tells consumers which document to `Read`.
162
+ - `anchor` — the markdown fragment, including the leading `#` (e.g. `#frontend/checkout`, `#persona`). For `quality-targets.json` entries, the anchor is the flat key name.
163
+ - `topic` — one-sentence summary used by the Briefing Officer to pick refs without reading the file.
164
+ - `line_start`, `line_end` — optional but recommended. Allow consumers to `Read` just the section instead of the whole file.
165
+
166
+ ## Validation
167
+
168
+ A synthesized `architecture.md` plus `refs.json` pair is well-formed iff:
169
+
170
+ 1. All required top-level headings exist in `architecture.md` (grep `^# {Heading}$` for each).
171
+ 2. All required subsection anchors resolve to real `## Heading` lines under the correct parent. (A heading `## Checkout` under `# Frontend` resolves the anchor `frontend/checkout`.)
172
+ 3. `refs.json` parses as valid JSON against the shape above.
173
+ 4. Every architecture-scoped entry in `refs.json.anchors[]` (those with `file_path` ending in `architecture.md`) resolves to a real heading in `architecture.md` at the claimed `line_start`.
174
+ 5. Every required anchor from this document appears in `refs.json.anchors` with the correct `file_path`.
175
+ 6. No `(file_path, anchor)` pair appears twice in `refs.json.anchors`.
176
+ 7. `schema_version` is `"2.0"` and `generated_by` is `"Phase 2.2 Refs Indexer"`.
177
+
178
+ The Wave 1 `buildanything:verify` protocol runs these checks after Phase 2.3 completes. A failure flips the Phase 2 verdict to `NEEDS_WORK` and re-dispatches the Refs Indexer (or the synthesizer, if the missing anchors indicate `architecture.md` itself is incomplete) with a directive listing the missing anchors.
@@ -52,3 +52,7 @@ After the cleanup agent finishes, spot-check that acceptance criteria still hold
52
52
  - Scope is sacred. Only files from the implementation changeset. Zero exceptions.
53
53
  - This runs AFTER implementation, BEFORE the metric loop.
54
54
  - If cleanup breaks acceptance criteria, revert and skip. Never block the metric loop on a cleanup failure.
55
+
56
+ ### Build Log Rotation
57
+
58
+ At Phase 0, if `docs/plans/build-log.md` exceeds 500 lines, archive it to `docs/plans/build-log.prev.md` and start a fresh log. The archived log preserves full history for debugging. The 500-line threshold keeps the active log within a reasonable context budget for agents that read it.
@@ -0,0 +1,135 @@
1
+ # Decision Log Protocol
2
+
3
+ This is the append-only decision log that captures rejected alternatives alongside the chosen approach, with a natural-language revisit criterion for each rejection. It feeds two loops: the learnings pipeline at Step 6.0.1 (cross-run PITFALL capture) and the Phase 0 resume handler (preserving the *why* across build sessions). Without this log the build remembers *what* it chose but forgets *what it rejected and under what conditions to reconsider*.
4
+
5
+ ## Schema
6
+
7
+ Rows live in `docs/plans/decisions.jsonl`, one JSON object per line, append-only. NEVER rewrite or truncate this file.
8
+
9
+ ```json
10
+ {
11
+ "decision_id": "D-<phase>-<seq>",
12
+ "phase": "2.2",
13
+ "timestamp": "<ISO8601>",
14
+ "decision": "chose SQLite over Postgres for initial persistence",
15
+ "chosen_approach": "SQLite with single-file .db in project root",
16
+ "rejected_alternatives": [
17
+ {
18
+ "approach": "Postgres via Supabase",
19
+ "reason": "adds infra setup to Phase 0 prereqs; overkill for single-user app",
20
+ "revisit_criterion": "multi-user access OR >10k rows OR concurrent writes"
21
+ }
22
+ ],
23
+ "decided_by": "<agent-role-string>",
24
+ "ref": "architecture.md#backend/persistence",
25
+ "status": "open"
26
+ }
27
+ ```
28
+
29
+ `decided_by` is a free-form string naming the agent role that authored the decision (e.g., `architect`, `implementer`, `design-brand-guardian`, `ux-architect`, `human`, `design-critic`). The orchestrator does not validate against a fixed enum — the set of writing agents changes as new phases ship, and a brittle whitelist would force a schema migration every time. The LRR Aggregator matches on the string value directly against its known-agent registry; unknown values fall through to the legacy classification path in Step 4.
30
+
31
+ Findings in LRR chapter verdicts may reference a decision row via the `related_decision_id` field, which the LRR Aggregator uses for backward routing (see `protocols/launch-readiness.md` Aggregator Step 3). The `related_decision_id` lives on the **finding** object inside a chapter verdict, not on the decision row itself — it is the pointer from a finding back to the decision that authored the choice being violated.
32
+
33
+ The `status` field takes one of three values:
34
+
35
+ - `open` — decision stands, revisit criterion has not fired
36
+ - `triggered` — Reality Checker matched the revisit criterion against current evidence this build
37
+ - `resolved` — a later decision row supersedes this one; the log still shows both
38
+
39
+ ## Hard Field Constraints
40
+
41
+ - Max **3 rejected alternatives** per decision row
42
+ - Max **2 sentences** per `reason` field
43
+ - Max **1 sentence** per `revisit_criterion` (natural language assertion)
44
+ - Max **5 decision rows per phase** (typical 2-3)
45
+ - Total per build: **15-25 rows max, ~500-1000 tokens worst case**
46
+ - File path: `docs/plans/decisions.jsonl` — append-only, NEVER rewrite or truncate
47
+
48
+ A row that exceeds any of these limits is a bug in the writing agent, not a permission to raise the limit. Split one decision into two rows before relaxing the constraints.
49
+
50
+ ## Natural-Language `revisit_criterion` Format
51
+
52
+ The criterion is a one-sentence assertion the Reality Checker can semantically match against build evidence. Write it as the condition under which the rejected alternative would become correct. Do NOT write it as a metric threshold tied to a Phase 6 vocabulary that may not exist yet.
53
+
54
+ Examples:
55
+
56
+ - `"multi-user access OR >10k rows OR concurrent writes"`
57
+ - `"user requests server-side rendering"`
58
+ - `"bundle size exceeds 500KB gzipped"`
59
+ - `"first-paint latency regresses below 2s on 4G"`
60
+
61
+ If you cannot write the criterion in one sentence, the rejection is probably not yet crisp enough to log — revisit the decision first, log it second.
62
+
63
+ ## Author Assignment
64
+
65
+ Author = the agent that made the call. The orchestrator NEVER writes decision rows itself.
66
+
67
+ | Phase | Writer | Example decisions |
68
+ |-------|--------|-------------------|
69
+ | 1 (Brainstorm) | Brainstorm synthesis agent | Tech stack, data model, scope boundary |
70
+ | 2.2 (Architecture) | Architecture synthesizer | API contract, service boundary, persistence, auth model |
71
+ | 3 (Design) | [DEFERRED — currently no author until Phase 3 changes ship] | Visual direction kill rationales |
72
+ | 4 (Build) | Implementer — ONLY if deviating from planned task | Deviation rationale |
73
+
74
+ Phases 0, 6, 7 do not write decisions.
75
+
76
+ ## Readers
77
+
78
+ Three consumers, each reads a bounded slice:
79
+
80
+ 1. **Phase 0 Resume Handler (on `--resume`)** — reads the top 5 most recent rows sorted by `decision_id` desc, filtered to the current phase and upstream phases. Injects short fields + `ref` anchor into rehydration context alongside `architecture.md`. Never reads all rows.
81
+
82
+ 2. **Step 6.0 Reality Checker (Dissent Log Revisit Pass)** — reads all rows where `status == "open"` and `revisit_criterion` is non-empty. Semantically evaluates each criterion against the current build's evidence manifest. For any triggered row, emits a structural finding of the form `"revisit-criterion-triggered: D-N-M — [criterion]"` in `specific_findings[]` and contributes to `combined_verdict` (triggered → at minimum NEEDS WORK).
83
+
84
+ 3. **Step 6.0.1 Learnings Harvester** — reads the Reality Checker's triggered findings and appends one PITFALL row per trigger to `learnings.jsonl` with `provenance.decision_id` back-referencing the source row. This is the cross-run PITFALL capture path, distinct from the in-run metric-loop post-hoc harvest.
85
+
86
+ ## Subagents Never Write Directly
87
+
88
+ Subagents return `deviation_row` objects in their structured result. The orchestrator forwards each row through the `scribe_decision` MCP tool — the single writer for `docs/plans/decisions.jsonl`. The MCP owns `decision_id` allocation (`D-{phase}-<seq>`), stamps `timestamp` and `status: "open"`, validates against `decisions.schema.json`, and atomically appends the line. The orchestrator MUST NOT Write or Edit this file directly; subagents MUST NOT either. Specialist agents still author the row fields to preserve original language — they just don't touch the file.
89
+
90
+ ## Worked Examples
91
+
92
+ **Phase 2.2 architecture — persistence layer (cross-domain deviation):**
93
+
94
+ ```json
95
+ {
96
+ "decision_id": "D-2-03",
97
+ "phase": "2.2",
98
+ "timestamp": "2026-04-13T16:05:41Z",
99
+ "decision": "chose SQLite over Postgres for initial persistence",
100
+ "chosen_approach": "SQLite with single-file .db in project root, migrations via drizzle-kit",
101
+ "rejected_alternatives": [
102
+ {
103
+ "approach": "Postgres via Supabase",
104
+ "reason": "adds infra setup to Phase 0 prereqs; overkill for single-user app.",
105
+ "revisit_criterion": "multi-user access OR >10k rows OR concurrent writes"
106
+ },
107
+ {
108
+ "approach": "JSON file on disk",
109
+ "reason": "no query layer, no migrations, no referential integrity.",
110
+ "revisit_criterion": "schema stabilizes AND row count stays under 500"
111
+ }
112
+ ],
113
+ "decided_by": "architect",
114
+ "ref": "architecture.md#backend/persistence",
115
+ "status": "open"
116
+ }
117
+ ```
118
+
119
+ ## Token Budget
120
+
121
+ | Item | Budget |
122
+ |------|--------|
123
+ | decisions.jsonl on disk per build | 500-1000 tokens worst case |
124
+ | Reality Checker read (Step 6.0) | ~200 tokens |
125
+ | Resume handler read (Phase 0) | ~300 tokens |
126
+ | Learnings harvester read (Step 6.0.1) | ~200 tokens |
127
+ | **Total per build** | **~1.2-1.7K tokens** |
128
+
129
+ ## Ref Field Convention
130
+
131
+ Every row carries a `ref` anchor (e.g., `architecture.md#backend/persistence` or `visual-design-spec.md#<anchor>`) that downstream readers use to widen context without pasting prose. The resume handler passes the row's short fields *plus* the ref — the resumed agent reads the anchor via its own Read tool if it needs the full context. This matches the existing `refs.json` pattern in `commands/build.md` (primary/secondary anchors handed to implementers instead of pasted content), and keeps rehydration token cost bounded to ~300 tokens for the top 5 rows regardless of how much architectural prose sits behind each anchor.
132
+
133
+ ### Malformed Row Handling
134
+
135
+ When reading `decisions.jsonl` or `learnings.jsonl`, consumers MUST skip malformed rows (invalid JSON) with a warning logged to `build-log.md` rather than crashing. Shape: `"WARN: skipped malformed row at line N in [file]: [parse error]"`. This prevents a single corrupt append from blocking the entire LRR Aggregator or Learnings Loader.