cfsa-antigravity 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/bin/cli.mjs +324 -0
  2. package/package.json +34 -0
  3. package/template/.agent/instructions/commands.md +48 -0
  4. package/template/.agent/instructions/patterns.md +61 -0
  5. package/template/.agent/instructions/structure.md +29 -0
  6. package/template/.agent/instructions/tech-stack.md +43 -0
  7. package/template/.agent/instructions/workflow.md +41 -0
  8. package/template/.agent/kit-sync.md +15 -0
  9. package/template/.agent/rules/boundary-not-placeholder.md +146 -0
  10. package/template/.agent/rules/completion-checklist.md +48 -0
  11. package/template/.agent/rules/decision-classification.md +103 -0
  12. package/template/.agent/rules/extensibility.md +47 -0
  13. package/template/.agent/rules/question-vs-command.md +81 -0
  14. package/template/.agent/rules/security-first.md +43 -0
  15. package/template/.agent/rules/specificity-standards.md +54 -0
  16. package/template/.agent/rules/tdd-contract-first.md +57 -0
  17. package/template/.agent/rules/vertical-slices.md +42 -0
  18. package/template/.agent/skill-library/MANIFEST.md +480 -0
  19. package/template/.agent/skill-library/README.md +38 -0
  20. package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
  21. package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
  22. package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
  23. package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
  24. package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
  25. package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
  26. package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
  27. package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
  28. package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
  29. package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
  30. package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
  31. package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
  32. package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
  33. package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
  34. package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
  35. package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
  36. package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
  37. package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
  38. package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
  39. package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
  40. package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
  41. package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
  42. package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
  43. package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
  44. package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
  45. package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
  46. package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
  47. package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
  48. package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
  49. package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
  50. package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
  51. package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
  52. package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
  53. package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
  54. package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
  55. package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
  56. package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
  57. package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
  58. package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
  59. package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
  60. package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
  61. package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
  62. package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
  63. package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
  64. package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
  65. package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
  66. package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
  67. package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
  68. package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
  69. package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
  70. package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
  71. package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
  72. package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
  73. package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
  74. package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
  75. package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
  76. package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
  77. package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
  78. package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
  79. package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
  80. package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
  81. package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
  82. package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
  83. package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
  84. package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
  85. package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
  86. package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
  87. package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
  88. package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
  89. package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
  90. package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
  91. package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
  92. package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
  93. package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
  94. package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
  95. package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
  96. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
  97. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
  98. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
  99. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
  100. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
  101. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
  102. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
  103. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
  104. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
  105. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
  106. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
  107. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
  108. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
  109. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
  110. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
  111. package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
  112. package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
  113. package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
  114. package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
  115. package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
  116. package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
  117. package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
  118. package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
  119. package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
  120. package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
  121. package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
  122. package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
  123. package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
  124. package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
  125. package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
  126. package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
  127. package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
  128. package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
  129. package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
  130. package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
  131. package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
  132. package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
  133. package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
  134. package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
  135. package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
  136. package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
  137. package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
  138. package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
  139. package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
  140. package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
  141. package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
  142. package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
  143. package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
  144. package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
  145. package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
  146. package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
  147. package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
  148. package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
  149. package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
  150. package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
  151. package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
  152. package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
  153. package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
  154. package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
  155. package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
  156. package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
  157. package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
  158. package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
  159. package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
  160. package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
  161. package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
  162. package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
  163. package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
  164. package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
  165. package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
  166. package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
  167. package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
  168. package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
  169. package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
  170. package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
  171. package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
  172. package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
  173. package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
  174. package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
  175. package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
  176. package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
  177. package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
  178. package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
  179. package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
  180. package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
  181. package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
  182. package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
  183. package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
  184. package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
  185. package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
  186. package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
  187. package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
  188. package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
  189. package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
  190. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
  191. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
  192. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
  193. package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
  194. package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
  195. package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
  196. package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
  197. package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
  198. package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
  199. package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
  200. package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
  201. package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
  202. package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
  203. package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
  204. package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
  205. package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
  206. package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
  207. package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
  208. package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
  209. package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
  210. package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
  211. package/template/.agent/skills/accessibility/SKILL.md +522 -0
  212. package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
  213. package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
  214. package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
  215. package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  216. package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
  217. package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  218. package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  219. package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  220. package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  221. package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  222. package/template/.agent/skills/api-versioning/SKILL.md +420 -0
  223. package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
  224. package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
  225. package/template/.agent/skills/brainstorming/SKILL.md +236 -0
  226. package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
  227. package/template/.agent/skills/clean-code/SKILL.md +94 -0
  228. package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
  229. package/template/.agent/skills/concise-planning/SKILL.md +68 -0
  230. package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
  231. package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
  232. package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
  233. package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
  234. package/template/.agent/skills/design-direction/SKILL.md +45 -0
  235. package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
  236. package/template/.agent/skills/find-skills/SKILL.md +145 -0
  237. package/template/.agent/skills/git-advanced/SKILL.md +972 -0
  238. package/template/.agent/skills/git-workflow/SKILL.md +420 -0
  239. package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
  240. package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
  241. package/template/.agent/skills/migration-management/SKILL.md +384 -0
  242. package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
  243. package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
  244. package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
  245. package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
  246. package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
  247. package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
  248. package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  249. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  250. package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  251. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  252. package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
  253. package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
  254. package/template/.agent/skills/prd-templates/SKILL.md +88 -0
  255. package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
  256. package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
  257. package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
  258. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
  259. package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
  260. package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
  261. package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  262. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
  263. package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  264. package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
  265. package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  266. package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
  267. package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
  268. package/template/.agent/skills/prompt-engineer/README.md +659 -0
  269. package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
  270. package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
  271. package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
  272. package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
  273. package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
  274. package/template/.agent/skills/session-continuity/SKILL.md +730 -0
  275. package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  276. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  277. package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
  278. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  279. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
  280. package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  281. package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  282. package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
  283. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  284. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
  285. package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  286. package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
  287. package/template/.agent/skills/skill-creator/README.md +270 -0
  288. package/template/.agent/skills/skill-creator/SKILL.md +590 -0
  289. package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
  290. package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
  291. package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
  292. package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
  293. package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
  294. package/template/.agent/skills/spec-writing/SKILL.md +110 -0
  295. package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
  296. package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
  297. package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  298. package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
  299. package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
  300. package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
  301. package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
  302. package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
  303. package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
  304. package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
  305. package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
  306. package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
  307. package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
  308. package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
  309. package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  310. package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  311. package/template/.agent/skills/technical-writer/SKILL.md +242 -0
  312. package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
  313. package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
  314. package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
  315. package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
  316. package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
  317. package/template/.agent/workflows/audit-ambiguity.md +64 -0
  318. package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
  319. package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
  320. package/template/.agent/workflows/bootstrap-agents.md +66 -0
  321. package/template/.agent/workflows/create-prd-architecture.md +119 -0
  322. package/template/.agent/workflows/create-prd-compile.md +138 -0
  323. package/template/.agent/workflows/create-prd-design-system.md +135 -0
  324. package/template/.agent/workflows/create-prd-security.md +113 -0
  325. package/template/.agent/workflows/create-prd-stack.md +91 -0
  326. package/template/.agent/workflows/create-prd.md +168 -0
  327. package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
  328. package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
  329. package/template/.agent/workflows/decompose-architecture.md +111 -0
  330. package/template/.agent/workflows/evolve-contract.md +98 -0
  331. package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
  332. package/template/.agent/workflows/evolve-feature-classify.md +116 -0
  333. package/template/.agent/workflows/evolve-feature.md +56 -0
  334. package/template/.agent/workflows/ideate-discover.md +144 -0
  335. package/template/.agent/workflows/ideate-extract.md +129 -0
  336. package/template/.agent/workflows/ideate-validate.md +117 -0
  337. package/template/.agent/workflows/ideate.md +113 -0
  338. package/template/.agent/workflows/implement-slice-setup.md +113 -0
  339. package/template/.agent/workflows/implement-slice-tdd.md +198 -0
  340. package/template/.agent/workflows/implement-slice.md +50 -0
  341. package/template/.agent/workflows/plan-phase.md +202 -0
  342. package/template/.agent/workflows/propagate-decision-apply.md +135 -0
  343. package/template/.agent/workflows/propagate-decision-scan.md +147 -0
  344. package/template/.agent/workflows/propagate-decision.md +56 -0
  345. package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
  346. package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
  347. package/template/.agent/workflows/remediate-pipeline.md +55 -0
  348. package/template/.agent/workflows/resolve-ambiguity.md +82 -0
  349. package/template/.agent/workflows/sync-kit.md +209 -0
  350. package/template/.agent/workflows/update-architecture-map.md +74 -0
  351. package/template/.agent/workflows/validate-phase.md +219 -0
  352. package/template/.agent/workflows/verify-infrastructure.md +207 -0
  353. package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
  354. package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
  355. package/template/.agent/workflows/write-architecture-spec.md +63 -0
  356. package/template/.agent/workflows/write-be-spec-classify.md +165 -0
  357. package/template/.agent/workflows/write-be-spec-write.md +98 -0
  358. package/template/.agent/workflows/write-be-spec.md +76 -0
  359. package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
  360. package/template/.agent/workflows/write-fe-spec-write.md +94 -0
  361. package/template/.agent/workflows/write-fe-spec.md +71 -0
  362. package/template/AGENTS.md +176 -0
  363. package/template/GEMINI.md +177 -0
  364. package/template/docs/README.md +187 -0
  365. package/template/docs/audits/.gitkeep +0 -0
  366. package/template/docs/audits/README.md +10 -0
  367. package/template/docs/plans/.gitkeep +0 -0
  368. package/template/docs/plans/README.md +21 -0
  369. package/template/docs/plans/be/.gitkeep +0 -0
  370. package/template/docs/plans/be/README.md +11 -0
  371. package/template/docs/plans/fe/.gitkeep +0 -0
  372. package/template/docs/plans/fe/README.md +11 -0
  373. package/template/docs/plans/ia/.gitkeep +0 -0
  374. package/template/docs/plans/ia/README.md +17 -0
  375. package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
  376. package/template/docs/plans/ia/deep-dives/README.md +5 -0
  377. package/template/docs/plans/phases/.gitkeep +0 -0
  378. package/template/docs/plans/phases/README.md +11 -0
@@ -0,0 +1,421 @@
1
+ ---
2
+ name: owasp-web-security
3
+ description: "OWASP Top 10 (2021) deep dive with vulnerability patterns, exploitation examples, and production fixes across JS/TS, Python, and Go. Use when building web applications, reviewing code for security flaws, or hardening existing systems against injection, broken auth, XSS, and access control attacks."
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # OWASP Top 10 Web Security (2021)
8
+
9
+ **Status**: Production Ready
10
+ **Last Updated**: 2026-02-17
11
+ **Dependencies**: None (standalone skill)
12
+
13
+ ---
14
+
15
+ ## Use This Skill When
16
+
17
+ - Building or reviewing web application security
18
+ - Auditing code for OWASP Top 10 vulnerabilities
19
+ - Implementing security controls for production systems
20
+ - Performing threat modeling against common attack vectors
21
+
22
+ ## Do Not Use This Skill When
23
+
24
+ - You need infrastructure-level security (use cloud-hardening skills instead)
25
+ - You need cryptographic implementation guidance (use crypto-patterns skill)
26
+ - You need CSP/CORS header configuration (use csp-cors-headers skill)
27
+
28
+ ---
29
+
30
+ ## A01:2021 -- Broken Access Control
31
+
32
+ Occurs when users can act outside their intended permissions.
33
+
34
+ ```typescript
35
+ // VULNERABLE: No authorization check
36
+ app.get("/api/users/:id/profile", async (req, res) => {
37
+ const profile = await db.query("SELECT * FROM users WHERE id = $1", [req.params.id]);
38
+ res.json(profile);
39
+ });
40
+
41
+ // SECURE: Verify the authenticated user owns the resource
42
+ app.get("/api/users/:id/profile", requireAuth, async (req, res) => {
43
+ if (req.params.id !== req.user.id && !req.user.roles.includes("admin")) {
44
+ return res.status(403).json({ error: "Forbidden" });
45
+ }
46
+ const profile = await db.query("SELECT * FROM users WHERE id = $1", [req.params.id]);
47
+ if (!profile) return res.status(404).json({ error: "Not found" });
48
+ res.json(profile);
49
+ });
50
+ ```
51
+
52
+ ```python
53
+ # SECURE: Ownership verification in Python
54
+ @app.route("/api/documents/<doc_id>")
55
+ @login_required
56
+ def get_document(doc_id):
57
+ doc = Document.query.get_or_404(doc_id)
58
+ if doc.owner_id != current_user.id and not current_user.is_admin:
59
+ abort(403)
60
+ return jsonify(doc.to_dict())
61
+ ```
62
+
63
+ **Key controls**: Deny by default, enforce ownership checks on every data access,
64
+ log access control failures, disable directory listing.
65
+
66
+ ---
67
+
68
+ ## A02:2021 -- Cryptographic Failures
69
+
70
+ Sensitive data exposed through weak or missing cryptography.
71
+
72
+ ```typescript
73
+ // VULNERABLE: Plaintext password storage
74
+ await db.query("INSERT INTO users (email, password) VALUES ($1, $2)", [email, password]);
75
+
76
+ // SECURE: Hash with bcrypt (cost factor 12+)
77
+ import bcrypt from "bcrypt";
78
+ const hashedPassword = await bcrypt.hash(password, 12);
79
+ await db.query("INSERT INTO users (email, password_hash) VALUES ($1, $2)", [email, hashedPassword]);
80
+ const isValid = await bcrypt.compare(submittedPassword, storedHash);
81
+ ```
82
+
83
+ **Key controls**: Never store plaintext passwords, enforce HTTPS everywhere,
84
+ classify data by sensitivity, disable caching for sensitive responses,
85
+ never use MD5/SHA1/DES/RC4. See crypto-patterns skill for details.
86
+
87
+ ---
88
+
89
+ ## A03:2021 -- Injection
90
+
91
+ Untrusted data sent to an interpreter as part of a command or query.
92
+
93
+ ### SQL Injection
94
+
95
+ ```typescript
96
+ // VULNERABLE: String concatenation
97
+ const query = `SELECT * FROM products WHERE name = '${req.query.name}'`;
98
+
99
+ // SECURE: Parameterized queries
100
+ const results = await db.query("SELECT * FROM products WHERE name = $1", [req.query.name]);
101
+ ```
102
+
103
+ ### NoSQL Injection
104
+
105
+ ```typescript
106
+ // VULNERABLE: Direct user input in MongoDB (attacker sends { "$ne": "" })
107
+ const user = await db.collection("users").findOne({
108
+ username: req.body.username,
109
+ password: req.body.password,
110
+ });
111
+
112
+ // SECURE: Validate input types with Zod
113
+ const LoginSchema = z.object({
114
+ username: z.string().min(1).max(100),
115
+ password: z.string().min(8).max(128),
116
+ });
117
+ const parsed = LoginSchema.safeParse(req.body);
118
+ ```
119
+
120
+ ### Command Injection
121
+
122
+ ```python
123
+ # VULNERABLE: Shell command with user input
124
+ os.system(f"ping -c 4 {hostname}") # hostname = "; rm -rf /"
125
+
126
+ # SECURE: subprocess with argument list (no shell)
127
+ import subprocess, re
128
+ def ping_host(hostname):
129
+ if not re.match(r"^[a-zA-Z0-9._-]+$", hostname):
130
+ raise ValueError("Invalid hostname")
131
+ return subprocess.run(["ping", "-c", "4", hostname], capture_output=True, timeout=30)
132
+ ```
133
+
134
+ ```go
135
+ // SECURE: exec.CommandContext with separate arguments in Go
136
+ func PingHost(hostname string) (string, error) {
137
+ matched, _ := regexp.MatchString(`^[a-zA-Z0-9._-]+$`, hostname)
138
+ if !matched {
139
+ return "", fmt.Errorf("invalid hostname")
140
+ }
141
+ ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
142
+ defer cancel()
143
+ cmd := exec.CommandContext(ctx, "ping", "-c", "4", hostname)
144
+ output, err := cmd.Output()
145
+ return string(output), err
146
+ }
147
+ ```
148
+
149
+ ### LDAP Injection
150
+
151
+ ```typescript
152
+ // SECURE: Escape LDAP special characters
153
+ function escapeLDAP(input: string): string {
154
+ return input.replace(/\\/g, "\\5c").replace(/\*/g, "\\2a")
155
+ .replace(/\(/g, "\\28").replace(/\)/g, "\\29").replace(/\0/g, "\\00");
156
+ }
157
+ ```
158
+
159
+ ---
160
+
161
+ ## A04:2021 -- Insecure Design
162
+
163
+ Flaws in design patterns that cannot be fixed by implementation alone.
164
+
165
+ ```typescript
166
+ // SECURE: Rate limiting at the design level
167
+ import rateLimit from "express-rate-limit";
168
+ const loginLimiter = rateLimit({
169
+ windowMs: 15 * 60 * 1000,
170
+ max: 5,
171
+ message: { error: "Too many login attempts. Try again in 15 minutes." },
172
+ keyGenerator: (req) => req.body.email || req.ip,
173
+ });
174
+ app.post("/api/login", loginLimiter, loginHandler);
175
+ ```
176
+
177
+ **Key controls**: Use threat modeling (STRIDE, PASTA), limit resource consumption
178
+ per user, separate tenant data, test abuse cases.
179
+
180
+ ---
181
+
182
+ ## A05:2021 -- Security Misconfiguration
183
+
184
+ ```typescript
185
+ // VULNERABLE: Stack traces exposed to users
186
+ app.use((err, req, res, next) => {
187
+ res.status(500).json({ error: err.message, stack: err.stack });
188
+ });
189
+
190
+ // SECURE: Generic error response in production
191
+ app.use((err, req, res, next) => {
192
+ const errorId = crypto.randomUUID();
193
+ logger.error({ errorId, err, path: req.path });
194
+ res.status(500).json({ error: "Internal server error", errorId });
195
+ });
196
+ ```
197
+
198
+ **Key controls**: Remove default accounts, disable unnecessary HTTP methods,
199
+ remove server version headers, review cloud storage permissions, automate
200
+ configuration hardening in CI/CD.
201
+
202
+ ---
203
+
204
+ ## A06:2021 -- Vulnerable and Outdated Components
205
+
206
+ ```bash
207
+ npm audit # Check for known vulnerabilities
208
+ npm audit fix # Auto-fix where possible
209
+ npm ci # Use in CI -- respects lockfile exactly
210
+ npm install express@4.21.0 --save-exact # Pin versions
211
+ ```
212
+
213
+ See the dependency-auditing skill for comprehensive guidance.
214
+
215
+ ---
216
+
217
+ ## A07:2021 -- Identification and Authentication Failures
218
+
219
+ ```typescript
220
+ // SECURE: Strong authentication with multiple protections
221
+ const LoginSchema = z.object({
222
+ email: z.string().email().max(255),
223
+ password: z.string().min(8).max(128),
224
+ });
225
+
226
+ app.post("/api/login", loginLimiter, async (req, res) => {
227
+ const parsed = LoginSchema.safeParse(req.body);
228
+ if (!parsed.success) return res.status(400).json({ error: "Invalid input" });
229
+
230
+ const user = await findUser(parsed.data.email);
231
+ // Constant-time comparison even when user not found
232
+ const storedHash = user?.passwordHash || "$2b$12$invalidhashplaceholdervalue";
233
+ const isValid = await bcrypt.compare(parsed.data.password, storedHash);
234
+
235
+ if (!user || !isValid) {
236
+ return res.status(401).json({ error: "Invalid credentials" }); // Same message always
237
+ }
238
+
239
+ req.session.regenerate((err) => {
240
+ if (err) return res.status(500).json({ error: "Session error" });
241
+ req.session.userId = user.id;
242
+ res.json({ success: true });
243
+ });
244
+ });
245
+ ```
246
+
247
+ **Key controls**: MFA for sensitive operations, no default credentials, account lockout,
248
+ secure session IDs (128+ bits entropy), invalidate sessions on logout/password change,
249
+ identical error messages for invalid username vs password.
250
+
251
+ ---
252
+
253
+ ## A08:2021 -- Software and Data Integrity Failures
254
+
255
+ ```html
256
+ <!-- VULNERABLE: No integrity check -->
257
+ <script src="https://cdn.example.com/library.js"></script>
258
+
259
+ <!-- SECURE: Subresource Integrity (SRI) -->
260
+ <script src="https://cdn.example.com/library.js"
261
+ integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
262
+ crossorigin="anonymous"></script>
263
+ ```
264
+
265
+ ```typescript
266
+ // SECURE: Verify webhook signatures with constant-time comparison
267
+ function verifyWebhookSignature(payload: string, signature: string, secret: string): boolean {
268
+ const expected = crypto.createHmac("sha256", secret).update(payload, "utf8").digest("hex");
269
+ return crypto.timingSafeEqual(Buffer.from(signature, "hex"), Buffer.from(expected, "hex"));
270
+ }
271
+ ```
272
+
273
+ ---
274
+
275
+ ## A09:2021 -- Security Logging and Monitoring Failures
276
+
277
+ ```typescript
278
+ import pino from "pino";
279
+ const logger = pino({
280
+ redact: {
281
+ paths: ["req.headers.authorization", "req.body.password", "*.email", "*.ssn"],
282
+ censor: "[REDACTED]",
283
+ },
284
+ });
285
+
286
+ function logAuthEvent(event: {
287
+ action: "login_success" | "login_failure" | "logout" | "password_reset";
288
+ userId?: string; ip: string; userAgent: string; reason?: string;
289
+ }) {
290
+ logger.info({ type: "auth", ...event });
291
+ }
292
+ ```
293
+
294
+ **Key controls**: Log auth events, access control failures, input validation failures.
295
+ Never log passwords/tokens/PII. Ship logs offsite. Alert on attack patterns.
296
+ Retain logs 90+ days.
297
+
298
+ ---
299
+
300
+ ## A10:2021 -- Server-Side Request Forgery (SSRF)
301
+
302
+ ```typescript
303
+ import { URL } from "url";
304
+ import dns from "dns/promises";
305
+
306
+ const BLOCKED_PREFIXES = ["10.", "172.16.", "192.168.", "169.254.", "127."];
307
+
308
+ async function isUrlSafe(urlString: string): Promise<boolean> {
309
+ let parsed: URL;
310
+ try { parsed = new URL(urlString); } catch { return false; }
311
+ if (!["http:", "https:"].includes(parsed.protocol)) return false;
312
+ if (["localhost", "127.0.0.1", "0.0.0.0"].includes(parsed.hostname)) return false;
313
+
314
+ const addresses = await dns.resolve4(parsed.hostname);
315
+ for (const addr of addresses) {
316
+ if (BLOCKED_PREFIXES.some((p) => addr.startsWith(p))) return false;
317
+ }
318
+ return true;
319
+ }
320
+ ```
321
+
322
+ ```go
323
+ // SECURE: SSRF prevention in Go
324
+ func isPrivateIP(ip net.IP) bool {
325
+ privateRanges := []string{"10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "169.254.0.0/16", "127.0.0.0/8"}
326
+ for _, cidr := range privateRanges {
327
+ _, network, _ := net.ParseCIDR(cidr)
328
+ if network.Contains(ip) { return true }
329
+ }
330
+ return false
331
+ }
332
+ ```
333
+
334
+ ---
335
+
336
+ ## XSS Prevention (Cross-Cutting)
337
+
338
+ ```typescript
339
+ // Reflected XSS -- escape output
340
+ import { encode } from "he";
341
+ app.get("/search", (req, res) => {
342
+ res.send(`<h1>Results for: ${encode(req.query.q || "")}</h1>`);
343
+ });
344
+
345
+ // Stored XSS -- sanitize HTML
346
+ import createDOMPurify from "dompurify";
347
+ import { JSDOM } from "jsdom";
348
+ const DOMPurify = createDOMPurify(new JSDOM("").window);
349
+ function sanitize(html: string): string {
350
+ return DOMPurify.sanitize(html, {
351
+ ALLOWED_TAGS: ["b", "i", "em", "strong", "a", "p", "br", "ul", "ol", "li"],
352
+ ALLOWED_ATTR: ["href"], ALLOW_DATA_ATTR: false,
353
+ });
354
+ }
355
+
356
+ // DOM XSS -- use textContent, not innerHTML
357
+ document.getElementById("output").textContent = userInput; // Safe
358
+ document.getElementById("output").innerHTML = userInput; // Vulnerable
359
+ ```
360
+
361
+ ---
362
+
363
+ ## Insecure Deserialization
364
+
365
+ ```python
366
+ # VULNERABLE: pickle.loads on untrusted data -- arbitrary code execution
367
+ data = pickle.loads(serialized_data)
368
+
369
+ # SECURE: JSON + Pydantic validation
370
+ from pydantic import BaseModel
371
+ class UserData(BaseModel):
372
+ name: str
373
+ age: int
374
+ def process_data(raw: str) -> UserData:
375
+ return UserData(**json.loads(raw))
376
+ ```
377
+
378
+ ---
379
+
380
+ ## Anti-Patterns Summary
381
+
382
+ | Anti-Pattern | Risk | Fix |
383
+ |-------------|------|-----|
384
+ | String concatenation in queries | SQL/NoSQL injection | Parameterized queries |
385
+ | User input in shell commands | Command injection | Argument arrays, input validation |
386
+ | Plaintext password storage | Credential theft | bcrypt/argon2 hashing |
387
+ | Different errors for missing user vs wrong password | User enumeration | Identical error messages |
388
+ | Stack traces in production | Information disclosure | Generic error + error ID |
389
+ | No rate limiting on auth | Brute force attacks | Rate limiter per IP and account |
390
+ | innerHTML with user data | XSS | textContent or framework escaping |
391
+ | Fetching arbitrary URLs | SSRF | URL allowlist + IP blocking |
392
+ | pickle.loads on untrusted data | Remote code execution | JSON + schema validation |
393
+ | No security event logging | Undetected breaches | Structured logging with alerts |
394
+
395
+ ---
396
+
397
+ ## Security Testing Checklist
398
+
399
+ - [ ] SQL injection: test with `' OR 1=1 --` in text inputs
400
+ - [ ] XSS: test with `<script>alert(1)</script>` in text inputs
401
+ - [ ] IDOR: change IDs in URLs/bodies to other users' resources
402
+ - [ ] Auth bypass: access protected endpoints without valid tokens
403
+ - [ ] SSRF: submit internal URLs (169.254.169.254, localhost)
404
+ - [ ] Path traversal: test with `../../etc/passwd` in file params
405
+ - [ ] Rate limiting: send 100 rapid requests to auth endpoints
406
+ - [ ] Error handling: verify no stack traces leak in production
407
+ - [ ] Header security: verify CSP, HSTS, X-Frame-Options present
408
+
409
+ ---
410
+
411
+ ## References
412
+
413
+ - **OWASP Top 10 (2021)**: https://owasp.org/Top10/
414
+ - **OWASP Testing Guide**: https://owasp.org/www-project-web-security-testing-guide/
415
+ - **OWASP Cheat Sheet Series**: https://cheatsheetseries.owasp.org/
416
+ - **CWE Top 25**: https://cwe.mitre.org/top25/archive/2023/2023_top25_list.html
417
+ - **MITRE ATT&CK**: https://attack.mitre.org/
418
+
419
+ ---
420
+
421
+ **Last verified**: 2026-02-17 | **Skill version**: 1.0.0