cfsa-antigravity 1.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/bin/cli.mjs +324 -0
- package/package.json +34 -0
- package/template/.agent/instructions/commands.md +48 -0
- package/template/.agent/instructions/patterns.md +61 -0
- package/template/.agent/instructions/structure.md +29 -0
- package/template/.agent/instructions/tech-stack.md +43 -0
- package/template/.agent/instructions/workflow.md +41 -0
- package/template/.agent/kit-sync.md +15 -0
- package/template/.agent/rules/boundary-not-placeholder.md +146 -0
- package/template/.agent/rules/completion-checklist.md +48 -0
- package/template/.agent/rules/decision-classification.md +103 -0
- package/template/.agent/rules/extensibility.md +47 -0
- package/template/.agent/rules/question-vs-command.md +81 -0
- package/template/.agent/rules/security-first.md +43 -0
- package/template/.agent/rules/specificity-standards.md +54 -0
- package/template/.agent/rules/tdd-contract-first.md +57 -0
- package/template/.agent/rules/vertical-slices.md +42 -0
- package/template/.agent/skill-library/MANIFEST.md +480 -0
- package/template/.agent/skill-library/README.md +38 -0
- package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
- package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
- package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
- package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
- package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
- package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
- package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
- package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
- package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
- package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
- package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
- package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
- package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
- package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
- package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
- package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
- package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
- package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
- package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
- package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
- package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
- package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
- package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
- package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
- package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
- package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
- package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
- package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
- package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
- package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
- package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
- package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
- package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
- package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
- package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
- package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
- package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
- package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
- package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
- package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
- package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
- package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
- package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
- package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
- package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
- package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
- package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
- package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
- package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
- package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
- package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
- package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
- package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
- package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
- package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
- package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
- package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
- package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
- package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
- package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
- package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
- package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
- package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
- package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
- package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
- package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
- package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
- package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
- package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
- package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
- package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
- package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
- package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
- package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
- package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
- package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
- package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
- package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
- package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
- package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
- package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
- package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
- package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
- package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
- package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
- package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
- package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
- package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
- package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
- package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
- package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
- package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
- package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
- package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
- package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
- package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
- package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
- package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
- package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
- package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
- package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
- package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
- package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
- package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
- package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
- package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
- package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
- package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
- package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
- package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
- package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
- package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
- package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
- package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
- package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
- package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
- package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
- package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
- package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
- package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
- package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
- package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
- package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
- package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
- package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
- package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
- package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
- package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
- package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
- package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
- package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
- package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
- package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
- package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
- package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
- package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
- package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
- package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
- package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
- package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
- package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
- package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
- package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
- package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
- package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
- package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
- package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
- package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
- package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
- package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
- package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
- package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
- package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
- package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
- package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
- package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
- package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
- package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
- package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
- package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
- package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
- package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
- package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
- package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
- package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
- package/template/.agent/skills/accessibility/SKILL.md +522 -0
- package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
- package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
- package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
- package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
- package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
- package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/template/.agent/skills/api-versioning/SKILL.md +420 -0
- package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
- package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
- package/template/.agent/skills/brainstorming/SKILL.md +236 -0
- package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
- package/template/.agent/skills/clean-code/SKILL.md +94 -0
- package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
- package/template/.agent/skills/concise-planning/SKILL.md +68 -0
- package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
- package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
- package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
- package/template/.agent/skills/design-direction/SKILL.md +45 -0
- package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
- package/template/.agent/skills/find-skills/SKILL.md +145 -0
- package/template/.agent/skills/git-advanced/SKILL.md +972 -0
- package/template/.agent/skills/git-workflow/SKILL.md +420 -0
- package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
- package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
- package/template/.agent/skills/migration-management/SKILL.md +384 -0
- package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
- package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
- package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
- package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
- package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
- package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
- package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
- package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
- package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
- package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
- package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
- package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
- package/template/.agent/skills/prd-templates/SKILL.md +88 -0
- package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
- package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
- package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
- package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
- package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
- package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
- package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
- package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
- package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
- package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
- package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
- package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
- package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
- package/template/.agent/skills/prompt-engineer/README.md +659 -0
- package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
- package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
- package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
- package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
- package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
- package/template/.agent/skills/session-continuity/SKILL.md +730 -0
- package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
- package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
- package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
- package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
- package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
- package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
- package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
- package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
- package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
- package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
- package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
- package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
- package/template/.agent/skills/skill-creator/README.md +270 -0
- package/template/.agent/skills/skill-creator/SKILL.md +590 -0
- package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
- package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
- package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
- package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
- package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/template/.agent/skills/spec-writing/SKILL.md +110 -0
- package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
- package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
- package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
- package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
- package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
- package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
- package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
- package/template/.agent/skills/technical-writer/SKILL.md +242 -0
- package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
- package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
- package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
- package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
- package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
- package/template/.agent/workflows/audit-ambiguity.md +64 -0
- package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
- package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
- package/template/.agent/workflows/bootstrap-agents.md +66 -0
- package/template/.agent/workflows/create-prd-architecture.md +119 -0
- package/template/.agent/workflows/create-prd-compile.md +138 -0
- package/template/.agent/workflows/create-prd-design-system.md +135 -0
- package/template/.agent/workflows/create-prd-security.md +113 -0
- package/template/.agent/workflows/create-prd-stack.md +91 -0
- package/template/.agent/workflows/create-prd.md +168 -0
- package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
- package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
- package/template/.agent/workflows/decompose-architecture.md +111 -0
- package/template/.agent/workflows/evolve-contract.md +98 -0
- package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
- package/template/.agent/workflows/evolve-feature-classify.md +116 -0
- package/template/.agent/workflows/evolve-feature.md +56 -0
- package/template/.agent/workflows/ideate-discover.md +144 -0
- package/template/.agent/workflows/ideate-extract.md +129 -0
- package/template/.agent/workflows/ideate-validate.md +117 -0
- package/template/.agent/workflows/ideate.md +113 -0
- package/template/.agent/workflows/implement-slice-setup.md +113 -0
- package/template/.agent/workflows/implement-slice-tdd.md +198 -0
- package/template/.agent/workflows/implement-slice.md +50 -0
- package/template/.agent/workflows/plan-phase.md +202 -0
- package/template/.agent/workflows/propagate-decision-apply.md +135 -0
- package/template/.agent/workflows/propagate-decision-scan.md +147 -0
- package/template/.agent/workflows/propagate-decision.md +56 -0
- package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
- package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
- package/template/.agent/workflows/remediate-pipeline.md +55 -0
- package/template/.agent/workflows/resolve-ambiguity.md +82 -0
- package/template/.agent/workflows/sync-kit.md +209 -0
- package/template/.agent/workflows/update-architecture-map.md +74 -0
- package/template/.agent/workflows/validate-phase.md +219 -0
- package/template/.agent/workflows/verify-infrastructure.md +207 -0
- package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
- package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
- package/template/.agent/workflows/write-architecture-spec.md +63 -0
- package/template/.agent/workflows/write-be-spec-classify.md +165 -0
- package/template/.agent/workflows/write-be-spec-write.md +98 -0
- package/template/.agent/workflows/write-be-spec.md +76 -0
- package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
- package/template/.agent/workflows/write-fe-spec-write.md +94 -0
- package/template/.agent/workflows/write-fe-spec.md +71 -0
- package/template/AGENTS.md +176 -0
- package/template/GEMINI.md +177 -0
- package/template/docs/README.md +187 -0
- package/template/docs/audits/.gitkeep +0 -0
- package/template/docs/audits/README.md +10 -0
- package/template/docs/plans/.gitkeep +0 -0
- package/template/docs/plans/README.md +21 -0
- package/template/docs/plans/be/.gitkeep +0 -0
- package/template/docs/plans/be/README.md +11 -0
- package/template/docs/plans/fe/.gitkeep +0 -0
- package/template/docs/plans/fe/README.md +11 -0
- package/template/docs/plans/ia/.gitkeep +0 -0
- package/template/docs/plans/ia/README.md +17 -0
- package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
- package/template/docs/plans/ia/deep-dives/README.md +5 -0
- package/template/docs/plans/phases/.gitkeep +0 -0
- package/template/docs/plans/phases/README.md +11 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Verify operational infrastructure after the infrastructure or auth slice — CI/CD green, staging live, migrations clean, auth working
|
|
3
|
+
pipeline:
|
|
4
|
+
position: 9.5
|
|
5
|
+
stage: verification
|
|
6
|
+
predecessors: [implement-slice]
|
|
7
|
+
successors: [implement-slice, validate-phase]
|
|
8
|
+
skills: [testing-strategist, deployment-procedures, systematic-debugging, prd-templates]
|
|
9
|
+
calls-bootstrap: false
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
// turbo-all
|
|
13
|
+
|
|
14
|
+
# Verify Infrastructure
|
|
15
|
+
|
|
16
|
+
Operational verification gate that runs after the `00-infrastructure` slice and again after the auth slice. No feature slice may begin until this workflow produces a green report.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 0. Placeholder audit
|
|
21
|
+
|
|
22
|
+
Scan the repository for any remaining `{{PLACEHOLDER}}` values:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
grep -rn '{{' --include='*.md' --include='*.ts' --include='*.json' . | grep -v node_modules | grep -v '.git/'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**If any `{{PLACEHOLDER}}` values are found** → **STOP.** Run `/bootstrap-agents` to fill them before proceeding.
|
|
29
|
+
|
|
30
|
+
**Pass criteria**: Zero `{{PLACEHOLDER}}` values in the repository (excluding `node_modules` and `.git`).
|
|
31
|
+
|
|
32
|
+
> Update report: Mark check 0 as `✅` in the report file.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 0.5. Determine trigger
|
|
37
|
+
|
|
38
|
+
Read the current phase plan (e.g., `docs/plans/phases/phase-1.md`) to identify which slice just completed.
|
|
39
|
+
|
|
40
|
+
- **If the `00-infrastructure` slice was just completed** → trigger is `infrastructure`, report suffix is empty
|
|
41
|
+
- **If the auth slice was just completed** → trigger is `auth`, report suffix is `-auth`
|
|
42
|
+
|
|
43
|
+
Set the report filename now: `docs/audits/verify-infrastructure-YYYY-MM-DD-HHMM[-auth].md`.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 0.6. Initialize report
|
|
48
|
+
|
|
49
|
+
Read `.agent/skills/prd-templates/references/infrastructure-report-template.md` for the report structure. Create the report file at the path determined in Step 0.5 using the **Initial Report** template with all checks marked `⏳`.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 1. CI/CD config check
|
|
54
|
+
|
|
55
|
+
Read .agent/skills/testing-strategist/SKILL.md and follow its methodology.
|
|
56
|
+
Read .agent/skills/systematic-debugging/SKILL.md and follow its methodology.
|
|
57
|
+
|
|
58
|
+
Read .agent/skills/{{CI_CD_SKILL}}/SKILL.md and follow its pipeline configuration conventions.
|
|
59
|
+
|
|
60
|
+
Locate the CI/CD configuration file (e.g., `.github/workflows/`, `.gitlab-ci.yml`, `Jenkinsfile`).
|
|
61
|
+
|
|
62
|
+
Verify the configuration includes: lint step, type-check step, test step, build step.
|
|
63
|
+
|
|
64
|
+
**If no CI/CD config exists** → **STOP.** Mark check 1 as `❌` in the report.
|
|
65
|
+
|
|
66
|
+
**Pass criteria**: CI/CD configuration exists and covers lint, type-check, test, and build.
|
|
67
|
+
|
|
68
|
+
> Update report: Mark check 1 as `✅`.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 2. CI/CD green check
|
|
73
|
+
|
|
74
|
+
Verify the CI/CD pipeline has run for the latest commit and ALL jobs are passing.
|
|
75
|
+
|
|
76
|
+
**If CI/CD is red** → **STOP.** Mark check 2 as `❌` with failing job names and errors.
|
|
77
|
+
|
|
78
|
+
**Pass criteria**: CI/CD pipeline is green for the latest commit.
|
|
79
|
+
|
|
80
|
+
> Update report: Mark check 2 as `✅`.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 3. Environment audit
|
|
85
|
+
|
|
86
|
+
1. Read the project's environment template (`.env.example`, `.env.template`, or equivalent)
|
|
87
|
+
2. Verify all required environment variables are documented with descriptions
|
|
88
|
+
3. Verify no secrets are hardcoded in source code — scan for patterns like `sk_live_`, `AKIA`, hardcoded tokens
|
|
89
|
+
4. Verify `.env` files are in `.gitignore`
|
|
90
|
+
|
|
91
|
+
**If secrets are found in source** → **STOP.** Mark check 3 as `❌`. Remove them immediately, rotate credentials, re-run.
|
|
92
|
+
|
|
93
|
+
**Pass criteria**: All env vars documented, no secrets in source, `.env` in `.gitignore`.
|
|
94
|
+
|
|
95
|
+
> Update report: Mark check 3 as `✅`.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 4. Migration check
|
|
100
|
+
|
|
101
|
+
Read .agent/skills/{{ORM_SKILL}}/SKILL.md and follow its migration and schema conventions.
|
|
102
|
+
|
|
103
|
+
1. Run the migration status command (e.g., `prisma migrate status`, `drizzle-kit status`, or equivalent)
|
|
104
|
+
2. Verify no pending or failed migrations
|
|
105
|
+
3. Verify migration files exist in the expected directory
|
|
106
|
+
4. Check that rollback scripts or down migrations exist for each migration
|
|
107
|
+
|
|
108
|
+
**If migrations are pending or failed** → **STOP.** Mark check 4 as `❌`.
|
|
109
|
+
|
|
110
|
+
**Pass criteria**: Migration status clean. All migrations successful. Rollback capability exists.
|
|
111
|
+
|
|
112
|
+
> Update report: Mark check 4 as `✅`.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 5. Staging deployment
|
|
117
|
+
|
|
118
|
+
Read .agent/skills/{{HOSTING_SKILL}}/SKILL.md and follow its deployment conventions.
|
|
119
|
+
Read .agent/skills/deployment-procedures/SKILL.md and follow its pre-deployment checklist and verification protocol.
|
|
120
|
+
|
|
121
|
+
1. Deploy to staging using the project's deployment process
|
|
122
|
+
2. Verify deployment succeeded — no rollback triggered, no error logs
|
|
123
|
+
3. Verify the application is accessible at the staging URL
|
|
124
|
+
4. Hit the health check endpoint (e.g., `GET /api/health` or `/healthz`)
|
|
125
|
+
5. Verify it returns HTTP 200 with a valid response body confirming database connectivity
|
|
126
|
+
|
|
127
|
+
**If deployment or health check fails** → **STOP.** Mark check 5 as `❌`.
|
|
128
|
+
|
|
129
|
+
**Pass criteria**: Staging deployment succeeds, application accessible, health endpoint returns 200.
|
|
130
|
+
|
|
131
|
+
> Update report: Mark check 5 as `✅`.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 6. Auth smoke test (conditional)
|
|
136
|
+
|
|
137
|
+
Read the phase plan to determine if the auth slice has been completed.
|
|
138
|
+
|
|
139
|
+
**If auth has NOT been implemented** → Skip this step and mark as ⏭️ in the report.
|
|
140
|
+
|
|
141
|
+
If auth IS implemented:
|
|
142
|
+
1. Obtain a valid auth token using the project's authentication flow
|
|
143
|
+
2. Hit at least one authenticated route with a valid token — verify 200 response
|
|
144
|
+
3. Hit at least one protected route without a token — verify 401 response
|
|
145
|
+
4. Hit at least one protected route with an expired/invalid token — verify 401/403 response
|
|
146
|
+
|
|
147
|
+
**If any auth check fails** → **STOP.** Mark check 6 as `❌`.
|
|
148
|
+
|
|
149
|
+
**Pass criteria**: Authenticated routes accept valid tokens. Protected routes reject missing/invalid tokens.
|
|
150
|
+
|
|
151
|
+
> Update report: Mark check 6 as `✅` or `⏭️ skipped`.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 6.5. Logging gate
|
|
156
|
+
|
|
157
|
+
Read `docs/plans/*-architecture-design.md` section `## Observability Architecture` to load the confirmed logging decisions.
|
|
158
|
+
|
|
159
|
+
1. Verify structured startup log is emitted on application boot with the following 5 required fields:
|
|
160
|
+
- `timestamp` (ISO 8601)
|
|
161
|
+
- `level` (info or higher)
|
|
162
|
+
- `service` (application name)
|
|
163
|
+
- `env` (environment name)
|
|
164
|
+
- Correlation ID field (name as specified in architecture-design.md, e.g., `requestId`, `traceId`)
|
|
165
|
+
2. Verify log reaches configured destination (stdout, file, or cloud service as documented)
|
|
166
|
+
3. Verify PII fields named in `## Observability Architecture` are NOT present in any log output
|
|
167
|
+
|
|
168
|
+
**If startup log is missing any of the 5 required fields** → **STOP.** Mark check 6.5 as `❌`.
|
|
169
|
+
**If log does not reach configured destination** → **STOP.** Mark check 6.5 as `❌`.
|
|
170
|
+
**If PII fields appear in log output** → **STOP.** Mark check 6.5 as `❌`.
|
|
171
|
+
|
|
172
|
+
**Pass criteria**: Structured startup log emitted with all 5 fields. Log reaches destination. No PII fields in output.
|
|
173
|
+
|
|
174
|
+
> Update report: Mark check 6.5 as `✅`.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 6.6. Error tracking gate
|
|
179
|
+
|
|
180
|
+
1. Confirm error tracking SDK is initialized (Sentry, Datadog, or equivalent as documented in `## Observability Architecture`)
|
|
181
|
+
2. Send a test error event from the application and verify it appears in the error tracking dashboard
|
|
182
|
+
3. Verify PII scrubbing is active — test error event must NOT contain any PII field values named in the architecture document
|
|
183
|
+
|
|
184
|
+
**If SDK is not initialized** → **STOP.** Mark check 6.6 as `❌`.
|
|
185
|
+
**If test error event does not appear in dashboard** → **STOP.** Mark check 6.6 as `❌`.
|
|
186
|
+
**If PII fields appear in error event** → **STOP.** Mark check 6.6 as `❌`.
|
|
187
|
+
|
|
188
|
+
**Pass criteria**: Error tracking SDK initialized. Test event received. PII scrubbing active.
|
|
189
|
+
|
|
190
|
+
> Update report: Mark check 6.6 as `✅`.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 7-8. Finalize report
|
|
195
|
+
|
|
196
|
+
Finalize the report using the **Final Report** template from `.agent/skills/prd-templates/references/infrastructure-report-template.md`. Update the Verdict field to `✅ PASS` or `❌ FAIL` and fill in Failures and Next Steps sections.
|
|
197
|
+
|
|
198
|
+
The final report must include all eight gate checks: 0 (placeholder audit), 1 (CI/CD config), 2 (CI/CD green), 3 (environment audit), 4 (migration check), 5 (staging deployment), 6 (auth smoke test), 6.5 (logging gate), 6.6 (error tracking gate).
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 9. Present results
|
|
203
|
+
|
|
204
|
+
Use `notify_user` to present the verification verdict:
|
|
205
|
+
|
|
206
|
+
- **GREEN (all checks pass)**: "✅ Infrastructure verification passed. Next: proceed to the next feature slice with `/implement-slice`."
|
|
207
|
+
- **RED (any check fails)**: "❌ Infrastructure verification failed. [list failures]. Fix and re-run `/verify-infrastructure`."
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Iterative deepening passes, spec writing, index updates, and ambiguity gate for the write-architecture-spec workflow
|
|
3
|
+
parent: write-architecture-spec
|
|
4
|
+
shard: deepen
|
|
5
|
+
standalone: true
|
|
6
|
+
position: 2
|
|
7
|
+
pipeline:
|
|
8
|
+
position: 4.2
|
|
9
|
+
stage: specification
|
|
10
|
+
predecessors: [write-architecture-spec-design]
|
|
11
|
+
successors: [write-be-spec, write-fe-spec]
|
|
12
|
+
skills: [technical-writer, resolve-ambiguity]
|
|
13
|
+
calls-bootstrap: true
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
// turbo-all
|
|
17
|
+
|
|
18
|
+
# Write Architecture Spec — Deepen & Finalize
|
|
19
|
+
|
|
20
|
+
Run iterative deepening passes, write the completed spec, update indexes, run the ambiguity gate, and present for review.
|
|
21
|
+
|
|
22
|
+
**Prerequisite**: Read the shard file at `docs/plans/ia/[shard-name].md`. Sections should be filled in from the design shard (not skeleton placeholders). If sections are still skeleton placeholders, the design shard has not completed — run `/write-architecture-spec-design` first before running this shard.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 8. Iterative deepening passes
|
|
27
|
+
|
|
28
|
+
Read .agent/skills/resolve-ambiguity/SKILL.md for the adversarial and "what if" passes.
|
|
29
|
+
Read .agent/skills/code-review-pro/SKILL.md and follow its adversarial review methodology.
|
|
30
|
+
|
|
31
|
+
> **Why multiple passes**: Each pass reveals edge cases that are only visible in
|
|
32
|
+
> the context of the complete draft. The first pass catches obvious gaps. The second
|
|
33
|
+
> catches interactions between sections that create new edge cases. The third catches
|
|
34
|
+
> the subtle "what if" scenarios that only emerge after you've been staring at the
|
|
35
|
+
> full picture. Every pass makes the subsequent pass more productive.
|
|
36
|
+
|
|
37
|
+
### Pass 1: Cross-section consistency
|
|
38
|
+
|
|
39
|
+
Re-read the complete draft (interactions + contracts + data model + access control + edge cases together) and look for:
|
|
40
|
+
- Interactions that reference data fields not in the schema
|
|
41
|
+
- Access rules that don't cover all interaction types
|
|
42
|
+
- Edge cases that imply missing error codes in contracts
|
|
43
|
+
- Event schemas that carry fields not in the data model
|
|
44
|
+
|
|
45
|
+
Fix every inconsistency found. Present findings to the user.
|
|
46
|
+
|
|
47
|
+
### Pass 2: "What if" scenarios
|
|
48
|
+
|
|
49
|
+
For each interaction, ask:
|
|
50
|
+
- What if the user does this twice?
|
|
51
|
+
- What if the user does this and then immediately does that?
|
|
52
|
+
- What if the input is technically valid but semantically nonsensical?
|
|
53
|
+
- What if the dependent service is slow/down/returns unexpected data?
|
|
54
|
+
- What if the user's role changes mid-operation?
|
|
55
|
+
|
|
56
|
+
Add any new edge cases, error codes, or access rules discovered. Present findings to the user.
|
|
57
|
+
|
|
58
|
+
### Pass 3: Adversarial thinking
|
|
59
|
+
|
|
60
|
+
Put on the attacker hat:
|
|
61
|
+
|
|
62
|
+
Read .agent/skills/code-review-pro/SKILL.md and follow its adversarial review methodology for this pass.
|
|
63
|
+
|
|
64
|
+
- How could someone abuse this feature? (Rate limiting, data scraping, privilege escalation)
|
|
65
|
+
- How could someone bypass the access control? (Direct API calls, parameter tampering, timing attacks)
|
|
66
|
+
- How could someone use this to access another user's data?
|
|
67
|
+
- How could a junior account bypass age restrictions through this domain?
|
|
68
|
+
|
|
69
|
+
Add any new security edge cases or access rules. Present findings to the user.
|
|
70
|
+
|
|
71
|
+
### Additional passes
|
|
72
|
+
|
|
73
|
+
If any pass produces significant new content, do another pass — the new content
|
|
74
|
+
may reveal further edge cases. Stop when a pass produces no meaningful additions.
|
|
75
|
+
|
|
76
|
+
## 9. Write the spec to `docs/plans/ia/[shard-name].md`
|
|
77
|
+
|
|
78
|
+
Read .agent/skills/technical-writer/SKILL.md for the spec writing step.
|
|
79
|
+
|
|
80
|
+
Replace the skeleton sections in `docs/plans/ia/[shard-name].md` with the full content from all passes. Ensure all cross-shard dependencies are bidirectional.
|
|
81
|
+
|
|
82
|
+
## 10. Update IA index
|
|
83
|
+
|
|
84
|
+
Change the shard's status from 🔲 to ✅ in `docs/plans/ia/index.md`.
|
|
85
|
+
|
|
86
|
+
## 11. Update spec pipeline
|
|
87
|
+
|
|
88
|
+
Read `.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md` and follow the **Spec Pipeline Update Protocol**
|
|
89
|
+
to mark this shard's IA column as complete in `.agent/progress/spec-pipeline.md`.
|
|
90
|
+
|
|
91
|
+
## 11.5. Bootstrap Tech Stack Skills (if applicable)
|
|
92
|
+
|
|
93
|
+
If the shard you just completed is `00-architecture-design.md` (which definitively chooses the project's tech stack):
|
|
94
|
+
Read `.agent/workflows/bootstrap-agents.md` and execute its utility instructions immediately to fill placeholders and provision skills based on the finalized tech stack.
|
|
95
|
+
|
|
96
|
+
## 12. Ambiguity gate
|
|
97
|
+
|
|
98
|
+
Read `.agent/skills/session-continuity/protocols/ambiguity-gates.md` and run the **Ambiguity Gates**:
|
|
99
|
+
|
|
100
|
+
- **Micro**: Walk each feature, interaction, data model field, access rule, and edge case.
|
|
101
|
+
Would an implementer need to guess about any of them? If yes — fix it now.
|
|
102
|
+
- **Macro**: Would the BE spec writer need to guess anything from this IA shard?
|
|
103
|
+
If yes — fix it now. The shard is not done until the downstream phase can work
|
|
104
|
+
from it without assumptions.
|
|
105
|
+
|
|
106
|
+
**Two-implementer test**: For each element that passes the micro check, apply the two-implementer test: *"Would two different developers, reading only this IA shard with no other context, make the same implementation decision?"* If the answer is "probably not" — fix it now.
|
|
107
|
+
|
|
108
|
+
**Devil's advocate pass**: After the gates pass, run a devil's advocate pass: for each feature, interaction, data model field, and access rule, ask "What would a junior developer get wrong about this?" Any element that reveals a gap gets fixed before presenting.
|
|
109
|
+
|
|
110
|
+
## 13. Full ambiguity audit (mandatory when this is the last IA shard)
|
|
111
|
+
|
|
112
|
+
1. Read `docs/plans/ia/index.md`
|
|
113
|
+
2. Check if all shards show ✅
|
|
114
|
+
|
|
115
|
+
**More shards remain**: Proceed to the next shard. Do not propose `/write-be-spec` yet — the IA layer is not complete.
|
|
116
|
+
|
|
117
|
+
**This is the last shard** (all shards show ✅): Run `/audit-ambiguity ia` now. This is **not optional** — it is a mandatory gate before any BE spec work begins.
|
|
118
|
+
|
|
119
|
+
> **Why**: Catching ambiguity across the full IA layer costs minutes. Discovering it during BE spec writing — or worse, during implementation — costs days of rework across multiple specs and slices.
|
|
120
|
+
|
|
121
|
+
**Hard gate**: Do NOT propose `/write-be-spec` until `/audit-ambiguity ia` scores 0% ambiguity.
|
|
122
|
+
|
|
123
|
+
## 14. Request review and propose next steps
|
|
124
|
+
|
|
125
|
+
You may only notify the user of completion if you have completed the Cross-Reference check, the Dependency Graph validation, and the Ambiguity gate.
|
|
126
|
+
|
|
127
|
+
Use `notify_user` to present the completed IA shard for review. Your message MUST include:
|
|
128
|
+
1. **The shard created** (link to the file)
|
|
129
|
+
2. **Cross-reference verification** (confirmation that links are bidirectional)
|
|
130
|
+
3. **Ambiguity Gate confirmation** (confirmation that no implementer would need to guess)
|
|
131
|
+
4. **The Pipeline State** (propose the next task from the options below)
|
|
132
|
+
|
|
133
|
+
Do NOT proceed to the next step until the user sends a message explicitly approving this output. Proposing next steps is not the same as receiving approval. Wait for explicit approval before continuing.
|
|
134
|
+
|
|
135
|
+
Read `.agent/progress/spec-pipeline.md` to determine the pipeline state, then propose the appropriate next step:
|
|
136
|
+
|
|
137
|
+
- **More skeleton shards remain** → "Next: Run `/write-architecture-spec` for shard [next-shard-number]"
|
|
138
|
+
- **All IA shards complete** → "All IA shards complete and /audit-ambiguity ia has already run (mandatory Step 13 above). If it scored 0%, proceed to /write-be-spec. If it found gaps, resolve them and re-run /audit-ambiguity ia as a fresh invocation before proceeding."
|
|
139
|
+
- **Self-audit found unresolvable issues** → Present the issues for discussion before proposing next step
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Explore requirements, map interactions, and design contracts/data models/access control for the write-architecture-spec workflow
|
|
3
|
+
parent: write-architecture-spec
|
|
4
|
+
shard: design
|
|
5
|
+
standalone: true
|
|
6
|
+
position: 1
|
|
7
|
+
pipeline:
|
|
8
|
+
position: 4.1
|
|
9
|
+
stage: specification
|
|
10
|
+
predecessors: [decompose-architecture]
|
|
11
|
+
successors: [write-architecture-spec-deepen]
|
|
12
|
+
skills: [brainstorming, resolve-ambiguity, database-schema-design]
|
|
13
|
+
calls-bootstrap: false
|
|
14
|
+
requires_placeholders: [DATABASE_SKILLS, SECURITY_SKILLS]
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
// turbo-all
|
|
18
|
+
|
|
19
|
+
# Write Architecture Spec — Design
|
|
20
|
+
|
|
21
|
+
Explore requirements, map all interactions, and define contracts, data models, access control, event schemas, and edge cases.
|
|
22
|
+
|
|
23
|
+
**Prerequisite**: Skeleton IA shard must exist in `docs/plans/ia/`. If it does not, tell the user to run `/decompose-architecture` first.
|
|
24
|
+
|
|
25
|
+
## 0. Placeholder guard
|
|
26
|
+
|
|
27
|
+
Before any skill reads, verify that the following placeholder values have been filled by `/bootstrap-agents`. For each placeholder, check whether the literal characters `{{` still appear in the value. If **any** are unfilled, emit a **HARD STOP** and do not proceed to Step 0.5.
|
|
28
|
+
|
|
29
|
+
| Placeholder | Filled by | Recovery | Why this matters |
|
|
30
|
+
|---|---|---|---|
|
|
31
|
+
| `{{DATABASE_SKILLS}}` | `/create-prd-stack` when database technology is confirmed | If `docs/plans/*-architecture-design.md` exists, read it and extract the confirmed database, then run `/bootstrap-agents DATABASE=<confirmed-db>`. Otherwise run `/create-prd-stack` first. | Data model design (Step 4) would produce schema patterns incompatible with the chosen database. |
|
|
32
|
+
| `{{SECURITY_SKILLS}}` | `/create-prd-stack` when security tooling is confirmed | If `docs/plans/*-architecture-design.md` exists, read it and extract the confirmed security framework, then run `/bootstrap-agents SECURITY=<confirmed-framework>`. Otherwise run `/create-prd-stack` first. | Edge case and attack surface analysis (Step 7) would run without the project's security skill, missing stack-specific threat vectors. |
|
|
33
|
+
|
|
34
|
+
For the hard stop message format and recovery instructions, see `.agent/skills/prd-templates/references/placeholder-guard-template.md`.
|
|
35
|
+
|
|
36
|
+
Only proceed to Step 0.5 when both placeholders report no literal `{{` characters.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 0.5. Re-run check
|
|
41
|
+
|
|
42
|
+
Before loading skills, check whether the shard file at `docs/plans/ia/[shard-name].md` already has content beyond skeleton placeholders (look for filled-in sections vs empty `<!-- TODO -->` markers).
|
|
43
|
+
|
|
44
|
+
- **If sections are already filled**: Present the current state of the file and ask: "Some sections are already written. Do you want to **continue from where you left off** (skip filled sections), or **redo specific sections** (tell me which ones)?" Wait for the user's answer before proceeding.
|
|
45
|
+
- **If the file is still a skeleton**: Proceed normally.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 1. Explore requirements
|
|
50
|
+
|
|
51
|
+
### 1a. Read the authoritative sources
|
|
52
|
+
|
|
53
|
+
Read the following files and build a **reconciliation table** comparing what each source says about this shard's features. `docs/plans/ideation.md` is the **primary source of truth** for sub-features — the architecture design is secondary context.
|
|
54
|
+
|
|
55
|
+
1. `docs/plans/ideation.md` — the primary sub-feature inventory (locate the section for this shard's domain)
|
|
56
|
+
2. The shard's `## Features` section (seeded during `/decompose-architecture-structure`)
|
|
57
|
+
3. `docs/plans/vision.md` — Must Have features relevant to this domain
|
|
58
|
+
|
|
59
|
+
Read .agent/skills/architecture-mapping/SKILL.md and follow its Sub-Feature Reconciliation Protocol. Build the reconciliation table comparing ideation.md against the shard skeleton and apply mismatch handling rules before proceeding to Step 1b.
|
|
60
|
+
|
|
61
|
+
### 1b. Scope confirmation
|
|
62
|
+
|
|
63
|
+
Present the reconciled `## Features` list to the user, including a count of newly added sub-features:
|
|
64
|
+
|
|
65
|
+
> **Reconciled features for [Shard NN — Domain Name]:**
|
|
66
|
+
>
|
|
67
|
+
> [bullet list of all sub-features, with `[Architecture-only]` markers where applicable]
|
|
68
|
+
>
|
|
69
|
+
> **[N] sub-features added from ideation.md** that were missing from the shard skeleton.
|
|
70
|
+
> **[M] sub-features marked `[Architecture-only]`** — not found in ideation.md, added during decomposition.
|
|
71
|
+
>
|
|
72
|
+
> "Does this feature list match your intent for this domain? Any sub-features to add, remove, or re-scope?"
|
|
73
|
+
|
|
74
|
+
**Wait for explicit user confirmation before proceeding.** If the user modifies the list, update the shard's `## Features` section in `docs/plans/ia/[shard-name].md` immediately.
|
|
75
|
+
|
|
76
|
+
**Post-reconciliation calibration check**: Count the total confirmed sub-features. If the count is **≥ 10**, follow the **Sub-Feature Complexity Split Protocol** in `.agent/skills/architecture-mapping/SKILL.md` — present the split proposal, wait for approval, and redirect to `/decompose-architecture-validate` before continuing. Do NOT proceed to Step 2 with an oversized shard.
|
|
77
|
+
|
|
78
|
+
If the sub-feature count is **< 10**, proceed directly to Step 1c.
|
|
79
|
+
|
|
80
|
+
### 1c. Load brainstorming skill
|
|
81
|
+
|
|
82
|
+
Read `.agent/skills/brainstorming/SKILL.md` and use it to explore any remaining ambiguous sub-features — those marked `[Architecture-only]` that the user hasn't explicitly confirmed, or any sub-feature whose scope boundary (what's in, what's out) is still unclear after 1b.
|
|
83
|
+
|
|
84
|
+
> **Authoring pattern for Steps 2–7**: After designing each section, (1) present it to the user with the targeted review questions listed below, (2) refine based on their feedback, (3) write the completed section to `docs/plans/ia/[shard-name].md` immediately — do not batch writes until Step 8.
|
|
85
|
+
|
|
86
|
+
## 2. Map all interactions
|
|
87
|
+
|
|
88
|
+
For each feature in the shard, document:
|
|
89
|
+
- User action → API call → data mutation → response
|
|
90
|
+
- Which surfaces are involved (public, dashboard, admin, API)
|
|
91
|
+
- What events are emitted
|
|
92
|
+
- Error states and edge cases
|
|
93
|
+
|
|
94
|
+
**Review questions**: "Does this capture all the ways a user touches this domain?" / "Are there admin/system-initiated actions I'm missing?" / "What happens in each failure case?"
|
|
95
|
+
|
|
96
|
+
## 3. Define contracts
|
|
97
|
+
|
|
98
|
+
Read .agent/skills/rest-api-design/SKILL.md and follow its methodology.
|
|
99
|
+
|
|
100
|
+
For each interaction, define the contract shape:
|
|
101
|
+
- Request shape (params, query, body)
|
|
102
|
+
- Response shape (all fields typed)
|
|
103
|
+
- Error shape (specific error codes)
|
|
104
|
+
- Note: actual Zod schemas written in BE spec phase
|
|
105
|
+
|
|
106
|
+
**Review questions**: "Are there fields I'm missing from these requests/responses?" / "Are these error codes specific enough?"
|
|
107
|
+
|
|
108
|
+
## 4. Design data models
|
|
109
|
+
|
|
110
|
+
Read each skill listed in `{{DATABASE_SKILLS}}` (comma-separated). For each skill directory name, read `.agent/skills/[skill]/SKILL.md` before proceeding. Also load these community skills for guidance:
|
|
111
|
+
- `.agent/skills/database-schema-design/SKILL.md` — Schema design principles
|
|
112
|
+
- `.agent/skills/error-handling-patterns/SKILL.md` — Error categories for contracts
|
|
113
|
+
- `.agent/skills/technical-writer/SKILL.md` — Specification clarity
|
|
114
|
+
- Tables/collections, fields, types
|
|
115
|
+
- Relationships (graph edges, foreign keys, etc.)
|
|
116
|
+
- Indexes for query patterns
|
|
117
|
+
- Constraints and validation rules
|
|
118
|
+
|
|
119
|
+
**Review questions**: "Does this schema capture everything this domain needs to store?" / "Are the relationships and cardinalities correct?" / "Are there derived/computed fields I should account for?"
|
|
120
|
+
|
|
121
|
+
**Missing skill fallback**: If any database or security skill listed above is not installed and not in the MANIFEST, read `.agent/skills/find-skills/SKILL.md` and follow its discovery methodology before proceeding.
|
|
122
|
+
|
|
123
|
+
## 5. Design access control
|
|
124
|
+
|
|
125
|
+
Read .agent/skills/security-scanning-security-hardening/SKILL.md and apply its access control and authorization design methodology.
|
|
126
|
+
|
|
127
|
+
- Permission matrix (who can read/write/delete what)
|
|
128
|
+
- Role-based restrictions
|
|
129
|
+
- Age restrictions (if applicable)
|
|
130
|
+
- Escalation paths (Guardian, Admin)
|
|
131
|
+
- Admin-only operations
|
|
132
|
+
|
|
133
|
+
**Review questions**: "Can you think of a scenario where a user should be blocked that this matrix allows?" / "Can you think of a scenario where a user should be allowed that this matrix blocks?"
|
|
134
|
+
|
|
135
|
+
## 5.5. Accessibility specifications
|
|
136
|
+
|
|
137
|
+
Read `{{SURFACES}}` to determine the project's target surfaces.
|
|
138
|
+
|
|
139
|
+
**If surfaces include `web`, `mobile`, or `desktop`:**
|
|
140
|
+
|
|
141
|
+
Read `.agent/skills/accessibility/SKILL.md` and apply its WCAG 2.1 AA methodology.
|
|
142
|
+
|
|
143
|
+
For each user interaction documented in Step 2 (`## User Interactions`), identify and document:
|
|
144
|
+
- **Keyboard navigation path** — tab order and focus management for this interaction
|
|
145
|
+
- **Screen reader semantics** — ARIA roles, labels, and live regions required
|
|
146
|
+
- **Color contrast** — requirements for any new visual states (loading, error, empty, disabled)
|
|
147
|
+
- **Motion/animation** — `prefers-reduced-motion` implications for any transitions or animations
|
|
148
|
+
- **Touch target sizes** — minimum 44×44 px (mobile surfaces only)
|
|
149
|
+
|
|
150
|
+
**Review questions**: "Are there any interactions in this domain that could be problematic for keyboard-only users?" / "Are there any visual states (loading, error, empty, disabled) that need specific ARIA announcements?" / For mobile: "Do any touch targets fall below 44×44px minimum?"
|
|
151
|
+
|
|
152
|
+
**If surfaces are `api`, `cli`, or `extension` only:** Write `"Not applicable — no visual surfaces"` in the `## Accessibility` section.
|
|
153
|
+
|
|
154
|
+
## 6. Design event schemas (if applicable)
|
|
155
|
+
|
|
156
|
+
- Event name, payload shape, emitter, consumers
|
|
157
|
+
- Async vs sync processing
|
|
158
|
+
- Retry semantics
|
|
159
|
+
|
|
160
|
+
## 7. Document edge cases
|
|
161
|
+
|
|
162
|
+
Read .agent/skills/resolve-ambiguity/SKILL.md and follow its methodology.
|
|
163
|
+
|
|
164
|
+
Read each skill listed in `{{SECURITY_SKILLS}}` (comma-separated). For each skill directory name, read `.agent/skills/[skill]/SKILL.md` before proceeding.
|
|
165
|
+
For each skill in {{SECURITY_SKILLS}}, follow its attack surface methodology for edge case identification.
|
|
166
|
+
|
|
167
|
+
- Rate limits and abuse scenarios
|
|
168
|
+
- Concurrent access handling
|
|
169
|
+
- Deletion cascades
|
|
170
|
+
- State transition conflicts
|
|
171
|
+
- Empty/null states
|
|
172
|
+
|
|
173
|
+
**Review questions**: "What's the worst thing a malicious user could try in this domain?" / "What happens if two users do the same thing at the same time?" / "What happens when related data is deleted?"
|
|
174
|
+
|
|
175
|
+
## 7.5. Write deep dive files (if applicable)
|
|
176
|
+
|
|
177
|
+
Check whether the current shard references any deep dive candidates. To do this:
|
|
178
|
+
1. Read the shard file at `docs/plans/ia/[shard-name].md` and look for any links to `docs/plans/ia/deep-dives/` files in the "Deep Dives Needed" section or anywhere in the document.
|
|
179
|
+
2. List the files in `docs/plans/ia/deep-dives/` and identify which ones are referenced by this shard.
|
|
180
|
+
|
|
181
|
+
**If no deep dives are referenced**: Skip this step entirely.
|
|
182
|
+
|
|
183
|
+
**If deep dives are referenced**: For each referenced deep dive file:
|
|
184
|
+
|
|
185
|
+
1. Read the current content of `docs/plans/ia/deep-dives/[feature-name].md` to check if it is still a skeleton (empty or contains only placeholder comments).
|
|
186
|
+
2. **If already has full content**: Skip — do not overwrite.
|
|
187
|
+
3. **If still a skeleton**: Write exhaustive subsystem detail — algorithms/state machines, technology choices with rationale, phasing strategy, detailed data schemas, failure modes and recovery, integration contracts, performance characteristics, and security considerations.
|
|
188
|
+
|
|
189
|
+
The parent shard's "Deep Dives Needed" section should already contain a summary + link. Do not duplicate the full content in the parent shard — the deep dive file IS the content.
|
|
190
|
+
|
|
191
|
+
> **Write now**: Write the completed deep dive content to `docs/plans/ia/deep-dives/[feature-name].md`. Do not wait until Step 8.
|
|
192
|
+
|
|
193
|
+
## 8. Present all sections and request approval
|
|
194
|
+
|
|
195
|
+
All sections are now written to `docs/plans/ia/[shard-name].md`. Please review the file directly and confirm it's ready for deepening passes.
|
|
196
|
+
|
|
197
|
+
> **Do NOT proceed to `/write-architecture-spec-deepen` until the user approves all sections. Proposing next steps is not the same as receiving approval.**
|
|
198
|
+
|
|
199
|
+
Once approved, run `/write-architecture-spec-deepen`.
|
|
200
|
+
|
|
201
|
+
> **Note**: The deepen shard will run iterative passes over the approved content — the user does not need to re-approve individual sections during deepening.
|
|
202
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create or update Layer 1 architecture spec — interactions, contracts, data models, RBAC, event schemas
|
|
3
|
+
pipeline:
|
|
4
|
+
position: 4
|
|
5
|
+
stage: specification
|
|
6
|
+
predecessors: [decompose-architecture]
|
|
7
|
+
successors: [write-be-spec, write-fe-spec] # parallel fork
|
|
8
|
+
skills: [resolve-ambiguity, database-schema-design, error-handling-patterns, technical-writer]
|
|
9
|
+
calls-bootstrap: true # may introduce new contracts/patterns
|
|
10
|
+
shards: [write-architecture-spec-design, write-architecture-spec-deepen]
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
// turbo-all
|
|
14
|
+
|
|
15
|
+
# Write Architecture Spec (IA Shard)
|
|
16
|
+
|
|
17
|
+
Fill in a skeleton IA shard with full interaction details, data models, access control, and edge cases.
|
|
18
|
+
|
|
19
|
+
**Input**: A skeleton IA shard from `/decompose-architecture`
|
|
20
|
+
**Output**: Complete IA shard ready for BE spec writing
|
|
21
|
+
|
|
22
|
+
> **Process model**: This workflow is collaborative and iterative. Each section
|
|
23
|
+
> is drafted, presented to the user for discussion, and refined before moving on.
|
|
24
|
+
> After all sections are drafted, multiple deepening passes catch edge cases that
|
|
25
|
+
> only become visible in the context of the complete picture. The shard is not done
|
|
26
|
+
> until both the agent and the user agree it's deep enough for a developer to
|
|
27
|
+
> implement without asking a single clarifying question.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Shard Overview
|
|
32
|
+
|
|
33
|
+
| # | Shard | What It Does |
|
|
34
|
+
|---|-------|-------------|
|
|
35
|
+
| 1 | [`write-architecture-spec-design`](.agent/workflows/write-architecture-spec-design.md) | Explores requirements, maps interactions, defines contracts, data models, access control, events, and edge cases |
|
|
36
|
+
| 2 | [`write-architecture-spec-deepen`](.agent/workflows/write-architecture-spec-deepen.md) | Runs iterative deepening passes, writes the spec, updates indexes, runs ambiguity gate, presents for review |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Orchestration
|
|
41
|
+
|
|
42
|
+
### Step A — Run `.agent/workflows/write-architecture-spec-design.md`
|
|
43
|
+
|
|
44
|
+
Uses the brainstorming skill to clarify scope, then systematically designs all sections: interaction maps, contract shapes, data models, access control, event schemas, and edge cases. Each section is presented to the user for discussion and refinement.
|
|
45
|
+
|
|
46
|
+
### Step B — Run `.agent/workflows/write-architecture-spec-deepen.md`
|
|
47
|
+
|
|
48
|
+
Runs multiple deepening passes (cross-section consistency, "what if" scenarios, adversarial thinking), writes the completed spec to the IA directory, updates the IA index, runs the ambiguity gate, and presents for review.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Quality Gate
|
|
53
|
+
|
|
54
|
+
Before presenting to the user, verify:
|
|
55
|
+
|
|
56
|
+
Read .agent/skills/code-review-pro/SKILL.md and apply its adversarial review discipline.
|
|
57
|
+
|
|
58
|
+
- [ ] Every interaction has a complete flow (action → call → mutation → response)
|
|
59
|
+
- [ ] Every contract has typed request, response, and error shapes
|
|
60
|
+
- [ ] Data model has all fields, relationships, indexes, and constraints
|
|
61
|
+
- [ ] Access control covers all roles and all interaction types
|
|
62
|
+
- [ ] Edge cases cover concurrent access, deletion cascades, and state conflicts
|
|
63
|
+
- [ ] Cross-shard dependencies are bidirectional
|