agent-skill-kit 3.9.135
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/.agent/global.d.ts +80 -0
- package/.agent/rules/GEMINI.md +210 -0
- package/.agent/rules/autopilot.md +287 -0
- package/.agent/rules/code-rules.md +227 -0
- package/.agent/scripts/audit_workflows.ts +23 -0
- package/.agent/scripts/auto_preview.ts +170 -0
- package/.agent/scripts/checklist.ts +180 -0
- package/.agent/scripts/compile-agents.ts +237 -0
- package/.agent/scripts/fix_skills.ts +49 -0
- package/.agent/scripts/session_manager.ts +222 -0
- package/.agent/scripts/skill-audit.ts +255 -0
- package/.agent/scripts/sync_workflows.ts +54 -0
- package/.agent/scripts/utils/colors.ts +58 -0
- package/.agent/scripts/utils/process-manager.ts +131 -0
- package/.agent/scripts/utils/reporter.ts +192 -0
- package/.agent/scripts/utils/runner.ts +128 -0
- package/.agent/scripts/verify_all.ts +243 -0
- package/.agent/scripts/version-sync.ts +256 -0
- package/.agent/skills/SKILL_INDEX.md +129 -0
- package/.agent/skills/agent-browser/AGENTS.md +728 -0
- package/.agent/skills/agent-browser/SKILL.md +193 -0
- package/.agent/skills/agent-browser/rules/_sections.md +15 -0
- package/.agent/skills/agent-browser/rules/_template.md +32 -0
- package/.agent/skills/agent-browser/rules/engineering-spec.md +528 -0
- package/.agent/skills/agent-browser/scripts/browser_cli.ts +52 -0
- package/.agent/skills/agent-browser/scripts/session_manager.ts +166 -0
- package/.agent/skills/ai-artist/AGENTS.md +1082 -0
- package/.agent/skills/ai-artist/SKILL.md +186 -0
- package/.agent/skills/ai-artist/rules/_sections.md +30 -0
- package/.agent/skills/ai-artist/rules/_template.md +32 -0
- package/.agent/skills/ai-artist/rules/domain-code.md +118 -0
- package/.agent/skills/ai-artist/rules/domain-marketing.md +105 -0
- package/.agent/skills/ai-artist/rules/engineering-spec.md +519 -0
- package/.agent/skills/ai-artist/rules/image-prompts.md +195 -0
- package/.agent/skills/ai-artist/rules/model-syntax.md +115 -0
- package/.agent/skills/ai-artist/scripts/prompt_compiler.ts +72 -0
- package/.agent/skills/ai-artist/templates/image-core.txt +1 -0
- package/.agent/skills/ai-artist/templates/llm-core.txt +6 -0
- package/.agent/skills/api-architect/AGENTS.md +1896 -0
- package/.agent/skills/api-architect/SKILL.md +173 -0
- package/.agent/skills/api-architect/rules/_sections.md +35 -0
- package/.agent/skills/api-architect/rules/_template.md +32 -0
- package/.agent/skills/api-architect/rules/api-style.md +115 -0
- package/.agent/skills/api-architect/rules/auth.md +134 -0
- package/.agent/skills/api-architect/rules/documentation.md +131 -0
- package/.agent/skills/api-architect/rules/engineering-spec.md +505 -0
- package/.agent/skills/api-architect/rules/graphql.md +154 -0
- package/.agent/skills/api-architect/rules/rate-limiting.md +76 -0
- package/.agent/skills/api-architect/rules/response.md +138 -0
- package/.agent/skills/api-architect/rules/rest.md +113 -0
- package/.agent/skills/api-architect/rules/security-testing.md +146 -0
- package/.agent/skills/api-architect/rules/trpc.md +129 -0
- package/.agent/skills/api-architect/rules/versioning.md +100 -0
- package/.agent/skills/api-architect/scripts/api_validator.ts +413 -0
- package/.agent/skills/auth-patterns/AGENTS.md +1830 -0
- package/.agent/skills/auth-patterns/SKILL.md +163 -0
- package/.agent/skills/auth-patterns/rules/_sections.md +30 -0
- package/.agent/skills/auth-patterns/rules/_template.md +32 -0
- package/.agent/skills/auth-patterns/rules/engineering-spec.md +515 -0
- package/.agent/skills/auth-patterns/rules/jwt-deep.md +196 -0
- package/.agent/skills/auth-patterns/rules/mfa.md +174 -0
- package/.agent/skills/auth-patterns/rules/oauth2.md +134 -0
- package/.agent/skills/auth-patterns/rules/passkey.md +243 -0
- package/.agent/skills/auth-patterns/rules/rbac-abac.md +206 -0
- package/.agent/skills/auth-patterns/rules/session.md +183 -0
- package/.agent/skills/auth-patterns/scripts/auth_validator.ts +121 -0
- package/.agent/skills/chrome-devtools/AGENTS.md +952 -0
- package/.agent/skills/chrome-devtools/SKILL.md +160 -0
- package/.agent/skills/chrome-devtools/rules/_sections.md +25 -0
- package/.agent/skills/chrome-devtools/rules/_template.md +32 -0
- package/.agent/skills/chrome-devtools/rules/aria-snapshot.md +95 -0
- package/.agent/skills/chrome-devtools/rules/engineering-spec.md +510 -0
- package/.agent/skills/chrome-devtools/rules/scripts-guide.md +174 -0
- package/.agent/skills/chrome-devtools/scripts/aria-snapshot.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/click.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/console.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/core_cli.ts +79 -0
- package/.agent/skills/chrome-devtools/scripts/evaluate.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/fill.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/navigate.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/network.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/performance.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/screenshot.ts +3 -0
- package/.agent/skills/chrome-devtools/scripts/select-ref.ts +3 -0
- package/.agent/skills/cicd-pipeline/AGENTS.md +809 -0
- package/.agent/skills/cicd-pipeline/SKILL.md +164 -0
- package/.agent/skills/cicd-pipeline/rules/_sections.md +15 -0
- package/.agent/skills/cicd-pipeline/rules/_template.md +32 -0
- package/.agent/skills/cicd-pipeline/rules/engineering-spec.md +477 -0
- package/.agent/skills/cicd-pipeline/scripts/flag-manager.ts +253 -0
- package/.agent/skills/cicd-pipeline/scripts/pipeline_validator.ts +133 -0
- package/.agent/skills/code-constitution/AGENTS.md +597 -0
- package/.agent/skills/code-constitution/CHANGELOG.md +216 -0
- package/.agent/skills/code-constitution/SKILL.md +191 -0
- package/.agent/skills/code-constitution/VERSION +3 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/after.tsx +59 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/before.tsx +42 -0
- package/.agent/skills/code-constitution/examples/violation-backend-mutation/explanation.md +91 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/after.tsx +99 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/before.tsx +57 -0
- package/.agent/skills/code-constitution/examples/violation-chart-injection/explanation.md +120 -0
- package/.agent/skills/code-constitution/knowledge/lessons-learned.yaml +3 -0
- package/.agent/skills/code-constitution/metadata/precedence.yaml +117 -0
- package/.agent/skills/code-constitution/metadata/scope-map.yaml +156 -0
- package/.agent/skills/code-constitution/proposals/v1.1-change-proposal-template.md +201 -0
- package/.agent/skills/code-constitution/resources/AUTHORITY_MODEL.md +115 -0
- package/.agent/skills/code-constitution/resources/ENFORCEMENT_GUIDE.md +246 -0
- package/.agent/skills/code-constitution/resources/LOAD_ORDER.md +86 -0
- package/.agent/skills/code-constitution/rules/_sections.md +15 -0
- package/.agent/skills/code-constitution/rules/_template.md +32 -0
- package/.agent/skills/code-constitution/rules/constitution/master-constitution.md +210 -0
- package/.agent/skills/code-constitution/rules/doctrines/architecture/architecture-doctrine.md +188 -0
- package/.agent/skills/code-constitution/rules/doctrines/backend/backend-data-engine-doctrine.md +218 -0
- package/.agent/skills/code-constitution/rules/doctrines/commercial/commercial-guardrails-doctrine.md +196 -0
- package/.agent/skills/code-constitution/rules/doctrines/data/data-integrity-doctrine.md +202 -0
- package/.agent/skills/code-constitution/rules/doctrines/frontend/frontend-mobile-doctrine.md +169 -0
- package/.agent/skills/code-constitution/rules/doctrines/frontend/interaction-patterns-doctrine.md +176 -0
- package/.agent/skills/code-constitution/rules/doctrines/learning/learning-engine-doctrine.md +192 -0
- package/.agent/skills/code-constitution/rules/doctrines/performance/performance-doctrine.md +180 -0
- package/.agent/skills/code-constitution/rules/doctrines/review/code-review-doctrine.md +174 -0
- package/.agent/skills/code-constitution/rules/enforcement/agents/agent-enforcement-protocol.md +218 -0
- package/.agent/skills/code-constitution/rules/enforcement/agents/agent-system-prompt.md +196 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/backend-api-review-checklist.md +131 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/chart-component-review-checklist.md +147 -0
- package/.agent/skills/code-constitution/rules/enforcement/checklists/frontend-review-checklist.md +194 -0
- package/.agent/skills/code-constitution/rules/enforcement/playbooks/doctrine-violation-playbook.md +236 -0
- package/.agent/skills/code-constitution/rules/engineering-spec.md +561 -0
- package/.agent/skills/code-constitution/scripts/audit_pr.ts +219 -0
- package/.agent/skills/code-constitution/scripts/check_boundaries.ts +134 -0
- package/.agent/skills/code-constitution/scripts/learn.ts +202 -0
- package/.agent/skills/code-constitution/scripts/validate_doctrine.ts +287 -0
- package/.agent/skills/code-craft/AGENTS.md +803 -0
- package/.agent/skills/code-craft/SKILL.md +170 -0
- package/.agent/skills/code-craft/rules/_sections.md +20 -0
- package/.agent/skills/code-craft/rules/_template.md +32 -0
- package/.agent/skills/code-craft/rules/engineering-spec.md +447 -0
- package/.agent/skills/code-craft/rules/verification-scripts.md +83 -0
- package/.agent/skills/code-craft/scripts/code_quality_checker.ts +193 -0
- package/.agent/skills/code-review/AGENTS.md +1664 -0
- package/.agent/skills/code-review/SKILL.md +152 -0
- package/.agent/skills/code-review/rules/_sections.md +15 -0
- package/.agent/skills/code-review/rules/_template.md +32 -0
- package/.agent/skills/code-review/rules/engineering-spec.md +466 -0
- package/.agent/skills/code-review/scripts/lint_runner.ts +213 -0
- package/.agent/skills/code-review/scripts/type_coverage.ts +118 -0
- package/.agent/skills/context-engineering/AGENTS.md +499 -0
- package/.agent/skills/context-engineering/SKILL.md +147 -0
- package/.agent/skills/context-engineering/rules/_sections.md +15 -0
- package/.agent/skills/context-engineering/rules/_template.md +32 -0
- package/.agent/skills/context-engineering/rules/engineering-spec.md +463 -0
- package/.agent/skills/context-engineering/scripts/context_analyzer.ts +127 -0
- package/.agent/skills/copywriting/AGENTS.md +501 -0
- package/.agent/skills/copywriting/SKILL.md +188 -0
- package/.agent/skills/copywriting/rules/_sections.md +15 -0
- package/.agent/skills/copywriting/rules/_template.md +32 -0
- package/.agent/skills/copywriting/rules/engineering-spec.md +465 -0
- package/.agent/skills/copywriting/scripts/copy_validator.ts +185 -0
- package/.agent/skills/data-modeler/AGENTS.md +814 -0
- package/.agent/skills/data-modeler/SKILL.md +195 -0
- package/.agent/skills/data-modeler/rules/_sections.md +15 -0
- package/.agent/skills/data-modeler/rules/_template.md +32 -0
- package/.agent/skills/data-modeler/rules/database-selection.md +124 -0
- package/.agent/skills/data-modeler/rules/engineering-spec.md +479 -0
- package/.agent/skills/data-modeler/rules/indexing.md +166 -0
- package/.agent/skills/data-modeler/rules/migrations.md +176 -0
- package/.agent/skills/data-modeler/rules/optimization.md +161 -0
- package/.agent/skills/data-modeler/rules/orm-selection.md +155 -0
- package/.agent/skills/data-modeler/rules/schema-design.md +162 -0
- package/.agent/skills/data-modeler/scripts/schema_validator.ts +357 -0
- package/.agent/skills/debug-pro/AGENTS.md +798 -0
- package/.agent/skills/debug-pro/SKILL.md +193 -0
- package/.agent/skills/debug-pro/defense-in-depth/SKILL.md +148 -0
- package/.agent/skills/debug-pro/root-cause-tracing/SKILL.md +196 -0
- package/.agent/skills/debug-pro/root-cause-tracing/find-polluter.sh +63 -0
- package/.agent/skills/debug-pro/rules/_sections.md +15 -0
- package/.agent/skills/debug-pro/rules/_template.md +32 -0
- package/.agent/skills/debug-pro/rules/engineering-spec.md +491 -0
- package/.agent/skills/debug-pro/scripts/debug_verifier.ts +148 -0
- package/.agent/skills/debug-pro/verification-before-completion/SKILL.md +160 -0
- package/.agent/skills/design-system/AGENTS.md +4216 -0
- package/.agent/skills/design-system/SKILL.md +186 -0
- package/.agent/skills/design-system/rules/_sections.md +65 -0
- package/.agent/skills/design-system/rules/_template.md +32 -0
- package/.agent/skills/design-system/rules/animation-guide.md +355 -0
- package/.agent/skills/design-system/rules/color-system.md +335 -0
- package/.agent/skills/design-system/rules/color-systems.md +133 -0
- package/.agent/skills/design-system/rules/decision-trees.md +442 -0
- package/.agent/skills/design-system/rules/design-extraction.md +152 -0
- package/.agent/skills/design-system/rules/engineering-spec.md +484 -0
- package/.agent/skills/design-system/rules/motion-design.md +161 -0
- package/.agent/skills/design-system/rules/motion-graphics.md +330 -0
- package/.agent/skills/design-system/rules/spatial-composition.md +184 -0
- package/.agent/skills/design-system/rules/typography-system.md +369 -0
- package/.agent/skills/design-system/rules/typography.md +124 -0
- package/.agent/skills/design-system/rules/ux-psychology.md +565 -0
- package/.agent/skills/design-system/rules/visual-effects.md +407 -0
- package/.agent/skills/design-system/scripts/accessibility_checker.ts +292 -0
- package/.agent/skills/design-system/scripts/ux_audit.ts +356 -0
- package/.agent/skills/doc-templates/AGENTS.md +820 -0
- package/.agent/skills/doc-templates/SKILL.md +260 -0
- package/.agent/skills/doc-templates/rules/_sections.md +20 -0
- package/.agent/skills/doc-templates/rules/_template.md +32 -0
- package/.agent/skills/doc-templates/rules/doc.md +355 -0
- package/.agent/skills/doc-templates/rules/engineering-spec.md +422 -0
- package/.agent/skills/doc-templates/scripts/editor-server.ts +162 -0
- package/.agent/skills/doc-templates/scripts/inject_otel.ts +22 -0
- package/.agent/skills/doc-templates/scripts/kanban-server.ts +171 -0
- package/.agent/skills/doc-templates/scripts/markdown-server.ts +185 -0
- package/.agent/skills/e2e-automation/AGENTS.md +882 -0
- package/.agent/skills/e2e-automation/SKILL.md +175 -0
- package/.agent/skills/e2e-automation/rules/_sections.md +20 -0
- package/.agent/skills/e2e-automation/rules/_template.md +32 -0
- package/.agent/skills/e2e-automation/rules/aria-snapshot.md +185 -0
- package/.agent/skills/e2e-automation/rules/engineering-spec.md +501 -0
- package/.agent/skills/e2e-automation/scripts/playwright_runner.ts +208 -0
- package/.agent/skills/execution-reporter/AGENTS.md +419 -0
- package/.agent/skills/execution-reporter/SKILL.md +152 -0
- package/.agent/skills/execution-reporter/rules/_sections.md +15 -0
- package/.agent/skills/execution-reporter/rules/_template.md +32 -0
- package/.agent/skills/execution-reporter/rules/engineering-spec.md +389 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +140 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +156 -0
- package/.agent/skills/game-development/AGENTS.md +783 -0
- package/.agent/skills/game-development/SKILL.md +178 -0
- package/.agent/skills/game-development/game-art/SKILL.md +207 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +211 -0
- package/.agent/skills/game-development/game-design/SKILL.md +151 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +130 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +154 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +167 -0
- package/.agent/skills/game-development/rules/_sections.md +15 -0
- package/.agent/skills/game-development/rules/_template.md +32 -0
- package/.agent/skills/game-development/rules/engineering-spec.md +480 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +144 -0
- package/.agent/skills/game-development/web-games/SKILL.md +173 -0
- package/.agent/skills/git-workflow/AGENTS.md +554 -0
- package/.agent/skills/git-workflow/SKILL.md +181 -0
- package/.agent/skills/git-workflow/rules/_sections.md +15 -0
- package/.agent/skills/git-workflow/rules/_template.md +32 -0
- package/.agent/skills/git-workflow/rules/engineering-spec.md +518 -0
- package/.agent/skills/gitops/AGENTS.md +921 -0
- package/.agent/skills/gitops/SKILL.md +163 -0
- package/.agent/skills/gitops/rules/_sections.md +25 -0
- package/.agent/skills/gitops/rules/_template.md +32 -0
- package/.agent/skills/gitops/rules/argocd-setup.md +148 -0
- package/.agent/skills/gitops/rules/engineering-spec.md +450 -0
- package/.agent/skills/gitops/rules/sync-policies.md +145 -0
- package/.agent/skills/google-adk-python/AGENTS.md +1054 -0
- package/.agent/skills/google-adk-python/SKILL.md +168 -0
- package/.agent/skills/google-adk-python/rules/_sections.md +25 -0
- package/.agent/skills/google-adk-python/rules/_template.md +32 -0
- package/.agent/skills/google-adk-python/rules/deployment.md +138 -0
- package/.agent/skills/google-adk-python/rules/engineering-spec.md +451 -0
- package/.agent/skills/google-adk-python/rules/multi-agent.md +146 -0
- package/.agent/skills/google-adk-python/rules/tools.md +131 -0
- package/.agent/skills/idea-storm/AGENTS.md +995 -0
- package/.agent/skills/idea-storm/SKILL.md +160 -0
- package/.agent/skills/idea-storm/rules/_sections.md +25 -0
- package/.agent/skills/idea-storm/rules/_template.md +32 -0
- package/.agent/skills/idea-storm/rules/architecture-debate.md +122 -0
- package/.agent/skills/idea-storm/rules/dynamic-questioning.md +374 -0
- package/.agent/skills/idea-storm/rules/engineering-spec.md +466 -0
- package/.agent/skills/knowledge-compiler/SKILL.md +320 -0
- package/.agent/skills/knowledge-graph/AGENTS.md +762 -0
- package/.agent/skills/knowledge-graph/SKILL.md +157 -0
- package/.agent/skills/knowledge-graph/rules/_sections.md +15 -0
- package/.agent/skills/knowledge-graph/rules/_template.md +32 -0
- package/.agent/skills/knowledge-graph/rules/engineering-spec.md +439 -0
- package/.agent/skills/knowledge-linter/SKILL.md +217 -0
- package/.agent/skills/lifecycle-orchestrator/AGENTS.md +989 -0
- package/.agent/skills/lifecycle-orchestrator/SKILL.md +169 -0
- package/.agent/skills/lifecycle-orchestrator/rules/_sections.md +15 -0
- package/.agent/skills/lifecycle-orchestrator/rules/_template.md +32 -0
- package/.agent/skills/lifecycle-orchestrator/rules/engineering-spec.md +525 -0
- package/.agent/skills/lifecycle-orchestrator/scripts/state_manager.ts +189 -0
- package/.agent/skills/mcp-builder/AGENTS.md +1653 -0
- package/.agent/skills/mcp-builder/SKILL.md +166 -0
- package/.agent/skills/mcp-builder/rules/_sections.md +40 -0
- package/.agent/skills/mcp-builder/rules/_template.md +32 -0
- package/.agent/skills/mcp-builder/rules/best-practices.md +157 -0
- package/.agent/skills/mcp-builder/rules/design-principles.md +105 -0
- package/.agent/skills/mcp-builder/rules/engineering-spec.md +473 -0
- package/.agent/skills/mcp-builder/rules/evaluation.md +103 -0
- package/.agent/skills/mcp-builder/rules/python-implementation.md +249 -0
- package/.agent/skills/mcp-builder/rules/quickstart.md +111 -0
- package/.agent/skills/mcp-builder/rules/typescript-implementation.md +280 -0
- package/.agent/skills/mcp-management/AGENTS.md +837 -0
- package/.agent/skills/mcp-management/SKILL.md +164 -0
- package/.agent/skills/mcp-management/rules/_sections.md +25 -0
- package/.agent/skills/mcp-management/rules/_template.md +32 -0
- package/.agent/skills/mcp-management/rules/cli-usage.md +146 -0
- package/.agent/skills/mcp-management/rules/engineering-spec.md +501 -0
- package/.agent/skills/mcp-management/rules/protocol.md +159 -0
- package/.agent/skills/media-processing/AGENTS.md +479 -0
- package/.agent/skills/media-processing/SKILL.md +176 -0
- package/.agent/skills/media-processing/rules/_sections.md +15 -0
- package/.agent/skills/media-processing/rules/_template.md +32 -0
- package/.agent/skills/media-processing/rules/engineering-spec.md +452 -0
- package/.agent/skills/media-processing/scripts/convert-video.ts +155 -0
- package/.agent/skills/media-processing/scripts/optimize-image.ts +127 -0
- package/.agent/skills/mobile-design/AGENTS.md +6531 -0
- package/.agent/skills/mobile-design/SKILL.md +165 -0
- package/.agent/skills/mobile-design/rules/_sections.md +45 -0
- package/.agent/skills/mobile-design/rules/_template.md +32 -0
- package/.agent/skills/mobile-design/rules/decision-trees.md +540 -0
- package/.agent/skills/mobile-design/rules/engineering-spec.md +467 -0
- package/.agent/skills/mobile-design/rules/mobile-backend.md +516 -0
- package/.agent/skills/mobile-design/rules/mobile-color-system.md +436 -0
- package/.agent/skills/mobile-design/rules/mobile-debugging.md +146 -0
- package/.agent/skills/mobile-design/rules/mobile-design-thinking.md +381 -0
- package/.agent/skills/mobile-design/rules/mobile-navigation.md +474 -0
- package/.agent/skills/mobile-design/rules/mobile-performance.md +783 -0
- package/.agent/skills/mobile-design/rules/mobile-testing.md +380 -0
- package/.agent/skills/mobile-design/rules/mobile-typography.md +449 -0
- package/.agent/skills/mobile-design/rules/platform-android.md +682 -0
- package/.agent/skills/mobile-design/rules/platform-ios.md +577 -0
- package/.agent/skills/mobile-design/rules/touch-psychology.md +553 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.ts +309 -0
- package/.agent/skills/mobile-developer/AGENTS.md +904 -0
- package/.agent/skills/mobile-developer/SKILL.md +194 -0
- package/.agent/skills/mobile-developer/rules/_sections.md +75 -0
- package/.agent/skills/mobile-developer/rules/_template.md +32 -0
- package/.agent/skills/mobile-developer/rules/anti-patterns.md +70 -0
- package/.agent/skills/mobile-developer/rules/app-store-optimization.md +319 -0
- package/.agent/skills/mobile-developer/rules/decision-trees.md +545 -0
- package/.agent/skills/mobile-developer/rules/deep-linking.md +441 -0
- package/.agent/skills/mobile-developer/rules/engineering-spec.md +477 -0
- package/.agent/skills/mobile-developer/rules/flutter.md +475 -0
- package/.agent/skills/mobile-developer/rules/mobile-backend.md +516 -0
- package/.agent/skills/mobile-developer/rules/mobile-color-system.md +444 -0
- package/.agent/skills/mobile-developer/rules/mobile-debugging.md +428 -0
- package/.agent/skills/mobile-developer/rules/mobile-design-thinking.md +367 -0
- package/.agent/skills/mobile-developer/rules/mobile-navigation.md +483 -0
- package/.agent/skills/mobile-developer/rules/mobile-performance.md +778 -0
- package/.agent/skills/mobile-developer/rules/mobile-testing.md +382 -0
- package/.agent/skills/mobile-developer/rules/mobile-typography.md +457 -0
- package/.agent/skills/mobile-developer/rules/native.md +572 -0
- package/.agent/skills/mobile-developer/rules/platform-android.md +676 -0
- package/.agent/skills/mobile-developer/rules/platform-ios.md +571 -0
- package/.agent/skills/mobile-developer/rules/push-notifications.md +599 -0
- package/.agent/skills/mobile-developer/rules/react-native.md +422 -0
- package/.agent/skills/mobile-developer/rules/touch-psychology.md +547 -0
- package/.agent/skills/mobile-developer/scripts/mobile_audit.ts +701 -0
- package/.agent/skills/nextjs-pro/AGENTS.md +3932 -0
- package/.agent/skills/nextjs-pro/SKILL.md +171 -0
- package/.agent/skills/nextjs-pro/rules/_sections.md +50 -0
- package/.agent/skills/nextjs-pro/rules/_template.md +32 -0
- package/.agent/skills/nextjs-pro/rules/advanced-event-handler-refs.md +59 -0
- package/.agent/skills/nextjs-pro/rules/advanced-init-once.md +46 -0
- package/.agent/skills/nextjs-pro/rules/advanced-use-latest.md +43 -0
- package/.agent/skills/nextjs-pro/rules/async-api-routes.md +42 -0
- package/.agent/skills/nextjs-pro/rules/async-defer-await.md +84 -0
- package/.agent/skills/nextjs-pro/rules/async-dependencies.md +55 -0
- package/.agent/skills/nextjs-pro/rules/async-parallel.md +32 -0
- package/.agent/skills/nextjs-pro/rules/async-suspense-boundaries.md +103 -0
- package/.agent/skills/nextjs-pro/rules/bundle-barrel-imports.md +63 -0
- package/.agent/skills/nextjs-pro/rules/bundle-conditional.md +35 -0
- package/.agent/skills/nextjs-pro/rules/bundle-defer-third-party.md +53 -0
- package/.agent/skills/nextjs-pro/rules/bundle-dynamic-imports.md +39 -0
- package/.agent/skills/nextjs-pro/rules/bundle-preload.md +54 -0
- package/.agent/skills/nextjs-pro/rules/client-event-listeners.md +78 -0
- package/.agent/skills/nextjs-pro/rules/client-localstorage-schema.md +75 -0
- package/.agent/skills/nextjs-pro/rules/client-passive-event-listeners.md +52 -0
- package/.agent/skills/nextjs-pro/rules/client-swr-dedup.md +60 -0
- package/.agent/skills/nextjs-pro/rules/engineering-spec.md +440 -0
- package/.agent/skills/nextjs-pro/rules/js-batch-dom-css.md +111 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-function-results.md +84 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-property-access.md +32 -0
- package/.agent/skills/nextjs-pro/rules/js-cache-storage.md +74 -0
- package/.agent/skills/nextjs-pro/rules/js-combine-iterations.md +36 -0
- package/.agent/skills/nextjs-pro/rules/js-early-exit.md +54 -0
- package/.agent/skills/nextjs-pro/rules/js-hoist-regexp.md +49 -0
- package/.agent/skills/nextjs-pro/rules/js-index-maps.md +41 -0
- package/.agent/skills/nextjs-pro/rules/js-length-check-first.md +53 -0
- package/.agent/skills/nextjs-pro/rules/js-min-max-loop.md +86 -0
- package/.agent/skills/nextjs-pro/rules/js-set-map-lookups.md +28 -0
- package/.agent/skills/nextjs-pro/rules/js-tosorted-immutable.md +61 -0
- package/.agent/skills/nextjs-pro/rules/rendering-activity.md +30 -0
- package/.agent/skills/nextjs-pro/rules/rendering-animate-svg-wrapper.md +51 -0
- package/.agent/skills/nextjs-pro/rules/rendering-conditional-render.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rendering-content-visibility.md +42 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hoist-jsx.md +50 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hydration-no-flicker.md +86 -0
- package/.agent/skills/nextjs-pro/rules/rendering-hydration-suppress-warning.md +34 -0
- package/.agent/skills/nextjs-pro/rules/rendering-svg-precision.md +32 -0
- package/.agent/skills/nextjs-pro/rules/rendering-usetransition-loading.md +79 -0
- package/.agent/skills/nextjs-pro/rules/rerender-defer-reads.md +43 -0
- package/.agent/skills/nextjs-pro/rules/rerender-dependencies.md +49 -0
- package/.agent/skills/nextjs-pro/rules/rerender-derived-state-no-effect.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rerender-derived-state.md +33 -0
- package/.agent/skills/nextjs-pro/rules/rerender-functional-setstate.md +78 -0
- package/.agent/skills/nextjs-pro/rules/rerender-lazy-state-init.md +62 -0
- package/.agent/skills/nextjs-pro/rules/rerender-memo-with-default-value.md +42 -0
- package/.agent/skills/nextjs-pro/rules/rerender-memo.md +48 -0
- package/.agent/skills/nextjs-pro/rules/rerender-move-effect-to-event.md +49 -0
- package/.agent/skills/nextjs-pro/rules/rerender-simple-expression-in-memo.md +39 -0
- package/.agent/skills/nextjs-pro/rules/rerender-transitions.md +44 -0
- package/.agent/skills/nextjs-pro/rules/rerender-use-ref-transient-values.md +77 -0
- package/.agent/skills/nextjs-pro/rules/schema.json +34 -0
- package/.agent/skills/nextjs-pro/rules/server-after-nonblocking.md +77 -0
- package/.agent/skills/nextjs-pro/rules/server-auth-actions.md +100 -0
- package/.agent/skills/nextjs-pro/rules/server-cache-lru.md +45 -0
- package/.agent/skills/nextjs-pro/rules/server-cache-react.md +80 -0
- package/.agent/skills/nextjs-pro/rules/server-dedup-props.md +69 -0
- package/.agent/skills/nextjs-pro/rules/server-parallel-fetching.md +87 -0
- package/.agent/skills/nextjs-pro/rules/server-serialization.md +42 -0
- package/.agent/skills/nodejs-pro/AGENTS.md +866 -0
- package/.agent/skills/nodejs-pro/SKILL.md +172 -0
- package/.agent/skills/nodejs-pro/rules/_sections.md +50 -0
- package/.agent/skills/nodejs-pro/rules/_template.md +32 -0
- package/.agent/skills/nodejs-pro/rules/architecture-patterns.md +229 -0
- package/.agent/skills/nodejs-pro/rules/async-patterns.md +246 -0
- package/.agent/skills/nodejs-pro/rules/engineering-spec.md +438 -0
- package/.agent/skills/nodejs-pro/rules/error-handling.md +257 -0
- package/.agent/skills/nodejs-pro/rules/framework-selection.md +220 -0
- package/.agent/skills/nodejs-pro/rules/runtime-modules.md +176 -0
- package/.agent/skills/nodejs-pro/rules/testing-strategy.md +266 -0
- package/.agent/skills/nodejs-pro/rules/validation-security.md +205 -0
- package/.agent/skills/observability/AGENTS.md +607 -0
- package/.agent/skills/observability/SKILL.md +178 -0
- package/.agent/skills/observability/rules/_sections.md +15 -0
- package/.agent/skills/observability/rules/_template.md +32 -0
- package/.agent/skills/observability/rules/engineering-spec.md +440 -0
- package/.agent/skills/offensive-sec/AGENTS.md +849 -0
- package/.agent/skills/offensive-sec/SKILL.md +191 -0
- package/.agent/skills/offensive-sec/rules/_sections.md +15 -0
- package/.agent/skills/offensive-sec/rules/_template.md +32 -0
- package/.agent/skills/offensive-sec/rules/engineering-spec.md +470 -0
- package/.agent/skills/perf-optimizer/AGENTS.md +870 -0
- package/.agent/skills/perf-optimizer/SKILL.md +189 -0
- package/.agent/skills/perf-optimizer/rules/_sections.md +15 -0
- package/.agent/skills/perf-optimizer/rules/_template.md +32 -0
- package/.agent/skills/perf-optimizer/rules/backend-patterns.md +312 -0
- package/.agent/skills/perf-optimizer/rules/engineering-spec.md +428 -0
- package/.agent/skills/perf-optimizer/scripts/lighthouse_audit.ts +201 -0
- package/.agent/skills/problem-checker/AGENTS.md +519 -0
- package/.agent/skills/problem-checker/SKILL.md +189 -0
- package/.agent/skills/problem-checker/rules/_sections.md +15 -0
- package/.agent/skills/problem-checker/rules/_template.md +32 -0
- package/.agent/skills/problem-checker/rules/engineering-spec.md +483 -0
- package/.agent/skills/problem-checker/scripts/check_problems.ts +396 -0
- package/.agent/skills/project-planner/AGENTS.md +2698 -0
- package/.agent/skills/project-planner/SKILL.md +166 -0
- package/.agent/skills/project-planner/rules/_sections.md +15 -0
- package/.agent/skills/project-planner/rules/_template.md +32 -0
- package/.agent/skills/project-planner/rules/engineering-spec.md +420 -0
- package/.agent/skills/python-pro/AGENTS.md +1871 -0
- package/.agent/skills/python-pro/SKILL.md +182 -0
- package/.agent/skills/python-pro/rules/_sections.md +50 -0
- package/.agent/skills/python-pro/rules/_template.md +32 -0
- package/.agent/skills/python-pro/rules/async-patterns.md +168 -0
- package/.agent/skills/python-pro/rules/django-patterns.md +194 -0
- package/.agent/skills/python-pro/rules/engineering-spec.md +442 -0
- package/.agent/skills/python-pro/rules/fastapi-patterns.md +179 -0
- package/.agent/skills/python-pro/rules/framework-selection.md +167 -0
- package/.agent/skills/python-pro/rules/project-structure.md +181 -0
- package/.agent/skills/python-pro/rules/testing-patterns.md +212 -0
- package/.agent/skills/python-pro/rules/type-hints.md +159 -0
- package/.agent/skills/react-pro/AGENTS.md +963 -0
- package/.agent/skills/react-pro/SKILL.md +232 -0
- package/.agent/skills/react-pro/rules/_sections.md +40 -0
- package/.agent/skills/react-pro/rules/_template.md +32 -0
- package/.agent/skills/react-pro/rules/component-patterns.md +145 -0
- package/.agent/skills/react-pro/rules/composition-compound.md +82 -0
- package/.agent/skills/react-pro/rules/data-fetching.md +133 -0
- package/.agent/skills/react-pro/rules/engineering-spec.md +453 -0
- package/.agent/skills/react-pro/rules/error-boundary.md +61 -0
- package/.agent/skills/react-pro/rules/file-organization.md +158 -0
- package/.agent/skills/react-pro/rules/hooks-custom.md +61 -0
- package/.agent/skills/react-pro/rules/mui-styling.md +138 -0
- package/.agent/skills/react-pro/rules/patterns.md +24 -0
- package/.agent/skills/react-pro/rules/performance-optimization.md +65 -0
- package/.agent/skills/react-pro/rules/performance.md +137 -0
- package/.agent/skills/react-pro/rules/react19-hooks.md +85 -0
- package/.agent/skills/react-pro/rules/state-management.md +90 -0
- package/.agent/skills/react-pro/rules/testing-patterns.md +52 -0
- package/.agent/skills/registry.json +1251 -0
- package/.agent/skills/security-scanner/AGENTS.md +851 -0
- package/.agent/skills/security-scanner/SKILL.md +182 -0
- package/.agent/skills/security-scanner/rules/_sections.md +15 -0
- package/.agent/skills/security-scanner/rules/_template.md +32 -0
- package/.agent/skills/security-scanner/rules/auth-patterns.md +281 -0
- package/.agent/skills/security-scanner/rules/checklists.md +186 -0
- package/.agent/skills/security-scanner/rules/engineering-spec.md +440 -0
- package/.agent/skills/security-scanner/scripts/security_scan.ts +513 -0
- package/.agent/skills/seo-optimizer/AGENTS.md +839 -0
- package/.agent/skills/seo-optimizer/SKILL.md +180 -0
- package/.agent/skills/seo-optimizer/rules/_sections.md +15 -0
- package/.agent/skills/seo-optimizer/rules/_template.md +32 -0
- package/.agent/skills/seo-optimizer/rules/engineering-spec.md +433 -0
- package/.agent/skills/seo-optimizer/scripts/geo_checker.ts +109 -0
- package/.agent/skills/seo-optimizer/scripts/seo_checker.ts +308 -0
- package/.agent/skills/server-ops/AGENTS.md +643 -0
- package/.agent/skills/server-ops/SKILL.md +194 -0
- package/.agent/skills/server-ops/rules/_sections.md +15 -0
- package/.agent/skills/server-ops/rules/_template.md +32 -0
- package/.agent/skills/server-ops/rules/engineering-spec.md +450 -0
- package/.agent/skills/shell-script/AGENTS.md +499 -0
- package/.agent/skills/shell-script/SKILL.md +205 -0
- package/.agent/skills/shell-script/rules/_sections.md +15 -0
- package/.agent/skills/shell-script/rules/_template.md +32 -0
- package/.agent/skills/shell-script/rules/engineering-spec.md +463 -0
- package/.agent/skills/skill-generator/SKILL.md +147 -0
- package/.agent/skills/smart-router/SKILL.md +95 -0
- package/.agent/skills/studio/AGENTS.md +636 -0
- package/.agent/skills/studio/SKILL.md +178 -0
- package/.agent/skills/studio/data/charts.csv +26 -0
- package/.agent/skills/studio/data/colors.csv +97 -0
- package/.agent/skills/studio/data/icons.csv +101 -0
- package/.agent/skills/studio/data/landing.csv +31 -0
- package/.agent/skills/studio/data/products.csv +97 -0
- package/.agent/skills/studio/data/prompts.csv +24 -0
- package/.agent/skills/studio/data/react-performance.csv +45 -0
- package/.agent/skills/studio/data/stacks/flutter.csv +52 -0
- package/.agent/skills/studio/data/stacks/html-tailwind.csv +56 -0
- package/.agent/skills/studio/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/skills/studio/data/stacks/nextjs.csv +53 -0
- package/.agent/skills/studio/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/skills/studio/data/stacks/nuxtjs.csv +59 -0
- package/.agent/skills/studio/data/stacks/react-native.csv +52 -0
- package/.agent/skills/studio/data/stacks/react.csv +54 -0
- package/.agent/skills/studio/data/stacks/shadcn.csv +61 -0
- package/.agent/skills/studio/data/stacks/svelte.csv +54 -0
- package/.agent/skills/studio/data/stacks/swiftui.csv +51 -0
- package/.agent/skills/studio/data/stacks/vue.csv +50 -0
- package/.agent/skills/studio/data/styles.csv +59 -0
- package/.agent/skills/studio/data/typography.csv +58 -0
- package/.agent/skills/studio/data/ui-reasoning.csv +101 -0
- package/.agent/skills/studio/data/ux-guidelines.csv +100 -0
- package/.agent/skills/studio/data/web-interface.csv +31 -0
- package/.agent/skills/studio/rules/_sections.md +15 -0
- package/.agent/skills/studio/rules/_template.md +32 -0
- package/.agent/skills/studio/rules/engineering-spec.md +455 -0
- package/.agent/skills/studio/scripts/core.ts +345 -0
- package/.agent/skills/studio/scripts/design_system.ts +953 -0
- package/.agent/skills/studio/scripts/search.ts +197 -0
- package/.agent/skills/studio/scripts/types.ts +147 -0
- package/.agent/skills/studio/scripts/utils/component-specs.ts +154 -0
- package/.agent/skills/studio/scripts/utils/config-loader.ts +165 -0
- package/.agent/skills/studio/scripts/utils/css-templates.ts +169 -0
- package/.agent/skills/studio/scripts/utils/css-validator.ts +95 -0
- package/.agent/skills/studio/scripts/utils/csv-loader.ts +52 -0
- package/.agent/skills/studio/scripts/utils/intelligent-overrides.ts +129 -0
- package/.agent/skills/studio/scripts/utils/page-override-formatter.ts +143 -0
- package/.agent/skills/studio/scripts/utils/page-type-detector.ts +124 -0
- package/.agent/skills/studio/scripts/utils/search-cache.ts +165 -0
- package/.agent/skills/studio/scripts/utils/text-utils.ts +44 -0
- package/.agent/skills/system-design/AGENTS.md +597 -0
- package/.agent/skills/system-design/SKILL.md +153 -0
- package/.agent/skills/system-design/rules/_sections.md +15 -0
- package/.agent/skills/system-design/rules/_template.md +32 -0
- package/.agent/skills/system-design/rules/context-discovery.md +117 -0
- package/.agent/skills/system-design/rules/engineering-spec.md +437 -0
- package/.agent/skills/system-design/rules/examples.md +180 -0
- package/.agent/skills/system-design/rules/pattern-selection.md +130 -0
- package/.agent/skills/system-design/rules/patterns-reference.md +110 -0
- package/.agent/skills/system-design/rules/trade-off-analysis.md +169 -0
- package/.agent/skills/tailwind-kit/AGENTS.md +1135 -0
- package/.agent/skills/tailwind-kit/SKILL.md +171 -0
- package/.agent/skills/tailwind-kit/rules/_sections.md +20 -0
- package/.agent/skills/tailwind-kit/rules/_template.md +32 -0
- package/.agent/skills/tailwind-kit/rules/components.md +232 -0
- package/.agent/skills/tailwind-kit/rules/engineering-spec.md +435 -0
- package/.agent/skills/tailwind-kit/rules/responsive.md +221 -0
- package/.agent/skills/tailwind-kit/rules/v4-config.md +72 -0
- package/.agent/skills/test-architect/AGENTS.md +851 -0
- package/.agent/skills/test-architect/SKILL.md +176 -0
- package/.agent/skills/test-architect/rules/_sections.md +15 -0
- package/.agent/skills/test-architect/rules/_template.md +32 -0
- package/.agent/skills/test-architect/rules/engineering-spec.md +434 -0
- package/.agent/skills/test-architect/scripts/test_runner.ts +265 -0
- package/.agent/skills/typescript-expert/AGENTS.md +1045 -0
- package/.agent/skills/typescript-expert/SKILL.md +200 -0
- package/.agent/skills/typescript-expert/rules/_sections.md +20 -0
- package/.agent/skills/typescript-expert/rules/_template.md +32 -0
- package/.agent/skills/typescript-expert/rules/engineering-spec.md +433 -0
- package/.agent/skills/typescript-expert/rules/tsconfig-strict.json +92 -0
- package/.agent/skills/typescript-expert/rules/typescript-cheatsheet.md +407 -0
- package/.agent/skills/typescript-expert/rules/utility-types.ts +264 -0
- package/.agent/skills/typescript-expert/scripts/ts_diagnostic.ts +321 -0
- package/.agent/skills/vercel-deploy/AGENTS.md +490 -0
- package/.agent/skills/vercel-deploy/SKILL.md +175 -0
- package/.agent/skills/vercel-deploy/rules/_sections.md +15 -0
- package/.agent/skills/vercel-deploy/rules/_template.md +32 -0
- package/.agent/skills/vercel-deploy/rules/engineering-spec.md +463 -0
- package/.agent/skills/vercel-deploy/scripts/deploy.sh +310 -0
- package/.agent/workflows/api.md +377 -0
- package/.agent/workflows/autopilot.md +344 -0
- package/.agent/workflows/build.md +338 -0
- package/.agent/workflows/chronicle.md +279 -0
- package/.agent/workflows/cook.md +217 -0
- package/.agent/workflows/diagnose.md +302 -0
- package/.agent/workflows/fix.md +253 -0
- package/.agent/workflows/game.md +329 -0
- package/.agent/workflows/inspect.md +276 -0
- package/.agent/workflows/knowledge.md +212 -0
- package/.agent/workflows/launch.md +345 -0
- package/.agent/workflows/mobile.md +354 -0
- package/.agent/workflows/monitor.md +239 -0
- package/.agent/workflows/optimize.md +269 -0
- package/.agent/workflows/plan.md +278 -0
- package/.agent/workflows/stage.md +286 -0
- package/.agent/workflows/studio.md +276 -0
- package/.agent/workflows/think.md +262 -0
- package/.agent/workflows/validate.md +289 -0
- package/.agentignore +161 -0
- package/.gitattributes +16 -0
- package/CHANGELOG.md +198 -0
- package/LICENSE +40 -0
- package/README.md +173 -0
- package/docs/SKILL_DESIGN_GUIDE.md +561 -0
- package/docs/The-Complete-Guide-to-Building-Skills-for-Claude.md +1207 -0
- package/docs/WORKFLOW_DESIGN_GUIDE.md +325 -0
- package/package.json +33 -0
- package/tsconfig.json +28 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-scanner
|
|
3
|
+
description: >-
|
|
4
|
+
Vulnerability analysis: OWASP 2025, supply chain security, and risk prioritization.
|
|
5
|
+
Use when scanning for vulnerabilities, auditing dependencies, or assessing security risks.
|
|
6
|
+
NOT for auth implementation (use auth-patterns) or penetration testing (use offensive-sec).
|
|
7
|
+
category: security-auditor
|
|
8
|
+
triggers: ["security", "vulnerability", "OWASP", "pentest", "threat modeling"]
|
|
9
|
+
coordinates_with: ["offensive-sec", "auth-patterns", "cicd-pipeline", "code-review", "problem-checker", "knowledge-compiler"]
|
|
10
|
+
success_metrics: ["Vulnerability Detection Rate", "OWASP Coverage", "Remediation Completeness"]
|
|
11
|
+
metadata:
|
|
12
|
+
author: pikakit
|
|
13
|
+
version: "3.9.134"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Security Scanner — Vulnerability Analysis & OWASP
|
|
17
|
+
|
|
18
|
+
> Think like an attacker. Prioritize by exploitability (EPSS), not just severity (CVSS).
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 5 Must-Ask Questions (Before Scanning)
|
|
23
|
+
|
|
24
|
+
| # | Question | Options |
|
|
25
|
+
|---|----------|---------|
|
|
26
|
+
| 1 | Target Assets? | User data / API keys / PII / Financial / Source code |
|
|
27
|
+
| 2 | Threat Actors? | Automated bots / Insider threats / Nation-state / Script kiddies |
|
|
28
|
+
| 3 | Attack Vectors? | Web app / API / Supply chain / Social engineering |
|
|
29
|
+
| 4 | Business Impact? | Data breach / Downtime / Regulatory fines / Reputation |
|
|
30
|
+
| 5 | Compliance Requirements? | GDPR / HIPAA / SOC2 / PCI-DSS / None |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## When to Use
|
|
35
|
+
|
|
36
|
+
| Situation | Approach |
|
|
37
|
+
|-----------|----------|
|
|
38
|
+
| Pre-deployment | Run security scan |
|
|
39
|
+
| New dependencies | Check supply chain (A03) |
|
|
40
|
+
| Code review | Check 5 high-risk patterns |
|
|
41
|
+
| Secret detection | Scan 4 secret categories |
|
|
42
|
+
| Auth implementation | Read `auth-patterns.md` |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## System Boundaries
|
|
47
|
+
|
|
48
|
+
| Owned by This Skill | NOT Owned |
|
|
49
|
+
|---------------------|-----------|
|
|
50
|
+
| OWASP Top 10:2025 mapping | Red team execution (→ offensive-sec) |
|
|
51
|
+
| Risk prioritization (EPSS + CVSS) | CI/CD configuration (→ cicd-pipeline) |
|
|
52
|
+
| High-risk code patterns (5) | Authentication design (→ auth-patterns) |
|
|
53
|
+
| Secret detection guidance (4 types) | Code fixes |
|
|
54
|
+
|
|
55
|
+
**Expert decision skill:** Produces vulnerability assessments. Does not run scans.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Core Principles (5 — Fixed)
|
|
60
|
+
|
|
61
|
+
| Principle | Application |
|
|
62
|
+
|-----------|-------------|
|
|
63
|
+
| **Assume Breach** | Design as if attacker is already inside |
|
|
64
|
+
| **Zero Trust** | Never trust, always verify |
|
|
65
|
+
| **Defense in Depth** | Multiple independent layers |
|
|
66
|
+
| **Least Privilege** | Minimum access required |
|
|
67
|
+
| **Fail Secure** | On error, deny access (fail closed) |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Risk Prioritization (Deterministic)
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
Is it actively exploited (EPSS > 0.5)?
|
|
75
|
+
├── YES → CRITICAL: Immediate remediation
|
|
76
|
+
└── NO → Check CVSS score:
|
|
77
|
+
├── ≥ 9.0 → HIGH
|
|
78
|
+
├── 7.0 - 8.9 → Check asset value → MEDIUM or HIGH
|
|
79
|
+
└── < 7.0 → LOW: Schedule later
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## OWASP Top 10:2025 (Fixed)
|
|
85
|
+
|
|
86
|
+
| Rank | Category | Key Indicators |
|
|
87
|
+
|------|----------|---------------|
|
|
88
|
+
| A01 | Broken Access Control | IDOR, SSRF, privilege escalation |
|
|
89
|
+
| A02 | Security Misconfiguration | Default creds, missing headers |
|
|
90
|
+
| A03 | Supply Chain 🆕 | Compromised deps, CI/CD tampering |
|
|
91
|
+
| A04 | Cryptographic Failures | Weak crypto, exposed secrets |
|
|
92
|
+
| A05 | Injection | String concat in queries, user→commands |
|
|
93
|
+
| A06 | Insecure Design | Missing threat model |
|
|
94
|
+
| A07 | Auth Failures | Broken sessions, weak credentials |
|
|
95
|
+
| A08 | Integrity Failures | Unsigned updates, untrusted pipelines |
|
|
96
|
+
| A09 | Logging & Alerting | Missing audit trail |
|
|
97
|
+
| A10 | Exceptional Conditions 🆕 | Unhandled errors exposing internals |
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## High-Risk Code Patterns (5 — Fixed)
|
|
102
|
+
|
|
103
|
+
| Pattern | Risk | Fix |
|
|
104
|
+
|---------|------|-----|
|
|
105
|
+
| String concat in SQL/queries | Injection | Parameterized queries |
|
|
106
|
+
| `eval()`, `exec()` | Remote Code Execution | Remove or sandbox |
|
|
107
|
+
| `pickle.loads()` | Deserialization attack | Use JSON |
|
|
108
|
+
| User input in file paths | Path traversal | Sanitize + allowlist |
|
|
109
|
+
| `verify=False` (SSL) | Security bypass | Enable verification |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Secret Detection (4 Categories)
|
|
114
|
+
|
|
115
|
+
| Type | Indicators |
|
|
116
|
+
|------|-----------|
|
|
117
|
+
| API Keys | `api_key`, `apikey`, high entropy strings |
|
|
118
|
+
| Tokens | `bearer`, `jwt`, `token` |
|
|
119
|
+
| Credentials | `password`, `secret`, `passwd` |
|
|
120
|
+
| Cloud | `AWS_`, `AZURE_`, `GCP_`, `GOOGLE_` |
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Error Taxonomy
|
|
125
|
+
|
|
126
|
+
| Code | Recoverable | Trigger |
|
|
127
|
+
|------|-------------|---------|
|
|
128
|
+
| `ERR_INVALID_REQUEST_TYPE` | No | Request type not supported |
|
|
129
|
+
| `ERR_MISSING_SCORES` | Yes | CVSS/EPSS required for risk |
|
|
130
|
+
| `ERR_INVALID_OWASP` | Yes | Category not A01-A10 |
|
|
131
|
+
| `ERR_INVALID_CVSS` | Yes | CVSS outside 0.0-10.0 |
|
|
132
|
+
|
|
133
|
+
**Zero internal retries.** Same vulnerability = same classification.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Audit Logging (OpenTelemetry)
|
|
138
|
+
|
|
139
|
+
| Event | Metadata Payload | Severity |
|
|
140
|
+
|-------|------------------|----------|
|
|
141
|
+
| `scan_started` | `{"scope": "full_audit", "owasp_focus": ["A01", "A05"]}` | `INFO` |
|
|
142
|
+
| `vulnerability_found` | `{"owasp_category": "A05", "pattern": "sql_injection", "file": "src/db.ts"}` | `WARN` |
|
|
143
|
+
| `risk_classified` | `{"severity": "critical", "cvss": 9.8, "epss": 0.7}` | `WARN` |
|
|
144
|
+
| `scan_completed` | `{"findings_total": 8, "critical": 1, "high": 2}` | `INFO` |
|
|
145
|
+
|
|
146
|
+
All scan outputs MUST emit `scan_started` and `scan_completed` events.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Anti-Patterns
|
|
151
|
+
|
|
152
|
+
| ❌ Don't | ✅ Do |
|
|
153
|
+
|---------|-------|
|
|
154
|
+
| Scan without understanding | Map attack surface first |
|
|
155
|
+
| Alert on every CVE | Prioritize by EPSS exploitability |
|
|
156
|
+
| Fix symptoms only | Address root causes |
|
|
157
|
+
| Trust dependencies blindly | Verify integrity + audit |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 📑 Content Map
|
|
162
|
+
|
|
163
|
+
| File | Description | When to Read |
|
|
164
|
+
|------|-------------|--------------|
|
|
165
|
+
| [auth-patterns.md](rules/auth-patterns.md) | Authentication patterns | Auth implementation |
|
|
166
|
+
| [checklists.md](rules/checklists.md) | Security checklists | Pre-deployment |
|
|
167
|
+
| [scripts/security_scan.ts](scripts/security_scan.ts) | Scan script | Automated scanning |
|
|
168
|
+
| [engineering-spec.md](rules/engineering-spec.md) | Full spec | Architecture review |
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 🔗 Related
|
|
173
|
+
|
|
174
|
+
| Item | Type | Purpose |
|
|
175
|
+
|------|------|---------|
|
|
176
|
+
| `cicd-pipeline` | Skill | Pre-deploy integration |
|
|
177
|
+
| `code-review` | Skill | Manual review |
|
|
178
|
+
| `offensive-sec` | Skill | Red team tactics |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Sections
|
|
2
|
+
|
|
3
|
+
This file defines all sections, their ordering, impact levels, and descriptions.
|
|
4
|
+
The section ID (in parentheses) is the filename prefix used to group rules.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Engineering Specification (engineering)
|
|
9
|
+
|
|
10
|
+
**Impact:** MEDIUM
|
|
11
|
+
**Description:** Full engineering specification covering contracts, security, and scalability.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Rule Title Here
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
impactDescription: Optional description of impact (e.g., "20-50% improvement")
|
|
5
|
+
tags: tag1, tag2
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Rule Title Here
|
|
9
|
+
|
|
10
|
+
**Impact: MEDIUM (optional impact description)**
|
|
11
|
+
|
|
12
|
+
Brief explanation of the rule and why it matters. This should be clear and concise, explaining the performance implications.
|
|
13
|
+
|
|
14
|
+
**Incorrect (description of what's wrong):**
|
|
15
|
+
|
|
16
|
+
```typescript
|
|
17
|
+
// Bad code example here
|
|
18
|
+
const bad = example()
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Correct (description of what's right):**
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
// Good code example here
|
|
25
|
+
const good = example()
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Reference: [Link to documentation or resource](https://example.com)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: auth-patterns
|
|
3
|
+
description: Authentication security patterns — TOTP 2FA, OAuth2, RBAC, password hashing, session management, rate limiting
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Authentication Security Patterns
|
|
7
|
+
|
|
8
|
+
> Fail closed. Hash everything. Short-lived tokens. Defense in depth.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Password Hashing
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
import bcrypt from 'bcrypt'
|
|
16
|
+
|
|
17
|
+
const SALT_ROUNDS = 12 // Cost factor — higher = slower = more secure
|
|
18
|
+
|
|
19
|
+
async function hashPassword(password: string): Promise<string> {
|
|
20
|
+
return bcrypt.hash(password, SALT_ROUNDS)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async function verifyPassword(password: string, hash: string): Promise<boolean> {
|
|
24
|
+
return bcrypt.compare(password, hash)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Usage in signup
|
|
28
|
+
async function signup(email: string, password: string) {
|
|
29
|
+
const hash = await hashPassword(password)
|
|
30
|
+
await db.user.create({ data: { email, passwordHash: hash } })
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Usage in login
|
|
34
|
+
async function login(email: string, password: string) {
|
|
35
|
+
const user = await db.user.findUnique({ where: { email } })
|
|
36
|
+
if (!user || !(await verifyPassword(password, user.passwordHash))) {
|
|
37
|
+
throw new AuthError('Invalid credentials') // Same message for both
|
|
38
|
+
}
|
|
39
|
+
return generateTokens(user)
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## JWT Token Strategy
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import jwt from 'jsonwebtoken'
|
|
49
|
+
|
|
50
|
+
const ACCESS_SECRET = process.env.JWT_ACCESS_SECRET!
|
|
51
|
+
const REFRESH_SECRET = process.env.JWT_REFRESH_SECRET!
|
|
52
|
+
|
|
53
|
+
function generateTokens(user: User) {
|
|
54
|
+
const accessToken = jwt.sign(
|
|
55
|
+
{ sub: user.id, role: user.role },
|
|
56
|
+
ACCESS_SECRET,
|
|
57
|
+
{ expiresIn: '15m' } // Short-lived
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
const refreshToken = jwt.sign(
|
|
61
|
+
{ sub: user.id, jti: crypto.randomUUID() },
|
|
62
|
+
REFRESH_SECRET,
|
|
63
|
+
{ expiresIn: '7d' } // Longer-lived, stored in httpOnly cookie
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
return { accessToken, refreshToken }
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function verifyAccessToken(token: string) {
|
|
70
|
+
try {
|
|
71
|
+
return jwt.verify(token, ACCESS_SECRET) as JwtPayload
|
|
72
|
+
} catch {
|
|
73
|
+
throw new AuthError('Invalid or expired token')
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Session Security Rules
|
|
79
|
+
|
|
80
|
+
| Rule | Implementation |
|
|
81
|
+
|------|---------------|
|
|
82
|
+
| Store access token | `httpOnly` cookie or memory (never localStorage) |
|
|
83
|
+
| Store refresh token | `httpOnly`, `Secure`, `SameSite=Strict` cookie |
|
|
84
|
+
| Rotate refresh token | Issue new one on each refresh, invalidate old |
|
|
85
|
+
| Logout | Delete both tokens + server-side invalidation |
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 2FA TOTP Implementation
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { authenticator } from 'otplib'
|
|
93
|
+
|
|
94
|
+
// Setup — called once when user enables 2FA
|
|
95
|
+
function setup2FA(userId: string) {
|
|
96
|
+
const secret = authenticator.generateSecret()
|
|
97
|
+
const uri = authenticator.keyuri(userId, 'MyApp', secret)
|
|
98
|
+
// Store secret (encrypted) in DB. Show QR code from uri to user.
|
|
99
|
+
return { secret, uri }
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Verify — called on every login with 2FA enabled
|
|
103
|
+
function verify2FA(token: string, secret: string): boolean {
|
|
104
|
+
return authenticator.verify({ token, secret })
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Backup codes — generate on 2FA setup
|
|
108
|
+
function generateBackupCodes(): string[] {
|
|
109
|
+
return Array.from({ length: 10 }, () =>
|
|
110
|
+
crypto.randomBytes(4).toString('hex') // 8-char codes
|
|
111
|
+
)
|
|
112
|
+
// Store hashed. Mark used on consumption. One-time only.
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Account Lockout
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
const MAX_ATTEMPTS = 5
|
|
122
|
+
const LOCK_DURATION_MS = 15 * 60 * 1000 // 15 minutes
|
|
123
|
+
|
|
124
|
+
async function checkLockout(userId: string): Promise<void> {
|
|
125
|
+
const record = await redis.get(`lockout:${userId}`)
|
|
126
|
+
if (!record) return
|
|
127
|
+
|
|
128
|
+
const { count, lastAttempt } = JSON.parse(record)
|
|
129
|
+
if (count >= MAX_ATTEMPTS) {
|
|
130
|
+
const lockExpiry = lastAttempt + LOCK_DURATION_MS
|
|
131
|
+
if (Date.now() < lockExpiry) {
|
|
132
|
+
throw new AccountLockedError(lockExpiry)
|
|
133
|
+
}
|
|
134
|
+
await redis.del(`lockout:${userId}`) // Auto-unlock after timeout
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
async function recordFailedAttempt(userId: string): Promise<void> {
|
|
139
|
+
const key = `lockout:${userId}`
|
|
140
|
+
const record = await redis.get(key)
|
|
141
|
+
const current = record ? JSON.parse(record) : { count: 0 }
|
|
142
|
+
|
|
143
|
+
await redis.setex(key, LOCK_DURATION_MS / 1000, JSON.stringify({
|
|
144
|
+
count: current.count + 1,
|
|
145
|
+
lastAttempt: Date.now(),
|
|
146
|
+
}))
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Password Reset Token
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
import crypto from 'node:crypto'
|
|
156
|
+
|
|
157
|
+
async function requestPasswordReset(email: string): Promise<void> {
|
|
158
|
+
const user = await db.user.findUnique({ where: { email } })
|
|
159
|
+
if (!user) return // Don't reveal if email exists
|
|
160
|
+
|
|
161
|
+
const token = crypto.randomBytes(32).toString('hex')
|
|
162
|
+
const hashedToken = crypto.createHash('sha256').update(token).digest('hex')
|
|
163
|
+
|
|
164
|
+
await db.passwordReset.create({
|
|
165
|
+
data: {
|
|
166
|
+
userId: user.id,
|
|
167
|
+
token: hashedToken, // Store hashed
|
|
168
|
+
expiresAt: new Date(Date.now() + 15 * 60 * 1000), // 15 min
|
|
169
|
+
},
|
|
170
|
+
})
|
|
171
|
+
|
|
172
|
+
await sendEmail(email, `Reset link: https://app.com/reset?token=${token}`)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
async function resetPassword(token: string, newPassword: string): Promise<void> {
|
|
176
|
+
const hashedToken = crypto.createHash('sha256').update(token).digest('hex')
|
|
177
|
+
|
|
178
|
+
const record = await db.passwordReset.findFirst({
|
|
179
|
+
where: { token: hashedToken, expiresAt: { gt: new Date() } },
|
|
180
|
+
})
|
|
181
|
+
if (!record) throw new AuthError('Invalid or expired reset token')
|
|
182
|
+
|
|
183
|
+
await db.user.update({
|
|
184
|
+
where: { id: record.userId },
|
|
185
|
+
data: { passwordHash: await hashPassword(newPassword) },
|
|
186
|
+
})
|
|
187
|
+
|
|
188
|
+
await db.passwordReset.delete({ where: { id: record.id } })
|
|
189
|
+
await invalidateAllSessions(record.userId) // Force re-login
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## RBAC (Role-Based Access Control)
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
// Define roles and permissions
|
|
199
|
+
const PERMISSIONS = {
|
|
200
|
+
admin: ['read', 'write', 'delete', 'manage_users'],
|
|
201
|
+
editor: ['read', 'write'],
|
|
202
|
+
viewer: ['read'],
|
|
203
|
+
} as const
|
|
204
|
+
|
|
205
|
+
type Role = keyof typeof PERMISSIONS
|
|
206
|
+
type Permission = (typeof PERMISSIONS)[Role][number]
|
|
207
|
+
|
|
208
|
+
// Middleware — check permission before route handler
|
|
209
|
+
function requirePermission(permission: Permission) {
|
|
210
|
+
return (req: Request, res: Response, next: NextFunction) => {
|
|
211
|
+
const user = req.user // From auth middleware
|
|
212
|
+
if (!user) return res.status(401).json({ error: 'Unauthorized' })
|
|
213
|
+
|
|
214
|
+
const userPermissions = PERMISSIONS[user.role as Role] || []
|
|
215
|
+
if (!userPermissions.includes(permission)) {
|
|
216
|
+
return res.status(403).json({ error: 'Forbidden' })
|
|
217
|
+
}
|
|
218
|
+
next()
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Usage
|
|
223
|
+
app.delete('/api/users/:id', requirePermission('manage_users'), deleteUser)
|
|
224
|
+
app.put('/api/posts/:id', requirePermission('write'), updatePost)
|
|
225
|
+
app.get('/api/posts', requirePermission('read'), listPosts)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Rate Limiting
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
import rateLimit from 'express-rate-limit'
|
|
234
|
+
|
|
235
|
+
// General API rate limit
|
|
236
|
+
const apiLimiter = rateLimit({
|
|
237
|
+
windowMs: 15 * 60 * 1000, // 15 min
|
|
238
|
+
max: 100, // 100 requests per window
|
|
239
|
+
standardHeaders: true,
|
|
240
|
+
legacyHeaders: false,
|
|
241
|
+
message: { error: 'Too many requests, try again later' },
|
|
242
|
+
})
|
|
243
|
+
|
|
244
|
+
// Strict limit for auth endpoints
|
|
245
|
+
const authLimiter = rateLimit({
|
|
246
|
+
windowMs: 15 * 60 * 1000,
|
|
247
|
+
max: 5, // 5 login attempts per 15 min
|
|
248
|
+
skipSuccessfulRequests: true,
|
|
249
|
+
})
|
|
250
|
+
|
|
251
|
+
app.use('/api/', apiLimiter)
|
|
252
|
+
app.use('/api/auth/login', authLimiter)
|
|
253
|
+
app.use('/api/auth/reset', authLimiter)
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Anti-Patterns
|
|
259
|
+
|
|
260
|
+
| ❌ Don't | ✅ Do |
|
|
261
|
+
|---------|-------|
|
|
262
|
+
| Store passwords as plain text or MD5 | bcrypt/argon2 with cost ≥ 12 |
|
|
263
|
+
| JWT in localStorage | `httpOnly` cookie |
|
|
264
|
+
| Same error for "user not found" vs "wrong password" visible to attacker | Same generic error for both |
|
|
265
|
+
| Unlimited login attempts | Rate limit + account lockout |
|
|
266
|
+
| Long-lived access tokens | 15 min access + 7 day refresh |
|
|
267
|
+
| Skip 2FA for admins | Require 2FA for elevated roles |
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## 🔗 Related
|
|
272
|
+
|
|
273
|
+
| File | When to Read |
|
|
274
|
+
|------|-------------|
|
|
275
|
+
| [checklists.md](checklists.md) | Pre-deployment checklist |
|
|
276
|
+
| [scripts/security_scan.ts](scripts/security_scan.ts) | Automated scanning |
|
|
277
|
+
| [SKILL.md](SKILL.md) | OWASP 2025 mapping |
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
⚡ PikaKit v3.9.134
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: security-checklists
|
|
3
|
+
description: Security audit checklists — OWASP 2025, API security, auth, data protection, headers with implementation code
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Security Checklists
|
|
7
|
+
|
|
8
|
+
> Copy relevant checklists into PLAN.md or security report. Use alongside security_scan.ts.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## OWASP Top 10:2025 Checklist
|
|
13
|
+
|
|
14
|
+
### A01: Broken Access Control
|
|
15
|
+
- [ ] Authorization on all protected routes
|
|
16
|
+
- [ ] Deny by default (fail closed)
|
|
17
|
+
- [ ] Rate limiting on all endpoints
|
|
18
|
+
- [ ] CORS properly configured (no wildcard + credentials)
|
|
19
|
+
- [ ] IDOR protection (validate resource ownership)
|
|
20
|
+
|
|
21
|
+
### A02: Security Misconfiguration
|
|
22
|
+
- [ ] Debug mode disabled in production
|
|
23
|
+
- [ ] Default credentials changed
|
|
24
|
+
- [ ] Error messages sanitized (no stack traces)
|
|
25
|
+
- [ ] Security headers configured (see below)
|
|
26
|
+
- [ ] Unnecessary features/ports disabled
|
|
27
|
+
|
|
28
|
+
### A03: Supply Chain 🆕
|
|
29
|
+
- [ ] Lock file committed (package-lock.json / pnpm-lock.yaml)
|
|
30
|
+
- [ ] `npm audit` or `pnpm audit` passes
|
|
31
|
+
- [ ] CI/CD pipeline uses pinned dependencies
|
|
32
|
+
- [ ] No `postinstall` scripts from untrusted packages
|
|
33
|
+
- [ ] Dependency integrity verified (checksums)
|
|
34
|
+
|
|
35
|
+
### A04: Cryptographic Failures
|
|
36
|
+
- [ ] Passwords hashed (bcrypt cost ≥ 12 or argon2)
|
|
37
|
+
- [ ] Sensitive data encrypted at rest (AES-256)
|
|
38
|
+
- [ ] TLS 1.2+ enforced for all connections
|
|
39
|
+
- [ ] No secrets in code, logs, or version control
|
|
40
|
+
- [ ] Key rotation policy in place
|
|
41
|
+
|
|
42
|
+
### A05: Injection
|
|
43
|
+
- [ ] Parameterized queries (no string concat)
|
|
44
|
+
- [ ] Input validation on all user data
|
|
45
|
+
- [ ] Output encoding for XSS prevention
|
|
46
|
+
- [ ] No `eval()`, `exec()`, or dynamic code execution
|
|
47
|
+
- [ ] CSP header blocks inline scripts
|
|
48
|
+
|
|
49
|
+
### A06: Insecure Design
|
|
50
|
+
- [ ] Threat modeling completed
|
|
51
|
+
- [ ] Business logic validated
|
|
52
|
+
- [ ] Abuse cases documented
|
|
53
|
+
- [ ] Security requirements defined
|
|
54
|
+
|
|
55
|
+
### A07: Auth Failures
|
|
56
|
+
- [ ] MFA available for all users
|
|
57
|
+
- [ ] Session invalidation on logout
|
|
58
|
+
- [ ] Session timeout (15 min access, 7 day refresh)
|
|
59
|
+
- [ ] Brute force protection (lockout + rate limit)
|
|
60
|
+
- [ ] Password policy enforced (min 8 chars, no common passwords)
|
|
61
|
+
|
|
62
|
+
### A08: Integrity Failures
|
|
63
|
+
- [ ] CI/CD pipeline secured (branch protection, signed commits)
|
|
64
|
+
- [ ] Dependency integrity verified
|
|
65
|
+
- [ ] Update mechanism uses signatures
|
|
66
|
+
- [ ] Build artifacts are reproducible
|
|
67
|
+
|
|
68
|
+
### A09: Logging & Alerting
|
|
69
|
+
- [ ] Security events logged (login, failed auth, access denied)
|
|
70
|
+
- [ ] Logs protected from tampering
|
|
71
|
+
- [ ] No sensitive data in logs (passwords, tokens, PII)
|
|
72
|
+
- [ ] Alerting configured for suspicious activity
|
|
73
|
+
- [ ] Audit trail for admin actions
|
|
74
|
+
|
|
75
|
+
### A10: Exceptional Conditions 🆕
|
|
76
|
+
- [ ] All errors handled gracefully
|
|
77
|
+
- [ ] No internal details exposed in error responses
|
|
78
|
+
- [ ] Unhandled exceptions don't crash the application
|
|
79
|
+
- [ ] Error monitoring configured (Sentry, etc.)
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Security Headers Implementation
|
|
84
|
+
|
|
85
|
+
### Next.js (next.config.js)
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
const securityHeaders = [
|
|
89
|
+
{ key: 'Content-Security-Policy', value: "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'" },
|
|
90
|
+
{ key: 'X-Content-Type-Options', value: 'nosniff' },
|
|
91
|
+
{ key: 'X-Frame-Options', value: 'DENY' },
|
|
92
|
+
{ key: 'X-XSS-Protection', value: '1; mode=block' },
|
|
93
|
+
{ key: 'Strict-Transport-Security', value: 'max-age=31536000; includeSubDomains' },
|
|
94
|
+
{ key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
|
|
95
|
+
{ key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
module.exports = {
|
|
99
|
+
async headers() {
|
|
100
|
+
return [{ source: '/(.*)', headers: securityHeaders }]
|
|
101
|
+
},
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Express Middleware
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
import helmet from 'helmet'
|
|
109
|
+
|
|
110
|
+
app.use(helmet()) // Sets all security headers automatically
|
|
111
|
+
|
|
112
|
+
// Or manual:
|
|
113
|
+
app.use((req, res, next) => {
|
|
114
|
+
res.setHeader('Content-Security-Policy', "default-src 'self'")
|
|
115
|
+
res.setHeader('X-Content-Type-Options', 'nosniff')
|
|
116
|
+
res.setHeader('X-Frame-Options', 'DENY')
|
|
117
|
+
res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains')
|
|
118
|
+
res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin')
|
|
119
|
+
next()
|
|
120
|
+
})
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Header Reference
|
|
124
|
+
|
|
125
|
+
| Header | Purpose | Value |
|
|
126
|
+
|--------|---------|-------|
|
|
127
|
+
| `Content-Security-Policy` | XSS prevention | `default-src 'self'` |
|
|
128
|
+
| `X-Content-Type-Options` | MIME sniffing | `nosniff` |
|
|
129
|
+
| `X-Frame-Options` | Clickjacking | `DENY` |
|
|
130
|
+
| `Strict-Transport-Security` | Force HTTPS | `max-age=31536000; includeSubDomains` |
|
|
131
|
+
| `Referrer-Policy` | Referrer control | `strict-origin-when-cross-origin` |
|
|
132
|
+
| `Permissions-Policy` | Feature access | `camera=(), microphone=()` |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Quick Audit Commands
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Dependencies
|
|
140
|
+
npm audit # Node.js vulnerabilities
|
|
141
|
+
npm audit --audit-level=high # Only high+ severity
|
|
142
|
+
pnpm audit # pnpm equivalent
|
|
143
|
+
pip-audit # Python dependencies
|
|
144
|
+
|
|
145
|
+
# Secrets
|
|
146
|
+
npx secretlint "**/*" # Scan for secrets
|
|
147
|
+
git log --all -p | grep -i "password\|api_key\|secret" # Git history
|
|
148
|
+
|
|
149
|
+
# Code patterns
|
|
150
|
+
npx eslint --rule 'no-eval: error' . # Detect eval()
|
|
151
|
+
grep -rn "dangerouslySetInnerHTML" src/ # XSS vectors
|
|
152
|
+
|
|
153
|
+
# Full scan (this skill)
|
|
154
|
+
node .agent/skills/security-scanner/scripts/security_scan.ts . --output=summary
|
|
155
|
+
|
|
156
|
+
# HTTPS/TLS
|
|
157
|
+
openssl s_client -connect example.com:443 # Check TLS version
|
|
158
|
+
curl -I https://example.com | grep -i "strict\|content-security\|x-frame" # Headers
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## CI/CD Security Checklist
|
|
164
|
+
|
|
165
|
+
- [ ] Branch protection on `main` (require PR + approvals)
|
|
166
|
+
- [ ] Secrets stored in CI/CD variables (not in repo)
|
|
167
|
+
- [ ] Dependencies scanned on every PR (`npm audit`)
|
|
168
|
+
- [ ] SAST (Static Analysis) runs on every commit
|
|
169
|
+
- [ ] No `--force` push to protected branches
|
|
170
|
+
- [ ] Build environment isolated (ephemeral containers)
|
|
171
|
+
- [ ] Deployment requires manual approval for production
|
|
172
|
+
- [ ] Artifact signing enabled
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 🔗 Related
|
|
177
|
+
|
|
178
|
+
| File | When to Read |
|
|
179
|
+
|------|-------------|
|
|
180
|
+
| [auth-patterns.md](auth-patterns.md) | Auth implementation |
|
|
181
|
+
| [scripts/security_scan.ts](scripts/security_scan.ts) | Automated scanning |
|
|
182
|
+
| [SKILL.md](SKILL.md) | OWASP 2025 mapping, risk prioritization |
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
⚡ PikaKit v3.9.134
|