buildanything 1.7.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +9 -3
- package/CHANGELOG.md +112 -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 +66 -0
- package/agents/ios-foundation-models-specialist.md +64 -0
- package/agents/ios-storekit-specialist.md +59 -0
- package/agents/ios-swift-architect.md +129 -0
- package/agents/ios-swift-search.md +137 -0
- package/agents/ios-swift-ui-design.md +136 -0
- 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 +752 -332
- package/commands/fix.md +65 -0
- package/commands/self-check.md +121 -0
- package/commands/setup.md +114 -0
- package/commands/ux-review.md +63 -0
- package/commands/verify.md +69 -0
- 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 +89 -2
- 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 +28 -5
- package/protocols/architecture-schema.md +171 -0
- package/protocols/build-fix.md +52 -0
- package/protocols/cleanup.md +54 -0
- package/protocols/decision-log.md +131 -0
- package/protocols/eval-harness.md +61 -0
- package/protocols/fake-data-detector.md +64 -0
- package/protocols/ios-context.md +234 -0
- package/protocols/ios-frameworks-map.md +323 -0
- package/protocols/ios-phase-branches.md +337 -0
- package/protocols/ios-preflight.md +27 -0
- package/protocols/launch-readiness.md +258 -0
- package/protocols/metric-loop.md +153 -0
- package/protocols/smoke-test.md +118 -0
- package/protocols/state-schema.json +388 -0
- package/protocols/state-schema.md +172 -0
- package/protocols/verify.md +127 -0
- package/protocols/visual-dna.md +185 -0
- package/protocols/web-phase-branches.md +351 -0
- package/skills/ios/_VENDORED.md +62 -0
- package/skills/ios/activitykit/LICENSE +131 -0
- package/skills/ios/activitykit/SKILL.md +505 -0
- package/skills/ios/activitykit/references/activitykit-patterns.md +868 -0
- package/skills/ios/app-intents/LICENSE +131 -0
- package/skills/ios/app-intents/SKILL.md +494 -0
- package/skills/ios/app-intents/references/appintents-advanced.md +1076 -0
- package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
- package/skills/ios/apple-on-device-ai/LICENSE +131 -0
- package/skills/ios/apple-on-device-ai/SKILL.md +505 -0
- package/skills/ios/apple-on-device-ai/references/coreml-conversion.md +425 -0
- package/skills/ios/apple-on-device-ai/references/coreml-optimization.md +344 -0
- package/skills/ios/apple-on-device-ai/references/foundation-models.md +508 -0
- package/skills/ios/apple-on-device-ai/references/mlx-swift.md +285 -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-26-platform/SKILL.md +53 -0
- package/skills/ios/ios-26-platform/references/automatic-adoption.md +161 -0
- package/skills/ios/ios-26-platform/references/backward-compat.md +238 -0
- package/skills/ios/ios-26-platform/references/liquid-glass.md +255 -0
- package/skills/ios/ios-26-platform/references/swiftui-apis.md +277 -0
- package/skills/ios/ios-26-platform/references/toolbar-navigation.md +250 -0
- package/skills/ios/ios-bootstrap/SKILL.md +107 -0
- package/skills/ios/ios-bootstrap/references/apple-docs-mcp-config.md +28 -0
- package/skills/ios/ios-bootstrap/references/new-project-dialog.md +41 -0
- package/skills/ios/ios-bootstrap/references/xcode-mcp-config.md +29 -0
- package/skills/ios/ios-debugger-agent/LICENSE +21 -0
- package/skills/ios/ios-debugger-agent/SKILL.md +58 -0
- package/skills/ios/ios-debugger-agent/agents/openai.yaml +4 -0
- package/skills/ios/ios-entitlements-generator/SKILL.md +47 -0
- package/skills/ios/ios-info-plist-hardening/SKILL.md +130 -0
- package/skills/ios/ios-maestro-flow-author/SKILL.md +68 -0
- package/skills/ios/ios-maestro-flow-author/references/input-and-scroll.yaml +17 -0
- package/skills/ios/ios-maestro-flow-author/references/modal-and-dismiss.yaml +14 -0
- package/skills/ios/ios-maestro-flow-author/references/onboarding-flow.yaml +16 -0
- package/skills/ios/ios-maestro-flow-author/references/tab-navigation.yaml +13 -0
- package/skills/ios/ios-maestro-flow-author/references/tap-and-assert.yaml +9 -0
- package/skills/ios/swift-accessibility/LICENSE +21 -0
- package/skills/ios/swift-accessibility/SKILL.md +371 -0
- package/skills/ios/swift-accessibility/examples/before-after-appkit.md +446 -0
- package/skills/ios/swift-accessibility/examples/before-after-swiftui.md +441 -0
- package/skills/ios/swift-accessibility/examples/before-after-uikit.md +464 -0
- package/skills/ios/swift-accessibility/references/assistive-access.md +441 -0
- package/skills/ios/swift-accessibility/references/display-settings.md +491 -0
- package/skills/ios/swift-accessibility/references/dynamic-type.md +420 -0
- package/skills/ios/swift-accessibility/references/media-accessibility.md +421 -0
- package/skills/ios/swift-accessibility/references/motor-input.md +393 -0
- package/skills/ios/swift-accessibility/references/nutrition-labels.md +362 -0
- package/skills/ios/swift-accessibility/references/platform-specifics.md +515 -0
- package/skills/ios/swift-accessibility/references/semantic-structure.md +585 -0
- package/skills/ios/swift-accessibility/references/testing-auditing.md +507 -0
- package/skills/ios/swift-accessibility/references/voice-control.md +317 -0
- package/skills/ios/swift-accessibility/references/voiceover-swiftui.md +584 -0
- package/skills/ios/swift-accessibility/references/voiceover-uikit.md +519 -0
- package/skills/ios/swift-accessibility/references/wcag-mapping.md +167 -0
- package/skills/ios/swift-accessibility/resources/audit-template.swift +128 -0
- package/skills/ios/swift-accessibility/resources/qa-checklist.md +258 -0
- package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
- package/skills/ios/swift-concurrency/LICENSE +21 -0
- package/skills/ios/swift-concurrency/SKILL.md +171 -0
- package/skills/ios/swift-concurrency/references/_index.md +50 -0
- package/skills/ios/swift-concurrency/references/actors.md +660 -0
- package/skills/ios/swift-concurrency/references/async-algorithms.md +847 -0
- package/skills/ios/swift-concurrency/references/async-await-basics.md +266 -0
- package/skills/ios/swift-concurrency/references/async-sequences.md +710 -0
- package/skills/ios/swift-concurrency/references/core-data.md +560 -0
- package/skills/ios/swift-concurrency/references/glossary.md +135 -0
- package/skills/ios/swift-concurrency/references/linting.md +155 -0
- package/skills/ios/swift-concurrency/references/memory-management.md +569 -0
- package/skills/ios/swift-concurrency/references/migration.md +1104 -0
- package/skills/ios/swift-concurrency/references/performance.md +593 -0
- package/skills/ios/swift-concurrency/references/sendable.md +598 -0
- package/skills/ios/swift-concurrency/references/tasks.md +636 -0
- package/skills/ios/swift-concurrency/references/testing.md +592 -0
- package/skills/ios/swift-concurrency/references/threading.md +495 -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/swift-security-expert/LICENSE +21 -0
- package/skills/ios/swift-security-expert/SKILL.md +470 -0
- package/skills/ios/swift-security-expert/references/biometric-authentication.md +565 -0
- package/skills/ios/swift-security-expert/references/certificate-trust.md +592 -0
- package/skills/ios/swift-security-expert/references/common-anti-patterns.md +690 -0
- package/skills/ios/swift-security-expert/references/compliance-owasp-mapping.md +537 -0
- package/skills/ios/swift-security-expert/references/credential-storage-patterns.md +721 -0
- package/skills/ios/swift-security-expert/references/cryptokit-public-key.md +505 -0
- package/skills/ios/swift-security-expert/references/cryptokit-symmetric.md +497 -0
- package/skills/ios/swift-security-expert/references/keychain-access-control.md +508 -0
- package/skills/ios/swift-security-expert/references/keychain-fundamentals.md +596 -0
- package/skills/ios/swift-security-expert/references/keychain-item-classes.md +476 -0
- package/skills/ios/swift-security-expert/references/keychain-sharing.md +458 -0
- package/skills/ios/swift-security-expert/references/migration-legacy-stores.md +727 -0
- package/skills/ios/swift-security-expert/references/secure-enclave.md +539 -0
- package/skills/ios/swift-security-expert/references/testing-security-code.md +781 -0
- package/skills/ios/swift-testing-expert/LICENSE +21 -0
- package/skills/ios/swift-testing-expert/SKILL.md +79 -0
- package/skills/ios/swift-testing-expert/references/_index.md +12 -0
- package/skills/ios/swift-testing-expert/references/async-testing-and-waiting.md +127 -0
- package/skills/ios/swift-testing-expert/references/expectations.md +145 -0
- package/skills/ios/swift-testing-expert/references/fundamentals.md +141 -0
- package/skills/ios/swift-testing-expert/references/migration-from-xctest.md +127 -0
- package/skills/ios/swift-testing-expert/references/parallelization-and-isolation.md +95 -0
- package/skills/ios/swift-testing-expert/references/parameterized-testing.md +284 -0
- package/skills/ios/swift-testing-expert/references/performance-and-best-practices.md +187 -0
- package/skills/ios/swift-testing-expert/references/traits-and-tags.md +114 -0
- package/skills/ios/swift-testing-expert/references/xcode-workflows.md +70 -0
- package/skills/ios/swiftdata-pro/LICENSE +21 -0
- package/skills/ios/swiftdata-pro/SKILL.md +102 -0
- package/skills/ios/swiftdata-pro/agents/openai.yaml +10 -0
- package/skills/ios/swiftdata-pro/assets/swiftdata-pro-icon.png +0 -0
- package/skills/ios/swiftdata-pro/assets/swiftdata-pro-icon.svg +29 -0
- package/skills/ios/swiftdata-pro/references/class-inheritance.md +104 -0
- package/skills/ios/swiftdata-pro/references/cloudkit.md +10 -0
- package/skills/ios/swiftdata-pro/references/core-rules.md +20 -0
- package/skills/ios/swiftdata-pro/references/indexing.md +27 -0
- package/skills/ios/swiftdata-pro/references/predicates.md +73 -0
- package/skills/ios/swiftui-design-principles/AGENTS.md +21 -0
- package/skills/ios/swiftui-design-principles/LICENSE +21 -0
- package/skills/ios/swiftui-design-principles/README.md +41 -0
- package/skills/ios/swiftui-design-principles/SKILL.md +605 -0
- package/skills/ios/swiftui-design-principles/metadata.json +10 -0
- package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
- package/skills/ios/swiftui-liquid-glass/LICENSE +21 -0
- package/skills/ios/swiftui-liquid-glass/SKILL.md +95 -0
- package/skills/ios/swiftui-liquid-glass/agents/openai.yaml +4 -0
- package/skills/ios/swiftui-liquid-glass/references/liquid-glass.md +280 -0
- package/skills/ios/swiftui-performance-audit/LICENSE +21 -0
- package/skills/ios/swiftui-performance-audit/SKILL.md +111 -0
- package/skills/ios/swiftui-performance-audit/agents/openai.yaml +4 -0
- package/skills/ios/swiftui-performance-audit/references/code-smells.md +150 -0
- package/skills/ios/swiftui-performance-audit/references/demystify-swiftui-performance-wwdc23.md +46 -0
- package/skills/ios/swiftui-performance-audit/references/optimizing-swiftui-performance-instruments.md +29 -0
- package/skills/ios/swiftui-performance-audit/references/profiling-intake.md +44 -0
- package/skills/ios/swiftui-performance-audit/references/report-template.md +47 -0
- package/skills/ios/swiftui-performance-audit/references/understanding-hangs-in-your-app.md +33 -0
- package/skills/ios/swiftui-performance-audit/references/understanding-improving-swiftui-performance.md +52 -0
- package/skills/ios/swiftui-pro/LICENSE +21 -0
- package/skills/ios/swiftui-pro/SKILL.md +108 -0
- package/skills/ios/swiftui-pro/agents/openai.yaml +10 -0
- package/skills/ios/swiftui-pro/assets/swiftui-pro-icon.png +0 -0
- package/skills/ios/swiftui-pro/assets/swiftui-pro-icon.svg +29 -0
- package/skills/ios/swiftui-pro/references/accessibility.md +13 -0
- package/skills/ios/swiftui-pro/references/api.md +39 -0
- package/skills/ios/swiftui-pro/references/data.md +43 -0
- package/skills/ios/swiftui-pro/references/design.md +31 -0
- package/skills/ios/swiftui-pro/references/hygiene.md +9 -0
- package/skills/ios/swiftui-pro/references/navigation.md +14 -0
- package/skills/ios/swiftui-pro/references/performance.md +46 -0
- package/skills/ios/swiftui-pro/references/swift.md +56 -0
- package/skills/ios/swiftui-pro/references/views.md +35 -0
- package/skills/ios/swiftui-ui-patterns/LICENSE +21 -0
- package/skills/ios/swiftui-ui-patterns/SKILL.md +100 -0
- package/skills/ios/swiftui-ui-patterns/agents/openai.yaml +4 -0
- package/skills/ios/swiftui-ui-patterns/references/app-wiring.md +201 -0
- package/skills/ios/swiftui-ui-patterns/references/async-state.md +96 -0
- package/skills/ios/swiftui-ui-patterns/references/components-index.md +50 -0
- package/skills/ios/swiftui-ui-patterns/references/controls.md +57 -0
- package/skills/ios/swiftui-ui-patterns/references/deeplinks.md +66 -0
- package/skills/ios/swiftui-ui-patterns/references/focus.md +90 -0
- package/skills/ios/swiftui-ui-patterns/references/form.md +97 -0
- package/skills/ios/swiftui-ui-patterns/references/grids.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/haptics.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/input-toolbar.md +51 -0
- package/skills/ios/swiftui-ui-patterns/references/lightweight-clients.md +93 -0
- package/skills/ios/swiftui-ui-patterns/references/list.md +86 -0
- package/skills/ios/swiftui-ui-patterns/references/loading-placeholders.md +38 -0
- package/skills/ios/swiftui-ui-patterns/references/macos-settings.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/matched-transitions.md +59 -0
- package/skills/ios/swiftui-ui-patterns/references/media.md +73 -0
- package/skills/ios/swiftui-ui-patterns/references/menu-bar.md +101 -0
- package/skills/ios/swiftui-ui-patterns/references/navigationstack.md +159 -0
- package/skills/ios/swiftui-ui-patterns/references/overlay.md +45 -0
- package/skills/ios/swiftui-ui-patterns/references/performance.md +62 -0
- package/skills/ios/swiftui-ui-patterns/references/previews.md +48 -0
- package/skills/ios/swiftui-ui-patterns/references/scroll-reveal.md +133 -0
- package/skills/ios/swiftui-ui-patterns/references/scrollview.md +87 -0
- package/skills/ios/swiftui-ui-patterns/references/searchable.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/sheets.md +155 -0
- package/skills/ios/swiftui-ui-patterns/references/split-views.md +72 -0
- package/skills/ios/swiftui-ui-patterns/references/tabview.md +114 -0
- package/skills/ios/swiftui-ui-patterns/references/theming.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/title-menus.md +93 -0
- package/skills/ios/swiftui-ui-patterns/references/top-bar.md +49 -0
- package/skills/ios/swiftui-view-refactor/LICENSE +21 -0
- package/skills/ios/swiftui-view-refactor/SKILL.md +207 -0
- package/skills/ios/swiftui-view-refactor/agents/openai.yaml +4 -0
- package/skills/ios/swiftui-view-refactor/references/mv-patterns.md +161 -0
- package/skills/ios/widgetkit/LICENSE +131 -0
- package/skills/ios/widgetkit/SKILL.md +502 -0
- package/skills/ios/widgetkit/references/widgetkit-advanced.md +871 -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
|
@@ -0,0 +1,171 @@
|
|
|
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
|
+
- `# MVP 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.
|
|
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).
|
|
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
|
+
## Ref format used by implementer prompts
|
|
60
|
+
|
|
61
|
+
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.
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
ARCHITECTURE REFS:
|
|
65
|
+
- architecture.md#frontend/checkout (primary)
|
|
66
|
+
- architecture.md#data-model/orders (secondary — read if touching order creation)
|
|
67
|
+
- architecture.md#security/auth (read if touching /api/checkout)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Rules:
|
|
71
|
+
|
|
72
|
+
- `(primary)` — the implementer MUST Read this ref before starting work.
|
|
73
|
+
- `(secondary — read if touching X)` — conditional; the implementer reads only if the task description overlaps with the hint.
|
|
74
|
+
- Refs are one per line, bullet-prefixed `-`, with two-space indent.
|
|
75
|
+
- File paths are relative to the repo root. Anchors are kebab-case per the rules above.
|
|
76
|
+
|
|
77
|
+
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`.
|
|
78
|
+
|
|
79
|
+
## Phase 2.3 synthesizer output contract
|
|
80
|
+
|
|
81
|
+
The Phase 2.3 architecture synthesizer MUST produce one artifact:
|
|
82
|
+
|
|
83
|
+
1. `docs/plans/architecture.md` — the human-readable architecture doc, containing:
|
|
84
|
+
- All eight required top-level headings (or the iOS-adjusted set).
|
|
85
|
+
- All required subsection anchors for each top-level section present.
|
|
86
|
+
- Prose content under each subsection sufficient for an implementer to ground their work.
|
|
87
|
+
|
|
88
|
+
The synthesizer does NOT write `refs.json`. The Phase 2.2 Refs Indexer owns that file (see below).
|
|
89
|
+
|
|
90
|
+
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.
|
|
91
|
+
|
|
92
|
+
## refs.json — the live downstream docs index
|
|
93
|
+
|
|
94
|
+
`refs.json` is the live downstream docs index. It covers every anchor in:
|
|
95
|
+
|
|
96
|
+
- `design-doc.md` (THE PRD)
|
|
97
|
+
- `architecture.md`
|
|
98
|
+
- `sprint-tasks.md`
|
|
99
|
+
- `visual-design-spec.md` (if exists)
|
|
100
|
+
- `quality-targets.json` (via flat key anchors)
|
|
101
|
+
|
|
102
|
+
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.
|
|
103
|
+
|
|
104
|
+
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.
|
|
105
|
+
|
|
106
|
+
See `commands/build.md` Phase 2.2 Step 2.3 Refs Indexer dispatch for the exact generation prompt.
|
|
107
|
+
|
|
108
|
+
## refs.json example
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"schema_version": "2.0",
|
|
113
|
+
"generated_at": "2026-04-13T10:00:00Z",
|
|
114
|
+
"generated_by": "Phase 2.2 Refs Indexer",
|
|
115
|
+
"anchors": [
|
|
116
|
+
{
|
|
117
|
+
"file_path": "docs/plans/design-doc.md",
|
|
118
|
+
"anchor": "#persona",
|
|
119
|
+
"topic": "primary user persona + JTBD",
|
|
120
|
+
"line_start": 12,
|
|
121
|
+
"line_end": 38
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"file_path": "docs/plans/architecture.md",
|
|
125
|
+
"anchor": "#frontend/checkout",
|
|
126
|
+
"topic": "checkout flow component tree",
|
|
127
|
+
"line_start": 102,
|
|
128
|
+
"line_end": 145
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"file_path": "docs/plans/architecture.md",
|
|
132
|
+
"anchor": "#data-model/orders",
|
|
133
|
+
"topic": "Orders entity, status enum, relations to users and items",
|
|
134
|
+
"line_start": 302,
|
|
135
|
+
"line_end": 358
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"file_path": "docs/plans/sprint-tasks.md",
|
|
139
|
+
"anchor": "#sprint-1-task-3",
|
|
140
|
+
"topic": "wire checkout form to /api/checkout",
|
|
141
|
+
"line_start": 88,
|
|
142
|
+
"line_end": 104
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Fields:
|
|
149
|
+
|
|
150
|
+
- `schema_version` (string) — currently `"2.0"`. Bumped from `1` when the index was extended from architecture-only to the multi-doc scope above.
|
|
151
|
+
- `generated_at` (ISO 8601) — Refs Indexer run timestamp.
|
|
152
|
+
- `generated_by` (string) — `"Phase 2.2 Refs Indexer"`.
|
|
153
|
+
- `anchors` (array) — one entry per anchor across all indexed files. Each: `{file_path, anchor, topic, line_start, line_end}`.
|
|
154
|
+
- `file_path` — repo-relative path of the file the anchor lives in. Required. Tells consumers which document to `Read`.
|
|
155
|
+
- `anchor` — the markdown fragment, including the leading `#` (e.g. `#frontend/checkout`, `#persona`). For `quality-targets.json` entries, the anchor is the flat key name.
|
|
156
|
+
- `topic` — one-sentence summary used by the Briefing Officer to pick refs without reading the file.
|
|
157
|
+
- `line_start`, `line_end` — optional but recommended. Allow consumers to `Read` just the section instead of the whole file.
|
|
158
|
+
|
|
159
|
+
## Validation
|
|
160
|
+
|
|
161
|
+
A synthesized `architecture.md` plus `refs.json` pair is well-formed iff:
|
|
162
|
+
|
|
163
|
+
1. All required top-level headings exist in `architecture.md` (grep `^# {Heading}$` for each).
|
|
164
|
+
2. All required subsection anchors resolve to real `## Heading` lines under the correct parent. (A heading `## Checkout` under `# Frontend` resolves the anchor `frontend/checkout`.)
|
|
165
|
+
3. `refs.json` parses as valid JSON against the shape above.
|
|
166
|
+
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`.
|
|
167
|
+
5. Every required anchor from this document appears in `refs.json.anchors` with the correct `file_path`.
|
|
168
|
+
6. No `(file_path, anchor)` pair appears twice in `refs.json.anchors`.
|
|
169
|
+
7. `schema_version` is `"2.0"` and `generated_by` is `"Phase 2.2 Refs Indexer"`.
|
|
170
|
+
|
|
171
|
+
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.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Build-Fix Protocol (One Error at a Time)
|
|
2
|
+
|
|
3
|
+
You are the orchestrator. A build, type-check, or lint check has failed. Do NOT dump all errors on a fix agent. Most build errors cascade — fixing the root cause clears 5-10 downstream errors.
|
|
4
|
+
|
|
5
|
+
## When to Use
|
|
6
|
+
|
|
7
|
+
When the Verification Protocol reports FAIL on Build, Type-Check, or Lint checks. Also usable during Phase 4 scaffolding or Phase 5 implementation when builds break.
|
|
8
|
+
|
|
9
|
+
## Step 1: Extract First Error
|
|
10
|
+
|
|
11
|
+
Parse the failure output from the verification agent. Extract the FIRST error only:
|
|
12
|
+
- File path
|
|
13
|
+
- Line number (if available)
|
|
14
|
+
- Error message
|
|
15
|
+
|
|
16
|
+
Ignore all other errors. They are likely cascading from this one.
|
|
17
|
+
|
|
18
|
+
## Step 2: Fix
|
|
19
|
+
|
|
20
|
+
Call the Agent tool — description: "Fix [error]" — mode: "bypassPermissions" — prompt:
|
|
21
|
+
|
|
22
|
+
"[COMPLEXITY: S] Fix this single build error. FILE: [path]. LINE: [number]. ERROR: [message]. Fix this specific error. Do not fix other errors. Do not refactor. Commit: 'fix: [error description]'."
|
|
23
|
+
|
|
24
|
+
> Pass ONLY the single error. Do not show the fix agent the full error log.
|
|
25
|
+
|
|
26
|
+
## Step 3: Rebuild
|
|
27
|
+
|
|
28
|
+
Re-run ONLY the failing check (not all 6 verification checks). Count errors in the new output.
|
|
29
|
+
|
|
30
|
+
## Step 4: Evaluate
|
|
31
|
+
|
|
32
|
+
- **0 errors:** DONE. Return FIXED to the calling protocol.
|
|
33
|
+
- **Error count decreased:** Log "CASCADE: fixed 1 error, resolved [N] total." Return to Step 1 with the new first error.
|
|
34
|
+
- **Error count same or increased:** The fix was bad. Revert: `git revert HEAD --no-edit`. Try the SECOND error from the original output instead. If already tried 2 different errors, return FAILED.
|
|
35
|
+
- **Iteration count >= 5:** Return PARTIAL with remaining error count.
|
|
36
|
+
|
|
37
|
+
## Step 5: Report
|
|
38
|
+
|
|
39
|
+
Return to the orchestrator one of:
|
|
40
|
+
- **FIXED** — all errors resolved
|
|
41
|
+
- **PARTIAL** — [N] errors remain after 5 iterations
|
|
42
|
+
- **FAILED** — could not make progress
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Rules
|
|
47
|
+
|
|
48
|
+
- ONE error per fix agent. Never show a fix agent multiple errors.
|
|
49
|
+
- Revert bad fixes immediately. Do not accumulate broken fixes.
|
|
50
|
+
- Max 5 fix iterations per build-fix invocation.
|
|
51
|
+
- The fix agent is a SEPARATE agent from the verification agent. Fresh context.
|
|
52
|
+
- Track iteration count and error count delta in `docs/plans/.build-state.md`.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Cleanup Protocol (De-Sloppify)
|
|
2
|
+
|
|
3
|
+
You are the orchestrator. An implementation agent just finished a task. Before running the metric loop, you run a focused cleanup pass on the changed files.
|
|
4
|
+
|
|
5
|
+
## When to Skip
|
|
6
|
+
|
|
7
|
+
If the implementation was trivial — single config file change, < 20 lines changed total — skip this protocol. The overhead isn't worth it.
|
|
8
|
+
|
|
9
|
+
## Step 1: Collect the Changeset
|
|
10
|
+
|
|
11
|
+
Get the authoritative list of files changed by running `git diff --name-only HEAD~1` (or checking the implementation agent's commit). Do not rely solely on the agent's self-reported file list — use git as the source of truth. This is the cleanup scope. Nothing outside this list gets touched.
|
|
12
|
+
|
|
13
|
+
## Step 2: Invoke the Cleanup Agent
|
|
14
|
+
|
|
15
|
+
Call the Agent tool — description: "Cleanup [task name]" — mode: "bypassPermissions" — prompt:
|
|
16
|
+
|
|
17
|
+
"You are a code quality cleanup agent. Your job is to improve code quality in the files listed below WITHOUT changing behavior.
|
|
18
|
+
|
|
19
|
+
FILES IN SCOPE:
|
|
20
|
+
[list of files changed by the implementer]
|
|
21
|
+
|
|
22
|
+
ACCEPTANCE CRITERIA (do not break these):
|
|
23
|
+
[paste the task's acceptance criteria]
|
|
24
|
+
|
|
25
|
+
FIX these issues if you find them:
|
|
26
|
+
- Naming inconsistencies (variables, functions, files)
|
|
27
|
+
- Dead code and unused imports
|
|
28
|
+
- Redundant or duplicate imports
|
|
29
|
+
- Unclear variable or function names
|
|
30
|
+
- Missing error handling
|
|
31
|
+
- Code style violations
|
|
32
|
+
- Obvious DRY violations within the changed files
|
|
33
|
+
|
|
34
|
+
DO NOT:
|
|
35
|
+
- Add features or change behavior
|
|
36
|
+
- Modify the architecture or file structure
|
|
37
|
+
- Touch files outside the list above
|
|
38
|
+
- Refactor code that wasn't part of this task
|
|
39
|
+
- Modify tests unless fixing a broken assertion caused by the implementer
|
|
40
|
+
|
|
41
|
+
When finished, commit: 'refactor: cleanup [task name]'."
|
|
42
|
+
|
|
43
|
+
## Step 3: Verify
|
|
44
|
+
|
|
45
|
+
After the cleanup agent finishes, spot-check that acceptance criteria still hold. If the cleanup agent broke something, revert its commit and log the issue to `docs/plans/build-log.md`. Then proceed to the metric loop without cleanup.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Rules
|
|
50
|
+
|
|
51
|
+
- The cleanup agent is a SEPARATE Agent tool call from the implementer. No cleaning your own mess.
|
|
52
|
+
- Scope is sacred. Only files from the implementation changeset. Zero exceptions.
|
|
53
|
+
- This runs AFTER implementation, BEFORE the metric loop.
|
|
54
|
+
- If cleanup breaks acceptance criteria, revert and skip. Never block the metric loop on a cleanup failure.
|
|
@@ -0,0 +1,131 @@
|
|
|
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 MVP 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 MVP",
|
|
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 MVP 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 MVP.",
|
|
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.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Eval Harness Protocol
|
|
2
|
+
|
|
3
|
+
You are the orchestrator. Phase 6.1 audits are complete. Before running the metric loop, define formal eval cases that are concrete, executable, and reproducible. This replaces subjective narrative audits with deterministic pass/fail tests.
|
|
4
|
+
|
|
5
|
+
## How This Differs from the Metric Loop
|
|
6
|
+
|
|
7
|
+
The metric loop scores quality 0-100; the eval harness tests specific behaviors as binary pass/fail. Eval failures feed into the metric loop as concrete issues.
|
|
8
|
+
|
|
9
|
+
## Step 0: Define Eval Cases
|
|
10
|
+
|
|
11
|
+
YOU (the orchestrator) define eval cases based on:
|
|
12
|
+
- Audit findings from Phase 6.1 (highest-severity items first)
|
|
13
|
+
- Architecture doc (API contracts, auth model, data validation rules)
|
|
14
|
+
- Design doc (core user flows, edge cases)
|
|
15
|
+
|
|
16
|
+
Write eval cases to `docs/plans/.build-state.md` under `## Eval Harness`:
|
|
17
|
+
|
|
18
|
+
| # | Name | Action | Expected Result | pass@k | Severity |
|
|
19
|
+
|---|------|--------|-----------------|--------|----------|
|
|
20
|
+
|
|
21
|
+
**Severity thresholds (non-negotiable):**
|
|
22
|
+
- CRITICAL: pass@5 (must pass 5/5 — 100% reliability)
|
|
23
|
+
- HIGH: pass@4 (must pass 4/5 — 80% reliability)
|
|
24
|
+
- MEDIUM: pass@3 (must pass 3/5 — 60% reliability)
|
|
25
|
+
|
|
26
|
+
Aim for 8-15 eval cases. Cover: auth boundaries, input validation, error handling, core happy path, primary edge cases.
|
|
27
|
+
|
|
28
|
+
**Eval cases must be concrete and executable** — actual commands (curl, function calls, UI interactions), not descriptions. Bad: "Auth should work." Good: "curl -X GET /api/recipes without Authorization header → expect 401."
|
|
29
|
+
|
|
30
|
+
For UI flows, use agent-browser: "agent-browser open http://localhost:3000/dashboard → agent-browser click @e3 (Submit button) → agent-browser wait --text \"Order confirmed\" → expect page contains confirmation ID". These are concrete and executable via agent-browser CLI.
|
|
31
|
+
|
|
32
|
+
## Step 1: Run Eval
|
|
33
|
+
|
|
34
|
+
Call the Agent tool — description: "Run eval harness" — mode: "bypassPermissions" — prompt:
|
|
35
|
+
|
|
36
|
+
"[COMPLEXITY: M] Run these eval cases. For each case, execute the action the specified number of times (k). Report per case: PASS (N/k passed, meets threshold) or FAIL (N/k passed, below threshold). Include the actual result on failures. For eval cases that specify agent-browser commands, start the dev server first, then execute the agent-browser sequence. Capture annotated screenshots on failure. [paste eval case table]"
|
|
37
|
+
|
|
38
|
+
<HARD-GATE>
|
|
39
|
+
The eval agent RUNS cases. It does NOT define them. Case definition is the orchestrator's job.
|
|
40
|
+
</HARD-GATE>
|
|
41
|
+
|
|
42
|
+
## Step 2: Score
|
|
43
|
+
|
|
44
|
+
Count PASS cases / total cases. This is the eval baseline. Record to `docs/plans/.build-state.md`.
|
|
45
|
+
|
|
46
|
+
## Step 3: Feed into Metric Loop
|
|
47
|
+
|
|
48
|
+
Any FAIL case with severity CRITICAL or HIGH becomes a candidate issue for the Phase 6.2 metric loop. Pass the failure details (case name, action, expected vs actual) as context when defining the metric loop's metric.
|
|
49
|
+
|
|
50
|
+
## Step 4: Re-evaluate After Metric Loop
|
|
51
|
+
|
|
52
|
+
After the Phase 6.2 metric loop exits, re-run the eval harness. All CRITICAL cases must now pass. If any CRITICAL case still fails, flag it for the Reality Checker in Step 6.3.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Rules
|
|
57
|
+
|
|
58
|
+
- Eval cases are defined by the ORCHESTRATOR, not by the eval agent.
|
|
59
|
+
- pass@k thresholds are non-negotiable per severity level.
|
|
60
|
+
- Re-run eval after metric loop to verify fixes — this is the exit gate.
|
|
61
|
+
- Eval failures feed into the metric loop as specific, concrete issues — not vague audit findings.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Fake Data Detector Protocol
|
|
2
|
+
|
|
3
|
+
You are the orchestrator. Phase 6.2d detects mock, fake, or hardcoded data masquerading as real functionality. This catches projects that look complete but run on canned responses, simulated delays, or placeholder content.
|
|
4
|
+
|
|
5
|
+
## When to Run
|
|
6
|
+
|
|
7
|
+
Run as a single agent in Phase 6.2d, after the eval harness and metric loop. CRITICAL findings block the Reality Checker in Step 6.3.
|
|
8
|
+
|
|
9
|
+
## Step 1: Static Analysis
|
|
10
|
+
|
|
11
|
+
Call the Agent tool — description: "Detect fake data (static)" — mode: "bypassPermissions" — prompt:
|
|
12
|
+
|
|
13
|
+
"[COMPLEXITY: M] Grep the codebase for fake data patterns. Exclude test files (`**/*.test.*`, `**/*.spec.*`, `__tests__/`), seed files (`**/seed*`, `**/migrate*`), Storybook (`**/*.stories.*`), and `.env.example`. For each match, report file:line, the pattern matched, and why it is suspicious. Patterns to check:
|
|
14
|
+
|
|
15
|
+
1. `Math.random()` generating business data (prices, scores, metrics) — ignore ID/key generation
|
|
16
|
+
2. Hardcoded arrays/objects posing as API responses (e.g., `const users = [{id: 1, name: "John"...}]` in production source)
|
|
17
|
+
3. `setTimeout`/`setInterval` faking async operations (simulating streaming, polling, or delays that should be real network calls)
|
|
18
|
+
4. Strings: 'lorem ipsum', 'placeholder', 'sample data', 'test data' in production source
|
|
19
|
+
5. `console.log` faking real output (e.g., `console.log("Trade executed: +$500")`)
|
|
20
|
+
6. Fetch/axios calls to `localhost` or hardcoded URLs that should be env vars
|
|
21
|
+
7. WebSocket connections that never process real data (`new WebSocket` with no `onmessage` handler or a handler that ignores the event)"
|
|
22
|
+
|
|
23
|
+
## Step 2: Dynamic Analysis (HAR Files)
|
|
24
|
+
|
|
25
|
+
Check `docs/plans/evidence/*/` for `.har` files from smoke tests. If none exist, skip to Step 3.
|
|
26
|
+
|
|
27
|
+
If HAR files exist, call the Agent tool — description: "Detect fake data (dynamic)" — mode: "bypassPermissions" — prompt:
|
|
28
|
+
|
|
29
|
+
"[COMPLEXITY: S] Parse HAR files in `docs/plans/evidence/*/`. Flag:
|
|
30
|
+
|
|
31
|
+
1. Zero external API calls during a full app exercise (everything served locally)
|
|
32
|
+
2. All API responses with identical structure and timing (cached/hardcoded)
|
|
33
|
+
3. No WebSocket frames when app claims to stream data
|
|
34
|
+
4. API calls returning 200 with identical response bodies across multiple requests"
|
|
35
|
+
|
|
36
|
+
## Step 3: Classify Findings
|
|
37
|
+
|
|
38
|
+
Assign severity to each finding:
|
|
39
|
+
|
|
40
|
+
| Severity | Criteria |
|
|
41
|
+
|----------|----------|
|
|
42
|
+
| CRITICAL | Production data is fake — business logic relies on `Math.random()`, hardcoded objects substitute for real API calls |
|
|
43
|
+
| HIGH | Mock data in production code path — simulated delays, placeholder strings in user-facing output |
|
|
44
|
+
| MEDIUM | Suspicious pattern — hardcoded localhost URLs, WebSocket stubs that may be development leftovers |
|
|
45
|
+
|
|
46
|
+
## Step 4: Report
|
|
47
|
+
|
|
48
|
+
Write findings to `docs/plans/.build-state.md` under `## Fake Data Detector`:
|
|
49
|
+
|
|
50
|
+
| # | File:Line | Pattern | Why Suspicious | Severity | Suggested Fix |
|
|
51
|
+
|---|-----------|---------|----------------|----------|---------------|
|
|
52
|
+
|
|
53
|
+
<HARD-GATE>
|
|
54
|
+
CRITICAL findings block the Reality Checker (Step 6.3). Do not proceed past Phase 6.2d until all CRITICAL findings are resolved or explicitly accepted by the user.
|
|
55
|
+
</HARD-GATE>
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Rules
|
|
60
|
+
|
|
61
|
+
- ONE agent for static checks, ONE agent for dynamic checks. Do not combine.
|
|
62
|
+
- If no HAR files exist, run static checks only. Do not fail the protocol for missing HAR files.
|
|
63
|
+
- Do NOT flag: seed/migration data, test fixtures, `.env.example`, Storybook demos, or explicit dev mock servers (MSW, json-server).
|
|
64
|
+
- Every finding must include a file:line reference. No vague "the codebase has fake data" reports.
|