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
package/bin/cli.mjs
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { existsSync, mkdirSync, cpSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
4
|
+
import { resolve, join, relative, dirname } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { argv, exit, cwd } from "node:process";
|
|
7
|
+
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
const TEMPLATE_DIR = resolve(__dirname, "..", "template");
|
|
11
|
+
const PKG = JSON.parse(readFileSync(resolve(__dirname, "..", "package.json"), "utf-8"));
|
|
12
|
+
|
|
13
|
+
// --- Colors (when TTY) ---
|
|
14
|
+
const isTTY = process.stdout.isTTY;
|
|
15
|
+
const c = {
|
|
16
|
+
reset: isTTY ? "\x1b[0m" : "",
|
|
17
|
+
bold: isTTY ? "\x1b[1m" : "",
|
|
18
|
+
dim: isTTY ? "\x1b[2m" : "",
|
|
19
|
+
green: isTTY ? "\x1b[32m" : "",
|
|
20
|
+
yellow: isTTY ? "\x1b[33m" : "",
|
|
21
|
+
red: isTTY ? "\x1b[31m" : "",
|
|
22
|
+
cyan: isTTY ? "\x1b[36m" : "",
|
|
23
|
+
magenta: isTTY ? "\x1b[35m" : "",
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// --- Logging ---
|
|
27
|
+
let QUIET = false;
|
|
28
|
+
const log = (msg) => { if (!QUIET) console.log(msg); };
|
|
29
|
+
const info = (msg) => log(`${c.green}✓${c.reset} ${msg}`);
|
|
30
|
+
const warn = (msg) => log(`${c.yellow}⚠${c.reset} ${msg}`);
|
|
31
|
+
const error = (msg) => { console.error(`${c.red}✗${c.reset} ${msg}`); };
|
|
32
|
+
|
|
33
|
+
// --- Usage ---
|
|
34
|
+
function usage() {
|
|
35
|
+
log(`
|
|
36
|
+
${c.bold}${c.magenta}CFSA Antigravity${c.reset} ${c.dim}v${PKG.version}${c.reset}
|
|
37
|
+
${c.dim}Constraint-First Specification Architecture for AI agents${c.reset}
|
|
38
|
+
|
|
39
|
+
${c.bold}Usage:${c.reset}
|
|
40
|
+
cfsa-antigravity ${c.cyan}<command>${c.reset} [options]
|
|
41
|
+
|
|
42
|
+
${c.bold}Commands:${c.reset}
|
|
43
|
+
${c.cyan}init${c.reset} Install the CFSA pipeline into your project
|
|
44
|
+
${c.cyan}status${c.reset} Check installation status
|
|
45
|
+
${c.cyan}version${c.reset} Show version
|
|
46
|
+
|
|
47
|
+
${c.bold}Init Options:${c.reset}
|
|
48
|
+
--force Overwrite existing .agent/ folder
|
|
49
|
+
--path <dir> Install into specific directory (default: current directory)
|
|
50
|
+
--dry-run Preview what would be copied without making changes
|
|
51
|
+
--quiet Suppress output (for CI/CD)
|
|
52
|
+
|
|
53
|
+
${c.bold}Examples:${c.reset}
|
|
54
|
+
${c.dim}# Install into current project${c.reset}
|
|
55
|
+
npx cfsa-antigravity init
|
|
56
|
+
|
|
57
|
+
${c.dim}# Install into a specific directory${c.reset}
|
|
58
|
+
npx cfsa-antigravity init --path ./my-project
|
|
59
|
+
|
|
60
|
+
${c.dim}# Preview what will be installed${c.reset}
|
|
61
|
+
npx cfsa-antigravity init --dry-run
|
|
62
|
+
|
|
63
|
+
${c.dim}# Overwrite existing installation${c.reset}
|
|
64
|
+
npx cfsa-antigravity init --force
|
|
65
|
+
`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// --- Parse Arguments ---
|
|
69
|
+
function parseArgs(args) {
|
|
70
|
+
const parsed = { command: null, force: false, dryRun: false, path: null, quiet: false };
|
|
71
|
+
|
|
72
|
+
let i = 0;
|
|
73
|
+
while (i < args.length) {
|
|
74
|
+
const arg = args[i];
|
|
75
|
+
switch (arg) {
|
|
76
|
+
case "init":
|
|
77
|
+
case "status":
|
|
78
|
+
case "version":
|
|
79
|
+
case "help":
|
|
80
|
+
case "--help":
|
|
81
|
+
case "-h":
|
|
82
|
+
parsed.command = arg === "--help" || arg === "-h" || arg === "help" ? "help" : arg;
|
|
83
|
+
break;
|
|
84
|
+
case "--force":
|
|
85
|
+
case "-f":
|
|
86
|
+
parsed.force = true;
|
|
87
|
+
break;
|
|
88
|
+
case "--dry-run":
|
|
89
|
+
case "-n":
|
|
90
|
+
parsed.dryRun = true;
|
|
91
|
+
break;
|
|
92
|
+
case "--quiet":
|
|
93
|
+
case "-q":
|
|
94
|
+
parsed.quiet = true;
|
|
95
|
+
break;
|
|
96
|
+
case "--path":
|
|
97
|
+
case "-p":
|
|
98
|
+
i++;
|
|
99
|
+
parsed.path = args[i];
|
|
100
|
+
if (!parsed.path) {
|
|
101
|
+
error("--path requires a directory argument");
|
|
102
|
+
exit(1);
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
case "--version":
|
|
106
|
+
case "-v":
|
|
107
|
+
parsed.command = "version";
|
|
108
|
+
break;
|
|
109
|
+
default:
|
|
110
|
+
if (arg.startsWith("-")) {
|
|
111
|
+
error(`Unknown option: ${arg}`);
|
|
112
|
+
usage();
|
|
113
|
+
exit(1);
|
|
114
|
+
}
|
|
115
|
+
// Treat first positional as command if not set
|
|
116
|
+
if (!parsed.command) {
|
|
117
|
+
parsed.command = arg;
|
|
118
|
+
}
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
i++;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return parsed;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// --- Count files recursively ---
|
|
128
|
+
function countFiles(dir) {
|
|
129
|
+
let count = 0;
|
|
130
|
+
if (!existsSync(dir)) return 0;
|
|
131
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
132
|
+
if (entry.isDirectory()) {
|
|
133
|
+
count += countFiles(join(dir, entry.name));
|
|
134
|
+
} else {
|
|
135
|
+
count++;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return count;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// --- List top-level items to copy ---
|
|
142
|
+
function getTemplateItems() {
|
|
143
|
+
if (!existsSync(TEMPLATE_DIR)) {
|
|
144
|
+
error("Template directory not found. Package may be corrupted.");
|
|
145
|
+
error(`Expected: ${TEMPLATE_DIR}`);
|
|
146
|
+
exit(1);
|
|
147
|
+
}
|
|
148
|
+
return readdirSync(TEMPLATE_DIR, { withFileTypes: true });
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// --- Init Command ---
|
|
152
|
+
function cmdInit(opts) {
|
|
153
|
+
const targetDir = resolve(opts.path || cwd());
|
|
154
|
+
|
|
155
|
+
log("");
|
|
156
|
+
log(`${c.bold}${c.magenta}CFSA Antigravity${c.reset} ${c.dim}v${PKG.version}${c.reset}`);
|
|
157
|
+
log(`${c.dim}Installing into: ${targetDir}${c.reset}`);
|
|
158
|
+
log("");
|
|
159
|
+
|
|
160
|
+
// Check if target directory exists
|
|
161
|
+
if (!existsSync(targetDir)) {
|
|
162
|
+
if (opts.dryRun) {
|
|
163
|
+
warn(`Directory does not exist: ${targetDir} (would create)`);
|
|
164
|
+
} else {
|
|
165
|
+
mkdirSync(targetDir, { recursive: true });
|
|
166
|
+
info(`Created directory: ${targetDir}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const items = getTemplateItems();
|
|
171
|
+
let copied = 0;
|
|
172
|
+
let skipped = 0;
|
|
173
|
+
const copiedPaths = [];
|
|
174
|
+
const skippedPaths = [];
|
|
175
|
+
|
|
176
|
+
for (const item of items) {
|
|
177
|
+
const src = join(TEMPLATE_DIR, item.name);
|
|
178
|
+
const dest = join(targetDir, item.name);
|
|
179
|
+
|
|
180
|
+
if (existsSync(dest) && !opts.force) {
|
|
181
|
+
const fileCount = item.isDirectory() ? countFiles(src) : 1;
|
|
182
|
+
skipped += fileCount;
|
|
183
|
+
skippedPaths.push(item.name);
|
|
184
|
+
warn(`Skipped ${c.bold}${item.name}${c.reset} (already exists — use --force to overwrite)`);
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (opts.dryRun) {
|
|
189
|
+
const fileCount = item.isDirectory() ? countFiles(src) : 1;
|
|
190
|
+
copied += fileCount;
|
|
191
|
+
copiedPaths.push(item.name);
|
|
192
|
+
info(`Would copy ${c.bold}${item.name}${c.reset} (${fileCount} files)`);
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Copy
|
|
197
|
+
if (item.isDirectory()) {
|
|
198
|
+
cpSync(src, dest, { recursive: true, force: opts.force });
|
|
199
|
+
} else {
|
|
200
|
+
const destDir = dirname(dest);
|
|
201
|
+
if (!existsSync(destDir)) mkdirSync(destDir, { recursive: true });
|
|
202
|
+
cpSync(src, dest, { force: opts.force });
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const fileCount = item.isDirectory() ? countFiles(dest) : 1;
|
|
206
|
+
copied += fileCount;
|
|
207
|
+
copiedPaths.push(item.name);
|
|
208
|
+
info(`Copied ${c.bold}${item.name}${c.reset} (${fileCount} files)`);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Summary
|
|
212
|
+
log("");
|
|
213
|
+
if (opts.dryRun) {
|
|
214
|
+
log(`${c.bold}Dry run complete:${c.reset} ${copied} files would be copied, ${skipped} skipped`);
|
|
215
|
+
} else if (copied > 0) {
|
|
216
|
+
log(`${c.bold}${c.green}Installation complete!${c.reset} ${copied} files copied, ${skipped} skipped`);
|
|
217
|
+
log("");
|
|
218
|
+
log(`${c.bold}Next steps:${c.reset}`);
|
|
219
|
+
log(` 1. Open your project in an AI editor (Antigravity, Cursor, etc.)`);
|
|
220
|
+
log(` 2. Run ${c.cyan}/ideate${c.reset} to start the pipeline`);
|
|
221
|
+
log("");
|
|
222
|
+
log(`${c.dim}Documentation: https://github.com/RepairYourTech/cfsa-antigravity${c.reset}`);
|
|
223
|
+
} else {
|
|
224
|
+
warn("Nothing was copied. All files already exist.");
|
|
225
|
+
log(` Use ${c.cyan}--force${c.reset} to overwrite existing files.`);
|
|
226
|
+
}
|
|
227
|
+
log("");
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// --- Status Command ---
|
|
231
|
+
function cmdStatus() {
|
|
232
|
+
const targetDir = cwd();
|
|
233
|
+
const agentDir = join(targetDir, ".agent");
|
|
234
|
+
|
|
235
|
+
log("");
|
|
236
|
+
log(`${c.bold}${c.magenta}CFSA Antigravity${c.reset} ${c.dim}v${PKG.version}${c.reset}`);
|
|
237
|
+
log(`${c.dim}Checking: ${targetDir}${c.reset}`);
|
|
238
|
+
log("");
|
|
239
|
+
|
|
240
|
+
if (!existsSync(agentDir)) {
|
|
241
|
+
warn("Not installed — .agent/ directory not found");
|
|
242
|
+
log(` Run ${c.cyan}cfsa-antigravity init${c.reset} to install`);
|
|
243
|
+
log("");
|
|
244
|
+
exit(1);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
info(".agent/ directory found");
|
|
248
|
+
|
|
249
|
+
const checks = [
|
|
250
|
+
{ path: ".agent/workflows", label: "Workflows" },
|
|
251
|
+
{ path: ".agent/skills", label: "Skills" },
|
|
252
|
+
{ path: ".agent/skill-library", label: "Skill Library" },
|
|
253
|
+
{ path: ".agent/instructions", label: "Instructions" },
|
|
254
|
+
{ path: ".agent/rules", label: "Rules" },
|
|
255
|
+
{ path: "docs/plans", label: "Plans directory" },
|
|
256
|
+
{ path: "GEMINI.md", label: "GEMINI.md" },
|
|
257
|
+
{ path: "AGENTS.md", label: "AGENTS.md" },
|
|
258
|
+
];
|
|
259
|
+
|
|
260
|
+
let installed = 0;
|
|
261
|
+
let missing = 0;
|
|
262
|
+
|
|
263
|
+
for (const check of checks) {
|
|
264
|
+
const fullPath = join(targetDir, check.path);
|
|
265
|
+
if (existsSync(fullPath)) {
|
|
266
|
+
const isDir = statSync(fullPath).isDirectory();
|
|
267
|
+
const detail = isDir ? `${countFiles(fullPath)} files` : "present";
|
|
268
|
+
info(`${check.label} ${c.dim}(${detail})${c.reset}`);
|
|
269
|
+
installed++;
|
|
270
|
+
} else {
|
|
271
|
+
warn(`${check.label} — missing`);
|
|
272
|
+
missing++;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
log("");
|
|
277
|
+
log(`${c.bold}Status:${c.reset} ${installed} components found, ${missing} missing`);
|
|
278
|
+
|
|
279
|
+
// Check for unfilled placeholders in GEMINI.md
|
|
280
|
+
const geminiPath = join(targetDir, "GEMINI.md");
|
|
281
|
+
if (existsSync(geminiPath)) {
|
|
282
|
+
const content = readFileSync(geminiPath, "utf-8");
|
|
283
|
+
const placeholders = content.match(/\{\{[A-Z_]+\}\}/g);
|
|
284
|
+
if (placeholders) {
|
|
285
|
+
const unique = [...new Set(placeholders)];
|
|
286
|
+
log("");
|
|
287
|
+
warn(`${unique.length} unfilled placeholder(s) in GEMINI.md — run /create-prd to fill them`);
|
|
288
|
+
for (const p of unique.slice(0, 5)) {
|
|
289
|
+
log(` ${c.dim}${p}${c.reset}`);
|
|
290
|
+
}
|
|
291
|
+
if (unique.length > 5) {
|
|
292
|
+
log(` ${c.dim}... and ${unique.length - 5} more${c.reset}`);
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
info("GEMINI.md — all placeholders filled");
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
log("");
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// --- Main ---
|
|
303
|
+
const args = parseArgs(argv.slice(2));
|
|
304
|
+
QUIET = args.quiet;
|
|
305
|
+
|
|
306
|
+
switch (args.command) {
|
|
307
|
+
case "init":
|
|
308
|
+
cmdInit(args);
|
|
309
|
+
break;
|
|
310
|
+
case "status":
|
|
311
|
+
cmdStatus();
|
|
312
|
+
break;
|
|
313
|
+
case "version":
|
|
314
|
+
log(PKG.version);
|
|
315
|
+
break;
|
|
316
|
+
case "help":
|
|
317
|
+
case null:
|
|
318
|
+
usage();
|
|
319
|
+
break;
|
|
320
|
+
default:
|
|
321
|
+
error(`Unknown command: ${args.command}`);
|
|
322
|
+
usage();
|
|
323
|
+
exit(1);
|
|
324
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cfsa-antigravity",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "CFSA Pipeline — Constraint-First Specification Architecture for AI agents. Production-grade from line one.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"cfsa-antigravity": "./bin/cli.mjs"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin/",
|
|
10
|
+
"template/"
|
|
11
|
+
],
|
|
12
|
+
"keywords": [
|
|
13
|
+
"ai",
|
|
14
|
+
"agent",
|
|
15
|
+
"cfsa",
|
|
16
|
+
"specification",
|
|
17
|
+
"pipeline",
|
|
18
|
+
"tdd",
|
|
19
|
+
"antigravity",
|
|
20
|
+
"production",
|
|
21
|
+
"workflows",
|
|
22
|
+
"skills"
|
|
23
|
+
],
|
|
24
|
+
"author": "RepairYourTech",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/RepairYourTech/cfsa-antigravity"
|
|
29
|
+
},
|
|
30
|
+
"homepage": "https://github.com/RepairYourTech/cfsa-antigravity#readme",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=18.0.0"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Development Commands
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
THIS FILE IS A TEMPLATE.
|
|
5
|
+
The /bootstrap-agents workflow will fill in your project-specific commands.
|
|
6
|
+
Replace {{PLACEHOLDERS}} with your actual commands.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Package Manager: {{PACKAGE_MANAGER}}
|
|
10
|
+
|
|
11
|
+
## Development
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
{{DEV_COMMAND}} # Start dev server
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Testing
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
{{TEST_COMMAND}} # Run all tests
|
|
21
|
+
{{TEST_WATCH_COMMAND}} # Watch mode
|
|
22
|
+
{{TEST_COVERAGE_COMMAND}} # With coverage report
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Linting & Formatting
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
{{LINT_COMMAND}} # Lint check
|
|
29
|
+
{{LINT_FIX_COMMAND}} # Lint with auto-fix
|
|
30
|
+
{{FORMAT_COMMAND}} # Format check
|
|
31
|
+
{{TYPE_CHECK_COMMAND}} # TypeScript type validation
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Build & Preview
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
{{BUILD_COMMAND}} # Production build
|
|
38
|
+
{{PREVIEW_COMMAND}} # Preview production build locally
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Validation (run after every code change)
|
|
42
|
+
|
|
43
|
+
// turbo
|
|
44
|
+
```bash
|
|
45
|
+
{{VALIDATION_COMMAND}}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
All checks must pass before marking any task complete.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Code Patterns & Conventions
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
THIS FILE IS A TEMPLATE.
|
|
5
|
+
The /bootstrap-agents workflow will fill in your project-specific patterns.
|
|
6
|
+
Sections marked with {{PLACEHOLDER}} will be replaced.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## TypeScript → skills: `clean-code`, `typescript-advanced-patterns`
|
|
10
|
+
- **Strict mode** everywhere — `strict: true` in tsconfig
|
|
11
|
+
- **Explicit types** — No `any`, no implicit returns
|
|
12
|
+
- **Zod validation** — All API inputs validated with Zod schemas
|
|
13
|
+
- **Self-documenting** — Clear naming over comments
|
|
14
|
+
- **Zod inference** — Derive TypeScript types from Zod schemas with `z.infer<typeof schema>`
|
|
15
|
+
|
|
16
|
+
## File Organization → skill: `clean-code`
|
|
17
|
+
- **File size limits** — Per-type limits (enforced by extensibility rule): 200 lines for components (.tsx), 300 for utilities (.ts), 150 for schemas (.schema.ts), 400 for tests (.test.ts), 100 for config files
|
|
18
|
+
- **Single responsibility** — One component/module per file
|
|
19
|
+
- **Named exports** — No default exports for utilities
|
|
20
|
+
- **Direct imports** — Import from specific files, avoid barrel files
|
|
21
|
+
|
|
22
|
+
## Components
|
|
23
|
+
<!-- {{FRAMEWORK_PATTERNS}} — Filled by /bootstrap-agents based on chosen frontend framework -->
|
|
24
|
+
> ⚠️ **Framework component patterns not yet configured.** Run /bootstrap-agents with FRAMEWORK_PATTERNS to fill this section. Until then, follow the framework's official documentation for component conventions and apply the naming and file organisation rules above.
|
|
25
|
+
|
|
26
|
+
## API & Data → skill: `rest-api-design`
|
|
27
|
+
- **Input validation** — Zod schemas on every endpoint
|
|
28
|
+
- **Error format** — Consistent: `{ success: boolean, data?: T, error?: { code, message } }`
|
|
29
|
+
- **No magic strings** — Constants and enums for repeated values
|
|
30
|
+
- **Rate limiting** — On all public-facing endpoints
|
|
31
|
+
|
|
32
|
+
## Security → skill: `security-scanning-security-hardening`
|
|
33
|
+
- **No secrets in client code** — Server-side only, environment variables
|
|
34
|
+
- **CSP headers** — Content Security Policy on all responses
|
|
35
|
+
- **Input sanitization** — Prevent XSS, injection attacks
|
|
36
|
+
- **CORS configured** — Explicit allowed origins, no wildcards in production
|
|
37
|
+
|
|
38
|
+
## Naming
|
|
39
|
+
- **Files:** kebab-case (`user-profile.tsx`)
|
|
40
|
+
- **Components:** PascalCase (`UserProfile`)
|
|
41
|
+
- **Functions:** camelCase (`getUserById`)
|
|
42
|
+
- **Constants:** SCREAMING_SNAKE (`MAX_RETRY_COUNT`)
|
|
43
|
+
- **Types/Interfaces:** PascalCase (`UserSession`)
|
|
44
|
+
|
|
45
|
+
## What NOT to Do
|
|
46
|
+
- No `console.log` in committed code — Use a structured logging utility
|
|
47
|
+
- No `// TODO` — Lazy placeholders are banned. If the information you need genuinely doesn't exist yet, use a `// BOUNDARY:` stub (see rule: `boundary-not-placeholder`)
|
|
48
|
+
- No `any` type — Ever
|
|
49
|
+
- No inline styles — Use CSS classes or scoped styles
|
|
50
|
+
- No hardcoded URLs — Use environment config
|
|
51
|
+
- No barrel files (`index.ts`) — Import directly from source files
|
|
52
|
+
|
|
53
|
+
<!--
|
|
54
|
+
Add project-specific sections below as your stack evolves:
|
|
55
|
+
## State & Data
|
|
56
|
+
## Caching
|
|
57
|
+
## Observability
|
|
58
|
+
## Payments
|
|
59
|
+
## Email
|
|
60
|
+
## Images
|
|
61
|
+
-->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Project Structure
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
THIS FILE IS A TEMPLATE.
|
|
5
|
+
The /bootstrap-agents workflow will fill in your project-specific structure.
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
## Current Layout
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
{{PROJECT_STRUCTURE}}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Architecture Separation
|
|
15
|
+
|
|
16
|
+
| Concern | Location | Runtime |
|
|
17
|
+
|---------|----------|---------|
|
|
18
|
+
| {{ARCHITECTURE_TABLE}} |
|
|
19
|
+
|
|
20
|
+
## Protected Files (Do Not Modify Without Approval)
|
|
21
|
+
- `AGENTS.md` — Project agent config
|
|
22
|
+
- `docs/plans/ENGINEERING-STANDARDS.md` — Quality bar
|
|
23
|
+
- `.agent/instructions/*` — Agent rules
|
|
24
|
+
- `package.json` — Dependencies (add carefully)
|
|
25
|
+
- `tsconfig.json` — TypeScript config
|
|
26
|
+
|
|
27
|
+
## Notes
|
|
28
|
+
- All agent config lives in `.agent/` (canonical for all agents)
|
|
29
|
+
- Frontend and API may be separately deployed depending on architecture
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Tech Stack
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
THIS FILE IS A TEMPLATE.
|
|
5
|
+
The /bootstrap-agents workflow will fill in your project-specific stack.
|
|
6
|
+
Sections marked with {{PLACEHOLDER}} will be replaced.
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
## Stack Summary
|
|
10
|
+
|
|
11
|
+
**{{TECH_STACK_SUMMARY}}**
|
|
12
|
+
|
|
13
|
+
## Core Decisions
|
|
14
|
+
|
|
15
|
+
| Axis | Decision |
|
|
16
|
+
|------|----------|
|
|
17
|
+
| **Frontend framework** | {{FRONTEND_FRAMEWORK}} |
|
|
18
|
+
| **Backend runtime** | {{BACKEND_RUNTIME}} |
|
|
19
|
+
| **Database** | {{DATABASE}} |
|
|
20
|
+
| **Auth provider** | {{AUTH_PROVIDER}} |
|
|
21
|
+
| **Hosting** | {{HOSTING}} |
|
|
22
|
+
| **CDN / Assets** | {{CDN_ASSETS}} |
|
|
23
|
+
| **CI/CD** | {{CICD}} |
|
|
24
|
+
| **Monitoring** | {{MONITORING}} |
|
|
25
|
+
|
|
26
|
+
## Development Tooling
|
|
27
|
+
|
|
28
|
+
| Tool | Value |
|
|
29
|
+
|------|-------|
|
|
30
|
+
| Package manager | {{PACKAGE_MANAGER}} |
|
|
31
|
+
| Test runner | {{TEST_RUNNER}} |
|
|
32
|
+
| Linter | {{LINTER}} |
|
|
33
|
+
| Type checker | {{TYPE_CHECKER}} |
|
|
34
|
+
|
|
35
|
+
## Installed Skills
|
|
36
|
+
|
|
37
|
+
<!-- Updated by /create-prd after skill discovery -->
|
|
38
|
+
{{INSTALLED_SKILLS}}
|
|
39
|
+
|
|
40
|
+
## Reference
|
|
41
|
+
|
|
42
|
+
- [Architecture Design](../../{{ARCHITECTURE_DOC}}) — full system design with rationale
|
|
43
|
+
- [Engineering Standards](../../docs/plans/ENGINEERING-STANDARDS.md) — Quality thresholds
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Mandatory Execution Sequence
|
|
2
|
+
|
|
3
|
+
Before taking any action on a task:
|
|
4
|
+
|
|
5
|
+
## 1. Understand Context
|
|
6
|
+
- Read the agent config file at project root (`AGENTS.md` for Antigravity, `GEMINI.md` for Gemini CLI, or equivalent for your agent)
|
|
7
|
+
- Read relevant `.agent/instructions/` files for the task type
|
|
8
|
+
- Check [Engineering Standards](../../docs/plans/ENGINEERING-STANDARDS.md) for quality bar — if this file doesn't exist yet, the pipeline hasn't reached /create-prd; run /ideate then /create-prd first
|
|
9
|
+
|
|
10
|
+
## 2. Check Skills
|
|
11
|
+
- Scan `.agent/skills/` for applicable skills
|
|
12
|
+
- Load relevant skill SKILL.md before proceeding
|
|
13
|
+
- Key skills: `brainstorming` (before creative work), `tdd-workflow` (before features), `clean-code` (during review)
|
|
14
|
+
|
|
15
|
+
## 3. Execute
|
|
16
|
+
|
|
17
|
+
> **Non-negotiable:** This project does not ship MVPs. Every line you write is
|
|
18
|
+
> production code. There is no "rough draft" phase.
|
|
19
|
+
|
|
20
|
+
- Follow the task requirements
|
|
21
|
+
- Write production-grade code from the start — no exceptions, no "clean up later"
|
|
22
|
+
- No placeholder implementations or `// TODO` comments — if the information you need genuinely doesn't exist yet, use a `// BOUNDARY:` stub with typed interface, tracking issue, and sentinel test (see rule: `boundary-not-placeholder`)
|
|
23
|
+
- No deferred quality — if it's not ready for production, it's not ready to commit
|
|
24
|
+
- **Cost-blind execution** — The cost of API calls, tokens, or compute to complete your work is NEVER your concern. Do not estimate, report, or factor operational AI costs into any decision. The only cost constraints that matter are user-defined project constraints (e.g., "keep hosting costs low," "prefer client-side compute"). If the user hasn't defined a cost constraint, cost is not a factor.
|
|
25
|
+
- **Proactive effort mindset** — When you estimate a task will take significant effort, that is a signal to commit harder, not to defer. Small task? Get it done immediately. Large task? Buckle in, communicate progress, and work through it systematically. Time estimates drive commitment, never avoidance.
|
|
26
|
+
|
|
27
|
+
## 4. Validate (MANDATORY)
|
|
28
|
+
After **every** code change, run:
|
|
29
|
+
```bash
|
|
30
|
+
{{VALIDATION_COMMAND}}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Do NOT mark a task complete until all validations pass.
|
|
34
|
+
|
|
35
|
+
## Principles
|
|
36
|
+
|
|
37
|
+
- **Ask before assuming** — Clarify ambiguous requirements
|
|
38
|
+
- **Small changes** — Commit frequently, keep diffs reviewable
|
|
39
|
+
- **Test first** — Write failing tests before implementation — no exceptions
|
|
40
|
+
- **Security always** — Validate inputs, sanitize outputs, never expose secrets
|
|
41
|
+
- **Work is the job** — Never use the size, complexity, or duration of a task as a reason to reduce quality or scope. Large tasks get more effort, not less quality.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<!-- This file is created and updated automatically by /sync-kit.
|
|
2
|
+
Commit it to your project repo — it records which kit version
|
|
3
|
+
the project is on and serves as the baseline for the next sync. -->
|
|
4
|
+
|
|
5
|
+
> [!NOTE]
|
|
6
|
+
> **`FIRST_SYNC_PENDING` values are placeholders.** They are populated automatically
|
|
7
|
+
> when you run `/sync-kit` for the first time. Do not manually edit them — let the
|
|
8
|
+
> sync command fill them in.
|
|
9
|
+
|
|
10
|
+
# Kit Sync State
|
|
11
|
+
|
|
12
|
+
upstream: https://github.com/RepairYourTech/Anti-MVP-Vibe-Pipeline
|
|
13
|
+
last_synced_commit: FIRST_SYNC_PENDING
|
|
14
|
+
last_synced_at: FIRST_SYNC_PENDING
|
|
15
|
+
kit_version: main
|