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,560 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dependency-auditing
|
|
3
|
+
description: "Dependency security auditing: npm audit, Snyk, Socket.dev, Dependabot, supply chain attack prevention, lockfile integrity, SBOM generation, CVE monitoring, and CI integration for blocking vulnerable dependencies. Use when auditing project dependencies, setting up automated security scanning, or responding to vulnerability alerts."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Dependency Security Auditing
|
|
8
|
+
|
|
9
|
+
**Status**: Production Ready
|
|
10
|
+
**Last Updated**: 2026-02-17
|
|
11
|
+
**Dependencies**: None (standalone skill)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Use This Skill When
|
|
16
|
+
|
|
17
|
+
- Auditing project dependencies for known vulnerabilities
|
|
18
|
+
- Setting up automated dependency security scanning in CI/CD
|
|
19
|
+
- Responding to CVE alerts or vulnerability disclosures
|
|
20
|
+
- Evaluating new dependencies before adding them to a project
|
|
21
|
+
- Implementing supply chain security controls
|
|
22
|
+
- Generating Software Bills of Materials (SBOMs)
|
|
23
|
+
- Configuring Dependabot, Renovate, or similar update tools
|
|
24
|
+
|
|
25
|
+
## Do Not Use This Skill When
|
|
26
|
+
|
|
27
|
+
- You need application-level security patterns (use owasp-web-security skill)
|
|
28
|
+
- You need to configure CSP or CORS headers (use csp-cors-headers skill)
|
|
29
|
+
- You need cryptographic implementation guidance (use crypto-patterns skill)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## npm audit
|
|
34
|
+
|
|
35
|
+
Built into npm. Checks installed packages against the npm advisory database.
|
|
36
|
+
|
|
37
|
+
### Running Audits
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Basic audit -- shows all known vulnerabilities
|
|
41
|
+
npm audit
|
|
42
|
+
|
|
43
|
+
# JSON output for programmatic processing
|
|
44
|
+
npm audit --json
|
|
45
|
+
|
|
46
|
+
# Only show production dependencies (skip devDependencies)
|
|
47
|
+
npm audit --omit=dev
|
|
48
|
+
|
|
49
|
+
# Automatically fix vulnerabilities where possible
|
|
50
|
+
npm audit fix
|
|
51
|
+
|
|
52
|
+
# Force major version bumps if needed (review changes carefully)
|
|
53
|
+
npm audit fix --force
|
|
54
|
+
|
|
55
|
+
# Audit specific severity levels
|
|
56
|
+
npm audit --audit-level=high
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### CI Integration
|
|
60
|
+
|
|
61
|
+
```yaml
|
|
62
|
+
# GitHub Actions -- fail build on high/critical vulnerabilities
|
|
63
|
+
name: Security Audit
|
|
64
|
+
on: [push, pull_request]
|
|
65
|
+
|
|
66
|
+
jobs:
|
|
67
|
+
audit:
|
|
68
|
+
runs-on: ubuntu-latest
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/checkout@v4
|
|
71
|
+
- uses: actions/setup-node@v4
|
|
72
|
+
with:
|
|
73
|
+
node-version: 20
|
|
74
|
+
- run: npm ci
|
|
75
|
+
- run: npm audit --audit-level=high
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Understanding Audit Output
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
# Example output
|
|
82
|
+
high Prototype Pollution in lodash
|
|
83
|
+
Package lodash
|
|
84
|
+
Patched in >=4.17.21
|
|
85
|
+
Dependency of my-app > old-lib > lodash
|
|
86
|
+
Path my-app > old-lib > lodash
|
|
87
|
+
More info https://github.com/advisories/GHSA-xxxx
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Key fields:
|
|
91
|
+
- **Severity**: critical, high, moderate, low
|
|
92
|
+
- **Patched in**: Version range that includes the fix
|
|
93
|
+
- **Path**: The dependency chain that pulls in the vulnerable package
|
|
94
|
+
- **More info**: Link to the full advisory
|
|
95
|
+
|
|
96
|
+
### Handling Audit Results
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
// scripts/audit-check.ts -- custom audit processing
|
|
100
|
+
import { execSync } from "child_process";
|
|
101
|
+
|
|
102
|
+
interface AuditResult {
|
|
103
|
+
vulnerabilities: Record<string, {
|
|
104
|
+
severity: "critical" | "high" | "moderate" | "low";
|
|
105
|
+
via: string[];
|
|
106
|
+
fixAvailable: boolean;
|
|
107
|
+
}>;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function checkAudit(): void {
|
|
111
|
+
try {
|
|
112
|
+
execSync("npm audit --json", { encoding: "utf8" });
|
|
113
|
+
console.log("No vulnerabilities found.");
|
|
114
|
+
} catch (error: any) {
|
|
115
|
+
const result: AuditResult = JSON.parse(error.stdout);
|
|
116
|
+
const critical = Object.entries(result.vulnerabilities)
|
|
117
|
+
.filter(([, v]) => v.severity === "critical" || v.severity === "high");
|
|
118
|
+
|
|
119
|
+
if (critical.length > 0) {
|
|
120
|
+
console.error(`Found ${critical.length} high/critical vulnerabilities:`);
|
|
121
|
+
for (const [name, info] of critical) {
|
|
122
|
+
console.error(` - ${name} (${info.severity}), fix available: ${info.fixAvailable}`);
|
|
123
|
+
}
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
console.warn("Only moderate/low vulnerabilities found. Proceeding.");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
checkAudit();
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Snyk
|
|
137
|
+
|
|
138
|
+
Commercial vulnerability scanner with a free tier. Provides deeper analysis
|
|
139
|
+
than npm audit, including license compliance and fix PRs.
|
|
140
|
+
|
|
141
|
+
### Setup
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Install Snyk CLI
|
|
145
|
+
npm install -g snyk
|
|
146
|
+
|
|
147
|
+
# Authenticate
|
|
148
|
+
snyk auth
|
|
149
|
+
|
|
150
|
+
# Test project for vulnerabilities
|
|
151
|
+
snyk test
|
|
152
|
+
|
|
153
|
+
# Monitor project (creates a snapshot in Snyk dashboard)
|
|
154
|
+
snyk monitor
|
|
155
|
+
|
|
156
|
+
# Test a specific package before installing
|
|
157
|
+
snyk test lodash@4.17.20
|
|
158
|
+
|
|
159
|
+
# Test only production dependencies
|
|
160
|
+
snyk test --production
|
|
161
|
+
|
|
162
|
+
# Output as JSON
|
|
163
|
+
snyk test --json
|
|
164
|
+
|
|
165
|
+
# Set severity threshold
|
|
166
|
+
snyk test --severity-threshold=high
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### CI Integration
|
|
170
|
+
|
|
171
|
+
```yaml
|
|
172
|
+
# GitHub Actions with Snyk
|
|
173
|
+
name: Snyk Security
|
|
174
|
+
on: [push, pull_request]
|
|
175
|
+
|
|
176
|
+
jobs:
|
|
177
|
+
snyk:
|
|
178
|
+
runs-on: ubuntu-latest
|
|
179
|
+
steps:
|
|
180
|
+
- uses: actions/checkout@v4
|
|
181
|
+
- uses: snyk/actions/node@master
|
|
182
|
+
env:
|
|
183
|
+
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
|
|
184
|
+
with:
|
|
185
|
+
args: --severity-threshold=high
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Snyk Configuration
|
|
189
|
+
|
|
190
|
+
```yaml
|
|
191
|
+
# .snyk file -- policy configuration
|
|
192
|
+
version: v1.25.0
|
|
193
|
+
ignore:
|
|
194
|
+
SNYK-JS-LODASH-590103:
|
|
195
|
+
- "*":
|
|
196
|
+
reason: "Not exploitable in our usage context"
|
|
197
|
+
expires: "2026-06-01T00:00:00.000Z"
|
|
198
|
+
patch: {}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Socket.dev
|
|
204
|
+
|
|
205
|
+
Focuses on supply chain security -- detects malicious packages, typosquatting,
|
|
206
|
+
install scripts, and suspicious behavior patterns that traditional vulnerability
|
|
207
|
+
scanners miss.
|
|
208
|
+
|
|
209
|
+
### What Socket Detects
|
|
210
|
+
|
|
211
|
+
| Threat | Description | Example |
|
|
212
|
+
|--------|-------------|---------|
|
|
213
|
+
| Typosquatting | Packages with names similar to popular ones | `lodahs` instead of `lodash` |
|
|
214
|
+
| Install scripts | Packages that run code during `npm install` | `postinstall` scripts that exfiltrate env vars |
|
|
215
|
+
| Obfuscated code | Minified or encoded code in published packages | Base64-encoded payloads |
|
|
216
|
+
| Network access | Packages that make HTTP requests | Telemetry or data exfiltration |
|
|
217
|
+
| Shell access | Packages that spawn shell commands | `child_process.exec()` calls |
|
|
218
|
+
| Environment access | Packages that read environment variables | Stealing API keys from `process.env` |
|
|
219
|
+
| Filesystem access | Packages that read/write unexpected files | Reading SSH keys or credentials |
|
|
220
|
+
|
|
221
|
+
### GitHub Integration
|
|
222
|
+
|
|
223
|
+
Socket.dev provides a GitHub App that automatically comments on PRs when new
|
|
224
|
+
dependencies are added. Install from: https://github.com/apps/socket-security
|
|
225
|
+
|
|
226
|
+
### Manual Checks
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# Check a specific package on socket.dev
|
|
230
|
+
# Visit: https://socket.dev/npm/package/<package-name>
|
|
231
|
+
|
|
232
|
+
# Review before installing
|
|
233
|
+
# Look for:
|
|
234
|
+
# - Number of maintainers (single maintainer = higher risk)
|
|
235
|
+
# - Recent ownership transfers
|
|
236
|
+
# - Install scripts
|
|
237
|
+
# - Network/filesystem access patterns
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## GitHub Dependabot
|
|
243
|
+
|
|
244
|
+
Automated dependency update PRs with vulnerability alerts.
|
|
245
|
+
|
|
246
|
+
### Configuration
|
|
247
|
+
|
|
248
|
+
```yaml
|
|
249
|
+
# .github/dependabot.yml
|
|
250
|
+
version: 2
|
|
251
|
+
updates:
|
|
252
|
+
# npm dependencies
|
|
253
|
+
- package-ecosystem: "npm"
|
|
254
|
+
directory: "/"
|
|
255
|
+
schedule:
|
|
256
|
+
interval: "weekly"
|
|
257
|
+
day: "monday"
|
|
258
|
+
time: "09:00"
|
|
259
|
+
timezone: "America/New_York"
|
|
260
|
+
open-pull-requests-limit: 10
|
|
261
|
+
reviewers:
|
|
262
|
+
- "security-team"
|
|
263
|
+
labels:
|
|
264
|
+
- "dependencies"
|
|
265
|
+
- "security"
|
|
266
|
+
# Group minor and patch updates together
|
|
267
|
+
groups:
|
|
268
|
+
production-dependencies:
|
|
269
|
+
dependency-type: "production"
|
|
270
|
+
update-types:
|
|
271
|
+
- "minor"
|
|
272
|
+
- "patch"
|
|
273
|
+
dev-dependencies:
|
|
274
|
+
dependency-type: "development"
|
|
275
|
+
update-types:
|
|
276
|
+
- "minor"
|
|
277
|
+
- "patch"
|
|
278
|
+
# Ignore specific packages
|
|
279
|
+
ignore:
|
|
280
|
+
- dependency-name: "aws-sdk"
|
|
281
|
+
update-types: ["version-update:semver-major"]
|
|
282
|
+
# Allow only specific update types
|
|
283
|
+
allow:
|
|
284
|
+
- dependency-type: "direct"
|
|
285
|
+
|
|
286
|
+
# GitHub Actions
|
|
287
|
+
- package-ecosystem: "github-actions"
|
|
288
|
+
directory: "/"
|
|
289
|
+
schedule:
|
|
290
|
+
interval: "weekly"
|
|
291
|
+
|
|
292
|
+
# Docker
|
|
293
|
+
- package-ecosystem: "docker"
|
|
294
|
+
directory: "/"
|
|
295
|
+
schedule:
|
|
296
|
+
interval: "weekly"
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Dependabot Security Updates vs Version Updates
|
|
300
|
+
|
|
301
|
+
| Feature | Security Updates | Version Updates |
|
|
302
|
+
|---------|-----------------|-----------------|
|
|
303
|
+
| Triggered by | CVE advisory | Scheduled check |
|
|
304
|
+
| Auto-enabled | Yes (for public repos) | No (requires config) |
|
|
305
|
+
| Scope | Vulnerable packages only | All outdated packages |
|
|
306
|
+
| Priority | Immediate | Scheduled |
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## Supply Chain Attack Prevention
|
|
311
|
+
|
|
312
|
+
### Dependency Confusion
|
|
313
|
+
|
|
314
|
+
Attackers publish public packages with the same name as internal/private packages.
|
|
315
|
+
npm resolves the public registry version, pulling in malicious code.
|
|
316
|
+
|
|
317
|
+
```json
|
|
318
|
+
// .npmrc -- prevent dependency confusion
|
|
319
|
+
// Scope your private packages and use a private registry
|
|
320
|
+
@mycompany:registry=https://npm.mycompany.com/
|
|
321
|
+
//npm.mycompany.com/:_authToken=${NPM_TOKEN}
|
|
322
|
+
|
|
323
|
+
// Disable public fallback for scoped packages
|
|
324
|
+
@mycompany:always-auth=true
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
```json
|
|
328
|
+
// package.json -- use scoped packages for internal code
|
|
329
|
+
{
|
|
330
|
+
"name": "@mycompany/web-app",
|
|
331
|
+
"dependencies": {
|
|
332
|
+
"@mycompany/shared-utils": "^1.0.0",
|
|
333
|
+
"@mycompany/auth-lib": "^2.0.0"
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### Typosquatting Prevention
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
# Before installing any package, verify:
|
|
342
|
+
# 1. Package name is spelled correctly
|
|
343
|
+
# 2. Package has significant download numbers
|
|
344
|
+
# 3. Package is maintained by expected author/org
|
|
345
|
+
# 4. Package has a public repository linked
|
|
346
|
+
|
|
347
|
+
# Use npx to check package info before installing
|
|
348
|
+
npm info <package-name>
|
|
349
|
+
|
|
350
|
+
# Check for known typosquats
|
|
351
|
+
# Visit: https://socket.dev/npm/package/<package-name>
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Lockfile Integrity
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
# ALWAYS use npm ci in CI/CD (respects lockfile exactly)
|
|
358
|
+
npm ci
|
|
359
|
+
|
|
360
|
+
# NEVER use npm install in CI/CD (may modify lockfile)
|
|
361
|
+
# npm install <-- DO NOT USE IN CI
|
|
362
|
+
|
|
363
|
+
# Verify lockfile integrity
|
|
364
|
+
npm audit signatures
|
|
365
|
+
|
|
366
|
+
# Git hook to prevent unlocked dependencies
|
|
367
|
+
# .husky/pre-commit
|
|
368
|
+
npm ci --ignore-scripts && git diff --exit-code package-lock.json
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
```yaml
|
|
372
|
+
# CI pipeline -- verify lockfile has not been tampered with
|
|
373
|
+
- name: Verify lockfile integrity
|
|
374
|
+
run: |
|
|
375
|
+
npm ci
|
|
376
|
+
git diff --exit-code package-lock.json || (echo "Lockfile was modified unexpectedly" && exit 1)
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
### Pinning Strategies
|
|
380
|
+
|
|
381
|
+
| Strategy | Syntax | Pros | Cons |
|
|
382
|
+
|----------|--------|------|------|
|
|
383
|
+
| Exact pinning | `"lodash": "4.17.21"` | Maximum reproducibility | Manual updates needed |
|
|
384
|
+
| Tilde (patch) | `"lodash": "~4.17.21"` | Auto-patch updates | Minor versions skipped |
|
|
385
|
+
| Caret (minor) | `"lodash": "^4.17.21"` | Auto-minor+patch updates | More risk than pinning |
|
|
386
|
+
| Lockfile-only | `"lodash": "^4.17.21"` + lockfile | Flexibility + reproducibility | Requires `npm ci` discipline |
|
|
387
|
+
|
|
388
|
+
**Recommendation**: Use caret ranges in `package.json` with strict lockfile
|
|
389
|
+
enforcement (`npm ci` in CI). This gives you Dependabot-friendly updates with
|
|
390
|
+
reproducible builds.
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## Software Bill of Materials (SBOM)
|
|
395
|
+
|
|
396
|
+
An SBOM is a complete inventory of all software components in your application.
|
|
397
|
+
Required for supply chain transparency and some compliance frameworks.
|
|
398
|
+
|
|
399
|
+
### Generating SBOMs
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
# CycloneDX format (recommended)
|
|
403
|
+
npx @cyclonedx/cyclonedx-npm --output-file sbom.json
|
|
404
|
+
|
|
405
|
+
# SPDX format
|
|
406
|
+
npx spdx-sbom-generator -o sbom-spdx.json
|
|
407
|
+
|
|
408
|
+
# GitHub automatically generates SBOMs
|
|
409
|
+
# Settings > Code security and analysis > Dependency graph
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
### SBOM in CI/CD
|
|
413
|
+
|
|
414
|
+
```yaml
|
|
415
|
+
# Generate and upload SBOM as build artifact
|
|
416
|
+
- name: Generate SBOM
|
|
417
|
+
run: npx @cyclonedx/cyclonedx-npm --output-file sbom.json
|
|
418
|
+
|
|
419
|
+
- name: Upload SBOM
|
|
420
|
+
uses: actions/upload-artifact@v4
|
|
421
|
+
with:
|
|
422
|
+
name: sbom
|
|
423
|
+
path: sbom.json
|
|
424
|
+
retention-days: 90
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## License Compliance
|
|
430
|
+
|
|
431
|
+
### SPDX License Identifiers
|
|
432
|
+
|
|
433
|
+
| License | SPDX ID | Commercial Use | Copyleft |
|
|
434
|
+
|---------|---------|----------------|----------|
|
|
435
|
+
| MIT | MIT | Yes | No |
|
|
436
|
+
| Apache 2.0 | Apache-2.0 | Yes | No |
|
|
437
|
+
| BSD 2-Clause | BSD-2-Clause | Yes | No |
|
|
438
|
+
| ISC | ISC | Yes | No |
|
|
439
|
+
| GPL 3.0 | GPL-3.0-only | Yes (with conditions) | Yes (strong) |
|
|
440
|
+
| LGPL 3.0 | LGPL-3.0-only | Yes | Yes (weak) |
|
|
441
|
+
| AGPL 3.0 | AGPL-3.0-only | Yes (with conditions) | Yes (network) |
|
|
442
|
+
| Unlicense | Unlicense | Yes | No |
|
|
443
|
+
|
|
444
|
+
### Checking Licenses
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
# Check all dependency licenses
|
|
448
|
+
npx license-checker --summary
|
|
449
|
+
|
|
450
|
+
# Check for problematic licenses
|
|
451
|
+
npx license-checker --failOn "GPL-3.0-only;AGPL-3.0-only"
|
|
452
|
+
|
|
453
|
+
# Output as CSV for review
|
|
454
|
+
npx license-checker --csv --out licenses.csv
|
|
455
|
+
|
|
456
|
+
# Check specific production dependencies only
|
|
457
|
+
npx license-checker --production --summary
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
```yaml
|
|
461
|
+
# CI integration -- block copyleft licenses
|
|
462
|
+
- name: License Check
|
|
463
|
+
run: npx license-checker --production --failOn "GPL-3.0-only;AGPL-3.0-only;AGPL-3.0-or-later"
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
## CVE Database Monitoring
|
|
469
|
+
|
|
470
|
+
### Key Databases
|
|
471
|
+
|
|
472
|
+
| Database | URL | Scope |
|
|
473
|
+
|----------|-----|-------|
|
|
474
|
+
| NVD (NIST) | https://nvd.nist.gov/ | All software |
|
|
475
|
+
| GitHub Advisory Database | https://github.com/advisories | Open source packages |
|
|
476
|
+
| npm Advisories | https://www.npmjs.com/advisories | npm packages |
|
|
477
|
+
| Snyk Vulnerability DB | https://snyk.io/vuln/ | Multi-ecosystem |
|
|
478
|
+
| OSV (Google) | https://osv.dev/ | Open source |
|
|
479
|
+
|
|
480
|
+
### Monitoring Setup
|
|
481
|
+
|
|
482
|
+
```yaml
|
|
483
|
+
# GitHub Actions -- scheduled vulnerability scan
|
|
484
|
+
name: Scheduled Security Scan
|
|
485
|
+
on:
|
|
486
|
+
schedule:
|
|
487
|
+
- cron: "0 8 * * 1-5" # Weekdays at 8 AM UTC
|
|
488
|
+
workflow_dispatch: {}
|
|
489
|
+
|
|
490
|
+
jobs:
|
|
491
|
+
scan:
|
|
492
|
+
runs-on: ubuntu-latest
|
|
493
|
+
steps:
|
|
494
|
+
- uses: actions/checkout@v4
|
|
495
|
+
- uses: actions/setup-node@v4
|
|
496
|
+
with:
|
|
497
|
+
node-version: 20
|
|
498
|
+
- run: npm ci
|
|
499
|
+
- run: npm audit --audit-level=high
|
|
500
|
+
- name: Notify on failure
|
|
501
|
+
if: failure()
|
|
502
|
+
uses: slackapi/slack-github-action@v1
|
|
503
|
+
with:
|
|
504
|
+
payload: |
|
|
505
|
+
{
|
|
506
|
+
"text": "Security audit failed. Check: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
|
|
507
|
+
}
|
|
508
|
+
env:
|
|
509
|
+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }}
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## Pre-Install Evaluation Checklist
|
|
515
|
+
|
|
516
|
+
Before adding any new dependency, evaluate:
|
|
517
|
+
|
|
518
|
+
- [ ] Is the package name spelled correctly? (typosquatting check)
|
|
519
|
+
- [ ] Does it have significant weekly downloads? (>1000 for utilities)
|
|
520
|
+
- [ ] Is it actively maintained? (commits in last 6 months)
|
|
521
|
+
- [ ] Does it have multiple maintainers? (bus factor)
|
|
522
|
+
- [ ] Is the license compatible with your project?
|
|
523
|
+
- [ ] Does it have install scripts? (check `scripts` in its package.json)
|
|
524
|
+
- [ ] What are its transitive dependencies? (`npm info <pkg> dependencies`)
|
|
525
|
+
- [ ] Has it had recent security advisories?
|
|
526
|
+
- [ ] Is there a lighter alternative? (fewer deps = smaller attack surface)
|
|
527
|
+
- [ ] Can you vendor it instead? (copy source for small utilities)
|
|
528
|
+
|
|
529
|
+
---
|
|
530
|
+
|
|
531
|
+
## Anti-Patterns
|
|
532
|
+
|
|
533
|
+
| Anti-Pattern | Risk | Fix |
|
|
534
|
+
|-------------|------|-----|
|
|
535
|
+
| `npm install` in CI | Non-deterministic builds | Always use `npm ci` |
|
|
536
|
+
| Ignoring audit warnings | Known vulnerabilities in production | Fix or explicitly acknowledge with timeline |
|
|
537
|
+
| No lockfile in repo | Different installs on different machines | Commit package-lock.json |
|
|
538
|
+
| Star (`*`) version ranges | Completely unpinned dependencies | Use caret (`^`) or exact versions |
|
|
539
|
+
| No scheduled scans | New CVEs go unnoticed | Weekly automated audits |
|
|
540
|
+
| Blind `npm audit fix --force` | May break functionality | Review each fix individually |
|
|
541
|
+
| No SBOM generation | No supply chain visibility | Generate and archive SBOMs |
|
|
542
|
+
| Ignoring license compliance | Legal liability | Automated license checking in CI |
|
|
543
|
+
| Installing from tarballs/URLs | Bypasses registry integrity | Use registry packages only |
|
|
544
|
+
| No private registry for internal packages | Dependency confusion risk | Scope and configure private registry |
|
|
545
|
+
|
|
546
|
+
---
|
|
547
|
+
|
|
548
|
+
## References
|
|
549
|
+
|
|
550
|
+
- **npm audit Documentation**: https://docs.npmjs.com/cli/commands/npm-audit
|
|
551
|
+
- **Snyk Documentation**: https://docs.snyk.io/
|
|
552
|
+
- **Socket.dev**: https://socket.dev/
|
|
553
|
+
- **Dependabot Configuration**: https://docs.github.com/en/code-security/dependabot
|
|
554
|
+
- **CycloneDX SBOM Specification**: https://cyclonedx.org/
|
|
555
|
+
- **SPDX License List**: https://spdx.org/licenses/
|
|
556
|
+
- **OpenSSF Scorecard**: https://securityscorecards.dev/
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
560
|
+
**Last verified**: 2026-02-17 | **Skill version**: 1.0.0
|