@ruaruababa/vibe-kit 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/CATALOG.md +317 -0
- package/README.md +121 -0
- package/aliases.json +65 -0
- package/bin/vibe.js +2 -0
- package/bundles.json +265 -0
- package/catalog.json +1560 -0
- package/dist/antigravity-skills/bin/cli.js +438 -0
- package/dist/antigravity-skills/lib/skill-utils.js +158 -0
- package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
- package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
- package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
- package/dist/bin/vibe.js +2 -0
- package/dist/dist/src/cli/index.js +26 -0
- package/dist/lib/skill-utils.js +158 -0
- package/dist/scripts/build-catalog.js +50 -0
- package/dist/scripts/normalize-frontmatter.js +144 -0
- package/dist/scripts/validate-skills.js +56 -0
- package/dist/src/cli/index.js +146 -0
- package/dist/src/types/index.js +13 -0
- package/dist/src/utils/fs.js +1 -0
- package/package.json +43 -0
- package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
- package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
- package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
- package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
- package/skills/agent-orchestrator/SKILL.md +24 -0
- package/skills/ai-engineer/SKILL.md +171 -0
- package/skills/airflow-dag-patterns/SKILL.md +41 -0
- package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
- package/skills/angular-migration/SKILL.md +428 -0
- package/skills/anti-reversing-techniques/SKILL.md +42 -0
- package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
- package/skills/api-design-principles/SKILL.md +37 -0
- package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
- package/skills/api-documenter/SKILL.md +184 -0
- package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
- package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
- package/skills/application-performance-performance-optimization/SKILL.md +154 -0
- package/skills/architect-review/SKILL.md +174 -0
- package/skills/architecture-decision-records/SKILL.md +441 -0
- package/skills/architecture-patterns/SKILL.md +37 -0
- package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
- package/skills/arm-cortex-expert/SKILL.md +306 -0
- package/skills/async-python-patterns/SKILL.md +39 -0
- package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
- package/skills/attack-tree-construction/SKILL.md +38 -0
- package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
- package/skills/auth-implementation-patterns/SKILL.md +39 -0
- package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
- package/skills/backend-architect/SKILL.md +333 -0
- package/skills/backend-development-feature-development/SKILL.md +180 -0
- package/skills/backend-security-coder/SKILL.md +156 -0
- package/skills/backtesting-frameworks/SKILL.md +39 -0
- package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
- package/skills/bash-defensive-patterns/SKILL.md +43 -0
- package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
- package/skills/bash-pro/SKILL.md +310 -0
- package/skills/bats-testing-patterns/SKILL.md +34 -0
- package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
- package/skills/bazel-build-optimization/SKILL.md +397 -0
- package/skills/billing-automation/SKILL.md +42 -0
- package/skills/billing-automation/resources/implementation-playbook.md +544 -0
- package/skills/binary-analysis-patterns/SKILL.md +450 -0
- package/skills/blockchain-developer/SKILL.md +208 -0
- package/skills/business-analyst/SKILL.md +182 -0
- package/skills/c-pro/SKILL.md +56 -0
- package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
- package/skills/c4-code/SKILL.md +244 -0
- package/skills/c4-component/SKILL.md +153 -0
- package/skills/c4-container/SKILL.md +171 -0
- package/skills/c4-context/SKILL.md +150 -0
- package/skills/changelog-automation/SKILL.md +38 -0
- package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
- package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
- package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
- package/skills/clean-markdown/SKILL.md +23 -0
- package/skills/cloud-architect/SKILL.md +135 -0
- package/skills/code-documentation-code-explain/SKILL.md +46 -0
- package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
- package/skills/code-documentation-doc-generate/SKILL.md +48 -0
- package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/code-refactoring-context-restore/SKILL.md +179 -0
- package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
- package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
- package/skills/code-review-ai-ai-review/SKILL.md +450 -0
- package/skills/code-review-excellence/SKILL.md +40 -0
- package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
- package/skills/code-reviewer/SKILL.md +178 -0
- package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
- package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
- package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
- package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
- package/skills/competitive-landscape/SKILL.md +34 -0
- package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
- package/skills/comprehensive-review-full-review/SKILL.md +146 -0
- package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
- package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
- package/skills/conductor-implement/SKILL.md +388 -0
- package/skills/conductor-manage/SKILL.md +39 -0
- package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
- package/skills/conductor-new-track/SKILL.md +433 -0
- package/skills/conductor-revert/SKILL.md +372 -0
- package/skills/conductor-setup/SKILL.md +426 -0
- package/skills/conductor-status/SKILL.md +338 -0
- package/skills/conductor-validator/SKILL.md +62 -0
- package/skills/content-marketer/SKILL.md +170 -0
- package/skills/context-driven-development/SKILL.md +400 -0
- package/skills/context-management-context-restore/SKILL.md +179 -0
- package/skills/context-management-context-save/SKILL.md +177 -0
- package/skills/context-manager/SKILL.md +185 -0
- package/skills/cost-optimization/SKILL.md +286 -0
- package/skills/cpp-pro/SKILL.md +59 -0
- package/skills/cqrs-implementation/SKILL.md +35 -0
- package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
- package/skills/csharp-pro/SKILL.md +59 -0
- package/skills/customer-support/SKILL.md +170 -0
- package/skills/data-engineer/SKILL.md +224 -0
- package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
- package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
- package/skills/data-quality-frameworks/SKILL.md +40 -0
- package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
- package/skills/data-scientist/SKILL.md +199 -0
- package/skills/data-storytelling/SKILL.md +465 -0
- package/skills/database-admin/SKILL.md +165 -0
- package/skills/database-architect/SKILL.md +268 -0
- package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
- package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
- package/skills/database-migration/SKILL.md +436 -0
- package/skills/database-migrations-migration-observability/SKILL.md +420 -0
- package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
- package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
- package/skills/database-optimizer/SKILL.md +167 -0
- package/skills/dbt-transformation-patterns/SKILL.md +34 -0
- package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
- package/skills/debugger/SKILL.md +49 -0
- package/skills/debugging-strategies/SKILL.md +34 -0
- package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
- package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
- package/skills/defi-protocol-templates/SKILL.md +466 -0
- package/skills/dependency-management-deps-audit/SKILL.md +44 -0
- package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
- package/skills/dependency-upgrade/SKILL.md +421 -0
- package/skills/deployment-engineer/SKILL.md +170 -0
- package/skills/deployment-pipeline-design/SKILL.md +371 -0
- package/skills/deployment-validation-config-validate/SKILL.md +496 -0
- package/skills/devops-troubleshooter/SKILL.md +161 -0
- package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
- package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
- package/skills/distributed-tracing/SKILL.md +450 -0
- package/skills/django-pro/SKILL.md +180 -0
- package/skills/docs-architect/SKILL.md +98 -0
- package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
- package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
- package/skills/dotnet-architect/SKILL.md +197 -0
- package/skills/dotnet-backend-patterns/SKILL.md +37 -0
- package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
- package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
- package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
- package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
- package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
- package/skills/dummy-skill/SKILL.md +5 -0
- package/skills/dx-optimizer/SKILL.md +83 -0
- package/skills/e2e-testing-patterns/SKILL.md +41 -0
- package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
- package/skills/elixir-pro/SKILL.md +59 -0
- package/skills/embedding-strategies/SKILL.md +491 -0
- package/skills/employment-contract-templates/SKILL.md +39 -0
- package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
- package/skills/error-debugging-error-analysis/SKILL.md +47 -0
- package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-debugging-error-trace/SKILL.md +43 -0
- package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
- package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
- package/skills/error-detective/SKILL.md +53 -0
- package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
- package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
- package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
- package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
- package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
- package/skills/error-handling-patterns/SKILL.md +35 -0
- package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
- package/skills/event-sourcing-architect/SKILL.md +58 -0
- package/skills/event-store-design/SKILL.md +449 -0
- package/skills/fastapi-pro/SKILL.md +192 -0
- package/skills/fastapi-templates/SKILL.md +32 -0
- package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
- package/skills/final-test/SKILL.md +5 -0
- package/skills/firmware-analyst/SKILL.md +320 -0
- package/skills/flutter-expert/SKILL.md +200 -0
- package/skills/framework-migration-code-migrate/SKILL.md +48 -0
- package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
- package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
- package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
- package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
- package/skills/frontend-developer/SKILL.md +171 -0
- package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
- package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
- package/skills/frontend-security-coder/SKILL.md +170 -0
- package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
- package/skills/gdpr-data-handling/SKILL.md +33 -0
- package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
- package/skills/git-advanced-workflows/SKILL.md +412 -0
- package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
- package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
- package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
- package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
- package/skills/github-actions-templates/SKILL.md +345 -0
- package/skills/gitlab-ci-patterns/SKILL.md +283 -0
- package/skills/gitops-workflow/SKILL.md +303 -0
- package/skills/gitops-workflow/references/argocd-setup.md +134 -0
- package/skills/gitops-workflow/references/sync-policies.md +131 -0
- package/skills/go-concurrency-patterns/SKILL.md +33 -0
- package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
- package/skills/godot-gdscript-patterns/SKILL.md +33 -0
- package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
- package/skills/golang-pro/SKILL.md +179 -0
- package/skills/grafana-dashboards/SKILL.md +381 -0
- package/skills/graphql-architect/SKILL.md +182 -0
- package/skills/haskell-pro/SKILL.md +56 -0
- package/skills/helm-chart-scaffolding/SKILL.md +34 -0
- package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
- package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
- package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
- package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
- package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
- package/skills/hr-pro/SKILL.md +126 -0
- package/skills/hybrid-cloud-architect/SKILL.md +168 -0
- package/skills/hybrid-cloud-networking/SKILL.md +238 -0
- package/skills/hybrid-search-implementation/SKILL.md +32 -0
- package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
- package/skills/incident-responder/SKILL.md +213 -0
- package/skills/incident-response-incident-response/SKILL.md +168 -0
- package/skills/incident-response-smart-fix/SKILL.md +29 -0
- package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
- package/skills/incident-runbook-templates/SKILL.md +395 -0
- package/skills/ios-developer/SKILL.md +219 -0
- package/skills/istio-traffic-management/SKILL.md +337 -0
- package/skills/java-pro/SKILL.md +177 -0
- package/skills/javascript-pro/SKILL.md +57 -0
- package/skills/javascript-testing-patterns/SKILL.md +35 -0
- package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
- package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
- package/skills/julia-pro/SKILL.md +209 -0
- package/skills/k8s-manifest-generator/SKILL.md +35 -0
- package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
- package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
- package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
- package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
- package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
- package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
- package/skills/k8s-security-policies/SKILL.md +346 -0
- package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
- package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
- package/skills/kpi-dashboard-design/SKILL.md +440 -0
- package/skills/kubernetes-architect/SKILL.md +170 -0
- package/skills/langchain-architecture/SKILL.md +350 -0
- package/skills/legacy-modernizer/SKILL.md +53 -0
- package/skills/legal-advisor/SKILL.md +70 -0
- package/skills/linkerd-patterns/SKILL.md +321 -0
- package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
- package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
- package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
- package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
- package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
- package/skills/llm-evaluation/SKILL.md +483 -0
- package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
- package/skills/malware-analyst/SKILL.md +247 -0
- package/skills/market-sizing-analysis/SKILL.md +425 -0
- package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
- package/skills/market-sizing-analysis/references/data-sources.md +360 -0
- package/skills/memory-forensics/SKILL.md +491 -0
- package/skills/memory-safety-patterns/SKILL.md +33 -0
- package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
- package/skills/mermaid-expert/SKILL.md +59 -0
- package/skills/microservices-patterns/SKILL.md +35 -0
- package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
- package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
- package/skills/ml-engineer/SKILL.md +168 -0
- package/skills/ml-pipeline-workflow/SKILL.md +257 -0
- package/skills/mlops-engineer/SKILL.md +219 -0
- package/skills/mobile-developer/SKILL.md +205 -0
- package/skills/mobile-security-coder/SKILL.md +184 -0
- package/skills/modern-javascript-patterns/SKILL.md +35 -0
- package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
- package/skills/monorepo-architect/SKILL.md +61 -0
- package/skills/monorepo-management/SKILL.md +35 -0
- package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
- package/skills/mtls-configuration/SKILL.md +359 -0
- package/skills/multi-cloud-architecture/SKILL.md +189 -0
- package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
- package/skills/network-engineer/SKILL.md +169 -0
- package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
- package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
- package/skills/nft-standards/SKILL.md +395 -0
- package/skills/node-expert/SKILL.md +23 -0
- package/skills/nodejs-backend-patterns/SKILL.md +35 -0
- package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
- package/skills/nx-workspace-patterns/SKILL.md +464 -0
- package/skills/observability-engineer/SKILL.md +237 -0
- package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
- package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
- package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
- package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
- package/skills/on-call-handoff-patterns/SKILL.md +453 -0
- package/skills/openapi-spec-generation/SKILL.md +33 -0
- package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
- package/skills/payment-integration/SKILL.md +77 -0
- package/skills/paypal-integration/SKILL.md +479 -0
- package/skills/pci-compliance/SKILL.md +478 -0
- package/skills/performance-engineer/SKILL.md +180 -0
- package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
- package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
- package/skills/php-pro/SKILL.md +63 -0
- package/skills/posix-shell-pro/SKILL.md +304 -0
- package/skills/postgresql/SKILL.md +230 -0
- package/skills/postmortem-writing/SKILL.md +386 -0
- package/skills/projection-patterns/SKILL.md +33 -0
- package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
- package/skills/prometheus-configuration/SKILL.md +404 -0
- package/skills/prompt-engineer/SKILL.md +272 -0
- package/skills/prompt-engineering-patterns/SKILL.md +213 -0
- package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
- package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
- package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
- package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
- package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
- package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
- package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
- package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
- package/skills/protocol-reverse-engineering/SKILL.md +29 -0
- package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
- package/skills/python-development-python-scaffold/SKILL.md +331 -0
- package/skills/python-packaging/SKILL.md +36 -0
- package/skills/python-packaging/resources/implementation-playbook.md +869 -0
- package/skills/python-performance-optimization/SKILL.md +36 -0
- package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
- package/skills/python-pro/SKILL.md +158 -0
- package/skills/python-testing-patterns/SKILL.md +37 -0
- package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
- package/skills/quant-analyst/SKILL.md +53 -0
- package/skills/rag-implementation/SKILL.md +421 -0
- package/skills/react-modernization/SKILL.md +34 -0
- package/skills/react-modernization/resources/implementation-playbook.md +512 -0
- package/skills/react-native-architecture/SKILL.md +33 -0
- package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
- package/skills/react-state-management/SKILL.md +441 -0
- package/skills/reference-builder/SKILL.md +188 -0
- package/skills/reverse-engineer/SKILL.md +173 -0
- package/skills/risk-manager/SKILL.md +61 -0
- package/skills/risk-metrics-calculation/SKILL.md +33 -0
- package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
- package/skills/ruby-pro/SKILL.md +56 -0
- package/skills/rust-async-patterns/SKILL.md +33 -0
- package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
- package/skills/rust-pro/SKILL.md +178 -0
- package/skills/saga-orchestration/SKILL.md +496 -0
- package/skills/sales-automator/SKILL.md +55 -0
- package/skills/sast-configuration/SKILL.md +212 -0
- package/skills/scala-pro/SKILL.md +82 -0
- package/skills/screen-reader-testing/SKILL.md +33 -0
- package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
- package/skills/search-specialist/SKILL.md +80 -0
- package/skills/secrets-management/SKILL.md +364 -0
- package/skills/security-auditor/SKILL.md +169 -0
- package/skills/security-compliance-compliance-check/SKILL.md +55 -0
- package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
- package/skills/security-requirement-extraction/SKILL.md +33 -0
- package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
- package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
- package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
- package/skills/security-scanning-security-hardening/SKILL.md +147 -0
- package/skills/security-scanning-security-sast/SKILL.md +495 -0
- package/skills/seo-authority-builder/SKILL.md +136 -0
- package/skills/seo-cannibalization-detector/SKILL.md +123 -0
- package/skills/seo-content-auditor/SKILL.md +83 -0
- package/skills/seo-content-planner/SKILL.md +108 -0
- package/skills/seo-content-refresher/SKILL.md +118 -0
- package/skills/seo-content-writer/SKILL.md +96 -0
- package/skills/seo-keyword-strategist/SKILL.md +95 -0
- package/skills/seo-meta-optimizer/SKILL.md +92 -0
- package/skills/seo-snippet-hunter/SKILL.md +114 -0
- package/skills/seo-structure-architect/SKILL.md +108 -0
- package/skills/service-mesh-expert/SKILL.md +58 -0
- package/skills/service-mesh-observability/SKILL.md +395 -0
- package/skills/shellcheck-configuration/SKILL.md +466 -0
- package/skills/similarity-search-patterns/SKILL.md +33 -0
- package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
- package/skills/slo-implementation/SKILL.md +341 -0
- package/skills/solidity-security/SKILL.md +34 -0
- package/skills/solidity-security/resources/implementation-playbook.md +524 -0
- package/skills/spark-optimization/SKILL.md +427 -0
- package/skills/sql-optimization-patterns/SKILL.md +35 -0
- package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
- package/skills/sql-pro/SKILL.md +173 -0
- package/skills/startup-analyst/SKILL.md +328 -0
- package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
- package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
- package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
- package/skills/startup-financial-modeling/SKILL.md +467 -0
- package/skills/startup-metrics-framework/SKILL.md +34 -0
- package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
- package/skills/stride-analysis-patterns/SKILL.md +33 -0
- package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
- package/skills/stripe-integration/SKILL.md +454 -0
- package/skills/systems-programming-rust-project/SKILL.md +440 -0
- package/skills/tailwind-design-system/SKILL.md +33 -0
- package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
- package/skills/tdd-orchestrator/SKILL.md +205 -0
- package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
- package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
- package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
- package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
- package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
- package/skills/team-collaboration-issue/SKILL.md +37 -0
- package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
- package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
- package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
- package/skills/team-composition-analysis/SKILL.md +413 -0
- package/skills/temporal-python-pro/SKILL.md +370 -0
- package/skills/temporal-python-testing/SKILL.md +170 -0
- package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
- package/skills/temporal-python-testing/resources/local-setup.md +553 -0
- package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
- package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
- package/skills/terraform-module-library/SKILL.md +261 -0
- package/skills/terraform-module-library/references/aws-modules.md +63 -0
- package/skills/terraform-specialist/SKILL.md +166 -0
- package/skills/test-automator/SKILL.md +224 -0
- package/skills/threat-mitigation-mapping/SKILL.md +33 -0
- package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
- package/skills/threat-modeling-expert/SKILL.md +60 -0
- package/skills/track-management/SKILL.md +38 -0
- package/skills/track-management/resources/implementation-playbook.md +591 -0
- package/skills/turborepo-caching/SKILL.md +419 -0
- package/skills/tutorial-engineer/SKILL.md +139 -0
- package/skills/typescript-advanced-types/SKILL.md +35 -0
- package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
- package/skills/typescript-pro/SKILL.md +55 -0
- package/skills/ui-minimal/SKILL.md +23 -0
- package/skills/ui-ux-designer/SKILL.md +209 -0
- package/skills/ui-visual-validator/SKILL.md +214 -0
- package/skills/unit-testing-test-generate/SKILL.md +319 -0
- package/skills/unity-developer/SKILL.md +230 -0
- package/skills/unity-ecs-patterns/SKILL.md +33 -0
- package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
- package/skills/uv-package-manager/SKILL.md +37 -0
- package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
- package/skills/vector-database-engineer/SKILL.md +60 -0
- package/skills/vector-index-tuning/SKILL.md +42 -0
- package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
- package/skills/wcag-audit-patterns/SKILL.md +41 -0
- package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
- package/skills/web3-testing/SKILL.md +427 -0
- package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
- package/skills/workflow-patterns/SKILL.md +38 -0
- package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
|
@@ -0,0 +1,655 @@
|
|
|
1
|
+
# STRIDE Analysis Patterns Implementation Playbook
|
|
2
|
+
|
|
3
|
+
This file contains detailed patterns, checklists, and code samples referenced by the skill.
|
|
4
|
+
|
|
5
|
+
# STRIDE Analysis Patterns
|
|
6
|
+
|
|
7
|
+
Systematic threat identification using the STRIDE methodology.
|
|
8
|
+
|
|
9
|
+
## When to Use This Skill
|
|
10
|
+
|
|
11
|
+
- Starting new threat modeling sessions
|
|
12
|
+
- Analyzing existing system architecture
|
|
13
|
+
- Reviewing security design decisions
|
|
14
|
+
- Creating threat documentation
|
|
15
|
+
- Training teams on threat identification
|
|
16
|
+
- Compliance and audit preparation
|
|
17
|
+
|
|
18
|
+
## Core Concepts
|
|
19
|
+
|
|
20
|
+
### 1. STRIDE Categories
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
S - Spoofing → Authentication threats
|
|
24
|
+
T - Tampering → Integrity threats
|
|
25
|
+
R - Repudiation → Non-repudiation threats
|
|
26
|
+
I - Information → Confidentiality threats
|
|
27
|
+
Disclosure
|
|
28
|
+
D - Denial of → Availability threats
|
|
29
|
+
Service
|
|
30
|
+
E - Elevation of → Authorization threats
|
|
31
|
+
Privilege
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2. Threat Analysis Matrix
|
|
35
|
+
|
|
36
|
+
| Category | Question | Control Family |
|
|
37
|
+
|----------|----------|----------------|
|
|
38
|
+
| **Spoofing** | Can attacker pretend to be someone else? | Authentication |
|
|
39
|
+
| **Tampering** | Can attacker modify data in transit/rest? | Integrity |
|
|
40
|
+
| **Repudiation** | Can attacker deny actions? | Logging/Audit |
|
|
41
|
+
| **Info Disclosure** | Can attacker access unauthorized data? | Encryption |
|
|
42
|
+
| **DoS** | Can attacker disrupt availability? | Rate limiting |
|
|
43
|
+
| **Elevation** | Can attacker gain higher privileges? | Authorization |
|
|
44
|
+
|
|
45
|
+
## Templates
|
|
46
|
+
|
|
47
|
+
### Template 1: STRIDE Threat Model Document
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
# Threat Model: [System Name]
|
|
51
|
+
|
|
52
|
+
## 1. System Overview
|
|
53
|
+
|
|
54
|
+
### 1.1 Description
|
|
55
|
+
[Brief description of the system and its purpose]
|
|
56
|
+
|
|
57
|
+
### 1.2 Data Flow Diagram
|
|
58
|
+
```
|
|
59
|
+
[User] --> [Web App] --> [API Gateway] --> [Backend Services]
|
|
60
|
+
|
|
|
61
|
+
v
|
|
62
|
+
[Database]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 1.3 Trust Boundaries
|
|
66
|
+
- **External Boundary**: Internet to DMZ
|
|
67
|
+
- **Internal Boundary**: DMZ to Internal Network
|
|
68
|
+
- **Data Boundary**: Application to Database
|
|
69
|
+
|
|
70
|
+
## 2. Assets
|
|
71
|
+
|
|
72
|
+
| Asset | Sensitivity | Description |
|
|
73
|
+
|-------|-------------|-------------|
|
|
74
|
+
| User Credentials | High | Authentication tokens, passwords |
|
|
75
|
+
| Personal Data | High | PII, financial information |
|
|
76
|
+
| Session Data | Medium | Active user sessions |
|
|
77
|
+
| Application Logs | Medium | System activity records |
|
|
78
|
+
| Configuration | High | System settings, secrets |
|
|
79
|
+
|
|
80
|
+
## 3. STRIDE Analysis
|
|
81
|
+
|
|
82
|
+
### 3.1 Spoofing Threats
|
|
83
|
+
|
|
84
|
+
| ID | Threat | Target | Impact | Likelihood |
|
|
85
|
+
|----|--------|--------|--------|------------|
|
|
86
|
+
| S1 | Session hijacking | User sessions | High | Medium |
|
|
87
|
+
| S2 | Token forgery | JWT tokens | High | Low |
|
|
88
|
+
| S3 | Credential stuffing | Login endpoint | High | High |
|
|
89
|
+
|
|
90
|
+
**Mitigations:**
|
|
91
|
+
- [ ] Implement MFA
|
|
92
|
+
- [ ] Use secure session management
|
|
93
|
+
- [ ] Implement account lockout policies
|
|
94
|
+
|
|
95
|
+
### 3.2 Tampering Threats
|
|
96
|
+
|
|
97
|
+
| ID | Threat | Target | Impact | Likelihood |
|
|
98
|
+
|----|--------|--------|--------|------------|
|
|
99
|
+
| T1 | SQL injection | Database queries | Critical | Medium |
|
|
100
|
+
| T2 | Parameter manipulation | API requests | High | High |
|
|
101
|
+
| T3 | File upload abuse | File storage | High | Medium |
|
|
102
|
+
|
|
103
|
+
**Mitigations:**
|
|
104
|
+
- [ ] Input validation on all endpoints
|
|
105
|
+
- [ ] Parameterized queries
|
|
106
|
+
- [ ] File type validation
|
|
107
|
+
|
|
108
|
+
### 3.3 Repudiation Threats
|
|
109
|
+
|
|
110
|
+
| ID | Threat | Target | Impact | Likelihood |
|
|
111
|
+
|----|--------|--------|--------|------------|
|
|
112
|
+
| R1 | Transaction denial | Financial ops | High | Medium |
|
|
113
|
+
| R2 | Access log tampering | Audit logs | Medium | Low |
|
|
114
|
+
| R3 | Action attribution | User actions | Medium | Medium |
|
|
115
|
+
|
|
116
|
+
**Mitigations:**
|
|
117
|
+
- [ ] Comprehensive audit logging
|
|
118
|
+
- [ ] Log integrity protection
|
|
119
|
+
- [ ] Digital signatures for critical actions
|
|
120
|
+
|
|
121
|
+
### 3.4 Information Disclosure Threats
|
|
122
|
+
|
|
123
|
+
| ID | Threat | Target | Impact | Likelihood |
|
|
124
|
+
|----|--------|--------|--------|------------|
|
|
125
|
+
| I1 | Data breach | User PII | Critical | Medium |
|
|
126
|
+
| I2 | Error message leakage | System info | Low | High |
|
|
127
|
+
| I3 | Insecure transmission | Network traffic | High | Medium |
|
|
128
|
+
|
|
129
|
+
**Mitigations:**
|
|
130
|
+
- [ ] Encryption at rest and in transit
|
|
131
|
+
- [ ] Sanitize error messages
|
|
132
|
+
- [ ] Implement TLS 1.3
|
|
133
|
+
|
|
134
|
+
### 3.5 Denial of Service Threats
|
|
135
|
+
|
|
136
|
+
| ID | Threat | Target | Impact | Likelihood |
|
|
137
|
+
|----|--------|--------|--------|------------|
|
|
138
|
+
| D1 | Resource exhaustion | API servers | High | High |
|
|
139
|
+
| D2 | Database overload | Database | Critical | Medium |
|
|
140
|
+
| D3 | Bandwidth saturation | Network | High | Medium |
|
|
141
|
+
|
|
142
|
+
**Mitigations:**
|
|
143
|
+
- [ ] Rate limiting
|
|
144
|
+
- [ ] Auto-scaling
|
|
145
|
+
- [ ] DDoS protection
|
|
146
|
+
|
|
147
|
+
### 3.6 Elevation of Privilege Threats
|
|
148
|
+
|
|
149
|
+
| ID | Threat | Target | Impact | Likelihood |
|
|
150
|
+
|----|--------|--------|--------|------------|
|
|
151
|
+
| E1 | IDOR vulnerabilities | User resources | High | High |
|
|
152
|
+
| E2 | Role manipulation | Admin access | Critical | Low |
|
|
153
|
+
| E3 | JWT claim tampering | Authorization | High | Medium |
|
|
154
|
+
|
|
155
|
+
**Mitigations:**
|
|
156
|
+
- [ ] Proper authorization checks
|
|
157
|
+
- [ ] Principle of least privilege
|
|
158
|
+
- [ ] Server-side role validation
|
|
159
|
+
|
|
160
|
+
## 4. Risk Assessment
|
|
161
|
+
|
|
162
|
+
### 4.1 Risk Matrix
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
IMPACT
|
|
166
|
+
Low Med High Crit
|
|
167
|
+
Low 1 2 3 4
|
|
168
|
+
L Med 2 4 6 8
|
|
169
|
+
I High 3 6 9 12
|
|
170
|
+
K Crit 4 8 12 16
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### 4.2 Prioritized Risks
|
|
174
|
+
|
|
175
|
+
| Rank | Threat | Risk Score | Priority |
|
|
176
|
+
|------|--------|------------|----------|
|
|
177
|
+
| 1 | SQL Injection (T1) | 12 | Critical |
|
|
178
|
+
| 2 | IDOR (E1) | 9 | High |
|
|
179
|
+
| 3 | Credential Stuffing (S3) | 9 | High |
|
|
180
|
+
| 4 | Data Breach (I1) | 8 | High |
|
|
181
|
+
|
|
182
|
+
## 5. Recommendations
|
|
183
|
+
|
|
184
|
+
### Immediate Actions
|
|
185
|
+
1. Implement input validation framework
|
|
186
|
+
2. Add rate limiting to authentication endpoints
|
|
187
|
+
3. Enable comprehensive audit logging
|
|
188
|
+
|
|
189
|
+
### Short-term (30 days)
|
|
190
|
+
1. Deploy WAF with OWASP ruleset
|
|
191
|
+
2. Implement MFA for sensitive operations
|
|
192
|
+
3. Encrypt all PII at rest
|
|
193
|
+
|
|
194
|
+
### Long-term (90 days)
|
|
195
|
+
1. Security awareness training
|
|
196
|
+
2. Penetration testing
|
|
197
|
+
3. Bug bounty program
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Template 2: STRIDE Analysis Code
|
|
201
|
+
|
|
202
|
+
```python
|
|
203
|
+
from dataclasses import dataclass, field
|
|
204
|
+
from enum import Enum
|
|
205
|
+
from typing import List, Dict, Optional
|
|
206
|
+
import json
|
|
207
|
+
|
|
208
|
+
class StrideCategory(Enum):
|
|
209
|
+
SPOOFING = "S"
|
|
210
|
+
TAMPERING = "T"
|
|
211
|
+
REPUDIATION = "R"
|
|
212
|
+
INFORMATION_DISCLOSURE = "I"
|
|
213
|
+
DENIAL_OF_SERVICE = "D"
|
|
214
|
+
ELEVATION_OF_PRIVILEGE = "E"
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
class Impact(Enum):
|
|
218
|
+
LOW = 1
|
|
219
|
+
MEDIUM = 2
|
|
220
|
+
HIGH = 3
|
|
221
|
+
CRITICAL = 4
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class Likelihood(Enum):
|
|
225
|
+
LOW = 1
|
|
226
|
+
MEDIUM = 2
|
|
227
|
+
HIGH = 3
|
|
228
|
+
CRITICAL = 4
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
@dataclass
|
|
232
|
+
class Threat:
|
|
233
|
+
id: str
|
|
234
|
+
category: StrideCategory
|
|
235
|
+
title: str
|
|
236
|
+
description: str
|
|
237
|
+
target: str
|
|
238
|
+
impact: Impact
|
|
239
|
+
likelihood: Likelihood
|
|
240
|
+
mitigations: List[str] = field(default_factory=list)
|
|
241
|
+
status: str = "open"
|
|
242
|
+
|
|
243
|
+
@property
|
|
244
|
+
def risk_score(self) -> int:
|
|
245
|
+
return self.impact.value * self.likelihood.value
|
|
246
|
+
|
|
247
|
+
@property
|
|
248
|
+
def risk_level(self) -> str:
|
|
249
|
+
score = self.risk_score
|
|
250
|
+
if score >= 12:
|
|
251
|
+
return "Critical"
|
|
252
|
+
elif score >= 6:
|
|
253
|
+
return "High"
|
|
254
|
+
elif score >= 3:
|
|
255
|
+
return "Medium"
|
|
256
|
+
return "Low"
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
@dataclass
|
|
260
|
+
class Asset:
|
|
261
|
+
name: str
|
|
262
|
+
sensitivity: str
|
|
263
|
+
description: str
|
|
264
|
+
data_classification: str
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
@dataclass
|
|
268
|
+
class TrustBoundary:
|
|
269
|
+
name: str
|
|
270
|
+
description: str
|
|
271
|
+
from_zone: str
|
|
272
|
+
to_zone: str
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
@dataclass
|
|
276
|
+
class ThreatModel:
|
|
277
|
+
name: str
|
|
278
|
+
version: str
|
|
279
|
+
description: str
|
|
280
|
+
assets: List[Asset] = field(default_factory=list)
|
|
281
|
+
boundaries: List[TrustBoundary] = field(default_factory=list)
|
|
282
|
+
threats: List[Threat] = field(default_factory=list)
|
|
283
|
+
|
|
284
|
+
def add_threat(self, threat: Threat) -> None:
|
|
285
|
+
self.threats.append(threat)
|
|
286
|
+
|
|
287
|
+
def get_threats_by_category(self, category: StrideCategory) -> List[Threat]:
|
|
288
|
+
return [t for t in self.threats if t.category == category]
|
|
289
|
+
|
|
290
|
+
def get_critical_threats(self) -> List[Threat]:
|
|
291
|
+
return [t for t in self.threats if t.risk_level in ("Critical", "High")]
|
|
292
|
+
|
|
293
|
+
def generate_report(self) -> Dict:
|
|
294
|
+
"""Generate threat model report."""
|
|
295
|
+
return {
|
|
296
|
+
"summary": {
|
|
297
|
+
"name": self.name,
|
|
298
|
+
"version": self.version,
|
|
299
|
+
"total_threats": len(self.threats),
|
|
300
|
+
"critical_threats": len([t for t in self.threats if t.risk_level == "Critical"]),
|
|
301
|
+
"high_threats": len([t for t in self.threats if t.risk_level == "High"]),
|
|
302
|
+
},
|
|
303
|
+
"by_category": {
|
|
304
|
+
cat.name: len(self.get_threats_by_category(cat))
|
|
305
|
+
for cat in StrideCategory
|
|
306
|
+
},
|
|
307
|
+
"top_risks": [
|
|
308
|
+
{
|
|
309
|
+
"id": t.id,
|
|
310
|
+
"title": t.title,
|
|
311
|
+
"risk_score": t.risk_score,
|
|
312
|
+
"risk_level": t.risk_level
|
|
313
|
+
}
|
|
314
|
+
for t in sorted(self.threats, key=lambda x: x.risk_score, reverse=True)[:10]
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
class StrideAnalyzer:
|
|
320
|
+
"""Automated STRIDE analysis helper."""
|
|
321
|
+
|
|
322
|
+
STRIDE_QUESTIONS = {
|
|
323
|
+
StrideCategory.SPOOFING: [
|
|
324
|
+
"Can an attacker impersonate a legitimate user?",
|
|
325
|
+
"Are authentication tokens properly validated?",
|
|
326
|
+
"Can session identifiers be predicted or stolen?",
|
|
327
|
+
"Is multi-factor authentication available?",
|
|
328
|
+
],
|
|
329
|
+
StrideCategory.TAMPERING: [
|
|
330
|
+
"Can data be modified in transit?",
|
|
331
|
+
"Can data be modified at rest?",
|
|
332
|
+
"Are input validation controls sufficient?",
|
|
333
|
+
"Can an attacker manipulate application logic?",
|
|
334
|
+
],
|
|
335
|
+
StrideCategory.REPUDIATION: [
|
|
336
|
+
"Are all security-relevant actions logged?",
|
|
337
|
+
"Can logs be tampered with?",
|
|
338
|
+
"Is there sufficient attribution for actions?",
|
|
339
|
+
"Are timestamps reliable and synchronized?",
|
|
340
|
+
],
|
|
341
|
+
StrideCategory.INFORMATION_DISCLOSURE: [
|
|
342
|
+
"Is sensitive data encrypted at rest?",
|
|
343
|
+
"Is sensitive data encrypted in transit?",
|
|
344
|
+
"Can error messages reveal sensitive information?",
|
|
345
|
+
"Are access controls properly enforced?",
|
|
346
|
+
],
|
|
347
|
+
StrideCategory.DENIAL_OF_SERVICE: [
|
|
348
|
+
"Are rate limits implemented?",
|
|
349
|
+
"Can resources be exhausted by malicious input?",
|
|
350
|
+
"Is there protection against amplification attacks?",
|
|
351
|
+
"Are there single points of failure?",
|
|
352
|
+
],
|
|
353
|
+
StrideCategory.ELEVATION_OF_PRIVILEGE: [
|
|
354
|
+
"Are authorization checks performed consistently?",
|
|
355
|
+
"Can users access other users' resources?",
|
|
356
|
+
"Can privilege escalation occur through parameter manipulation?",
|
|
357
|
+
"Is the principle of least privilege followed?",
|
|
358
|
+
],
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
def generate_questionnaire(self, component: str) -> List[Dict]:
|
|
362
|
+
"""Generate STRIDE questionnaire for a component."""
|
|
363
|
+
questionnaire = []
|
|
364
|
+
for category, questions in self.STRIDE_QUESTIONS.items():
|
|
365
|
+
for q in questions:
|
|
366
|
+
questionnaire.append({
|
|
367
|
+
"component": component,
|
|
368
|
+
"category": category.name,
|
|
369
|
+
"question": q,
|
|
370
|
+
"answer": None,
|
|
371
|
+
"notes": ""
|
|
372
|
+
})
|
|
373
|
+
return questionnaire
|
|
374
|
+
|
|
375
|
+
def suggest_mitigations(self, category: StrideCategory) -> List[str]:
|
|
376
|
+
"""Suggest common mitigations for a STRIDE category."""
|
|
377
|
+
mitigations = {
|
|
378
|
+
StrideCategory.SPOOFING: [
|
|
379
|
+
"Implement multi-factor authentication",
|
|
380
|
+
"Use secure session management",
|
|
381
|
+
"Implement account lockout policies",
|
|
382
|
+
"Use cryptographically secure tokens",
|
|
383
|
+
"Validate authentication at every request",
|
|
384
|
+
],
|
|
385
|
+
StrideCategory.TAMPERING: [
|
|
386
|
+
"Implement input validation",
|
|
387
|
+
"Use parameterized queries",
|
|
388
|
+
"Apply integrity checks (HMAC, signatures)",
|
|
389
|
+
"Implement Content Security Policy",
|
|
390
|
+
"Use immutable infrastructure",
|
|
391
|
+
],
|
|
392
|
+
StrideCategory.REPUDIATION: [
|
|
393
|
+
"Enable comprehensive audit logging",
|
|
394
|
+
"Protect log integrity",
|
|
395
|
+
"Implement digital signatures",
|
|
396
|
+
"Use centralized, tamper-evident logging",
|
|
397
|
+
"Maintain accurate timestamps",
|
|
398
|
+
],
|
|
399
|
+
StrideCategory.INFORMATION_DISCLOSURE: [
|
|
400
|
+
"Encrypt data at rest and in transit",
|
|
401
|
+
"Implement proper access controls",
|
|
402
|
+
"Sanitize error messages",
|
|
403
|
+
"Use secure defaults",
|
|
404
|
+
"Implement data classification",
|
|
405
|
+
],
|
|
406
|
+
StrideCategory.DENIAL_OF_SERVICE: [
|
|
407
|
+
"Implement rate limiting",
|
|
408
|
+
"Use auto-scaling",
|
|
409
|
+
"Deploy DDoS protection",
|
|
410
|
+
"Implement circuit breakers",
|
|
411
|
+
"Set resource quotas",
|
|
412
|
+
],
|
|
413
|
+
StrideCategory.ELEVATION_OF_PRIVILEGE: [
|
|
414
|
+
"Implement proper authorization",
|
|
415
|
+
"Follow principle of least privilege",
|
|
416
|
+
"Validate permissions server-side",
|
|
417
|
+
"Use role-based access control",
|
|
418
|
+
"Implement security boundaries",
|
|
419
|
+
],
|
|
420
|
+
}
|
|
421
|
+
return mitigations.get(category, [])
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### Template 3: Data Flow Diagram Analysis
|
|
425
|
+
|
|
426
|
+
```python
|
|
427
|
+
from dataclasses import dataclass
|
|
428
|
+
from typing import List, Set, Tuple
|
|
429
|
+
from enum import Enum
|
|
430
|
+
|
|
431
|
+
class ElementType(Enum):
|
|
432
|
+
EXTERNAL_ENTITY = "external"
|
|
433
|
+
PROCESS = "process"
|
|
434
|
+
DATA_STORE = "datastore"
|
|
435
|
+
DATA_FLOW = "dataflow"
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
@dataclass
|
|
439
|
+
class DFDElement:
|
|
440
|
+
id: str
|
|
441
|
+
name: str
|
|
442
|
+
type: ElementType
|
|
443
|
+
trust_level: int # 0 = untrusted, higher = more trusted
|
|
444
|
+
description: str = ""
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
@dataclass
|
|
448
|
+
class DataFlow:
|
|
449
|
+
id: str
|
|
450
|
+
name: str
|
|
451
|
+
source: str
|
|
452
|
+
destination: str
|
|
453
|
+
data_type: str
|
|
454
|
+
protocol: str
|
|
455
|
+
encrypted: bool = False
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
class DFDAnalyzer:
|
|
459
|
+
"""Analyze Data Flow Diagrams for STRIDE threats."""
|
|
460
|
+
|
|
461
|
+
def __init__(self):
|
|
462
|
+
self.elements: Dict[str, DFDElement] = {}
|
|
463
|
+
self.flows: List[DataFlow] = []
|
|
464
|
+
|
|
465
|
+
def add_element(self, element: DFDElement) -> None:
|
|
466
|
+
self.elements[element.id] = element
|
|
467
|
+
|
|
468
|
+
def add_flow(self, flow: DataFlow) -> None:
|
|
469
|
+
self.flows.append(flow)
|
|
470
|
+
|
|
471
|
+
def find_trust_boundary_crossings(self) -> List[Tuple[DataFlow, int]]:
|
|
472
|
+
"""Find data flows that cross trust boundaries."""
|
|
473
|
+
crossings = []
|
|
474
|
+
for flow in self.flows:
|
|
475
|
+
source = self.elements.get(flow.source)
|
|
476
|
+
dest = self.elements.get(flow.destination)
|
|
477
|
+
if source and dest and source.trust_level != dest.trust_level:
|
|
478
|
+
trust_diff = abs(source.trust_level - dest.trust_level)
|
|
479
|
+
crossings.append((flow, trust_diff))
|
|
480
|
+
return sorted(crossings, key=lambda x: x[1], reverse=True)
|
|
481
|
+
|
|
482
|
+
def identify_threats_per_element(self) -> Dict[str, List[StrideCategory]]:
|
|
483
|
+
"""Map applicable STRIDE categories to element types."""
|
|
484
|
+
threat_mapping = {
|
|
485
|
+
ElementType.EXTERNAL_ENTITY: [
|
|
486
|
+
StrideCategory.SPOOFING,
|
|
487
|
+
StrideCategory.REPUDIATION,
|
|
488
|
+
],
|
|
489
|
+
ElementType.PROCESS: [
|
|
490
|
+
StrideCategory.SPOOFING,
|
|
491
|
+
StrideCategory.TAMPERING,
|
|
492
|
+
StrideCategory.REPUDIATION,
|
|
493
|
+
StrideCategory.INFORMATION_DISCLOSURE,
|
|
494
|
+
StrideCategory.DENIAL_OF_SERVICE,
|
|
495
|
+
StrideCategory.ELEVATION_OF_PRIVILEGE,
|
|
496
|
+
],
|
|
497
|
+
ElementType.DATA_STORE: [
|
|
498
|
+
StrideCategory.TAMPERING,
|
|
499
|
+
StrideCategory.REPUDIATION,
|
|
500
|
+
StrideCategory.INFORMATION_DISCLOSURE,
|
|
501
|
+
StrideCategory.DENIAL_OF_SERVICE,
|
|
502
|
+
],
|
|
503
|
+
ElementType.DATA_FLOW: [
|
|
504
|
+
StrideCategory.TAMPERING,
|
|
505
|
+
StrideCategory.INFORMATION_DISCLOSURE,
|
|
506
|
+
StrideCategory.DENIAL_OF_SERVICE,
|
|
507
|
+
],
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
result = {}
|
|
511
|
+
for elem_id, elem in self.elements.items():
|
|
512
|
+
result[elem_id] = threat_mapping.get(elem.type, [])
|
|
513
|
+
return result
|
|
514
|
+
|
|
515
|
+
def analyze_unencrypted_flows(self) -> List[DataFlow]:
|
|
516
|
+
"""Find unencrypted data flows crossing trust boundaries."""
|
|
517
|
+
risky_flows = []
|
|
518
|
+
for flow in self.flows:
|
|
519
|
+
if not flow.encrypted:
|
|
520
|
+
source = self.elements.get(flow.source)
|
|
521
|
+
dest = self.elements.get(flow.destination)
|
|
522
|
+
if source and dest and source.trust_level != dest.trust_level:
|
|
523
|
+
risky_flows.append(flow)
|
|
524
|
+
return risky_flows
|
|
525
|
+
|
|
526
|
+
def generate_threat_enumeration(self) -> List[Dict]:
|
|
527
|
+
"""Generate comprehensive threat enumeration."""
|
|
528
|
+
threats = []
|
|
529
|
+
element_threats = self.identify_threats_per_element()
|
|
530
|
+
|
|
531
|
+
for elem_id, categories in element_threats.items():
|
|
532
|
+
elem = self.elements[elem_id]
|
|
533
|
+
for category in categories:
|
|
534
|
+
threats.append({
|
|
535
|
+
"element_id": elem_id,
|
|
536
|
+
"element_name": elem.name,
|
|
537
|
+
"element_type": elem.type.value,
|
|
538
|
+
"stride_category": category.name,
|
|
539
|
+
"description": f"{category.name} threat against {elem.name}",
|
|
540
|
+
"trust_level": elem.trust_level
|
|
541
|
+
})
|
|
542
|
+
|
|
543
|
+
return threats
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
### Template 4: STRIDE per Interaction
|
|
547
|
+
|
|
548
|
+
```python
|
|
549
|
+
from typing import List, Dict, Optional
|
|
550
|
+
from dataclasses import dataclass
|
|
551
|
+
|
|
552
|
+
@dataclass
|
|
553
|
+
class Interaction:
|
|
554
|
+
"""Represents an interaction between two components."""
|
|
555
|
+
id: str
|
|
556
|
+
source: str
|
|
557
|
+
target: str
|
|
558
|
+
action: str
|
|
559
|
+
data: str
|
|
560
|
+
protocol: str
|
|
561
|
+
|
|
562
|
+
|
|
563
|
+
class StridePerInteraction:
|
|
564
|
+
"""Apply STRIDE to each interaction in the system."""
|
|
565
|
+
|
|
566
|
+
INTERACTION_THREATS = {
|
|
567
|
+
# Source type -> Target type -> Applicable threats
|
|
568
|
+
("external", "process"): {
|
|
569
|
+
"S": "External entity spoofing identity to process",
|
|
570
|
+
"T": "Tampering with data sent to process",
|
|
571
|
+
"R": "External entity denying sending data",
|
|
572
|
+
"I": "Data exposure during transmission",
|
|
573
|
+
"D": "Flooding process with requests",
|
|
574
|
+
"E": "Exploiting process to gain privileges",
|
|
575
|
+
},
|
|
576
|
+
("process", "datastore"): {
|
|
577
|
+
"T": "Process tampering with stored data",
|
|
578
|
+
"R": "Process denying data modifications",
|
|
579
|
+
"I": "Unauthorized data access by process",
|
|
580
|
+
"D": "Process exhausting storage resources",
|
|
581
|
+
},
|
|
582
|
+
("process", "process"): {
|
|
583
|
+
"S": "Process spoofing another process",
|
|
584
|
+
"T": "Tampering with inter-process data",
|
|
585
|
+
"I": "Data leakage between processes",
|
|
586
|
+
"D": "One process overwhelming another",
|
|
587
|
+
"E": "Process gaining elevated access",
|
|
588
|
+
},
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
def analyze_interaction(
|
|
592
|
+
self,
|
|
593
|
+
interaction: Interaction,
|
|
594
|
+
source_type: str,
|
|
595
|
+
target_type: str
|
|
596
|
+
) -> List[Dict]:
|
|
597
|
+
"""Analyze a single interaction for STRIDE threats."""
|
|
598
|
+
threats = []
|
|
599
|
+
key = (source_type, target_type)
|
|
600
|
+
|
|
601
|
+
applicable_threats = self.INTERACTION_THREATS.get(key, {})
|
|
602
|
+
|
|
603
|
+
for stride_code, description in applicable_threats.items():
|
|
604
|
+
threats.append({
|
|
605
|
+
"interaction_id": interaction.id,
|
|
606
|
+
"source": interaction.source,
|
|
607
|
+
"target": interaction.target,
|
|
608
|
+
"stride_category": stride_code,
|
|
609
|
+
"threat_description": description,
|
|
610
|
+
"context": f"{interaction.action} - {interaction.data}",
|
|
611
|
+
})
|
|
612
|
+
|
|
613
|
+
return threats
|
|
614
|
+
|
|
615
|
+
def generate_threat_matrix(
|
|
616
|
+
self,
|
|
617
|
+
interactions: List[Interaction],
|
|
618
|
+
element_types: Dict[str, str]
|
|
619
|
+
) -> List[Dict]:
|
|
620
|
+
"""Generate complete threat matrix for all interactions."""
|
|
621
|
+
all_threats = []
|
|
622
|
+
|
|
623
|
+
for interaction in interactions:
|
|
624
|
+
source_type = element_types.get(interaction.source, "unknown")
|
|
625
|
+
target_type = element_types.get(interaction.target, "unknown")
|
|
626
|
+
|
|
627
|
+
threats = self.analyze_interaction(
|
|
628
|
+
interaction, source_type, target_type
|
|
629
|
+
)
|
|
630
|
+
all_threats.extend(threats)
|
|
631
|
+
|
|
632
|
+
return all_threats
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
## Best Practices
|
|
636
|
+
|
|
637
|
+
### Do's
|
|
638
|
+
- **Involve stakeholders** - Security, dev, and ops perspectives
|
|
639
|
+
- **Be systematic** - Cover all STRIDE categories
|
|
640
|
+
- **Prioritize realistically** - Focus on high-impact threats
|
|
641
|
+
- **Update regularly** - Threat models are living documents
|
|
642
|
+
- **Use visual aids** - DFDs help communication
|
|
643
|
+
|
|
644
|
+
### Don'ts
|
|
645
|
+
- **Don't skip categories** - Each reveals different threats
|
|
646
|
+
- **Don't assume security** - Question every component
|
|
647
|
+
- **Don't work in isolation** - Collaborative modeling is better
|
|
648
|
+
- **Don't ignore low-probability** - High-impact threats matter
|
|
649
|
+
- **Don't stop at identification** - Follow through with mitigations
|
|
650
|
+
|
|
651
|
+
## Resources
|
|
652
|
+
|
|
653
|
+
- [Microsoft STRIDE Documentation](https://docs.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats)
|
|
654
|
+
- [OWASP Threat Modeling](https://owasp.org/www-community/Threat_Modeling)
|
|
655
|
+
- [Threat Modeling: Designing for Security](https://www.wiley.com/en-us/Threat+Modeling%3A+Designing+for+Security-p-9781118809990)
|