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,478 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rest-api-design
|
|
3
|
+
description: Design RESTful APIs following best practices for resource modeling, HTTP methods, status codes, versioning, and documentation. Use when creating new APIs, designing endpoints, or improving existing API architecture.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# REST API Design
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Design REST APIs that are intuitive, consistent, and follow industry best practices for resource-oriented architecture.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- Designing new RESTful APIs
|
|
15
|
+
- Creating endpoint structures
|
|
16
|
+
- Defining request/response formats
|
|
17
|
+
- Implementing API versioning
|
|
18
|
+
- Documenting API specifications
|
|
19
|
+
- Refactoring existing APIs
|
|
20
|
+
|
|
21
|
+
## Instructions
|
|
22
|
+
|
|
23
|
+
### 1. **Resource Naming**
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
✅ Good Resource Names (Nouns, Plural)
|
|
27
|
+
GET /api/users
|
|
28
|
+
GET /api/users/123
|
|
29
|
+
GET /api/users/123/orders
|
|
30
|
+
POST /api/products
|
|
31
|
+
DELETE /api/products/456
|
|
32
|
+
|
|
33
|
+
❌ Bad Resource Names (Verbs, Inconsistent)
|
|
34
|
+
GET /api/getUsers
|
|
35
|
+
POST /api/createProduct
|
|
36
|
+
GET /api/user/123 (inconsistent singular/plural)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 2. **HTTP Methods & Operations**
|
|
40
|
+
|
|
41
|
+
```http
|
|
42
|
+
# CRUD Operations
|
|
43
|
+
GET /api/users # List all users (Read collection)
|
|
44
|
+
GET /api/users/123 # Get specific user (Read single)
|
|
45
|
+
POST /api/users # Create new user (Create)
|
|
46
|
+
PUT /api/users/123 # Replace user completely (Update)
|
|
47
|
+
PATCH /api/users/123 # Partial update user (Partial update)
|
|
48
|
+
DELETE /api/users/123 # Delete user (Delete)
|
|
49
|
+
|
|
50
|
+
# Nested Resources
|
|
51
|
+
GET /api/users/123/orders # Get user's orders
|
|
52
|
+
POST /api/users/123/orders # Create order for user
|
|
53
|
+
GET /api/users/123/orders/456 # Get specific order
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3. **Request Examples**
|
|
57
|
+
|
|
58
|
+
#### Creating a Resource
|
|
59
|
+
```http
|
|
60
|
+
POST /api/users
|
|
61
|
+
Content-Type: application/json
|
|
62
|
+
|
|
63
|
+
{
|
|
64
|
+
"email": "john@example.com",
|
|
65
|
+
"firstName": "John",
|
|
66
|
+
"lastName": "Doe",
|
|
67
|
+
"role": "admin"
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
Response: 201 Created
|
|
71
|
+
Location: /api/users/789
|
|
72
|
+
{
|
|
73
|
+
"id": "789",
|
|
74
|
+
"email": "john@example.com",
|
|
75
|
+
"firstName": "John",
|
|
76
|
+
"lastName": "Doe",
|
|
77
|
+
"role": "admin",
|
|
78
|
+
"createdAt": "2025-01-15T10:30:00Z",
|
|
79
|
+
"updatedAt": "2025-01-15T10:30:00Z"
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### Updating a Resource
|
|
84
|
+
```http
|
|
85
|
+
PATCH /api/users/789
|
|
86
|
+
Content-Type: application/json
|
|
87
|
+
|
|
88
|
+
{
|
|
89
|
+
"firstName": "Jonathan"
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
Response: 200 OK
|
|
93
|
+
{
|
|
94
|
+
"id": "789",
|
|
95
|
+
"email": "john@example.com",
|
|
96
|
+
"firstName": "Jonathan",
|
|
97
|
+
"lastName": "Doe",
|
|
98
|
+
"role": "admin",
|
|
99
|
+
"updatedAt": "2025-01-15T11:00:00Z"
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 4. **Query Parameters**
|
|
104
|
+
|
|
105
|
+
```http
|
|
106
|
+
# Filtering
|
|
107
|
+
GET /api/products?category=electronics&inStock=true
|
|
108
|
+
|
|
109
|
+
# Sorting
|
|
110
|
+
GET /api/users?sort=lastName,asc
|
|
111
|
+
|
|
112
|
+
# Pagination
|
|
113
|
+
GET /api/users?page=2&limit=20
|
|
114
|
+
|
|
115
|
+
# Field Selection
|
|
116
|
+
GET /api/users?fields=id,email,firstName
|
|
117
|
+
|
|
118
|
+
# Search
|
|
119
|
+
GET /api/products?q=laptop
|
|
120
|
+
|
|
121
|
+
# Multiple filters combined
|
|
122
|
+
GET /api/orders?status=pending&customer=123&sort=createdAt,desc&limit=50
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 5. **Response Formats**
|
|
126
|
+
|
|
127
|
+
#### Success Response
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"data": {
|
|
131
|
+
"id": "123",
|
|
132
|
+
"email": "user@example.com",
|
|
133
|
+
"firstName": "John"
|
|
134
|
+
},
|
|
135
|
+
"meta": {
|
|
136
|
+
"timestamp": "2025-01-15T10:30:00Z",
|
|
137
|
+
"version": "1.0"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
#### Collection Response with Pagination
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"data": [
|
|
146
|
+
{ "id": "1", "name": "Product 1" },
|
|
147
|
+
{ "id": "2", "name": "Product 2" }
|
|
148
|
+
],
|
|
149
|
+
"pagination": {
|
|
150
|
+
"page": 2,
|
|
151
|
+
"limit": 20,
|
|
152
|
+
"total": 145,
|
|
153
|
+
"totalPages": 8,
|
|
154
|
+
"hasNext": true,
|
|
155
|
+
"hasPrev": true
|
|
156
|
+
},
|
|
157
|
+
"links": {
|
|
158
|
+
"self": "/api/products?page=2&limit=20",
|
|
159
|
+
"first": "/api/products?page=1&limit=20",
|
|
160
|
+
"prev": "/api/products?page=1&limit=20",
|
|
161
|
+
"next": "/api/products?page=3&limit=20",
|
|
162
|
+
"last": "/api/products?page=8&limit=20"
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### Error Response
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"error": {
|
|
171
|
+
"code": "VALIDATION_ERROR",
|
|
172
|
+
"message": "Invalid input data",
|
|
173
|
+
"details": [
|
|
174
|
+
{
|
|
175
|
+
"field": "email",
|
|
176
|
+
"message": "Email format is invalid"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"field": "age",
|
|
180
|
+
"message": "Must be at least 18"
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
"meta": {
|
|
185
|
+
"timestamp": "2025-01-15T10:30:00Z",
|
|
186
|
+
"requestId": "abc-123-def"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 6. **HTTP Status Codes**
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
Success:
|
|
195
|
+
200 OK - Successful GET, PATCH, DELETE
|
|
196
|
+
201 Created - Successful POST (resource created)
|
|
197
|
+
204 No Content - Successful DELETE (no response body)
|
|
198
|
+
|
|
199
|
+
Client Errors:
|
|
200
|
+
400 Bad Request - Invalid request format/data
|
|
201
|
+
401 Unauthorized - Missing or invalid authentication
|
|
202
|
+
403 Forbidden - Authenticated but not authorized
|
|
203
|
+
404 Not Found - Resource doesn't exist
|
|
204
|
+
409 Conflict - Resource conflict (e.g., duplicate email)
|
|
205
|
+
422 Unprocessable - Validation errors
|
|
206
|
+
429 Too Many Requests - Rate limit exceeded
|
|
207
|
+
|
|
208
|
+
Server Errors:
|
|
209
|
+
500 Internal Server Error - Generic server error
|
|
210
|
+
503 Service Unavailable - Temporary unavailability
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 7. **API Versioning**
|
|
214
|
+
|
|
215
|
+
```http
|
|
216
|
+
# URL Path Versioning (Recommended)
|
|
217
|
+
GET /api/v1/users
|
|
218
|
+
GET /api/v2/users
|
|
219
|
+
|
|
220
|
+
# Header Versioning
|
|
221
|
+
GET /api/users
|
|
222
|
+
Accept: application/vnd.myapi.v1+json
|
|
223
|
+
|
|
224
|
+
# Query Parameter (Not recommended)
|
|
225
|
+
GET /api/users?version=1
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### 8. **Authentication & Security**
|
|
229
|
+
|
|
230
|
+
```http
|
|
231
|
+
# JWT Bearer Token
|
|
232
|
+
GET /api/users
|
|
233
|
+
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
|
|
234
|
+
|
|
235
|
+
# API Key
|
|
236
|
+
GET /api/users
|
|
237
|
+
X-API-Key: your-api-key-here
|
|
238
|
+
|
|
239
|
+
# Always use HTTPS in production
|
|
240
|
+
https://api.example.com/v1/users
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### 9. **Rate Limiting Headers**
|
|
244
|
+
|
|
245
|
+
```http
|
|
246
|
+
HTTP/1.1 200 OK
|
|
247
|
+
X-RateLimit-Limit: 1000
|
|
248
|
+
X-RateLimit-Remaining: 995
|
|
249
|
+
X-RateLimit-Reset: 1642262400
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### 10. **OpenAPI Documentation**
|
|
253
|
+
|
|
254
|
+
```yaml
|
|
255
|
+
openapi: 3.0.0
|
|
256
|
+
info:
|
|
257
|
+
title: User API
|
|
258
|
+
version: 1.0.0
|
|
259
|
+
description: User management API
|
|
260
|
+
|
|
261
|
+
paths:
|
|
262
|
+
/users:
|
|
263
|
+
get:
|
|
264
|
+
summary: List all users
|
|
265
|
+
parameters:
|
|
266
|
+
- name: page
|
|
267
|
+
in: query
|
|
268
|
+
schema:
|
|
269
|
+
type: integer
|
|
270
|
+
default: 1
|
|
271
|
+
- name: limit
|
|
272
|
+
in: query
|
|
273
|
+
schema:
|
|
274
|
+
type: integer
|
|
275
|
+
default: 20
|
|
276
|
+
responses:
|
|
277
|
+
'200':
|
|
278
|
+
description: Successful response
|
|
279
|
+
content:
|
|
280
|
+
application/json:
|
|
281
|
+
schema:
|
|
282
|
+
type: object
|
|
283
|
+
properties:
|
|
284
|
+
data:
|
|
285
|
+
type: array
|
|
286
|
+
items:
|
|
287
|
+
$ref: '#/components/schemas/User'
|
|
288
|
+
|
|
289
|
+
post:
|
|
290
|
+
summary: Create a new user
|
|
291
|
+
requestBody:
|
|
292
|
+
required: true
|
|
293
|
+
content:
|
|
294
|
+
application/json:
|
|
295
|
+
schema:
|
|
296
|
+
$ref: '#/components/schemas/UserInput'
|
|
297
|
+
responses:
|
|
298
|
+
'201':
|
|
299
|
+
description: User created
|
|
300
|
+
content:
|
|
301
|
+
application/json:
|
|
302
|
+
schema:
|
|
303
|
+
$ref: '#/components/schemas/User'
|
|
304
|
+
'400':
|
|
305
|
+
description: Invalid input
|
|
306
|
+
'409':
|
|
307
|
+
description: Email already exists
|
|
308
|
+
|
|
309
|
+
components:
|
|
310
|
+
schemas:
|
|
311
|
+
User:
|
|
312
|
+
type: object
|
|
313
|
+
properties:
|
|
314
|
+
id:
|
|
315
|
+
type: string
|
|
316
|
+
email:
|
|
317
|
+
type: string
|
|
318
|
+
format: email
|
|
319
|
+
firstName:
|
|
320
|
+
type: string
|
|
321
|
+
lastName:
|
|
322
|
+
type: string
|
|
323
|
+
createdAt:
|
|
324
|
+
type: string
|
|
325
|
+
format: date-time
|
|
326
|
+
|
|
327
|
+
UserInput:
|
|
328
|
+
type: object
|
|
329
|
+
required:
|
|
330
|
+
- email
|
|
331
|
+
- firstName
|
|
332
|
+
- lastName
|
|
333
|
+
properties:
|
|
334
|
+
email:
|
|
335
|
+
type: string
|
|
336
|
+
format: email
|
|
337
|
+
firstName:
|
|
338
|
+
type: string
|
|
339
|
+
lastName:
|
|
340
|
+
type: string
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## Best Practices
|
|
344
|
+
|
|
345
|
+
### ✅ DO
|
|
346
|
+
- Use nouns for resources, not verbs
|
|
347
|
+
- Use plural names for collections
|
|
348
|
+
- Be consistent with naming conventions
|
|
349
|
+
- Return appropriate HTTP status codes
|
|
350
|
+
- Include pagination for collections
|
|
351
|
+
- Provide filtering and sorting options
|
|
352
|
+
- Version your API
|
|
353
|
+
- Document thoroughly with OpenAPI
|
|
354
|
+
- Use HTTPS
|
|
355
|
+
- Implement rate limiting
|
|
356
|
+
- Provide clear error messages
|
|
357
|
+
- Use ISO 8601 for dates
|
|
358
|
+
|
|
359
|
+
### ❌ DON'T
|
|
360
|
+
- Use verbs in endpoint names
|
|
361
|
+
- Return 200 for errors
|
|
362
|
+
- Expose internal IDs unnecessarily
|
|
363
|
+
- Over-nest resources (max 2 levels)
|
|
364
|
+
- Use inconsistent naming
|
|
365
|
+
- Forget authentication
|
|
366
|
+
- Return sensitive data
|
|
367
|
+
- Break backward compatibility without versioning
|
|
368
|
+
|
|
369
|
+
## Complete Example: Express.js
|
|
370
|
+
|
|
371
|
+
```javascript
|
|
372
|
+
const express = require('express');
|
|
373
|
+
const app = express();
|
|
374
|
+
|
|
375
|
+
app.use(express.json());
|
|
376
|
+
|
|
377
|
+
// List users with pagination
|
|
378
|
+
app.get('/api/v1/users', async (req, res) => {
|
|
379
|
+
try {
|
|
380
|
+
const page = parseInt(req.query.page) || 1;
|
|
381
|
+
const limit = parseInt(req.query.limit) || 20;
|
|
382
|
+
const offset = (page - 1) * limit;
|
|
383
|
+
|
|
384
|
+
const users = await User.findAndCountAll({
|
|
385
|
+
limit,
|
|
386
|
+
offset,
|
|
387
|
+
attributes: ['id', 'email', 'firstName', 'lastName']
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
res.json({
|
|
391
|
+
data: users.rows,
|
|
392
|
+
pagination: {
|
|
393
|
+
page,
|
|
394
|
+
limit,
|
|
395
|
+
total: users.count,
|
|
396
|
+
totalPages: Math.ceil(users.count / limit)
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
} catch (error) {
|
|
400
|
+
res.status(500).json({
|
|
401
|
+
error: {
|
|
402
|
+
code: 'INTERNAL_ERROR',
|
|
403
|
+
message: 'An error occurred while fetching users'
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
|
|
409
|
+
// Get single user
|
|
410
|
+
app.get('/api/v1/users/:id', async (req, res) => {
|
|
411
|
+
try {
|
|
412
|
+
const user = await User.findByPk(req.params.id);
|
|
413
|
+
|
|
414
|
+
if (!user) {
|
|
415
|
+
return res.status(404).json({
|
|
416
|
+
error: {
|
|
417
|
+
code: 'NOT_FOUND',
|
|
418
|
+
message: 'User not found'
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
res.json({ data: user });
|
|
424
|
+
} catch (error) {
|
|
425
|
+
res.status(500).json({
|
|
426
|
+
error: {
|
|
427
|
+
code: 'INTERNAL_ERROR',
|
|
428
|
+
message: 'An error occurred'
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
// Create user
|
|
435
|
+
app.post('/api/v1/users', async (req, res) => {
|
|
436
|
+
try {
|
|
437
|
+
const { email, firstName, lastName } = req.body;
|
|
438
|
+
|
|
439
|
+
// Validation
|
|
440
|
+
if (!email || !firstName || !lastName) {
|
|
441
|
+
return res.status(400).json({
|
|
442
|
+
error: {
|
|
443
|
+
code: 'VALIDATION_ERROR',
|
|
444
|
+
message: 'Missing required fields',
|
|
445
|
+
details: [
|
|
446
|
+
!email && { field: 'email', message: 'Email is required' },
|
|
447
|
+
!firstName && { field: 'firstName', message: 'First name is required' },
|
|
448
|
+
!lastName && { field: 'lastName', message: 'Last name is required' }
|
|
449
|
+
].filter(Boolean)
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
const user = await User.create({ email, firstName, lastName });
|
|
455
|
+
|
|
456
|
+
res.status(201)
|
|
457
|
+
.location(`/api/v1/users/${user.id}`)
|
|
458
|
+
.json({ data: user });
|
|
459
|
+
} catch (error) {
|
|
460
|
+
if (error.name === 'SequelizeUniqueConstraintError') {
|
|
461
|
+
return res.status(409).json({
|
|
462
|
+
error: {
|
|
463
|
+
code: 'CONFLICT',
|
|
464
|
+
message: 'Email already exists'
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
res.status(500).json({
|
|
469
|
+
error: {
|
|
470
|
+
code: 'INTERNAL_ERROR',
|
|
471
|
+
message: 'An error occurred'
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
app.listen(3000);
|
|
478
|
+
```
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-scanning-security-hardening
|
|
3
|
+
description: "Coordinate multi-layer security scanning and hardening across application, infrastructure, and compliance controls."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Implement comprehensive security hardening with defense-in-depth strategy through coordinated multi-agent orchestration:
|
|
7
|
+
|
|
8
|
+
[Extended thinking: This workflow implements a defense-in-depth security strategy across all application layers. It coordinates specialized security agents to perform comprehensive assessments, implement layered security controls, and establish continuous security monitoring. The approach follows modern DevSecOps principles with shift-left security, automated scanning, and compliance validation. Each phase builds upon previous findings to create a resilient security posture that addresses both current vulnerabilities and future threats.]
|
|
9
|
+
|
|
10
|
+
## Use this skill when
|
|
11
|
+
|
|
12
|
+
- Running a coordinated security hardening program
|
|
13
|
+
- Establishing defense-in-depth controls across app, infra, and CI/CD
|
|
14
|
+
- Prioritizing remediation from scans and threat modeling
|
|
15
|
+
|
|
16
|
+
## Do not use this skill when
|
|
17
|
+
|
|
18
|
+
- You only need a quick scan without remediation work
|
|
19
|
+
- You lack authorization for security testing or changes
|
|
20
|
+
- The environment cannot tolerate invasive security controls
|
|
21
|
+
|
|
22
|
+
## Instructions
|
|
23
|
+
|
|
24
|
+
1. Execute Phase 1 to establish a security baseline.
|
|
25
|
+
2. Apply Phase 2 remediations for high-risk issues.
|
|
26
|
+
3. Implement Phase 3 controls and validate defenses.
|
|
27
|
+
4. Complete Phase 4 validation and compliance checks.
|
|
28
|
+
|
|
29
|
+
## Safety
|
|
30
|
+
|
|
31
|
+
- Avoid intrusive testing in production without approval.
|
|
32
|
+
- Ensure rollback plans exist before hardening changes.
|
|
33
|
+
|
|
34
|
+
## Phase 1: Comprehensive Security Assessment
|
|
35
|
+
|
|
36
|
+
### 1. Initial Vulnerability Scanning
|
|
37
|
+
- Use Task tool with subagent_type="security-auditor"
|
|
38
|
+
- Prompt: "Perform comprehensive security assessment on: $ARGUMENTS. Execute SAST analysis with Semgrep/SonarQube, DAST scanning with OWASP ZAP, dependency audit with Snyk/Trivy, secrets detection with GitLeaks/TruffleHog. Generate SBOM for supply chain analysis. Identify OWASP Top 10 vulnerabilities, CWE weaknesses, and CVE exposures."
|
|
39
|
+
- Output: Detailed vulnerability report with CVSS scores, exploitability analysis, attack surface mapping, secrets exposure report, SBOM inventory
|
|
40
|
+
- Context: Initial baseline for all remediation efforts
|
|
41
|
+
|
|
42
|
+
### 2. Threat Modeling and Risk Analysis
|
|
43
|
+
- Use Task tool with subagent_type="security-auditor"
|
|
44
|
+
- Prompt: "Conduct threat modeling using STRIDE methodology for: $ARGUMENTS. Analyze attack vectors, create attack trees, assess business impact of identified vulnerabilities. Map threats to MITRE ATT&CK framework. Prioritize risks based on likelihood and impact."
|
|
45
|
+
- Output: Threat model diagrams, risk matrix with prioritized vulnerabilities, attack scenario documentation, business impact analysis
|
|
46
|
+
- Context: Uses vulnerability scan results to inform threat priorities
|
|
47
|
+
|
|
48
|
+
### 3. Architecture Security Review
|
|
49
|
+
- Use Task tool with subagent_type="backend-api-security::backend-architect"
|
|
50
|
+
- Prompt: "Review architecture for security weaknesses in: $ARGUMENTS. Evaluate service boundaries, data flow security, authentication/authorization architecture, encryption implementation, network segmentation. Design zero-trust architecture patterns. Reference threat model and vulnerability findings."
|
|
51
|
+
- Output: Security architecture assessment, zero-trust design recommendations, service mesh security requirements, data classification matrix
|
|
52
|
+
- Context: Incorporates threat model to address architectural vulnerabilities
|
|
53
|
+
|
|
54
|
+
## Phase 2: Vulnerability Remediation
|
|
55
|
+
|
|
56
|
+
### 4. Critical Vulnerability Fixes
|
|
57
|
+
- Use Task tool with subagent_type="security-auditor"
|
|
58
|
+
- Prompt: "Coordinate immediate remediation of critical vulnerabilities (CVSS 7+) in: $ARGUMENTS. Fix SQL injections with parameterized queries, XSS with output encoding, authentication bypasses with secure session management, insecure deserialization with input validation. Apply security patches for CVEs."
|
|
59
|
+
- Output: Patched code with vulnerability fixes, security patch documentation, regression test requirements
|
|
60
|
+
- Context: Addresses high-priority items from vulnerability assessment
|
|
61
|
+
|
|
62
|
+
### 5. Backend Security Hardening
|
|
63
|
+
- Use Task tool with subagent_type="backend-api-security::backend-security-coder"
|
|
64
|
+
- Prompt: "Implement comprehensive backend security controls for: $ARGUMENTS. Add input validation with OWASP ESAPI, implement rate limiting and DDoS protection, secure API endpoints with OAuth2/JWT validation, add encryption for data at rest/transit using AES-256/TLS 1.3. Implement secure logging without PII exposure."
|
|
65
|
+
- Output: Hardened API endpoints, validation middleware, encryption implementation, secure configuration templates
|
|
66
|
+
- Context: Builds upon vulnerability fixes with preventive controls
|
|
67
|
+
|
|
68
|
+
### 6. Frontend Security Implementation
|
|
69
|
+
- Use Task tool with subagent_type="frontend-mobile-security::frontend-security-coder"
|
|
70
|
+
- Prompt: "Implement frontend security measures for: $ARGUMENTS. Configure CSP headers with nonce-based policies, implement XSS prevention with DOMPurify, secure authentication flows with PKCE OAuth2, add SRI for external resources, implement secure cookie handling with SameSite/HttpOnly/Secure flags."
|
|
71
|
+
- Output: Secure frontend components, CSP policy configuration, authentication flow implementation, security headers configuration
|
|
72
|
+
- Context: Complements backend security with client-side protections
|
|
73
|
+
|
|
74
|
+
### 7. Mobile Security Hardening
|
|
75
|
+
- Use Task tool with subagent_type="frontend-mobile-security::mobile-security-coder"
|
|
76
|
+
- Prompt: "Implement mobile app security for: $ARGUMENTS. Add certificate pinning, implement biometric authentication, secure local storage with encryption, obfuscate code with ProGuard/R8, implement anti-tampering and root/jailbreak detection, secure IPC communications."
|
|
77
|
+
- Output: Hardened mobile application, security configuration files, obfuscation rules, certificate pinning implementation
|
|
78
|
+
- Context: Extends security to mobile platforms if applicable
|
|
79
|
+
|
|
80
|
+
## Phase 3: Security Controls Implementation
|
|
81
|
+
|
|
82
|
+
### 8. Authentication and Authorization Enhancement
|
|
83
|
+
- Use Task tool with subagent_type="security-auditor"
|
|
84
|
+
- Prompt: "Implement modern authentication system for: $ARGUMENTS. Deploy OAuth2/OIDC with PKCE, implement MFA with TOTP/WebAuthn/FIDO2, add risk-based authentication, implement RBAC/ABAC with principle of least privilege, add session management with secure token rotation."
|
|
85
|
+
- Output: Authentication service configuration, MFA implementation, authorization policies, session management system
|
|
86
|
+
- Context: Strengthens access controls based on architecture review
|
|
87
|
+
|
|
88
|
+
### 9. Infrastructure Security Controls
|
|
89
|
+
- Use Task tool with subagent_type="deployment-strategies::deployment-engineer"
|
|
90
|
+
- Prompt: "Deploy infrastructure security controls for: $ARGUMENTS. Configure WAF rules for OWASP protection, implement network segmentation with micro-segmentation, deploy IDS/IPS systems, configure cloud security groups and NACLs, implement DDoS protection with rate limiting and geo-blocking."
|
|
91
|
+
- Output: WAF configuration, network security policies, IDS/IPS rules, cloud security configurations
|
|
92
|
+
- Context: Implements network-level defenses
|
|
93
|
+
|
|
94
|
+
### 10. Secrets Management Implementation
|
|
95
|
+
- Use Task tool with subagent_type="deployment-strategies::deployment-engineer"
|
|
96
|
+
- Prompt: "Implement enterprise secrets management for: $ARGUMENTS. Deploy HashiCorp Vault or AWS Secrets Manager, implement secret rotation policies, remove hardcoded secrets, configure least-privilege IAM roles, implement encryption key management with HSM support."
|
|
97
|
+
- Output: Secrets management configuration, rotation policies, IAM role definitions, key management procedures
|
|
98
|
+
- Context: Eliminates secrets exposure vulnerabilities
|
|
99
|
+
|
|
100
|
+
## Phase 4: Validation and Compliance
|
|
101
|
+
|
|
102
|
+
### 11. Penetration Testing and Validation
|
|
103
|
+
- Use Task tool with subagent_type="security-auditor"
|
|
104
|
+
- Prompt: "Execute comprehensive penetration testing for: $ARGUMENTS. Perform authenticated and unauthenticated testing, API security testing, business logic testing, privilege escalation attempts. Use Burp Suite, Metasploit, and custom exploits. Validate all security controls effectiveness."
|
|
105
|
+
- Output: Penetration test report, proof-of-concept exploits, remediation validation, security control effectiveness metrics
|
|
106
|
+
- Context: Validates all implemented security measures
|
|
107
|
+
|
|
108
|
+
### 12. Compliance and Standards Verification
|
|
109
|
+
- Use Task tool with subagent_type="security-auditor"
|
|
110
|
+
- Prompt: "Verify compliance with security frameworks for: $ARGUMENTS. Validate against OWASP ASVS Level 2, CIS Benchmarks, SOC2 Type II requirements, GDPR/CCPA privacy controls, HIPAA/PCI-DSS if applicable. Generate compliance attestation reports."
|
|
111
|
+
- Output: Compliance assessment report, gap analysis, remediation requirements, audit evidence collection
|
|
112
|
+
- Context: Ensures regulatory and industry standard compliance
|
|
113
|
+
|
|
114
|
+
### 13. Security Monitoring and SIEM Integration
|
|
115
|
+
- Use Task tool with subagent_type="incident-response::devops-troubleshooter"
|
|
116
|
+
- Prompt: "Implement security monitoring and SIEM for: $ARGUMENTS. Deploy Splunk/ELK/Sentinel integration, configure security event correlation, implement behavioral analytics for anomaly detection, set up automated incident response playbooks, create security dashboards and alerting."
|
|
117
|
+
- Output: SIEM configuration, correlation rules, incident response playbooks, security dashboards, alert definitions
|
|
118
|
+
- Context: Establishes continuous security monitoring
|
|
119
|
+
|
|
120
|
+
## Configuration Options
|
|
121
|
+
- scanning_depth: "quick" | "standard" | "comprehensive" (default: comprehensive)
|
|
122
|
+
- compliance_frameworks: ["OWASP", "CIS", "SOC2", "GDPR", "HIPAA", "PCI-DSS"]
|
|
123
|
+
- remediation_priority: "cvss_score" | "exploitability" | "business_impact"
|
|
124
|
+
- monitoring_integration: "splunk" | "elastic" | "sentinel" | "custom"
|
|
125
|
+
- authentication_methods: ["oauth2", "saml", "mfa", "biometric", "passwordless"]
|
|
126
|
+
|
|
127
|
+
## Success Criteria
|
|
128
|
+
- All critical vulnerabilities (CVSS 7+) remediated
|
|
129
|
+
- OWASP Top 10 vulnerabilities addressed
|
|
130
|
+
- Zero high-risk findings in penetration testing
|
|
131
|
+
- Compliance frameworks validation passed
|
|
132
|
+
- Security monitoring detecting and alerting on threats
|
|
133
|
+
- Incident response time < 15 minutes for critical alerts
|
|
134
|
+
- SBOM generated and vulnerabilities tracked
|
|
135
|
+
- All secrets managed through secure vault
|
|
136
|
+
- Authentication implements MFA and secure session management
|
|
137
|
+
- Security tests integrated into CI/CD pipeline
|
|
138
|
+
|
|
139
|
+
## Coordination Notes
|
|
140
|
+
- Each phase provides detailed findings that inform subsequent phases
|
|
141
|
+
- Security-auditor agent coordinates with domain-specific agents for fixes
|
|
142
|
+
- All code changes undergo security review before implementation
|
|
143
|
+
- Continuous feedback loop between assessment and remediation
|
|
144
|
+
- Security findings tracked in centralized vulnerability management system
|
|
145
|
+
- Regular security reviews scheduled post-implementation
|
|
146
|
+
|
|
147
|
+
Security hardening target: $ARGUMENTS
|
|
148
|
+
|
|
149
|
+
## Attack Surface Review Protocol
|
|
150
|
+
|
|
151
|
+
This protocol runs during `/create-prd-security`. Universal checks apply to all projects. Surface-specific checks are conditional — they run only if the corresponding surface has been confirmed during `/create-prd-stack`.
|
|
152
|
+
|
|
153
|
+
### Universal Checks (All Projects)
|
|
154
|
+
|
|
155
|
+
#### 1. Secret Management
|
|
156
|
+
|
|
157
|
+
Where secrets are stored (env vars, vault, cloud secret manager), access policy, rotation cadence, CI injection method (environment variables, OIDC, sealed secrets).
|
|
158
|
+
|
|
159
|
+
Document under `## Security — Attack Surface > Secret Management`.
|
|
160
|
+
|
|
161
|
+
#### 2. Dependency Audit Cadence
|
|
162
|
+
|
|
163
|
+
Scan frequency; CI gate behavior on critical CVE (block merge, warn, ignore); triage policy for high-severity CVEs (patch within N days) and medium-severity CVEs (patch within N days or accept-with-justification).
|
|
164
|
+
|
|
165
|
+
Document under `## Security — Attack Surface > Dependency Auditing`.
|
|
166
|
+
|
|
167
|
+
### Web Surface Checks (If Web Surface Confirmed)
|
|
168
|
+
|
|
169
|
+
#### 1. OWASP Top 10 Review
|
|
170
|
+
|
|
171
|
+
For each of the 10 categories, name the specific mechanism that mitigates it.
|
|
172
|
+
|
|
173
|
+
**Rule:** "Handled by framework" is not acceptable — name the framework feature, the configuration, and the fallback if the framework is bypassed.
|
|
174
|
+
|
|
175
|
+
Document under `## Security — Attack Surface > Web > OWASP Top 10`.
|
|
176
|
+
|
|
177
|
+
#### 2. Security Headers
|
|
178
|
+
|
|
179
|
+
Configured values for each of the following headers:
|
|
180
|
+
|
|
181
|
+
- `Content-Security-Policy`
|
|
182
|
+
- `Strict-Transport-Security`
|
|
183
|
+
- `X-Content-Type-Options`
|
|
184
|
+
- `X-Frame-Options`
|
|
185
|
+
- `Referrer-Policy`
|
|
186
|
+
- `Permissions-Policy`
|
|
187
|
+
|
|
188
|
+
**Rule:** Each header must have a specific value, not just "enabled".
|
|
189
|
+
|
|
190
|
+
Document under `## Security — Attack Surface > Web > Security Headers`.
|
|
191
|
+
|
|
192
|
+
### API Surface Checks (If API Surface Confirmed)
|
|
193
|
+
|
|
194
|
+
#### 1. OWASP API Security Top 10
|
|
195
|
+
|
|
196
|
+
For each category, name the mechanism that mitigates it.
|
|
197
|
+
|
|
198
|
+
**Special emphasis:** BOLA/IDOR requires a per-endpoint ownership check strategy — name how each endpoint verifies the requesting user owns the requested resource.
|
|
199
|
+
|
|
200
|
+
Document under `## Security — Attack Surface > API > OWASP API Top 10`.
|
|
201
|
+
|
|
202
|
+
### Desktop Surface Checks (If Desktop Surface Confirmed)
|
|
203
|
+
|
|
204
|
+
#### 1. Sandboxing Model
|
|
205
|
+
|
|
206
|
+
Sandboxing strategy, IPC security boundaries, auto-update verification, code signing chain.
|
|
207
|
+
|
|
208
|
+
#### 2. Notarization
|
|
209
|
+
|
|
210
|
+
Notarization workflow (macOS notarization, Windows SmartScreen signing), signing certificate source, CI step that performs notarization.
|
|
211
|
+
|
|
212
|
+
#### 3. Local Data Encryption
|
|
213
|
+
|
|
214
|
+
Strategy for encrypting sensitive data at rest (encryption library, key storage mechanism, what data is encrypted).
|
|
215
|
+
|
|
216
|
+
Document all three under `## Security — Attack Surface > Desktop`.
|
|
217
|
+
|
|
218
|
+
### Mobile Surface Checks (If Mobile Surface Confirmed)
|
|
219
|
+
|
|
220
|
+
#### 1. Mobile-Specific Threats
|
|
221
|
+
|
|
222
|
+
Certificate pinning strategy, secure storage approach, jailbreak/root detection policy, deep link validation.
|
|
223
|
+
|
|
224
|
+
Document under `## Security — Attack Surface > Mobile`.
|
|
225
|
+
|
|
226
|
+
### User Presentation Prompts
|
|
227
|
+
|
|
228
|
+
Present these two questions to the user for confirmation:
|
|
229
|
+
|
|
230
|
+
1. "Are there any attack vectors I've missed for your specific domain?"
|
|
231
|
+
2. "Do the OWASP mechanisms look correct, or are any of them actually handled differently?"
|