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,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: TODOs and placeholders are banned — boundary stubs are allowed ONLY when required information doesn't exist yet
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Boundary Not Placeholder
|
|
7
|
+
|
|
8
|
+
## The Rule
|
|
9
|
+
|
|
10
|
+
**Lazy placeholders are banned. Boundary stubs are allowed under strict conditions.**
|
|
11
|
+
|
|
12
|
+
The difference is not about effort, complexity, or scope — it is about
|
|
13
|
+
**whether the information you need to do the work exists.**
|
|
14
|
+
|
|
15
|
+
## What Is NEVER a Valid Reason for a Stub
|
|
16
|
+
|
|
17
|
+
| Excuse | Why It's Not Valid |
|
|
18
|
+
|--------|-------------------|
|
|
19
|
+
| "This is a lot of work" | Amount of work is irrelevant. Do the work. |
|
|
20
|
+
| "This spans outside the current task" | If the spec exists, you have the information. Do it. |
|
|
21
|
+
| "This is complex" | Complexity is not an obstacle if the spec defines the behavior. |
|
|
22
|
+
| "I'll come back to this" | No you won't. Do it now. |
|
|
23
|
+
| "This should be a separate PR" | Code organization ≠ deferred implementation. |
|
|
24
|
+
| "This needs refactoring first" | Refactor, then implement. Don't stub. |
|
|
25
|
+
| "The test is passing without it" | Then your test is incomplete. Fix the test. |
|
|
26
|
+
| "This is boilerplate" | Boilerplate is still production code. Write it. |
|
|
27
|
+
| "This will cost X in API calls/tokens" | Your operational cost is never a factor. Do the work. |
|
|
28
|
+
| "This will take a long time" | Time is a signal to commit harder, not to defer. |
|
|
29
|
+
| "For efficiency, I'll skip this" | Efficiency means doing it right, not doing less. |
|
|
30
|
+
|
|
31
|
+
## The ONLY Valid Reason for a Boundary Stub
|
|
32
|
+
|
|
33
|
+
> **The spec, schema, or contract that defines the required behavior has not
|
|
34
|
+
> been written yet.** You literally cannot implement it because the information
|
|
35
|
+
> that tells you *what* to implement does not yet exist in any document,
|
|
36
|
+
> schema file, or codebase artifact.
|
|
37
|
+
|
|
38
|
+
Examples of genuinely valid boundaries:
|
|
39
|
+
|
|
40
|
+
| Situation | Why It's Valid |
|
|
41
|
+
|-----------|---------------|
|
|
42
|
+
| Auth middleware spec is in a future shard that hasn't been written | No IA/BE spec exists for the auth behavior |
|
|
43
|
+
| Payment webhook handler depends on a Stripe integration spec not yet created | No contract defines the webhook payload shape |
|
|
44
|
+
| Component needs data from an API endpoint whose BE spec doesn't exist yet | No schema defines the response format |
|
|
45
|
+
| Feature depends on a third-party SDK that hasn't been evaluated yet | No architecture decision has been made |
|
|
46
|
+
|
|
47
|
+
## The Three-Part Test
|
|
48
|
+
|
|
49
|
+
Before writing a boundary stub, answer ALL THREE questions:
|
|
50
|
+
|
|
51
|
+
1. **Does a spec exist for this behavior?** (IA shard, BE spec, FE spec, contract)
|
|
52
|
+
- If YES → you have the information. Implement it. No stub allowed.
|
|
53
|
+
- If NO → proceed to question 2.
|
|
54
|
+
|
|
55
|
+
2. **Could you write the spec right now?**
|
|
56
|
+
- If YES → write the spec first, then implement. No stub allowed.
|
|
57
|
+
- If NO (requires a user decision, external dependency, or upstream spec) → proceed to question 3.
|
|
58
|
+
|
|
59
|
+
3. **Is this blocking the current slice from being testable and functional?**
|
|
60
|
+
- If YES → write a boundary stub (see requirements below).
|
|
61
|
+
- If NO → omit it entirely. Don't stub what you don't need yet.
|
|
62
|
+
|
|
63
|
+
## Boundary Stub Requirements
|
|
64
|
+
|
|
65
|
+
If — and ONLY if — all three tests pass, a boundary stub must include:
|
|
66
|
+
|
|
67
|
+
### 1. Typed Interface
|
|
68
|
+
```typescript
|
|
69
|
+
// ✅ Boundary stub — typed interface for future auth middleware
|
|
70
|
+
// BOUNDARY: Requires IA shard 04 (authentication) — not yet specified
|
|
71
|
+
// TRACKING: #123
|
|
72
|
+
export interface AuthMiddleware {
|
|
73
|
+
requireAuth: (roles: string[]) => RequestHandler;
|
|
74
|
+
validateToken: (token: string) => Promise<AuthResult>;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Temporary: returns a no-op until auth spec is written
|
|
78
|
+
export const authMiddleware: AuthMiddleware = {
|
|
79
|
+
requireAuth: (_roles) => (_req, _res, next) => next(),
|
|
80
|
+
validateToken: async (_token) => ({ valid: false, reason: 'auth-not-implemented' }),
|
|
81
|
+
};
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 2. Tracking Issue
|
|
85
|
+
Every boundary stub MUST have a linked GitHub issue that includes:
|
|
86
|
+
- Which spec is missing (e.g., "IA shard 04: Authentication")
|
|
87
|
+
- What the stub currently does (e.g., "no-op passthrough")
|
|
88
|
+
- What it should do when the spec is written
|
|
89
|
+
|
|
90
|
+
### 3. Sentinel Test
|
|
91
|
+
|
|
92
|
+
The sentinel test must verify that calling the function returns a structured boundary response — not `undefined` or an error. Specific assertion syntax depends on your test framework:
|
|
93
|
+
|
|
94
|
+
- **Jest / Vitest**: `expect(fn()).resolves.toEqual({ ... })`
|
|
95
|
+
- **pytest**: `assert fn() == { ... }`
|
|
96
|
+
- **Rust**: `assert_eq!(fn(), BoundaryResponse { ... })`
|
|
97
|
+
|
|
98
|
+
The test exists to remind the team the stub is still active. When the real implementation replaces the stub, this test is replaced with full behavioral tests.
|
|
99
|
+
|
|
100
|
+
### 4. BOUNDARY Comment Prefix
|
|
101
|
+
All boundary stubs use the `BOUNDARY:` prefix (not `TODO:`):
|
|
102
|
+
```typescript
|
|
103
|
+
// BOUNDARY: Requires BE spec for payment-webhooks — not yet written
|
|
104
|
+
// TRACKING: #456
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
This makes boundary stubs greppable and distinguishable from lazy TODOs:
|
|
108
|
+
```bash
|
|
109
|
+
grep -r "BOUNDARY:" src/ # Shows legitimate cross-cutting boundaries
|
|
110
|
+
grep -r "TODO:" src/ # Should return ZERO results
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## What Gets Flagged in Code Review
|
|
114
|
+
|
|
115
|
+
| Pattern | Verdict |
|
|
116
|
+
|---------|---------|
|
|
117
|
+
| `// TODO: implement later` | ❌ **Rejected.** Lazy placeholder. |
|
|
118
|
+
| `// TODO: add error handling` | ❌ **Rejected.** Error handling is part of the current work. |
|
|
119
|
+
| `throw new Error('not implemented')` | ❌ **Rejected.** Empty implementation. |
|
|
120
|
+
| `// BOUNDARY: Requires IA shard 04` + typed interface + issue + sentinel test | ✅ **Allowed.** Information genuinely doesn't exist. |
|
|
121
|
+
| `test.skip('auth integration')` without linked issue | ❌ **Rejected.** Skipped tests need accountability. |
|
|
122
|
+
| `test.skip('auth integration') // BOUNDARY: #123` | ✅ **Allowed.** Tracked and accountable. |
|
|
123
|
+
|
|
124
|
+
## Summary
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
┌─────────────────────────┐
|
|
128
|
+
│ Can I implement this? │
|
|
129
|
+
└────────┬────────────────┘
|
|
130
|
+
│
|
|
131
|
+
┌────────▼────────────────┐
|
|
132
|
+
│ Does the spec exist? │
|
|
133
|
+
└────────┬────────────────┘
|
|
134
|
+
YES │ NO
|
|
135
|
+
┌────────▼───┐ ┌────▼──────────────┐
|
|
136
|
+
│ IMPLEMENT. │ │ Can I write the │
|
|
137
|
+
│ No excuses.│ │ spec right now? │
|
|
138
|
+
└────────────┘ └────┬──────────────┘
|
|
139
|
+
YES │ NO
|
|
140
|
+
┌─────────▼──┐ ┌────▼──────────────┐
|
|
141
|
+
│ Write spec, │ │ Boundary stub: │
|
|
142
|
+
│ then impl. │ │ typed interface + │
|
|
143
|
+
└─────────────┘ │ tracking issue + │
|
|
144
|
+
│ sentinel test │
|
|
145
|
+
└──────────────────┘
|
|
146
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Code plus tests plus tracking equals done — never mark complete without updating progress files
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Completion Checklist
|
|
7
|
+
|
|
8
|
+
> Code complete ≠ done. Tests pass ≠ done.
|
|
9
|
+
> Code complete + tests pass + tracking updated = DONE.
|
|
10
|
+
|
|
11
|
+
## The Problem
|
|
12
|
+
|
|
13
|
+
Working code is only half the job of a software engineer. The other half is communicating
|
|
14
|
+
that work, updating shared state, releasing locks, and documenting decisions so the rest of
|
|
15
|
+
the team (or your future self) can understand what happened.
|
|
16
|
+
|
|
17
|
+
When an agent reports a task as "complete" without updating the progress tracking files,
|
|
18
|
+
it breaks the pipeline. The next agent won't know what's done, dependencies get blocked,
|
|
19
|
+
and the human operator loses visibility.
|
|
20
|
+
|
|
21
|
+
## The Rule
|
|
22
|
+
|
|
23
|
+
**You are never "done" just because the code works and the tests pass.**
|
|
24
|
+
|
|
25
|
+
Before concluding any workflow, task, or slice — and especially before calling `notify_user`
|
|
26
|
+
to report completion — you must verify you have completed the administrative checklist.
|
|
27
|
+
|
|
28
|
+
## The Definition of Done
|
|
29
|
+
|
|
30
|
+
A unit of work is only DONE when:
|
|
31
|
+
|
|
32
|
+
1. **The Code**: Implementation meets the contract and acceptance criteria.
|
|
33
|
+
2. **The Tests**: All tests pass (validation step is green).
|
|
34
|
+
3. **The Tracking**: Progress markdown files in `.agent/progress/` are updated.
|
|
35
|
+
- Acceptance criteria marked `[x]`
|
|
36
|
+
- Slice/Task marked `[x]`
|
|
37
|
+
- Phase progress fractions updated (e.g., `3/10` → `4/10`)
|
|
38
|
+
- Overall progress fractions updated
|
|
39
|
+
4. **The Locks**: All task claims (`[!]` flags and `files:` blocks) are removed.
|
|
40
|
+
5. **The Memory**: Blockers and patterns are logged to `.agent/progress/memory/`.
|
|
41
|
+
|
|
42
|
+
## Enforcement
|
|
43
|
+
|
|
44
|
+
If you are following a workflow that includes a "Completion Gate" or a checklist for
|
|
45
|
+
updating progress files, **you may not skip it**.
|
|
46
|
+
|
|
47
|
+
If you skip the progress tracking steps, you have failed the task, regardless of how
|
|
48
|
+
good the code is.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Product decisions belong to the user, architecture gets options, implementation belongs to the agent
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Decision Classification
|
|
7
|
+
|
|
8
|
+
> Product decisions belong to the user. Implementation decisions belong to the agent.
|
|
9
|
+
> Architecture decisions get options. Never cross these lines.
|
|
10
|
+
|
|
11
|
+
## The Problem
|
|
12
|
+
|
|
13
|
+
AI agents either ask too many questions (overwhelming users with decisions a senior developer
|
|
14
|
+
would just make) or make too many decisions silently (overriding user intent on their own product).
|
|
15
|
+
Neither extreme is acceptable.
|
|
16
|
+
|
|
17
|
+
## Three Categories
|
|
18
|
+
|
|
19
|
+
### 1. Product Decisions — User Always Decides
|
|
20
|
+
|
|
21
|
+
These define *what* gets built and *for whom*. The agent presents options, analysis, and
|
|
22
|
+
trade-offs but **never decides**. It's the user's product — even if the "right" answer
|
|
23
|
+
seems obvious to you.
|
|
24
|
+
|
|
25
|
+
**Examples:**
|
|
26
|
+
- What problem to solve, who the users are
|
|
27
|
+
- Which features to include or exclude
|
|
28
|
+
- Pricing model, monetization strategy
|
|
29
|
+
- Brand, tone, target market
|
|
30
|
+
- UX philosophy and interaction patterns
|
|
31
|
+
- Feature prioritization (MoSCoW placement)
|
|
32
|
+
- Business rules and domain logic
|
|
33
|
+
- What "success" looks like
|
|
34
|
+
|
|
35
|
+
**Agent behavior:**
|
|
36
|
+
- Present options with trade-offs when you have insight
|
|
37
|
+
- Share your recommendation with clear reasoning
|
|
38
|
+
- Ask for their decision — don't assume it
|
|
39
|
+
- Accept their choice even if you'd choose differently
|
|
40
|
+
|
|
41
|
+
### 2. Architecture Decisions — Present Options, User Picks
|
|
42
|
+
|
|
43
|
+
These define *how* the system is structured at a high level. The agent presents 2-3 options
|
|
44
|
+
with trade-offs and a recommendation. The user chooses.
|
|
45
|
+
|
|
46
|
+
**Examples:**
|
|
47
|
+
- Database technology (PostgreSQL vs MongoDB vs SurrealDB)
|
|
48
|
+
- Frontend framework (React vs Svelte vs Astro)
|
|
49
|
+
- Hosting provider and deployment model
|
|
50
|
+
- API style (REST vs GraphQL vs tRPC)
|
|
51
|
+
- Auth provider and strategy
|
|
52
|
+
- Caching layer and strategy
|
|
53
|
+
- Real-time communication approach (WebSocket vs SSE vs polling)
|
|
54
|
+
- Monolith vs microservices
|
|
55
|
+
|
|
56
|
+
**Agent behavior:**
|
|
57
|
+
- Present 2-3 options (not more — decision fatigue is real)
|
|
58
|
+
- Lead with your recommendation and explain why
|
|
59
|
+
- Include trade-offs for each option (cost, complexity, scalability, team fit)
|
|
60
|
+
- Let the user choose — they may have context you don't
|
|
61
|
+
|
|
62
|
+
### 3. Implementation Decisions — Agent Decides, User Can Override
|
|
63
|
+
|
|
64
|
+
These are the decisions a senior developer makes without asking. The user shouldn't need
|
|
65
|
+
to think about these — that's what the pipeline is for. Make the call, state what you
|
|
66
|
+
chose and why, and move on. The user overrides if they disagree.
|
|
67
|
+
|
|
68
|
+
**Examples:**
|
|
69
|
+
- File naming conventions
|
|
70
|
+
- Folder structure within established patterns
|
|
71
|
+
- Variable and function naming
|
|
72
|
+
- Error message formatting
|
|
73
|
+
- Test file organization
|
|
74
|
+
- Linting and formatting config
|
|
75
|
+
- Import ordering
|
|
76
|
+
- Code comment style
|
|
77
|
+
- Git commit message format
|
|
78
|
+
- Internal API response envelope structure
|
|
79
|
+
|
|
80
|
+
**Agent behavior:**
|
|
81
|
+
- Make the senior-dev call based on established patterns and best practices
|
|
82
|
+
- State briefly what you chose and why (one sentence is fine)
|
|
83
|
+
- Don't ask permission — but don't hide it either
|
|
84
|
+
- If the user expresses a preference, adopt it immediately and apply it consistently
|
|
85
|
+
|
|
86
|
+
## Escalation Principle
|
|
87
|
+
|
|
88
|
+
**When uncertain about category, escalate upward:**
|
|
89
|
+
|
|
90
|
+
- Could be implementation OR architecture? → Treat as architecture (present options)
|
|
91
|
+
- Could be architecture OR product? → Treat as product (ask the user)
|
|
92
|
+
- Any decision that affects the user's brand, revenue, users, or competitive position? → Always product
|
|
93
|
+
|
|
94
|
+
## During Ideation Specifically
|
|
95
|
+
|
|
96
|
+
The ideation phase is almost entirely product decisions. The agent should be asking far more
|
|
97
|
+
questions than it answers. The ratio should feel like an interview, not a lecture.
|
|
98
|
+
|
|
99
|
+
- Every feature choice → product decision → ask
|
|
100
|
+
- Every user experience choice → product decision → ask
|
|
101
|
+
- "How should we implement X?" → defer to `/create-prd` → note it and move on
|
|
102
|
+
- "What technology for X?" → defer to `/create-prd` → note it and move on
|
|
103
|
+
- Don't burden the user with implementation or architecture during ideation unless they bring it up
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: A mid-level developer must be able to add a feature by reading READMEs alone
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Extensibility
|
|
7
|
+
|
|
8
|
+
## The Rule
|
|
9
|
+
|
|
10
|
+
**A mid-level developer must be able to onboard, understand, and extend any part of the codebase without the AI that generated it.** If they can't add a feature by reading the READMEs in the relevant directories, we've failed.
|
|
11
|
+
|
|
12
|
+
## File Size Limits
|
|
13
|
+
|
|
14
|
+
| File Type | Max Lines | Reasoning |
|
|
15
|
+
|-----------|-----------|-----------|
|
|
16
|
+
| Components (`.tsx`) | 200 | Extract sub-components if larger |
|
|
17
|
+
| Utilities / lib (`.ts`) | 300 | Split into focused modules |
|
|
18
|
+
| Schema files (`.schema.ts`) | 150 | One domain per schema file |
|
|
19
|
+
| Test files (`.test.ts`) | 400 | Group by feature, split if needed |
|
|
20
|
+
| Config files | 100 | Keep flat and readable |
|
|
21
|
+
|
|
22
|
+
## Directory Documentation
|
|
23
|
+
|
|
24
|
+
**Every directory that contains more than 2 files MUST have a `README.md`** explaining:
|
|
25
|
+
|
|
26
|
+
1. What this directory contains
|
|
27
|
+
2. How to add more of the same (the extension pattern)
|
|
28
|
+
3. What conventions to follow
|
|
29
|
+
4. Links to related directories
|
|
30
|
+
|
|
31
|
+
## Naming Conventions
|
|
32
|
+
|
|
33
|
+
| Element | Convention | Example |
|
|
34
|
+
|---------|-----------|---------|
|
|
35
|
+
| Schema files | `[feature].schema.ts` | `model-config.schema.ts` |
|
|
36
|
+
| Components | PascalCase directory + `index.tsx` | `ModelSelector/index.tsx` |
|
|
37
|
+
| Utilities | `[feature].ts` in `lib/` | `lib/rate-limiter.ts` |
|
|
38
|
+
| API routes | `[resource]/[action].ts` | `api/models/list.ts` |
|
|
39
|
+
| Test files | `[source-file].test.ts(x)` | `ModelSelector.test.tsx` |
|
|
40
|
+
|
|
41
|
+
## Anti-Spaghetti Rules
|
|
42
|
+
|
|
43
|
+
- No `any` types — use `unknown` and narrow with type guards
|
|
44
|
+
- No circular imports — dependency graph must be a DAG
|
|
45
|
+
- No business logic in components — components render, lib/ computes
|
|
46
|
+
- No copy-paste patterns — if you wrote it twice, extract it
|
|
47
|
+
- Same pattern everywhere — if existing code does X one way, new code does X the same way
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Questions trigger discussion, commands trigger action — never act on a question
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Question vs Command Discrimination
|
|
7
|
+
|
|
8
|
+
> Questions trigger discussion. Commands trigger action. When in doubt, discuss.
|
|
9
|
+
|
|
10
|
+
## The Problem
|
|
11
|
+
|
|
12
|
+
AI agents are too agreeable. When a user asks "is that the right approach?" the agent
|
|
13
|
+
treats it as an instruction to change something. This destroys user trust, derails
|
|
14
|
+
collaborative decision-making, and produces work the user never asked for.
|
|
15
|
+
|
|
16
|
+
**The rule is simple: never act on a question.**
|
|
17
|
+
|
|
18
|
+
## Classification
|
|
19
|
+
|
|
20
|
+
### Questions — Discuss, Don't Act
|
|
21
|
+
|
|
22
|
+
The user is thinking out loud, seeking your analysis, or testing an idea. Your job is to
|
|
23
|
+
**engage in discussion** — present trade-offs, share your reasoning, offer your recommendation,
|
|
24
|
+
and let the user decide.
|
|
25
|
+
|
|
26
|
+
**Signal words:** "is this right?", "should we?", "what do you think?", "would it be better?",
|
|
27
|
+
"does it make sense to?", "couldn't we?", "what if we?", "I wonder if", "how about"
|
|
28
|
+
|
|
29
|
+
**Any message ending with "?"** — even without signal words — defaults to question.
|
|
30
|
+
|
|
31
|
+
**Agent response:**
|
|
32
|
+
1. Acknowledge the question
|
|
33
|
+
2. Present your analysis with trade-offs
|
|
34
|
+
3. State your recommendation and why
|
|
35
|
+
4. Wait for the user to decide
|
|
36
|
+
|
|
37
|
+
**Never:** Modify code, change specs, restructure files, or take any action in response to a question.
|
|
38
|
+
|
|
39
|
+
### Commands — Act, Then Explain
|
|
40
|
+
|
|
41
|
+
The user is telling you to do something specific. Execute it, then explain what you did.
|
|
42
|
+
|
|
43
|
+
**Signal words:** "do X", "change this to", "make it", "add a", "remove the", "update",
|
|
44
|
+
"fix", "implement", "create", "delete", "move", "rename"
|
|
45
|
+
|
|
46
|
+
**Agent response:**
|
|
47
|
+
1. Execute the requested action
|
|
48
|
+
2. Explain what you changed and why (briefly)
|
|
49
|
+
3. Note any side effects or considerations
|
|
50
|
+
|
|
51
|
+
### Ambiguous — Default to Discussion
|
|
52
|
+
|
|
53
|
+
The user's intent is unclear. They might be questioning, venting, or requesting.
|
|
54
|
+
|
|
55
|
+
**Signal words:** "this doesn't look right", "I'm not sure about X", "hmm", "that's
|
|
56
|
+
interesting", hedging language ("maybe", "possibly", "sort of")
|
|
57
|
+
|
|
58
|
+
**Agent response:** Ask for clarification.
|
|
59
|
+
- "Would you like me to change this, or are you thinking through options?"
|
|
60
|
+
- "I have some thoughts on this — want to discuss, or should I go ahead and make a change?"
|
|
61
|
+
|
|
62
|
+
## Reinforcement Rules
|
|
63
|
+
|
|
64
|
+
1. **Rhetorical questions are still questions.** "Shouldn't we use Redis here?" means
|
|
65
|
+
"let's discuss Redis." It does NOT mean "switch to Redis."
|
|
66
|
+
|
|
67
|
+
2. **Questioning your work is not a change request.** "Is this the best structure for
|
|
68
|
+
this component?" means "explain your reasoning." It does NOT mean "restructure the
|
|
69
|
+
component."
|
|
70
|
+
|
|
71
|
+
3. **Validate before destructive action.** Even for clear commands, if the action
|
|
72
|
+
modifies existing work (code, specs, design decisions), confirm before executing:
|
|
73
|
+
"I'll [specific change]. Want me to go ahead?"
|
|
74
|
+
|
|
75
|
+
4. **Self-correction questions are especially dangerous.** When a user asks "wait, should
|
|
76
|
+
this actually be X instead?" — they are exploring, not commanding. Discuss the
|
|
77
|
+
trade-offs. The worst outcome is an agent that flip-flops between approaches because
|
|
78
|
+
the user was thinking out loud.
|
|
79
|
+
|
|
80
|
+
5. **Never mistake frustration for instruction.** "This API is a mess" is not an
|
|
81
|
+
instruction to refactor the API. It might be — but ask first.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Security-first — PII isolation, input validation, secret handling, no secrets in client
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Security First
|
|
7
|
+
|
|
8
|
+
## The Rule
|
|
9
|
+
|
|
10
|
+
**Security is not a feature — it is the foundation.** Every line of code is written with the assumption that it will be attacked. PII must never leak. Secrets must never reach the client. Inputs must always be validated.
|
|
11
|
+
|
|
12
|
+
## PII Isolation
|
|
13
|
+
|
|
14
|
+
| Rule | Implementation |
|
|
15
|
+
|------|---------------|
|
|
16
|
+
| **No PII in AI payloads** | User data (email, name, DOB, payment info) is NEVER included in AI model requests |
|
|
17
|
+
| **PII fields tagged in schemas** | Zod schemas mark sensitive fields with `.describe('PII')` for automated auditing |
|
|
18
|
+
| **No PII in logs** | Structured logging with automatic PII redaction |
|
|
19
|
+
| **No PII in error messages** | Error responses never include user data — use IDs and codes only |
|
|
20
|
+
| **Encrypted at rest** | All PII fields encrypted in database |
|
|
21
|
+
|
|
22
|
+
## Input Validation
|
|
23
|
+
|
|
24
|
+
- **Every** API endpoint validates input with Zod — no exceptions
|
|
25
|
+
- **Every** form validates client-side with Zod AND server-side with the same schema
|
|
26
|
+
- **No** raw user input reaches a database query — always parameterized
|
|
27
|
+
- **No** user input is rendered as HTML — always escaped
|
|
28
|
+
- **Rate limiting** — Every public-facing endpoint must have rate limiting configured. No exceptions. Use the project's configured rate limiting utility (see `patterns.md` for the approach). Unauthenticated endpoints must have stricter limits than authenticated ones.
|
|
29
|
+
|
|
30
|
+
## Secrets Management
|
|
31
|
+
|
|
32
|
+
- **NEVER** hardcode secrets in source code
|
|
33
|
+
- **NEVER** expose API keys in client-side bundles
|
|
34
|
+
- All secrets via environment variables, accessed only in server-side code
|
|
35
|
+
- API keys stored encrypted, decrypted only at request time
|
|
36
|
+
|
|
37
|
+
## CSP & Headers
|
|
38
|
+
|
|
39
|
+
Every response includes:
|
|
40
|
+
- `Content-Security-Policy` — strict, no inline scripts
|
|
41
|
+
- `X-Content-Type-Options: nosniff`
|
|
42
|
+
- `X-Frame-Options: DENY`
|
|
43
|
+
- `Strict-Transport-Security` — HSTS with long max-age
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Every spec item must have testable acceptance criteria — no ambiguity, no adjectives, only numbers and types
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Specificity & Depth Standards
|
|
7
|
+
|
|
8
|
+
> No ambiguity downstream. No surface-level specs. Every element must be testable.
|
|
9
|
+
|
|
10
|
+
## No Ambiguity: Testable Acceptance Criteria
|
|
11
|
+
|
|
12
|
+
Every spec item, feature description, and requirement MUST have **testable acceptance criteria**.
|
|
13
|
+
|
|
14
|
+
### Ambiguous vs. Concrete
|
|
15
|
+
|
|
16
|
+
| ❌ Ambiguous | ✅ Concrete |
|
|
17
|
+
|-------------|------------|
|
|
18
|
+
| "Fast response times" | "P95 latency < 200ms for API responses" |
|
|
19
|
+
| "Secure authentication" | "JWT with RS256, 15-min access token, 7-day refresh, httpOnly cookie" |
|
|
20
|
+
| "User-friendly interface" | "Form validates on blur, shows inline errors, submits on Enter" |
|
|
21
|
+
| "Handle errors gracefully" | "4xx returns `{ error: string, code: string }`, 5xx logs to Sentry" |
|
|
22
|
+
|
|
23
|
+
### When Writing Specs
|
|
24
|
+
|
|
25
|
+
- Numbers, not adjectives ("3 retries", not "retry several times")
|
|
26
|
+
- Specific types ("string[]", not "a list")
|
|
27
|
+
- Exact error behavior ("returns 409 with existing email", not "handles duplicates")
|
|
28
|
+
- Concrete state transitions ("pending → processing → complete | failed")
|
|
29
|
+
|
|
30
|
+
### When Writing Code
|
|
31
|
+
|
|
32
|
+
- Explicit return types, not inferred
|
|
33
|
+
- Named constants, not magic numbers
|
|
34
|
+
- Error messages that identify the problem and suggest the fix
|
|
35
|
+
|
|
36
|
+
## Depth Standards: Exhaustive Specifications
|
|
37
|
+
|
|
38
|
+
Specs must go **deep enough** that an implementer needs zero clarification.
|
|
39
|
+
|
|
40
|
+
### Architecture Spec Depth
|
|
41
|
+
|
|
42
|
+
1. Every entity has all fields typed with constraints
|
|
43
|
+
2. Every relationship has cardinality and cascade behavior
|
|
44
|
+
3. Every endpoint has request/response schema, error codes, auth rules
|
|
45
|
+
4. Every state machine has all transitions and guard conditions
|
|
46
|
+
5. Every integration has retry policy, timeout, fallback behavior
|
|
47
|
+
|
|
48
|
+
### Feature Spec Depth
|
|
49
|
+
|
|
50
|
+
1. Every UI component has props typed, states enumerated, events listed
|
|
51
|
+
2. Every form has validation rules per field with error messages
|
|
52
|
+
3. Every API call has loading, success, and error UI states
|
|
53
|
+
4. Every responsive breakpoint has layout behavior specified
|
|
54
|
+
5. Every interaction has keyboard, mouse, and touch behavior defined
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "{{CONTRACT_LIBRARY}} schema before implementation, failing test before code — Red Green Refactor every slice"
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TDD & Contract-First Development
|
|
7
|
+
|
|
8
|
+
> **The CFPA Order**: Contract (`{{CONTRACT_LIBRARY}}` schema) → Tests (failing) → Implementation (make them pass) → Never reverse this.
|
|
9
|
+
|
|
10
|
+
## Contract-First: Schema Before Code
|
|
11
|
+
|
|
12
|
+
Every data boundary gets a `{{CONTRACT_LIBRARY}}` schema **before** any implementation:
|
|
13
|
+
|
|
14
|
+
| Scenario | Schema Required |
|
|
15
|
+
|----------|----------------|
|
|
16
|
+
| New API endpoint | Request/response schemas |
|
|
17
|
+
| New DB model | Document/record schema |
|
|
18
|
+
| New UI form | Form data schema |
|
|
19
|
+
| New config | Configuration schema |
|
|
20
|
+
| External integration | External data shape schema |
|
|
21
|
+
|
|
22
|
+
### What Contract Tests Must Cover
|
|
23
|
+
|
|
24
|
+
- ✅ Valid input accepted
|
|
25
|
+
- ✅ Invalid input rejected with correct error
|
|
26
|
+
- ✅ Edge cases (empty, null, boundary values)
|
|
27
|
+
- ✅ Type coercion where applicable
|
|
28
|
+
- ✅ Required vs optional fields
|
|
29
|
+
|
|
30
|
+
## TDD: Tests ARE The Spec
|
|
31
|
+
|
|
32
|
+
Every feature starts with a **failing test**:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Red → Green → Refactor
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
1. **Red**: Write a test that fails (proves the feature doesn't exist yet)
|
|
39
|
+
2. **Green**: Write the minimum code to make it pass
|
|
40
|
+
3. **Refactor**: Clean up without changing behavior
|
|
41
|
+
|
|
42
|
+
### Five Test Levels
|
|
43
|
+
|
|
44
|
+
| Level | What | When |
|
|
45
|
+
|-------|------|------|
|
|
46
|
+
| Contract | `{{CONTRACT_LIBRARY}}` schema validation | Every data boundary |
|
|
47
|
+
| Permission | RBAC + ownership | Every protected resource |
|
|
48
|
+
| Unit | Pure logic | Every function with logic |
|
|
49
|
+
| Integration | Component interaction | Every API endpoint |
|
|
50
|
+
| E2E | Full user flow | Every critical path |
|
|
51
|
+
|
|
52
|
+
### Non-Negotiables
|
|
53
|
+
|
|
54
|
+
- Tests pass before commit — **no exceptions**
|
|
55
|
+
- Test file lives next to source: `foo.ts` → `foo.test.ts`
|
|
56
|
+
- No `any` in test files — type your mocks
|
|
57
|
+
- Coverage minimum: 80% lines, 90% branches on critical paths
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Features ship across all four surfaces or they don't ship — no half-built slices
|
|
3
|
+
trigger: always_on
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vertical Slices
|
|
7
|
+
|
|
8
|
+
## The Rule
|
|
9
|
+
|
|
10
|
+
**A feature is not "done" until it works across all required surfaces.** No "backend done, frontend pending." No "user-facing works, admin can't manage it."
|
|
11
|
+
|
|
12
|
+
## The Four Implementation Layers
|
|
13
|
+
|
|
14
|
+
> **Note on terminology**: The layers below describe implementation completeness criteria — what every feature slice requires regardless of surface type. These are not the same as surface types (web/mobile/cli/etc.). For the mapping between surface types and how each implementation layer manifests on that surface, see `.agent/skills/prd-templates/references/surface-model.md`.
|
|
15
|
+
|
|
16
|
+
| Surface | What It Is | Example |
|
|
17
|
+
|---------|-----------|---------|
|
|
18
|
+
| **User-Facing** | What the end user sees and interacts with | Dashboard, forms, data views |
|
|
19
|
+
| **Admin** | Management interface for operators | User management, configuration |
|
|
20
|
+
| **API** | Programmatic interface | REST/GraphQL endpoints |
|
|
21
|
+
| **Data** | Database schemas, migrations, seed data | Tables, indexes, permissions |
|
|
22
|
+
|
|
23
|
+
## What "Done" Looks Like
|
|
24
|
+
|
|
25
|
+
A feature slice is complete when:
|
|
26
|
+
|
|
27
|
+
- [ ] Data layer: schema defined, permissions set, seed data exists
|
|
28
|
+
- [ ] API layer: endpoints exist, validated with Zod, tested
|
|
29
|
+
- [ ] User-facing: component renders, handles loading/error/empty states
|
|
30
|
+
- [ ] Admin: can create/read/update/delete the resource
|
|
31
|
+
- [ ] Tests pass at all levels (contract, unit, integration, E2E)
|
|
32
|
+
- [ ] Navigation: every new route is reachable from at least one navigation element
|
|
33
|
+
- [ ] Auth gates: every route that requires auth has the auth gate implemented (not stubbed)
|
|
34
|
+
- [ ] The feature is reachable from the app's entry point via normal user navigation
|
|
35
|
+
|
|
36
|
+
## Anti-Patterns
|
|
37
|
+
|
|
38
|
+
| Don't | Do |
|
|
39
|
+
|-------|-----|
|
|
40
|
+
| "I'll add the admin panel later" | Include admin CRUD in the slice |
|
|
41
|
+
| "The API works, frontend next sprint" | Ship them together or not at all |
|
|
42
|
+
| "Database is set up, just need endpoints" | That's not a slice, that's a layer |
|