buildanything 1.8.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +9 -3
- package/CHANGELOG.md +57 -0
- package/README.md +2 -2
- package/agents/a11y-architect.md +166 -0
- package/agents/business-model.md +80 -29
- package/agents/code-architect.md +75 -0
- package/agents/code-reviewer.md +255 -0
- package/agents/code-simplifier.md +64 -0
- package/agents/design-brand-guardian.md +293 -53
- package/agents/design-critic.md +139 -0
- package/agents/design-inclusive-visuals-specialist.md +6 -19
- package/agents/design-ui-designer.md +335 -56
- package/agents/design-ux-architect.md +403 -55
- package/agents/design-ux-researcher.md +264 -49
- package/agents/engineering-ai-engineer.md +26 -36
- package/agents/engineering-backend-architect.md +185 -36
- package/agents/engineering-data-engineer.md +225 -43
- package/agents/engineering-devops-automator.md +227 -74
- package/agents/engineering-frontend-developer.md +210 -34
- package/agents/engineering-mobile-app-builder.md +6 -1
- package/agents/engineering-rapid-prototyper.md +30 -9
- package/agents/engineering-security-engineer.md +263 -61
- package/agents/engineering-senior-developer.md +128 -19
- package/agents/engineering-sre.md +84 -0
- package/agents/engineering-technical-writer.md +285 -41
- package/agents/feature-intel.md +110 -0
- package/agents/ios-app-review-guardian.md +19 -2
- package/agents/ios-foundation-models-specialist.md +20 -2
- package/agents/ios-storekit-specialist.md +9 -2
- package/agents/ios-swift-architect.md +28 -1
- package/agents/ios-swift-search.md +8 -1
- package/agents/ios-swift-ui-design.md +33 -1
- package/agents/marketing-app-store-optimizer.md +246 -64
- package/agents/planner.md +216 -0
- package/agents/pr-test-analyzer.md +63 -0
- package/agents/product-feedback-synthesizer.md +8 -2
- package/agents/refactor-cleaner.md +102 -0
- package/agents/security-reviewer.md +128 -0
- package/agents/silent-failure-hunter.md +54 -0
- package/agents/swift-build-resolver.md +119 -0
- package/agents/swift-reviewer.md +112 -0
- package/agents/tech-feasibility.md +21 -1
- package/agents/testing-api-tester.md +236 -59
- package/agents/testing-evidence-collector.md +26 -1
- package/agents/testing-performance-benchmarker.md +21 -1
- package/agents/testing-reality-checker.md +6 -1
- package/agents/visual-research.md +116 -0
- package/bin/adapters/cycle-counter-tool.ts +155 -0
- package/bin/adapters/scribe-tool.ts +71 -0
- package/bin/adapters/state-save-tool.ts +130 -0
- package/bin/adapters/write-lease-tool.ts +127 -0
- package/bin/buildanything-runtime.js +15 -0
- package/bin/buildanything-runtime.ts +328 -0
- package/bin/setup.js +83 -8
- package/commands/add-feature.md +2 -0
- package/commands/build.md +782 -266
- package/commands/fix.md +1 -1
- package/commands/self-check.md +121 -0
- package/commands/setup.md +50 -9
- package/commands/ux-review.md +2 -2
- package/commands/verify.md +6 -9
- package/docs/migration/agents.yaml +729 -0
- package/docs/migration/phase-graph.yaml +1088 -0
- package/docs/migration/sdk-host-compat.md +18 -0
- package/hooks/compile-writer-owner-cache.ts +171 -0
- package/hooks/hooks.json +36 -0
- package/hooks/pre-tool-use +19 -0
- package/hooks/pre-tool-use.ts +776 -0
- package/hooks/record-mode-transitions.ts +178 -0
- package/hooks/session-start +71 -1
- package/hooks/subagent-start +17 -0
- package/hooks/subagent-start.ts +471 -0
- package/hooks/subagent-stop +17 -0
- package/hooks/subagent-stop.ts +153 -0
- package/package.json +24 -4
- package/protocols/architecture-schema.md +171 -0
- package/protocols/decision-log.md +131 -0
- package/protocols/ios-context.md +10 -11
- package/protocols/ios-phase-branches.md +208 -33
- package/protocols/launch-readiness.md +258 -0
- package/protocols/metric-loop.md +62 -2
- package/protocols/smoke-test.md +9 -1
- package/protocols/state-schema.json +388 -0
- package/protocols/state-schema.md +172 -0
- package/protocols/verify.md +62 -2
- package/protocols/visual-dna.md +185 -0
- package/protocols/web-phase-branches.md +222 -72
- package/skills/ios/_VENDORED.md +2 -0
- package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
- package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
- package/skills/ios/hig-components-content/SKILL.md +86 -0
- package/skills/ios/hig-components-content/references/activity-views.md +79 -0
- package/skills/ios/hig-components-content/references/charts.md +180 -0
- package/skills/ios/hig-components-content/references/collections.md +48 -0
- package/skills/ios/hig-components-content/references/color-wells.md +42 -0
- package/skills/ios/hig-components-content/references/image-views.md +82 -0
- package/skills/ios/hig-components-content/references/image-wells.md +34 -0
- package/skills/ios/hig-components-content/references/lockups.md +78 -0
- package/skills/ios/hig-components-content/references/web-views.md +36 -0
- package/skills/ios/hig-components-controls/SKILL.md +88 -0
- package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
- package/skills/ios/hig-components-controls/references/controls.md +112 -0
- package/skills/ios/hig-components-controls/references/gauges.md +74 -0
- package/skills/ios/hig-components-controls/references/labels.md +92 -0
- package/skills/ios/hig-components-controls/references/pickers.md +128 -0
- package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
- package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
- package/skills/ios/hig-components-controls/references/sliders.md +92 -0
- package/skills/ios/hig-components-controls/references/steppers.md +40 -0
- package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
- package/skills/ios/hig-components-controls/references/text-views.md +56 -0
- package/skills/ios/hig-components-controls/references/toggles.md +127 -0
- package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
- package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
- package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
- package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
- package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
- package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
- package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
- package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
- package/skills/ios/hig-components-layout/SKILL.md +99 -0
- package/skills/ios/hig-components-layout/references/boxes.md +48 -0
- package/skills/ios/hig-components-layout/references/column-views.md +44 -0
- package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
- package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
- package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
- package/skills/ios/hig-components-layout/references/panels.md +75 -0
- package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
- package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
- package/skills/ios/hig-components-layout/references/split-views.md +110 -0
- package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
- package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
- package/skills/ios/hig-components-layout/references/windows.md +188 -0
- package/skills/ios/hig-components-menus/SKILL.md +81 -0
- package/skills/ios/hig-components-menus/references/action-button.md +61 -0
- package/skills/ios/hig-components-menus/references/buttons.md +261 -0
- package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
- package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
- package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
- package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
- package/skills/ios/hig-components-menus/references/menus.md +171 -0
- package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
- package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
- package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
- package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
- package/skills/ios/hig-components-search/SKILL.md +68 -0
- package/skills/ios/hig-components-search/references/page-controls.md +120 -0
- package/skills/ios/hig-components-search/references/path-controls.md +40 -0
- package/skills/ios/hig-components-search/references/search-fields.md +189 -0
- package/skills/ios/hig-components-status/SKILL.md +80 -0
- package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
- package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
- package/skills/ios/hig-components-status/references/status-bars.md +38 -0
- package/skills/ios/hig-components-system/SKILL.md +88 -0
- package/skills/ios/hig-components-system/references/app-clips.md +387 -0
- package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
- package/skills/ios/hig-components-system/references/complications.md +425 -0
- package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
- package/skills/ios/hig-components-system/references/live-activities.md +442 -0
- package/skills/ios/hig-components-system/references/notifications.md +153 -0
- package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
- package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
- package/skills/ios/hig-components-system/references/widgets.md +517 -0
- package/skills/ios/hig-foundations/SKILL.md +98 -0
- package/skills/ios/hig-foundations/references/accessibility.md +291 -0
- package/skills/ios/hig-foundations/references/app-icons.md +210 -0
- package/skills/ios/hig-foundations/references/branding.md +44 -0
- package/skills/ios/hig-foundations/references/color.md +274 -0
- package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
- package/skills/ios/hig-foundations/references/icons.md +263 -0
- package/skills/ios/hig-foundations/references/images.md +176 -0
- package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
- package/skills/ios/hig-foundations/references/inclusion.md +189 -0
- package/skills/ios/hig-foundations/references/layout.md +425 -0
- package/skills/ios/hig-foundations/references/materials.md +238 -0
- package/skills/ios/hig-foundations/references/motion.md +103 -0
- package/skills/ios/hig-foundations/references/privacy.md +231 -0
- package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
- package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
- package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
- package/skills/ios/hig-foundations/references/typography.md +1146 -0
- package/skills/ios/hig-foundations/references/writing.md +91 -0
- package/skills/ios/hig-inputs/SKILL.md +94 -0
- package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
- package/skills/ios/hig-inputs/references/camera-control.md +107 -0
- package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
- package/skills/ios/hig-inputs/references/eyes.md +120 -0
- package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
- package/skills/ios/hig-inputs/references/game-controls.md +156 -0
- package/skills/ios/hig-inputs/references/gestures.md +208 -0
- package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
- package/skills/ios/hig-inputs/references/keyboards.md +234 -0
- package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
- package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
- package/skills/ios/hig-inputs/references/remotes.md +67 -0
- package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
- package/skills/ios/hig-patterns/SKILL.md +104 -0
- package/skills/ios/hig-patterns/references/charting-data.md +81 -0
- package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
- package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
- package/skills/ios/hig-patterns/references/entering-data.md +69 -0
- package/skills/ios/hig-patterns/references/feedback.md +67 -0
- package/skills/ios/hig-patterns/references/file-management.md +135 -0
- package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
- package/skills/ios/hig-patterns/references/launching.md +81 -0
- package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
- package/skills/ios/hig-patterns/references/loading.md +59 -0
- package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
- package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
- package/skills/ios/hig-patterns/references/modality.md +82 -0
- package/skills/ios/hig-patterns/references/multitasking.md +131 -0
- package/skills/ios/hig-patterns/references/offering-help.md +117 -0
- package/skills/ios/hig-patterns/references/onboarding.md +69 -0
- package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
- package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
- package/skills/ios/hig-patterns/references/playing-video.md +180 -0
- package/skills/ios/hig-patterns/references/printing.md +50 -0
- package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
- package/skills/ios/hig-patterns/references/searching.md +70 -0
- package/skills/ios/hig-patterns/references/settings.md +84 -0
- package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
- package/skills/ios/hig-patterns/references/workouts.md +76 -0
- package/skills/ios/hig-platforms/SKILL.md +84 -0
- package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
- package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
- package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
- package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
- package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
- package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
- package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
- package/skills/ios/hig-project-context/SKILL.md +133 -0
- package/skills/ios/hig-technologies/SKILL.md +107 -0
- package/skills/ios/hig-technologies/references/airplay.md +125 -0
- package/skills/ios/hig-technologies/references/always-on.md +62 -0
- package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
- package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
- package/skills/ios/hig-technologies/references/carekit.md +224 -0
- package/skills/ios/hig-technologies/references/carplay.md +119 -0
- package/skills/ios/hig-technologies/references/game-center.md +343 -0
- package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
- package/skills/ios/hig-technologies/references/healthkit.md +120 -0
- package/skills/ios/hig-technologies/references/homekit.md +343 -0
- package/skills/ios/hig-technologies/references/icloud.md +52 -0
- package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
- package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
- package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
- package/skills/ios/hig-technologies/references/live-photos.md +54 -0
- package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
- package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
- package/skills/ios/hig-technologies/references/maps.md +221 -0
- package/skills/ios/hig-technologies/references/nfc.md +51 -0
- package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
- package/skills/ios/hig-technologies/references/researchkit.md +134 -0
- package/skills/ios/hig-technologies/references/shareplay.md +142 -0
- package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
- package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
- package/skills/ios/hig-technologies/references/siri.md +523 -0
- package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
- package/skills/ios/hig-technologies/references/voiceover.md +90 -0
- package/skills/ios/hig-technologies/references/wallet.md +420 -0
- package/skills/ios/ios-bootstrap/SKILL.md +16 -7
- package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
- package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
- package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
- package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
- package/skills/web/accessibility/SKILL.md +146 -0
- package/skills/web/aceternity-ui/SKILL.md +719 -0
- package/skills/web/aceternity-ui/metadata.json +10 -0
- package/skills/web/api-design/SKILL.md +523 -0
- package/skills/web/chart-accessibility/SKILL.md +332 -0
- package/skills/web/composition-patterns/AGENTS.md +946 -0
- package/skills/web/composition-patterns/README.md +60 -0
- package/skills/web/composition-patterns/SKILL.md +89 -0
- package/skills/web/composition-patterns/metadata.json +11 -0
- package/skills/web/composition-patterns/rules/_sections.md +29 -0
- package/skills/web/composition-patterns/rules/_template.md +24 -0
- package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/skills/web/database-migrations/SKILL.md +429 -0
- package/skills/web/deployment-patterns/SKILL.md +427 -0
- package/skills/web/docker-patterns/SKILL.md +364 -0
- package/skills/web/e2e-testing/SKILL.md +326 -0
- package/skills/web/lighthouse-ci/SKILL.md +361 -0
- package/skills/web/mcp-server-patterns/SKILL.md +69 -0
- package/skills/web/next-best-practices/SKILL.md +153 -0
- package/skills/web/next-best-practices/async-patterns.md +87 -0
- package/skills/web/next-best-practices/bundling.md +180 -0
- package/skills/web/next-best-practices/data-patterns.md +297 -0
- package/skills/web/next-best-practices/debug-tricks.md +105 -0
- package/skills/web/next-best-practices/directives.md +73 -0
- package/skills/web/next-best-practices/error-handling.md +227 -0
- package/skills/web/next-best-practices/file-conventions.md +140 -0
- package/skills/web/next-best-practices/font.md +245 -0
- package/skills/web/next-best-practices/functions.md +108 -0
- package/skills/web/next-best-practices/hydration-error.md +91 -0
- package/skills/web/next-best-practices/image.md +173 -0
- package/skills/web/next-best-practices/metadata.md +301 -0
- package/skills/web/next-best-practices/parallel-routes.md +287 -0
- package/skills/web/next-best-practices/route-handlers.md +146 -0
- package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
- package/skills/web/next-best-practices/runtime-selection.md +39 -0
- package/skills/web/next-best-practices/scripts.md +141 -0
- package/skills/web/next-best-practices/self-hosting.md +371 -0
- package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
- package/skills/web/next-cache-components/SKILL.md +411 -0
- package/skills/web/postgres-best-practices/SKILL.md +14 -0
- package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
- package/skills/web/react-best-practices/AGENTS.md +3810 -0
- package/skills/web/react-best-practices/README.md +123 -0
- package/skills/web/react-best-practices/SKILL.md +149 -0
- package/skills/web/react-best-practices/metadata.json +15 -0
- package/skills/web/react-best-practices/rules/_sections.md +46 -0
- package/skills/web/react-best-practices/rules/_template.md +28 -0
- package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
- package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
- package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/web/seo/SKILL.md +154 -0
- package/skills/web/web-design-guidelines/SKILL.md +39 -0
- package/skills/web/zap-scan-config/SKILL.md +444 -0
- package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
- package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
- package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
- package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
- package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
- package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
- package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
- package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
- package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
- package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
- package/src/lrr/aggregator.ts +80 -0
- package/src/orchestrator/hooks/context-header.ts +95 -0
- package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
- package/src/orchestrator/hooks/token-accounting.ts +101 -0
- package/src/orchestrator/mcp/cycle-counter.ts +129 -0
- package/src/orchestrator/mcp/scribe.ts +283 -0
- package/src/orchestrator/mcp/state-save.ts +149 -0
- package/src/orchestrator/mcp/write-lease.ts +167 -0
- package/src/orchestrator/phase4-shared-context.ts +41 -0
- package/src/orchestrator/schemas/backward-edge.ts +46 -0
- package/agents/agentic-identity-trust.md +0 -121
- package/agents/data-consolidation-agent.md +0 -39
- package/agents/design-image-prompt-engineer.md +0 -105
- package/agents/design-visual-storyteller.md +0 -147
- package/agents/design-whimsy-injector.md +0 -89
- package/agents/engineering-autonomous-optimization-architect.md +0 -105
- package/agents/market-intel.md +0 -35
- package/agents/marketing-instagram-curator.md +0 -111
- package/agents/marketing-reddit-community-builder.md +0 -121
- package/agents/marketing-social-media-strategist.md +0 -74
- package/agents/marketing-tiktok-strategist.md +0 -123
- package/agents/marketing-twitter-engager.md +0 -124
- package/agents/marketing-wechat-official-account.md +0 -143
- package/agents/marketing-xiaohongshu-specialist.md +0 -136
- package/agents/marketing-zhihu-strategist.md +0 -160
- package/agents/product-behavioral-nudge-engine.md +0 -78
- package/agents/project-management-experiment-tracker.md +0 -102
- package/agents/report-distribution-agent.md +0 -43
- package/agents/risk-analysis.md +0 -45
- package/agents/sales-data-extraction-agent.md +0 -46
- package/agents/specialized-cultural-intelligence-strategist.md +0 -65
- package/agents/specialized-developer-advocate.md +0 -146
- package/agents/support-analytics-reporter.md +0 -133
- package/agents/support-executive-summary-generator.md +0 -64
- package/agents/support-finance-tracker.md +0 -145
- package/agents/support-legal-compliance-checker.md +0 -129
- package/agents/support-support-responder.md +0 -91
- package/agents/testing-accessibility-auditor.md +0 -110
- package/agents/testing-test-results-analyzer.md +0 -97
- package/agents/testing-tool-evaluator.md +0 -76
- package/agents/testing-workflow-optimizer.md +0 -99
- package/agents/user-research.md +0 -40
- package/protocols/brainstorm.md +0 -99
- package/protocols/design.md +0 -269
- package/protocols/planning.md +0 -87
- package/skills/ios/ios-hig/SKILL.md +0 -41
- package/skills/ios/ios-hig/references/accessibility.md +0 -81
- package/skills/ios/ios-hig/references/content.md +0 -142
- package/skills/ios/ios-hig/references/feedback.md +0 -123
- package/skills/ios/ios-hig/references/interaction.md +0 -199
- package/skills/ios/ios-hig/references/performance-platform.md +0 -129
- package/skills/ios/ios-hig/references/privacy-permissions.md +0 -181
- package/skills/ios/ios-hig/references/visual-design.md +0 -84
|
@@ -0,0 +1,1088 @@
|
|
|
1
|
+
# Default-deny for unknown paths activates in Stage 2 (Task 2.1.3 of sdk-hybrid migration).
|
|
2
|
+
version: 1
|
|
3
|
+
source_prose: docs/migration/phase-graph.md
|
|
4
|
+
generated_at: 2026-04-18
|
|
5
|
+
policy: |
|
|
6
|
+
Mirror of docs/migration/phase-graph.md. Prose is source of truth until the SDK
|
|
7
|
+
orchestrator flips polarity. If prose changes, this file changes in the same
|
|
8
|
+
commit. A drift-lint script (eval/lint_phase_graph.py — TBD) will fail CI if
|
|
9
|
+
structured data diverges from prose tables.
|
|
10
|
+
|
|
11
|
+
# ---------------------------------------------------------------------------
|
|
12
|
+
# 1. Artifact writer-owner table
|
|
13
|
+
# ---------------------------------------------------------------------------
|
|
14
|
+
artifacts:
|
|
15
|
+
- path: CLAUDE.md
|
|
16
|
+
writer: phase-1
|
|
17
|
+
readers: [all-subagents-auto]
|
|
18
|
+
- path: docs/plans/design-doc.md
|
|
19
|
+
alias: PRD
|
|
20
|
+
writer: phase-1
|
|
21
|
+
readers: [phase-2, phase-3, phase-4, phase-5, phase-6, phase-7]
|
|
22
|
+
- path: docs/plans/architecture.md
|
|
23
|
+
writer: phase-2
|
|
24
|
+
readers: [phase-3, phase-4, phase-5, phase-6, phase-7]
|
|
25
|
+
- path: docs/plans/sprint-tasks.md
|
|
26
|
+
writer: phase-2
|
|
27
|
+
readers: [phase-4, phase-5, phase-6]
|
|
28
|
+
- path: docs/plans/quality-targets.json
|
|
29
|
+
writer: phase-2
|
|
30
|
+
readers: [phase-4, phase-5, phase-6]
|
|
31
|
+
- path: docs/plans/visual-design-spec.md
|
|
32
|
+
platform: web
|
|
33
|
+
writer: phase-3
|
|
34
|
+
readers: [phase-4, phase-5, phase-6]
|
|
35
|
+
- path: docs/plans/ios-design-board.md
|
|
36
|
+
platform: ios
|
|
37
|
+
writer: phase-3
|
|
38
|
+
readers: [phase-4, phase-5, phase-6]
|
|
39
|
+
- path: docs/plans/component-manifest.md
|
|
40
|
+
platform: web
|
|
41
|
+
writer: phase-3
|
|
42
|
+
readers: [phase-4]
|
|
43
|
+
notes: HARD-GATE import source
|
|
44
|
+
- path: docs/plans/visual-dna.md
|
|
45
|
+
platform: web
|
|
46
|
+
writer: phase-3
|
|
47
|
+
readers: [phase-3, phase-4, phase-5, phase-6]
|
|
48
|
+
- path: docs/plans/refs.json
|
|
49
|
+
writer: phase-2
|
|
50
|
+
extended_by: phase-3
|
|
51
|
+
readers: [phase-4-briefing-officer]
|
|
52
|
+
- path: docs/plans/decisions.jsonl
|
|
53
|
+
writer: orchestrator-scribe
|
|
54
|
+
write_mode: append-only
|
|
55
|
+
readers: [phase-0-resume, phase-5-reality-checker, phase-6-lrr-aggregator]
|
|
56
|
+
hard_gate: Subagents return deviation_row in structured result; they never write this file directly.
|
|
57
|
+
- path: docs/plans/learnings.jsonl
|
|
58
|
+
writers: [phase-5, phase-7]
|
|
59
|
+
readers: [phase-0-learnings-loader, phase-5-reality-sweep]
|
|
60
|
+
- path: docs/plans/evidence/*.json
|
|
61
|
+
writer: phase-5
|
|
62
|
+
contributors: [phase-4]
|
|
63
|
+
readers: [phase-6, phase-7]
|
|
64
|
+
- path: docs/plans/evidence/lrr/*.json
|
|
65
|
+
writers: [code-reviewer, security-reviewer, engineering-sre, a11y-architect, design-brand-guardian]
|
|
66
|
+
readers: [phase-6-aggregator, orchestrator]
|
|
67
|
+
notes: |
|
|
68
|
+
One file per LRR chapter. Writer set = the 5 chapter subagents (aka
|
|
69
|
+
"chapter-judge" role per MIGRATION-PLAN-FINAL §Stage 5). Aggregator and
|
|
70
|
+
orchestrator are READ-ONLY on chapter files. Enforced agent-role match
|
|
71
|
+
in hooks/pre-tool-use.ts against subagent_type staged by subagent-start.
|
|
72
|
+
- path: docs/plans/evidence/lrr-aggregate.json
|
|
73
|
+
writer: phase-6-aggregator
|
|
74
|
+
readers: [phase-7]
|
|
75
|
+
- path: docs/plans/.build-state.json
|
|
76
|
+
writer: orchestrator
|
|
77
|
+
write_frequency: every-phase-boundary
|
|
78
|
+
readers: [all-phases, resume-handler]
|
|
79
|
+
- path: docs/plans/.build-state.md
|
|
80
|
+
writer: auto-rendered-view
|
|
81
|
+
readers: [read-only]
|
|
82
|
+
notes: regenerated from .build-state.json on every update
|
|
83
|
+
- path: docs/plans/.task-outputs/[task-id].json
|
|
84
|
+
writer: phase-4
|
|
85
|
+
readers: [phase-5, phase-6]
|
|
86
|
+
- path: docs/plans/build-log.md
|
|
87
|
+
writer: every-phase
|
|
88
|
+
write_mode: append-on-transition
|
|
89
|
+
readers: [user, resume]
|
|
90
|
+
|
|
91
|
+
phase_internal_scratch:
|
|
92
|
+
path_glob: docs/plans/phase1-scratch/*.{md,json}
|
|
93
|
+
files:
|
|
94
|
+
- idea-draft.md
|
|
95
|
+
- feature-intel.md
|
|
96
|
+
- tech-feasibility.md
|
|
97
|
+
- ux-research.md
|
|
98
|
+
- business-model.md
|
|
99
|
+
- findings-digest.md
|
|
100
|
+
- suggested-questions.md
|
|
101
|
+
- user-decisions.md
|
|
102
|
+
- prereqs.json
|
|
103
|
+
readers: [phase-1-only]
|
|
104
|
+
notes: Never read by phase 3+.
|
|
105
|
+
|
|
106
|
+
# ---------------------------------------------------------------------------
|
|
107
|
+
# 2. Classification matrix
|
|
108
|
+
# ---------------------------------------------------------------------------
|
|
109
|
+
classifications:
|
|
110
|
+
project_type:
|
|
111
|
+
values: [web, ios]
|
|
112
|
+
default: web
|
|
113
|
+
rules:
|
|
114
|
+
- signal: "iOS keywords in prompt (iOS, iPhone, SwiftUI, Xcode, App Store, TestFlight, Apple, SwiftData, HIG, Liquid Glass, watchOS, visionOS)"
|
|
115
|
+
mode: interactive_confirm_or_autonomous_infer
|
|
116
|
+
value: ios
|
|
117
|
+
- signal: ".xcodeproj OR Package.swift OR *.swift in repo"
|
|
118
|
+
mode: auto
|
|
119
|
+
value: ios
|
|
120
|
+
branch_load:
|
|
121
|
+
ios: [protocols/ios-phase-branches.md, protocols/ios-context.md]
|
|
122
|
+
web: [protocols/web-phase-branches.md]
|
|
123
|
+
|
|
124
|
+
ios_features:
|
|
125
|
+
platform: ios
|
|
126
|
+
resolved_at: end-of-phase-2
|
|
127
|
+
flags:
|
|
128
|
+
- widgets
|
|
129
|
+
- liveActivities
|
|
130
|
+
- appIntents
|
|
131
|
+
- foundationModels
|
|
132
|
+
- storekit
|
|
133
|
+
- healthkit
|
|
134
|
+
- push
|
|
135
|
+
- cloudkit
|
|
136
|
+
- siri
|
|
137
|
+
- location
|
|
138
|
+
- background
|
|
139
|
+
- cameraPhoto
|
|
140
|
+
- microphone
|
|
141
|
+
- contacts
|
|
142
|
+
- calendar
|
|
143
|
+
- appleWatch
|
|
144
|
+
gates: [phase-4-skill-bundles, entitlement-generation]
|
|
145
|
+
|
|
146
|
+
# ---------------------------------------------------------------------------
|
|
147
|
+
# 3. Phase graph
|
|
148
|
+
# ---------------------------------------------------------------------------
|
|
149
|
+
phases:
|
|
150
|
+
- id: "0"
|
|
151
|
+
name: Pre-flight
|
|
152
|
+
kind: classify-only
|
|
153
|
+
skip_conditions: []
|
|
154
|
+
steps:
|
|
155
|
+
- id: resume-check
|
|
156
|
+
name: Resume handler
|
|
157
|
+
kind: internal
|
|
158
|
+
fires_on: [--resume, post-compaction-SessionStart-hook]
|
|
159
|
+
writes: []
|
|
160
|
+
reads: [.build-state.json, decisions.jsonl top-5, TodoWrite]
|
|
161
|
+
- id: "0.1"
|
|
162
|
+
name: Read the Room
|
|
163
|
+
kind: classify
|
|
164
|
+
writes_state: context_level
|
|
165
|
+
value_domain: [full-design, decision-brief, partial, raw-idea]
|
|
166
|
+
reads: [$ARGUMENTS, docs/plans/, docs/briefs/]
|
|
167
|
+
- id: "0.1b"
|
|
168
|
+
name: Project Type Classification
|
|
169
|
+
kind: classify
|
|
170
|
+
writes_state: project_type
|
|
171
|
+
value_domain: [web, ios]
|
|
172
|
+
- id: "0.1d"
|
|
173
|
+
name: Learnings Loader
|
|
174
|
+
kind: read
|
|
175
|
+
reads: [learnings.jsonl, ~/.claude/buildanything/learnings.jsonl]
|
|
176
|
+
writes: [docs/plans/.active-learnings.md]
|
|
177
|
+
- id: "0.2"
|
|
178
|
+
name: Initialize
|
|
179
|
+
kind: write
|
|
180
|
+
writes: [docs/plans/.build-state.json, TodoWrite]
|
|
181
|
+
notes:
|
|
182
|
+
- No prereq collection here; stack decision happens in phase 1 step 1.4.
|
|
183
|
+
|
|
184
|
+
- id: "-1"
|
|
185
|
+
name: iOS Bootstrap
|
|
186
|
+
kind: bootstrap
|
|
187
|
+
skip_conditions:
|
|
188
|
+
- project_type != ios
|
|
189
|
+
- .xcodeproj exists
|
|
190
|
+
steps:
|
|
191
|
+
- id: "-1.1"
|
|
192
|
+
name: Environment Check
|
|
193
|
+
kind: internal
|
|
194
|
+
verifies: [Xcode 26.3+, XcodeBuildMCP, apple-docs-mcp, Maestro CLI]
|
|
195
|
+
on_failure: hard-fail
|
|
196
|
+
- id: "-1.2"
|
|
197
|
+
name: Xcode Project Creation
|
|
198
|
+
kind: dispatch-single-internal
|
|
199
|
+
constraints: [iOS 26.0+, Swift 6.2+, SwiftUI, SwiftData, no Tuist, no XcodeGen]
|
|
200
|
+
- id: "-1.2b"
|
|
201
|
+
name: Overwrite Apple template tests
|
|
202
|
+
kind: write
|
|
203
|
+
writes: ["<target>Tests/<target>Tests.swift", "<target>UITests/<target>UITests.swift"]
|
|
204
|
+
notes: inserts AUTOGENERATED HARNESS marker so stub detector treats as MARKER not STUB
|
|
205
|
+
- id: "-1.3"
|
|
206
|
+
name: Bootstrap Verification
|
|
207
|
+
kind: internal
|
|
208
|
+
verifies: [xcode-ok, xcodeproj-exists, mcp-servers-respond, maestro-installed, first-build-launch-succeeded]
|
|
209
|
+
on_failure: HARD-STOP
|
|
210
|
+
|
|
211
|
+
- id: "1"
|
|
212
|
+
name: Discover
|
|
213
|
+
kind: sequential-with-parallel-research
|
|
214
|
+
skip_conditions: [context_level == full-design]
|
|
215
|
+
decision_rows_written: 3
|
|
216
|
+
backward_edges:
|
|
217
|
+
- from: GATE-1-NO
|
|
218
|
+
to: phase-1.step-1.0
|
|
219
|
+
steps:
|
|
220
|
+
- id: "1.0"
|
|
221
|
+
name: Initial Brainstorm
|
|
222
|
+
kind: dispatch-single-internal
|
|
223
|
+
role: brainstorm-facilitator-round-1
|
|
224
|
+
reads: [$ARGUMENTS, conversation]
|
|
225
|
+
writes: [phase1-scratch/idea-draft.md]
|
|
226
|
+
- id: "1.1"
|
|
227
|
+
name: Research (4 parallel)
|
|
228
|
+
kind: dispatch-parallel
|
|
229
|
+
dispatch_mode: single-message
|
|
230
|
+
dispatches:
|
|
231
|
+
- feature-intel
|
|
232
|
+
- tech-feasibility
|
|
233
|
+
- design-ux-researcher
|
|
234
|
+
- business-model
|
|
235
|
+
reads: [idea-draft.md]
|
|
236
|
+
writes:
|
|
237
|
+
- phase1-scratch/feature-intel.md
|
|
238
|
+
- phase1-scratch/tech-feasibility.md
|
|
239
|
+
- phase1-scratch/ux-research.md
|
|
240
|
+
- phase1-scratch/business-model.md
|
|
241
|
+
- id: "1.2"
|
|
242
|
+
name: Research Digest
|
|
243
|
+
kind: dispatch-single-internal
|
|
244
|
+
role: research-synthesizer
|
|
245
|
+
reads: [4-raw-research-files]
|
|
246
|
+
writes: [phase1-scratch/findings-digest.md, phase1-scratch/suggested-questions.md]
|
|
247
|
+
- id: "1.3"
|
|
248
|
+
name: Informed Brainstorm
|
|
249
|
+
kind: dispatch-single-internal
|
|
250
|
+
role: brainstorm-facilitator-round-2
|
|
251
|
+
reads: [phase1-scratch/findings-digest.md, phase1-scratch/suggested-questions.md]
|
|
252
|
+
writes: [phase1-scratch/user-decisions.md]
|
|
253
|
+
- id: "1.4"
|
|
254
|
+
name: Design Doc + CLAUDE.md
|
|
255
|
+
kind: dispatch-single-internal
|
|
256
|
+
role: design-doc-writer
|
|
257
|
+
writes: [docs/plans/design-doc.md, CLAUDE.md]
|
|
258
|
+
hard_gates:
|
|
259
|
+
- CLAUDE.md < 200 lines
|
|
260
|
+
emits_decision_rows: [tech-stack, data-model, scope-boundary]
|
|
261
|
+
- id: GATE-1
|
|
262
|
+
name: Quality Gate 1
|
|
263
|
+
kind: gate
|
|
264
|
+
interactive: user-approves-design
|
|
265
|
+
autonomous: auto-approve
|
|
266
|
+
- id: "1.5"
|
|
267
|
+
name: Prereq Collector
|
|
268
|
+
kind: dispatch-single-internal
|
|
269
|
+
reads: [design-doc.md#tech-stack]
|
|
270
|
+
writes: [phase1-scratch/prereqs.json]
|
|
271
|
+
ios_branch:
|
|
272
|
+
applies_to: phase-1
|
|
273
|
+
changes:
|
|
274
|
+
- prompt_additions: [App Store category landscape, TestFlight constraints, iOS 26 API availability]
|
|
275
|
+
- conditional_dispatch:
|
|
276
|
+
when: AI-or-Foundation-Models-build
|
|
277
|
+
agent: ios-foundation-models-specialist
|
|
278
|
+
|
|
279
|
+
- id: "2"
|
|
280
|
+
name: Plan / Architect
|
|
281
|
+
kind: team-then-sequence
|
|
282
|
+
skip_conditions: []
|
|
283
|
+
decision_rows_written: 4
|
|
284
|
+
backward_edges:
|
|
285
|
+
- from: GATE-2-NO
|
|
286
|
+
to: phase-2
|
|
287
|
+
- from: LRR-BLOCK-decided_by==architect
|
|
288
|
+
to: phase-2
|
|
289
|
+
template: re-entry
|
|
290
|
+
steps:
|
|
291
|
+
- id: "2.1"
|
|
292
|
+
name: Explore existing codebase
|
|
293
|
+
kind: dispatch-single-internal
|
|
294
|
+
conditional_on: existing-code-detected
|
|
295
|
+
- id: "2.2a"
|
|
296
|
+
name: Team create
|
|
297
|
+
kind: internal
|
|
298
|
+
call: 'TeamCreate(team_name: "phase-2-architects")'
|
|
299
|
+
- id: "2.2b"
|
|
300
|
+
name: 6 architects as teammates
|
|
301
|
+
kind: dispatch-team
|
|
302
|
+
dispatch_mode: single-message
|
|
303
|
+
parallel_count: 6
|
|
304
|
+
teammates:
|
|
305
|
+
- slot: backend-architect
|
|
306
|
+
subagent_type: engineering-backend-architect
|
|
307
|
+
domain: services, API contracts, DB schema
|
|
308
|
+
- slot: frontend-architect
|
|
309
|
+
subagent_type: engineering-frontend-developer
|
|
310
|
+
domain: component hierarchy, state mgmt, routing
|
|
311
|
+
- slot: data-engineer
|
|
312
|
+
subagent_type: engineering-data-engineer
|
|
313
|
+
domain: ETL/ELT, schema versioning, query patterns
|
|
314
|
+
- slot: security-engineer
|
|
315
|
+
subagent_type: engineering-security-engineer
|
|
316
|
+
domain: auth model, input validation, threat model
|
|
317
|
+
- slot: accessibility-auditor
|
|
318
|
+
subagent_type: a11y-architect
|
|
319
|
+
domain: WCAG 2.2 AA constraints on component/nav choice
|
|
320
|
+
- slot: performance-benchmarker
|
|
321
|
+
subagent_type: testing-performance-benchmarker
|
|
322
|
+
domain: quality-targets.json, bundle + latency budgets
|
|
323
|
+
cross_check_pairings:
|
|
324
|
+
- [backend, frontend, API contract shape]
|
|
325
|
+
- [security, backend, auth flow]
|
|
326
|
+
- [accessibility, frontend, component patterns]
|
|
327
|
+
- [performance, "backend+data", query shapes]
|
|
328
|
+
- id: "2.2c"
|
|
329
|
+
name: Wait for all idle
|
|
330
|
+
kind: internal
|
|
331
|
+
- id: "2.2d"
|
|
332
|
+
name: Team teardown
|
|
333
|
+
kind: internal
|
|
334
|
+
call: 'TeamDelete("phase-2-architects")'
|
|
335
|
+
- id: "2.3.1"
|
|
336
|
+
name: Implementation Blueprint
|
|
337
|
+
kind: dispatch-single
|
|
338
|
+
subagent_type: code-architect
|
|
339
|
+
reads: [6-post-debate-contracts]
|
|
340
|
+
writes: [architecture.md]
|
|
341
|
+
- id: "2.3.2"
|
|
342
|
+
name: Sprint Breakdown
|
|
343
|
+
kind: dispatch-single
|
|
344
|
+
subagent_type: planner
|
|
345
|
+
writes: [sprint-tasks.md]
|
|
346
|
+
required_fields: [Dependencies, Behavioral Test]
|
|
347
|
+
- id: "2.3.3"
|
|
348
|
+
name: Task DAG Validator
|
|
349
|
+
kind: dispatch-single-internal
|
|
350
|
+
validates: [no-circular-deps, IDs-exist, sizing-consistent, behavioral-tests-present]
|
|
351
|
+
- id: "2.3.4"
|
|
352
|
+
name: Refs Indexer
|
|
353
|
+
kind: dispatch-single-internal
|
|
354
|
+
writes: [refs.json]
|
|
355
|
+
- id: "2.3.loop"
|
|
356
|
+
name: Architecture Metric Loop
|
|
357
|
+
kind: loop
|
|
358
|
+
service: metric-loop
|
|
359
|
+
metric: PRD-coverage + specificity + simplicity
|
|
360
|
+
max_iterations: 3
|
|
361
|
+
- id: GATE-2
|
|
362
|
+
name: Quality Gate 2
|
|
363
|
+
kind: gate
|
|
364
|
+
interactive: approval
|
|
365
|
+
autonomous: auto-approve
|
|
366
|
+
- id: "2.ios-flags"
|
|
367
|
+
name: iOS Feature Flag Resolution
|
|
368
|
+
kind: classify
|
|
369
|
+
platform: ios
|
|
370
|
+
source: protocols/ios-phase-branches.md
|
|
371
|
+
ios_branch:
|
|
372
|
+
applies_to: phase-2
|
|
373
|
+
overrides:
|
|
374
|
+
- description: replaces Backend+Frontend architect dispatches with a single ios-swift-architect dispatch
|
|
375
|
+
covers: [SwiftUI view hierarchy + navigation, SwiftData schema + CloudKit, Swift Concurrency / actor isolation, iOS security (Keychain, entitlements, ATS)]
|
|
376
|
+
- security: engineering-security-engineer
|
|
377
|
+
writes:
|
|
378
|
+
- docs/plans/phase-2-contracts/*.md
|
|
379
|
+
- architecture.md
|
|
380
|
+
- sprint-tasks.md
|
|
381
|
+
- quality-targets.json
|
|
382
|
+
- refs.json
|
|
383
|
+
re_entry_rule: |
|
|
384
|
+
Only the architect whose domain matches decision_row.author re-runs.
|
|
385
|
+
Synthesizer re-runs once. Unaffected domains NOT re-run.
|
|
386
|
+
|
|
387
|
+
- id: "3"
|
|
388
|
+
name: Design
|
|
389
|
+
kind: dna-first-sequence
|
|
390
|
+
skip_conditions:
|
|
391
|
+
- project has no user-facing frontend (CLI tools, pure APIs, backend services)
|
|
392
|
+
backward_edges:
|
|
393
|
+
- from: LRR-BLOCK-decided_by==design-brand-guardian-or-phase-3-writer
|
|
394
|
+
to: phase-3
|
|
395
|
+
precision: re-entry to specific step by decision_row.author
|
|
396
|
+
web_branch:
|
|
397
|
+
source: protocols/web-phase-branches.md
|
|
398
|
+
steps:
|
|
399
|
+
- id: "3.0"
|
|
400
|
+
name: Visual DNA Selection
|
|
401
|
+
kind: dispatch-single
|
|
402
|
+
subagent_type: design-brand-guardian
|
|
403
|
+
produces: 6-axis DNA card (Scope, Density, Character, Material, Motion, Type)
|
|
404
|
+
source: protocols/visual-dna.md
|
|
405
|
+
- id: "3.1"
|
|
406
|
+
name: Visual Research (2 parallel, Playwright-driven)
|
|
407
|
+
kind: dispatch-parallel
|
|
408
|
+
dispatches:
|
|
409
|
+
- {subagent_type: visual-research, mode: competitive-audit}
|
|
410
|
+
- {subagent_type: visual-research, mode: inspiration-mining}
|
|
411
|
+
- id: "3.2"
|
|
412
|
+
name: Component Library Mapping (HARD-GATE source)
|
|
413
|
+
kind: dispatch-single
|
|
414
|
+
subagent_type: design-ui-designer
|
|
415
|
+
writes: [component-manifest.md]
|
|
416
|
+
- id: "3.2b"
|
|
417
|
+
name: DNA Persona Check
|
|
418
|
+
kind: dispatch-single
|
|
419
|
+
subagent_type: design-ux-researcher
|
|
420
|
+
may_route_to: "3.0"
|
|
421
|
+
- id: "3.3"
|
|
422
|
+
name: UX Architecture
|
|
423
|
+
kind: dispatch-single
|
|
424
|
+
subagent_type: design-ux-architect
|
|
425
|
+
writes: [ux-architecture.md]
|
|
426
|
+
- id: "3.4"
|
|
427
|
+
name: Visual Design Spec
|
|
428
|
+
kind: dispatch-single
|
|
429
|
+
subagent_type: design-ui-designer
|
|
430
|
+
role: writer
|
|
431
|
+
writes: [visual-design-spec.md]
|
|
432
|
+
contains: [tokens, material, motion, typography, state-matrix]
|
|
433
|
+
- id: "3.5"
|
|
434
|
+
name: Inclusive Visuals Check
|
|
435
|
+
kind: dispatch-single
|
|
436
|
+
subagent_type: design-inclusive-visuals-specialist
|
|
437
|
+
writes: [inclusive-visuals-audit.md]
|
|
438
|
+
- id: "3.6"
|
|
439
|
+
name: Style Guide Implementation
|
|
440
|
+
kind: loop
|
|
441
|
+
service: metric-loop
|
|
442
|
+
generator: engineering-frontend-developer
|
|
443
|
+
critic: design-critic
|
|
444
|
+
metric: 6-DNA-axes x 5-craft-dims = /220
|
|
445
|
+
target: 180
|
|
446
|
+
max_iterations: 5
|
|
447
|
+
- id: "3.7"
|
|
448
|
+
name: A11y Design Review
|
|
449
|
+
kind: dispatch-single
|
|
450
|
+
subagent_type: a11y-architect
|
|
451
|
+
scope: /design-system + key pages
|
|
452
|
+
- id: "3.8"
|
|
453
|
+
name: Autonomous Quality Gate
|
|
454
|
+
kind: gate
|
|
455
|
+
action: log-summary-to-build-log.md
|
|
456
|
+
user_pause: false
|
|
457
|
+
hard_gates:
|
|
458
|
+
- UI/UX IS THE PRODUCT — do NOT skip this phase.
|
|
459
|
+
- Compositional not reconstructive — every element with a library variant MUST be mapped to that variant in component-manifest.md.
|
|
460
|
+
phase_4_entry_requirements:
|
|
461
|
+
- visual-dna.md
|
|
462
|
+
- visual-design-spec.md
|
|
463
|
+
- component-manifest.md
|
|
464
|
+
ios_branch:
|
|
465
|
+
source: protocols/ios-phase-branches.md
|
|
466
|
+
steps:
|
|
467
|
+
- id: "3.1-ios"
|
|
468
|
+
name: Visual research
|
|
469
|
+
kind: dispatch-single
|
|
470
|
+
subagent_type: visual-research
|
|
471
|
+
tooling: agent-browser -p desktop
|
|
472
|
+
sources: [screenlane.com, App Store web listings, Apple HIG pages, SF Symbols browser]
|
|
473
|
+
constraints: [no paid sources]
|
|
474
|
+
- id: "3.2-ios"
|
|
475
|
+
name: iOS Design Board
|
|
476
|
+
kind: dispatch-single
|
|
477
|
+
subagent_type: ios-swift-ui-design
|
|
478
|
+
writes: [ios-design-board.md]
|
|
479
|
+
grounded_in: [HIG, Liquid Glass, SF Symbols]
|
|
480
|
+
- id: "3.4-ios"
|
|
481
|
+
name: Visual QA loop
|
|
482
|
+
kind: loop
|
|
483
|
+
service: metric-loop
|
|
484
|
+
generator: ios-swift-ui-design
|
|
485
|
+
critic: design-critic
|
|
486
|
+
tooling: XcodeBuildMCP SwiftUI Preview captures
|
|
487
|
+
max_iterations: 3
|
|
488
|
+
phase_4_entry_requirements:
|
|
489
|
+
- ios-design-board.md
|
|
490
|
+
|
|
491
|
+
- id: "4"
|
|
492
|
+
name: Build
|
|
493
|
+
kind: scaffold-then-parallel-task-batches
|
|
494
|
+
skip_conditions: []
|
|
495
|
+
scaffold:
|
|
496
|
+
steps:
|
|
497
|
+
- id: "4.0.a"
|
|
498
|
+
name: Project scaffolding
|
|
499
|
+
kind: dispatch-single
|
|
500
|
+
web: {subagent_type: engineering-rapid-prototyper}
|
|
501
|
+
ios: {notes: done by Phase -1; XcodeBuildMCP creates Views/ Models/ Services/ Resources/}
|
|
502
|
+
- id: "4.0.b"
|
|
503
|
+
name: Design system setup
|
|
504
|
+
kind: dispatch-single
|
|
505
|
+
web: {subagent_type: engineering-frontend-developer, produces: CSS tokens from visual-design-spec}
|
|
506
|
+
ios: {subagent_type: engineering-senior-developer, produces: SwiftUI Color/Font/ShapeStyle tokens from ios-design-board.md}
|
|
507
|
+
- id: "4.0.c"
|
|
508
|
+
name: Acceptance test scaffolding
|
|
509
|
+
kind: dispatch-single-internal
|
|
510
|
+
web: {produces: Playwright stubs in tests/e2e/acceptance/ (one per sprint-task Behavioral Test)}
|
|
511
|
+
ios:
|
|
512
|
+
produces: Maestro YAML stubs in maestro/
|
|
513
|
+
hard_gate: "find maestro -name '*.yaml' | wc -l >= 2"
|
|
514
|
+
- id: "4.0.d"
|
|
515
|
+
name: Scaffold metric loop (iOS only)
|
|
516
|
+
kind: loop
|
|
517
|
+
platform: ios
|
|
518
|
+
metric: clean build + @Test pass
|
|
519
|
+
max_iterations: 3
|
|
520
|
+
fix_agent: swift-build-resolver
|
|
521
|
+
- id: "4.0.e"
|
|
522
|
+
name: Verify gate
|
|
523
|
+
kind: gate
|
|
524
|
+
service: verify-protocol
|
|
525
|
+
notes: 7 checks must PASS before Step 4.1
|
|
526
|
+
per_task_flow:
|
|
527
|
+
executes: every task in every dependency-ordered batch
|
|
528
|
+
parallelism: Independent sibling tasks run in parallel (~30-50% wall-clock saving)
|
|
529
|
+
sub_steps:
|
|
530
|
+
- id: briefing
|
|
531
|
+
kind: dispatch-single
|
|
532
|
+
subagent_type: briefing-officer-internal
|
|
533
|
+
reads: [refs.json, task-row]
|
|
534
|
+
writes: ~40-line CONTEXT MAP
|
|
535
|
+
- id: impl
|
|
536
|
+
kind: dispatch-single
|
|
537
|
+
dispatch_table:
|
|
538
|
+
web:
|
|
539
|
+
ui_SM: engineering-frontend-developer
|
|
540
|
+
ui_L: engineering-senior-developer
|
|
541
|
+
backend: engineering-backend-architect OR engineering-senior-developer
|
|
542
|
+
ai_ml: engineering-ai-engineer
|
|
543
|
+
ios:
|
|
544
|
+
ui_planner: ios-swift-ui-design
|
|
545
|
+
ui_impl: [engineering-senior-developer, engineering-mobile-app-builder]
|
|
546
|
+
foundation_models: ios-foundation-models-specialist
|
|
547
|
+
storekit: ios-storekit-specialist
|
|
548
|
+
- id: impl.re-entry
|
|
549
|
+
kind: dispatch-single
|
|
550
|
+
trigger: LRR backward-routing
|
|
551
|
+
inputs: [blocking_finding, prior_output, decision_row]
|
|
552
|
+
constraint: revise ONLY what finding requires
|
|
553
|
+
- id: sec-review
|
|
554
|
+
kind: dispatch-single
|
|
555
|
+
subagent_type: security-reviewer
|
|
556
|
+
conditional_on: [auth, PII, Keychain, credential tasks]
|
|
557
|
+
- id: swift-review
|
|
558
|
+
kind: dispatch-single
|
|
559
|
+
platform: ios
|
|
560
|
+
subagent_type: swift-reviewer
|
|
561
|
+
checklist: [Swift concurrency 6.2, SwiftUI, protocol DI, Foundation Models]
|
|
562
|
+
- id: cleanup
|
|
563
|
+
kind: dispatch-parallel
|
|
564
|
+
parallel_count: 2
|
|
565
|
+
dispatches:
|
|
566
|
+
- code-simplifier
|
|
567
|
+
- refactor-cleaner
|
|
568
|
+
scope: changeset-only
|
|
569
|
+
- id: review
|
|
570
|
+
kind: dispatch-parallel
|
|
571
|
+
parallel_count: 2
|
|
572
|
+
dispatch_mode: single-message
|
|
573
|
+
dispatches:
|
|
574
|
+
- code-reviewer
|
|
575
|
+
- silent-failure-hunter
|
|
576
|
+
confidence_threshold: 80
|
|
577
|
+
- id: metric-loop
|
|
578
|
+
kind: loop
|
|
579
|
+
service: metric-loop
|
|
580
|
+
max_iterations: 5
|
|
581
|
+
notes: THIS IS THE AUTHORITATIVE BEHAVIORAL VERIFICATION
|
|
582
|
+
ui_tooling:
|
|
583
|
+
web: agent-browser
|
|
584
|
+
ios: SwiftUI Preview captures
|
|
585
|
+
- id: smoke
|
|
586
|
+
kind: dispatch-single
|
|
587
|
+
platform: ios
|
|
588
|
+
tooling: Maestro flow against booted simulator
|
|
589
|
+
preconditions: [Maestro CLI installed, flow files exist, booted simulator available]
|
|
590
|
+
on_precondition_fail: BLOCKED
|
|
591
|
+
- id: verify
|
|
592
|
+
kind: gate
|
|
593
|
+
service: verify-protocol
|
|
594
|
+
scope: static-only
|
|
595
|
+
checks: [type-check, lint, build]
|
|
596
|
+
max_fix_attempts: 3
|
|
597
|
+
build_fix:
|
|
598
|
+
ios: swift-build-resolver
|
|
599
|
+
- id: scribe
|
|
600
|
+
kind: internal
|
|
601
|
+
role: orchestrator-scribe
|
|
602
|
+
action: |
|
|
603
|
+
Walks batch_results, collects non-null deviation_row objects, and
|
|
604
|
+
invokes the scribe_decision MCP tool once per row. The MCP is the
|
|
605
|
+
single writer for decisions.jsonl — it allocates D-{phase}-<seq>
|
|
606
|
+
IDs, stamps timestamp + status, validates against
|
|
607
|
+
decisions.schema.json, and atomically appends. The orchestrator
|
|
608
|
+
MUST NOT Write/Edit decisions.jsonl directly and MUST NOT
|
|
609
|
+
pre-compute IDs. .build-state.json.decisions_next_id is
|
|
610
|
+
deprecated under Stage 2 and removed at Stage 4 A7.
|
|
611
|
+
hard_gates:
|
|
612
|
+
- decisions.jsonl is orchestrator-scribe ONLY. Subagents return deviation_row objects.
|
|
613
|
+
- "Web compositional: component-manifest.md variants MUST be imported; writing from scratch triggers cleanup revert."
|
|
614
|
+
writes_per_task:
|
|
615
|
+
- source-code
|
|
616
|
+
- docs/plans/.task-outputs/[task-id].json
|
|
617
|
+
backward_edges:
|
|
618
|
+
- from: LRR-NEEDS_WORK-code-level
|
|
619
|
+
to: phase-4.target-task
|
|
620
|
+
- from: phase-5-dogfood-feedback-synthesizer
|
|
621
|
+
to: phase-4.target-task
|
|
622
|
+
|
|
623
|
+
- id: "5"
|
|
624
|
+
name: Audit
|
|
625
|
+
kind: team-then-eval-then-parallel-then-synth
|
|
626
|
+
skip_conditions: []
|
|
627
|
+
precondition: verify-protocol passes
|
|
628
|
+
web_branch:
|
|
629
|
+
steps:
|
|
630
|
+
- id: "5.1"
|
|
631
|
+
name: TEAM of 6 parallel auditors
|
|
632
|
+
kind: dispatch-parallel
|
|
633
|
+
dispatch_mode: single-message
|
|
634
|
+
parallel_count: 6
|
|
635
|
+
dispatches:
|
|
636
|
+
- subagent_type: testing-api-tester
|
|
637
|
+
focus: API validation, edge cases, error responses, auth flows
|
|
638
|
+
- subagent_type: testing-performance-benchmarker
|
|
639
|
+
focus: response times, bottlenecks, Per-Scope bundle budgets
|
|
640
|
+
bundle_budgets:
|
|
641
|
+
Marketing: 500KB
|
|
642
|
+
Product: 300KB
|
|
643
|
+
Dashboard: 400KB
|
|
644
|
+
Internal: 200KB
|
|
645
|
+
block_threshold: ">25% over -> auto-blocks LRR SRE"
|
|
646
|
+
- subagent_type: a11y-architect
|
|
647
|
+
focus: WCAG 2.2 AA runtime
|
|
648
|
+
checks: [contrast, keyboard, focus, touch-targets>=44px, reduced-motion]
|
|
649
|
+
- subagent_type: engineering-security-engineer
|
|
650
|
+
focus: auth, input validation, data exposure, dependency vulns
|
|
651
|
+
- subagent_type: design-ux-researcher
|
|
652
|
+
focus: loading/error/empty states, mobile@375px, form validation, visual consistency vs style guide
|
|
653
|
+
- subagent_type: design-brand-guardian
|
|
654
|
+
focus: DNA drift check
|
|
655
|
+
notes: Phase 5 re-invite, does NOT issue verdict — feeds LRR Brand Guardian chapter
|
|
656
|
+
- id: "5.2"
|
|
657
|
+
name: Eval Harness -> Metric Loop
|
|
658
|
+
kind: loop
|
|
659
|
+
service: metric-loop
|
|
660
|
+
eval_case_count: 8-15
|
|
661
|
+
max_iterations: 4
|
|
662
|
+
fix_routing:
|
|
663
|
+
security: security-reviewer
|
|
664
|
+
a11y: engineering-frontend-developer
|
|
665
|
+
perf: testing-performance-benchmarker
|
|
666
|
+
post_loop: re-run-eval
|
|
667
|
+
- id: "5.3"
|
|
668
|
+
name: TEAM of 3 parallel
|
|
669
|
+
kind: dispatch-parallel
|
|
670
|
+
dispatch_mode: single-message
|
|
671
|
+
parallel_count: 3
|
|
672
|
+
dispatches:
|
|
673
|
+
- e2e-runner: Playwright, 3 iters mandatory
|
|
674
|
+
- dogfood-runner: agent-browser
|
|
675
|
+
- fake-data-detector
|
|
676
|
+
- id: "5.4"
|
|
677
|
+
name: Feedback Synthesizer
|
|
678
|
+
kind: dispatch-single
|
|
679
|
+
subagent_type: product-feedback-synthesizer
|
|
680
|
+
classifies_to: [phase-4-code, phase-3-visual, phase-2-structural]
|
|
681
|
+
max_fix_cycles: 2
|
|
682
|
+
ios_branch:
|
|
683
|
+
replaces: web-6+3
|
|
684
|
+
mode: three-slash-commands-in-sequence
|
|
685
|
+
sequence:
|
|
686
|
+
- /buildanything:verify
|
|
687
|
+
- /buildanything:ux-review
|
|
688
|
+
- /buildanything:fix
|
|
689
|
+
required_artifacts:
|
|
690
|
+
- docs/plans/ios-verify-report.md
|
|
691
|
+
- docs/plans/ios-ux-review-report.md
|
|
692
|
+
- "maestro/*.yaml (>=1)"
|
|
693
|
+
- "docs/plans/evidence/maestro-runs/*.png (>=1)"
|
|
694
|
+
writes:
|
|
695
|
+
- docs/plans/evidence/*.json
|
|
696
|
+
- evidence/fake-data-audit.md
|
|
697
|
+
- evidence/dogfood/classified-findings.json
|
|
698
|
+
- "learnings.jsonl (reality sweep PITFALL/PATTERN rows)"
|
|
699
|
+
|
|
700
|
+
- id: "6"
|
|
701
|
+
name: Launch Readiness Review
|
|
702
|
+
kind: evidence-sweep-then-5-parallel-chapters-then-aggregator
|
|
703
|
+
skip_conditions: []
|
|
704
|
+
reality_check:
|
|
705
|
+
id: "6.0"
|
|
706
|
+
hard_gate_preconditions:
|
|
707
|
+
all_projects: [".build-state.json exists + has recent VERIFY:PASS"]
|
|
708
|
+
web:
|
|
709
|
+
- eval-harness/baseline.json
|
|
710
|
+
- eval-harness/final.json
|
|
711
|
+
- e2e/iter-3-results.json
|
|
712
|
+
- dogfood/findings.md
|
|
713
|
+
- dogfood/classified-findings.json
|
|
714
|
+
- fake-data-audit.md
|
|
715
|
+
- manifest.json
|
|
716
|
+
ios:
|
|
717
|
+
- ios-verify-report.md
|
|
718
|
+
- ios-ux-review-report.md
|
|
719
|
+
- maestro/*.yaml (>=1)
|
|
720
|
+
- maestro-runs/*.png (>=1)
|
|
721
|
+
- manifest.json
|
|
722
|
+
dispatch:
|
|
723
|
+
subagent_type: testing-reality-checker
|
|
724
|
+
role: evidence-sweep-only
|
|
725
|
+
evidence_ref_mode: by-PATH-only-never-paste
|
|
726
|
+
tools: [Read, Glob, Grep]
|
|
727
|
+
writes:
|
|
728
|
+
- evidence/reality-check-manifest.json
|
|
729
|
+
manifest_fields: [file_path, sha256, byte_count, modified_time, verdict_contribution]
|
|
730
|
+
dissent_log_revisit:
|
|
731
|
+
reads: decisions.jsonl
|
|
732
|
+
filter: status==open AND revisit_criterion non-empty
|
|
733
|
+
action: semantically evaluate criterion vs current evidence
|
|
734
|
+
on_trigger:
|
|
735
|
+
- structural-finding
|
|
736
|
+
- "PITFALL row appended to learnings.jsonl with provenance.decision_id"
|
|
737
|
+
- flag-for-LRR
|
|
738
|
+
authority: Reality Checker does NOT issue combined_verdict — moved to LRR Aggregator.
|
|
739
|
+
chapters:
|
|
740
|
+
id: "6.1"
|
|
741
|
+
parallel_count: 5
|
|
742
|
+
dispatch_mode: single-message
|
|
743
|
+
panel:
|
|
744
|
+
- number: 1
|
|
745
|
+
name: Eng-Quality
|
|
746
|
+
merged_from: [Engineering, QA, PM]
|
|
747
|
+
subagent_types:
|
|
748
|
+
primary: code-reviewer
|
|
749
|
+
parallel_sub_dispatch: pr-test-analyzer
|
|
750
|
+
verdicts: [PASS, CONCERNS, BLOCK]
|
|
751
|
+
extra_fields: [requirements_coverage]
|
|
752
|
+
follow_up_allowed: false
|
|
753
|
+
- number: 2
|
|
754
|
+
name: Security
|
|
755
|
+
subagent_type: security-reviewer
|
|
756
|
+
verdicts: [PASS, CONCERNS, BLOCK]
|
|
757
|
+
follow_up_allowed: true
|
|
758
|
+
follow_up_caps: {mode: read-only, tool_calls_max: 15, only_if_verdict_would_be: BLOCK}
|
|
759
|
+
- number: 3
|
|
760
|
+
name: SRE
|
|
761
|
+
includes: [Performance]
|
|
762
|
+
subagent_type: engineering-sre
|
|
763
|
+
verdicts: [PASS, CONCERNS, BLOCK]
|
|
764
|
+
auto_block: bundle >25% over Scope budget
|
|
765
|
+
follow_up_allowed: true
|
|
766
|
+
follow_up_caps: {mode: read-only, tool_calls_max: 15, only_if_verdict_would_be: BLOCK}
|
|
767
|
+
- number: 4
|
|
768
|
+
name: A11y
|
|
769
|
+
subagent_type: a11y-architect
|
|
770
|
+
verdict_rules:
|
|
771
|
+
PASS: 0 Serious + 0 Critical
|
|
772
|
+
CONCERNS: 1-3 Serious + 0 Critical
|
|
773
|
+
BLOCK: any Critical OR >3 Serious
|
|
774
|
+
follow_up_allowed: false
|
|
775
|
+
status: NEW_SEAT
|
|
776
|
+
- number: 5
|
|
777
|
+
name: Brand Guardian
|
|
778
|
+
replaces: old-Design-mechanical-check
|
|
779
|
+
subagent_type: design-brand-guardian
|
|
780
|
+
verdicts: [PASS, CONCERNS, BLOCK]
|
|
781
|
+
axes: 6 DNA axes + 5 craft dims
|
|
782
|
+
follow_up_allowed: false
|
|
783
|
+
every_chapter_writes:
|
|
784
|
+
path: docs/plans/evidence/lrr/<chapter>.json
|
|
785
|
+
schema_source: protocols/launch-readiness.md
|
|
786
|
+
fields: [chapter, verdict, override_blocks_launch, evidence_files_read, findings, follow_up_spawned, follow_up_findings]
|
|
787
|
+
finding_fields: [severity, description, evidence_ref, related_decision_id]
|
|
788
|
+
pm_coverage_fold_in:
|
|
789
|
+
id: "6.1a"
|
|
790
|
+
location: sub-input of Eng-Quality chapter
|
|
791
|
+
field: requirements_coverage
|
|
792
|
+
notes: Chapter count stays 5.
|
|
793
|
+
aggregator:
|
|
794
|
+
id: "6.2"
|
|
795
|
+
kind: internal-inline-role-string
|
|
796
|
+
sequential: true
|
|
797
|
+
runs_after: all-5-chapter-files-exist
|
|
798
|
+
may_self_approve: false
|
|
799
|
+
must_cite: triggering-rule-number
|
|
800
|
+
step_1_file_completeness:
|
|
801
|
+
glob: evidence/lrr/*.json
|
|
802
|
+
on_missing_or_malformed: [log INCOMPLETE, write evidence/lrr-incomplete.json, STOP]
|
|
803
|
+
step_2_rules:
|
|
804
|
+
- id: 1
|
|
805
|
+
trigger: ANY override_blocks_launch == true
|
|
806
|
+
verdict: BLOCKED
|
|
807
|
+
- id: 2
|
|
808
|
+
trigger: ALL verdicts PASS AND 0 follow-ups
|
|
809
|
+
verdict: PRODUCTION READY
|
|
810
|
+
- id: 3
|
|
811
|
+
trigger: ANY verdict BLOCK (without override)
|
|
812
|
+
verdict: NEEDS WORK
|
|
813
|
+
action: route findings to fix loop
|
|
814
|
+
- id: 4
|
|
815
|
+
trigger: ANY CONCERNS
|
|
816
|
+
verdict: NEEDS WORK
|
|
817
|
+
action: concerns logged
|
|
818
|
+
- id: 5
|
|
819
|
+
trigger: follow_up_spawned AND follow_up.confirmed == true
|
|
820
|
+
action: treat parent chapter as BLOCK
|
|
821
|
+
- id: 6
|
|
822
|
+
trigger: contradictions between chapters on typed fields
|
|
823
|
+
verdict: BLOCKED
|
|
824
|
+
action: emit cross-chapter contradiction finding
|
|
825
|
+
step_3_star_rule:
|
|
826
|
+
symbol: ⭐⭐
|
|
827
|
+
name: backward routing on BLOCK
|
|
828
|
+
procedure:
|
|
829
|
+
- for each BLOCK finding, read related_decision_id
|
|
830
|
+
- look up row in decisions.jsonl
|
|
831
|
+
- read decided_by
|
|
832
|
+
- route BACKWARD to authoring phase
|
|
833
|
+
known_decided_by:
|
|
834
|
+
architect: phase-2
|
|
835
|
+
design-brand-guardian: phase-3
|
|
836
|
+
implementer: phase-4
|
|
837
|
+
human: gates-1-and-2
|
|
838
|
+
step_4_needs_work_classification:
|
|
839
|
+
code: phase-4
|
|
840
|
+
structural: phase-2
|
|
841
|
+
visual: phase-3
|
|
842
|
+
step_5_ready_writes:
|
|
843
|
+
path: evidence/lrr-aggregate.json
|
|
844
|
+
fields: [combined_verdict, chapter_verdicts, triggered_rule, findings, follow_ups_spawned, backward_routing, timestamp]
|
|
845
|
+
forward_to: phase-7
|
|
846
|
+
verdict_resolution:
|
|
847
|
+
PRODUCTION_READY:
|
|
848
|
+
action: advance-to-phase-7
|
|
849
|
+
NEEDS_WORK:
|
|
850
|
+
action: apply lrr-routing.json via re-entry template
|
|
851
|
+
max_cycles: 2
|
|
852
|
+
on_cycle_cap:
|
|
853
|
+
interactive: present-remaining-issues-ask-direction
|
|
854
|
+
autonomous: log-remaining-proceed-to-7-with-warning
|
|
855
|
+
BLOCKED:
|
|
856
|
+
action: apply backward routing
|
|
857
|
+
never_proceed_to: phase-7
|
|
858
|
+
hard_gates:
|
|
859
|
+
- LRR Aggregator is the ONLY agent that may emit combined_verdict.
|
|
860
|
+
re_entry_template: |
|
|
861
|
+
INPUT: {blocking_finding, prior_output, decision_row}
|
|
862
|
+
TASK: Revise prior_output to address blocking_finding ONLY.
|
|
863
|
+
Do NOT redo unaffected work. Emit new decision_row.
|
|
864
|
+
|
|
865
|
+
- id: "7"
|
|
866
|
+
name: Ship
|
|
867
|
+
kind: sequential-ship-pipeline
|
|
868
|
+
skip_conditions: []
|
|
869
|
+
precondition:
|
|
870
|
+
gate: verify-protocol
|
|
871
|
+
checks: 7
|
|
872
|
+
max_fix_attempts: 2
|
|
873
|
+
steps:
|
|
874
|
+
- id: "7.1.1"
|
|
875
|
+
name: Technical Writer
|
|
876
|
+
kind: dispatch-single
|
|
877
|
+
subagent_type: engineering-technical-writer
|
|
878
|
+
writes: [README, API docs, deploy notes]
|
|
879
|
+
target_from: PRD
|
|
880
|
+
- id: "7.1.2"
|
|
881
|
+
name: Documentation Metric Loop
|
|
882
|
+
kind: loop
|
|
883
|
+
service: metric-loop
|
|
884
|
+
metric: new-dev-can-follow-readme-end-to-end
|
|
885
|
+
max_iterations: 3
|
|
886
|
+
- id: "7.1.3"
|
|
887
|
+
name: App Store Optimizer
|
|
888
|
+
kind: dispatch-single
|
|
889
|
+
platform: ios
|
|
890
|
+
conditional_on: ship
|
|
891
|
+
subagent_type: marketing-app-store-optimizer
|
|
892
|
+
skills_granted: [asc-metadata-generator, asc-screenshot-generator, asc-privacy-manifest]
|
|
893
|
+
also_dispatch: ios-app-review-guardian
|
|
894
|
+
notes: Review guardian sanity check before TestFlight.
|
|
895
|
+
- id: "7.1.4"
|
|
896
|
+
name: Deploy
|
|
897
|
+
kind: dispatch-single
|
|
898
|
+
subagent_type: engineering-devops-automator
|
|
899
|
+
actions: [pre-deploy-checks, execute-deploy, verify-200-at-deploy-URL]
|
|
900
|
+
- id: "7.1.5"
|
|
901
|
+
name: Completion Report
|
|
902
|
+
kind: dispatch-single-internal
|
|
903
|
+
reads: [lrr-aggregate.json, reality-check-manifest.json]
|
|
904
|
+
surfaces_before_write: Verification Gap if declared != passing OR stub-flagged > 0
|
|
905
|
+
ios_ship:
|
|
906
|
+
optional: true
|
|
907
|
+
notes: simulator-only is valid end-state; separate from web ship
|
|
908
|
+
writes:
|
|
909
|
+
- docs/plans/learnings.jsonl
|
|
910
|
+
|
|
911
|
+
# ---------------------------------------------------------------------------
|
|
912
|
+
# 4. Cross-cutting callable services
|
|
913
|
+
# ---------------------------------------------------------------------------
|
|
914
|
+
callable_services:
|
|
915
|
+
metric_loop:
|
|
916
|
+
source: protocols/metric-loop.md
|
|
917
|
+
callers:
|
|
918
|
+
- phase-2 (architecture)
|
|
919
|
+
- phase-3.step-3.6 (design critic web)
|
|
920
|
+
- phase-3.step-3.4-ios (visual QA)
|
|
921
|
+
- phase-4 (per-task)
|
|
922
|
+
- phase-4.step-4.0.d (iOS scaffold)
|
|
923
|
+
- phase-5.step-5.2 (hardening)
|
|
924
|
+
- phase-7 (documentation)
|
|
925
|
+
contract:
|
|
926
|
+
metric_defined_by: orchestrator
|
|
927
|
+
measure_and_fix_isolation: separate-dispatches-never-share-context
|
|
928
|
+
fix_input_scope: top-issue + file-paths + acceptance-criteria (NOT full findings)
|
|
929
|
+
fix_cadence: one fix per iteration; measure impact before next fix
|
|
930
|
+
findings_persistence: each measurement is fresh; do not accumulate
|
|
931
|
+
state_tracking: .build-state.json (survives compaction)
|
|
932
|
+
iter_1_short_circuit: first measurement >= target + 10 -> exit, log exit_reason=short_circuit_iter1
|
|
933
|
+
exit_conditions: [target-met, iter>=max, stall (2 consecutive delta<=0), short-circuit-iter1]
|
|
934
|
+
autonomous_stall:
|
|
935
|
+
accept_at: ">= 60% target (warning)"
|
|
936
|
+
halt_below: "< 60% OR any CRITICAL remaining"
|
|
937
|
+
|
|
938
|
+
verify_protocol:
|
|
939
|
+
source: protocols/verify.md
|
|
940
|
+
callers: [phase-2, phase-4-scaffold-gate, phase-4-per-task, phase-5-pre-audit, phase-7-pre-ship]
|
|
941
|
+
contract:
|
|
942
|
+
sequential_checks: [Build, Type-Check, Lint, Test, Security, Diff-Review, Artifacts]
|
|
943
|
+
stop_on: first-FAIL
|
|
944
|
+
dispatch_mode: INTERNAL-inline role string "Verify scaffolding"
|
|
945
|
+
phase_4_per_task_scope: static-only (behavioral already done in metric loop)
|
|
946
|
+
|
|
947
|
+
decision_log:
|
|
948
|
+
source: protocols/decision-log.md
|
|
949
|
+
schema: docs/migration/decisions.schema.json
|
|
950
|
+
validator: eval/validate_decisions.py
|
|
951
|
+
writers:
|
|
952
|
+
- {phase: "1", agent: brainstorm-synthesis, row_count: 3}
|
|
953
|
+
- {phase: "2.2", agent: architecture-synthesizer, row_count: 4}
|
|
954
|
+
- {phase: "3", agent: DEFERRED, row_count: 0}
|
|
955
|
+
- {phase: "4", agent: implementer, condition: deviation-only}
|
|
956
|
+
readers: [phase-0-resume, phase-5-reality-checker, phase-6-lrr-aggregator]
|
|
957
|
+
constraints:
|
|
958
|
+
file: docs/plans/decisions.jsonl
|
|
959
|
+
mode: append-only
|
|
960
|
+
writer_authority: orchestrator-scribe-ONLY
|
|
961
|
+
max_rejected_alternatives_per_row: 3
|
|
962
|
+
max_sentences_per_reason: 2
|
|
963
|
+
max_sentences_per_revisit_criterion: 1
|
|
964
|
+
max_rows_per_phase: 5
|
|
965
|
+
total_rows_per_build: 15-25
|
|
966
|
+
linkage:
|
|
967
|
+
finding_field: related_decision_id
|
|
968
|
+
location: on-finding-object-inside-chapter-verdict
|
|
969
|
+
|
|
970
|
+
learnings:
|
|
971
|
+
file: learnings.jsonl
|
|
972
|
+
writers: [phase-5-reality-sweep, phase-7-late-learnings]
|
|
973
|
+
readers: [phase-0-learnings-loader (step-0.1d), phase-5-reality-sweep]
|
|
974
|
+
row_schema:
|
|
975
|
+
- run_id
|
|
976
|
+
- timestamp
|
|
977
|
+
- project_type
|
|
978
|
+
- phase_where_learning_surfaced
|
|
979
|
+
- metric
|
|
980
|
+
- top_issue
|
|
981
|
+
- fix_applied
|
|
982
|
+
- score_delta
|
|
983
|
+
- pattern_type: [PITFALL, PATTERN, HEURISTIC]
|
|
984
|
+
cross_run_injection: phase-4 implementer reads .active-learnings.md (top-3 filtered at phase-0)
|
|
985
|
+
|
|
986
|
+
briefing_officer:
|
|
987
|
+
kind: INTERNAL
|
|
988
|
+
callable_per: phase-4-task
|
|
989
|
+
contract:
|
|
990
|
+
reads: [refs.json, task-row]
|
|
991
|
+
writes: CONTEXT MAP (~40 lines)
|
|
992
|
+
mode: refs-not-pastes
|
|
993
|
+
excluded: [CLAUDE.md (auto-loaded), phase1-scratch (SPENT)]
|
|
994
|
+
context_map_shape:
|
|
995
|
+
persona_jtbd: design-doc.md#persona
|
|
996
|
+
product_scope: design-doc.md#scope
|
|
997
|
+
visual_tokens: visual-design-spec.md#tokens
|
|
998
|
+
component_variants: component-manifest.md#[category]
|
|
999
|
+
auth_model: architecture.md#auth
|
|
1000
|
+
data_schema: architecture.md#data-model
|
|
1001
|
+
sibling_task_deps: "sprint-tasks.md#[dep-id-1], #[dep-id-2]"
|
|
1002
|
+
prior_decisions: "decisions.jsonl rows [row-id-1], [row-id-2]"
|
|
1003
|
+
quality_targets: quality-targets.json (full file)
|
|
1004
|
+
|
|
1005
|
+
# ---------------------------------------------------------------------------
|
|
1006
|
+
# 5. Backward routing edges
|
|
1007
|
+
# ---------------------------------------------------------------------------
|
|
1008
|
+
backward_routing:
|
|
1009
|
+
- from: GATE-1-NO
|
|
1010
|
+
to: phase-1.step-1.0
|
|
1011
|
+
note: Brainstorm Facilitator r1 with feedback
|
|
1012
|
+
- from: GATE-2-NO
|
|
1013
|
+
to: phase-2
|
|
1014
|
+
note: with user feedback
|
|
1015
|
+
- from: phase-3.step-3.2b-DNA-persona-mismatch
|
|
1016
|
+
to: phase-3.step-3.0
|
|
1017
|
+
note: re-lock DNA
|
|
1018
|
+
- from: phase-5-audit-code-issue
|
|
1019
|
+
to: phase-4.target-task
|
|
1020
|
+
- from: phase-5-audit-design-issue
|
|
1021
|
+
to: phase-3.target-step
|
|
1022
|
+
- from: phase-5-audit-spec-issue
|
|
1023
|
+
to: phase-2
|
|
1024
|
+
note: re-architect
|
|
1025
|
+
- from: phase-5-dogfood-classified
|
|
1026
|
+
to: target_phase-per-classified-findings.json
|
|
1027
|
+
- from: phase-6-LRR-BLOCK
|
|
1028
|
+
via: star-star-rule
|
|
1029
|
+
to: authoring-phase (per decisions.jsonl.decided_by)
|
|
1030
|
+
- from: phase-6-LRR-NEEDS_WORK-code
|
|
1031
|
+
to: phase-4.target-task
|
|
1032
|
+
via: related_decision_id
|
|
1033
|
+
- from: phase-6-LRR-NEEDS_WORK-structural
|
|
1034
|
+
to: phase-2-or-phase-3
|
|
1035
|
+
note: by-finding-classification
|
|
1036
|
+
|
|
1037
|
+
re_entry_template: |
|
|
1038
|
+
INPUT: {blocking_finding: {...}, prior_output: <path>, decision_row: <row>}
|
|
1039
|
+
TASK: Revise prior_output to address blocking_finding ONLY.
|
|
1040
|
+
Do NOT redo unaffected work. Emit new decision_row.
|
|
1041
|
+
|
|
1042
|
+
re_entry_rules:
|
|
1043
|
+
phase-2: "Only the architect whose domain matches decision_row.author re-runs. Synthesizer re-runs once."
|
|
1044
|
+
phase-3: "Only the step named by decision_row.author re-runs (DNA lock, component manifest, or visual spec)."
|
|
1045
|
+
phase-4: "Target task only. Reads prior_output + changed files. Revises ONLY what blocking_finding requires. Does NOT re-run acceptance tests that passed. Does NOT touch files outside finding blast radius."
|
|
1046
|
+
|
|
1047
|
+
needs_work_loop_cap:
|
|
1048
|
+
max_cycles: 2
|
|
1049
|
+
on_third_needs_work:
|
|
1050
|
+
interactive: present-all-remaining-issues-ask-direction
|
|
1051
|
+
autonomous: log-remaining-proceed-to-phase-7-with-warning
|
|
1052
|
+
|
|
1053
|
+
# ---------------------------------------------------------------------------
|
|
1054
|
+
# 6. State schema (.build-state.json top-level)
|
|
1055
|
+
# ---------------------------------------------------------------------------
|
|
1056
|
+
state_schema:
|
|
1057
|
+
file: docs/plans/.build-state.json
|
|
1058
|
+
rendered_view: docs/plans/.build-state.md
|
|
1059
|
+
rendered_policy: regenerated-from-json-on-every-update-never-edit-markdown-directly
|
|
1060
|
+
compaction_trigger:
|
|
1061
|
+
check_at: every-phase-boundary
|
|
1062
|
+
field: dispatch_count
|
|
1063
|
+
threshold: 8
|
|
1064
|
+
action: save-all-state-reset-counter-regenerate-markdown-view
|
|
1065
|
+
note: TodoWrite does NOT survive compaction; rebuild from JSON on resume.
|
|
1066
|
+
fields:
|
|
1067
|
+
project_type: {type: enum, values: [web, ios]}
|
|
1068
|
+
ios_features: {type: object, when: project_type==ios, flags_count: 16}
|
|
1069
|
+
phase: {type: integer, range: [0, 7]}
|
|
1070
|
+
step: {type: string, pattern: "X.Y"}
|
|
1071
|
+
input: {type: string, value: $ARGUMENTS}
|
|
1072
|
+
context_level: {type: enum, values: [full-design, decision-brief, partial, raw-idea]}
|
|
1073
|
+
prerequisites: {type: object, populated_at: step-1.5}
|
|
1074
|
+
dispatch_count: {type: integer, reset_after_save: true}
|
|
1075
|
+
last_save_phase: {type: string}
|
|
1076
|
+
autonomous: {type: boolean}
|
|
1077
|
+
session_id: {type: string}
|
|
1078
|
+
session_started: {type: string, format: ISO-8601}
|
|
1079
|
+
completed_tasks: {type: array, items: task-id}
|
|
1080
|
+
metric_loop_scores: {type: array, items: per-loop-per-iter}
|
|
1081
|
+
decisions_next_id: {type: object, pattern: "{phase: next_seq}", example: {"1": 4, "2": 5, "4": 12}}
|
|
1082
|
+
resume_point:
|
|
1083
|
+
type: object
|
|
1084
|
+
fields:
|
|
1085
|
+
phase: {type: integer, range: [0, 7]}
|
|
1086
|
+
step: {type: string}
|
|
1087
|
+
completed_tasks: {type: array}
|
|
1088
|
+
git_branch: {type: string}
|