@ruaruababa/vibe-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/CATALOG.md +317 -0
  2. package/README.md +121 -0
  3. package/aliases.json +65 -0
  4. package/bin/vibe.js +2 -0
  5. package/bundles.json +265 -0
  6. package/catalog.json +1560 -0
  7. package/dist/antigravity-skills/bin/cli.js +438 -0
  8. package/dist/antigravity-skills/lib/skill-utils.js +158 -0
  9. package/dist/antigravity-skills/scripts/build-catalog.js +305 -0
  10. package/dist/antigravity-skills/scripts/normalize-frontmatter.js +144 -0
  11. package/dist/antigravity-skills/scripts/validate-skills.js +230 -0
  12. package/dist/bin/vibe.js +2 -0
  13. package/dist/dist/src/cli/index.js +26 -0
  14. package/dist/lib/skill-utils.js +158 -0
  15. package/dist/scripts/build-catalog.js +50 -0
  16. package/dist/scripts/normalize-frontmatter.js +144 -0
  17. package/dist/scripts/validate-skills.js +56 -0
  18. package/dist/src/cli/index.js +146 -0
  19. package/dist/src/types/index.js +13 -0
  20. package/dist/src/utils/fs.js +1 -0
  21. package/package.json +43 -0
  22. package/skills/accessibility-compliance-accessibility-audit/SKILL.md +42 -0
  23. package/skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +502 -0
  24. package/skills/agent-orchestration-improve-agent/SKILL.md +349 -0
  25. package/skills/agent-orchestration-multi-agent-optimize/SKILL.md +239 -0
  26. package/skills/agent-orchestrator/SKILL.md +24 -0
  27. package/skills/ai-engineer/SKILL.md +171 -0
  28. package/skills/airflow-dag-patterns/SKILL.md +41 -0
  29. package/skills/airflow-dag-patterns/resources/implementation-playbook.md +509 -0
  30. package/skills/angular-migration/SKILL.md +428 -0
  31. package/skills/anti-reversing-techniques/SKILL.md +42 -0
  32. package/skills/anti-reversing-techniques/resources/implementation-playbook.md +539 -0
  33. package/skills/api-design-principles/SKILL.md +37 -0
  34. package/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  35. package/skills/api-design-principles/assets/rest-api-template.py +182 -0
  36. package/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  37. package/skills/api-design-principles/references/rest-best-practices.md +408 -0
  38. package/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  39. package/skills/api-documenter/SKILL.md +184 -0
  40. package/skills/api-testing-observability-api-mock/SKILL.md +46 -0
  41. package/skills/api-testing-observability-api-mock/resources/implementation-playbook.md +1327 -0
  42. package/skills/application-performance-performance-optimization/SKILL.md +154 -0
  43. package/skills/architect-review/SKILL.md +174 -0
  44. package/skills/architecture-decision-records/SKILL.md +441 -0
  45. package/skills/architecture-patterns/SKILL.md +37 -0
  46. package/skills/architecture-patterns/resources/implementation-playbook.md +479 -0
  47. package/skills/arm-cortex-expert/SKILL.md +306 -0
  48. package/skills/async-python-patterns/SKILL.md +39 -0
  49. package/skills/async-python-patterns/resources/implementation-playbook.md +678 -0
  50. package/skills/attack-tree-construction/SKILL.md +38 -0
  51. package/skills/attack-tree-construction/resources/implementation-playbook.md +671 -0
  52. package/skills/auth-implementation-patterns/SKILL.md +39 -0
  53. package/skills/auth-implementation-patterns/resources/implementation-playbook.md +618 -0
  54. package/skills/backend-architect/SKILL.md +333 -0
  55. package/skills/backend-development-feature-development/SKILL.md +180 -0
  56. package/skills/backend-security-coder/SKILL.md +156 -0
  57. package/skills/backtesting-frameworks/SKILL.md +39 -0
  58. package/skills/backtesting-frameworks/resources/implementation-playbook.md +647 -0
  59. package/skills/bash-defensive-patterns/SKILL.md +43 -0
  60. package/skills/bash-defensive-patterns/resources/implementation-playbook.md +517 -0
  61. package/skills/bash-pro/SKILL.md +310 -0
  62. package/skills/bats-testing-patterns/SKILL.md +34 -0
  63. package/skills/bats-testing-patterns/resources/implementation-playbook.md +614 -0
  64. package/skills/bazel-build-optimization/SKILL.md +397 -0
  65. package/skills/billing-automation/SKILL.md +42 -0
  66. package/skills/billing-automation/resources/implementation-playbook.md +544 -0
  67. package/skills/binary-analysis-patterns/SKILL.md +450 -0
  68. package/skills/blockchain-developer/SKILL.md +208 -0
  69. package/skills/business-analyst/SKILL.md +182 -0
  70. package/skills/c-pro/SKILL.md +56 -0
  71. package/skills/c4-architecture-c4-architecture/SKILL.md +389 -0
  72. package/skills/c4-code/SKILL.md +244 -0
  73. package/skills/c4-component/SKILL.md +153 -0
  74. package/skills/c4-container/SKILL.md +171 -0
  75. package/skills/c4-context/SKILL.md +150 -0
  76. package/skills/changelog-automation/SKILL.md +38 -0
  77. package/skills/changelog-automation/resources/implementation-playbook.md +538 -0
  78. package/skills/cicd-automation-workflow-automate/SKILL.md +51 -0
  79. package/skills/cicd-automation-workflow-automate/resources/implementation-playbook.md +1333 -0
  80. package/skills/clean-markdown/SKILL.md +23 -0
  81. package/skills/cloud-architect/SKILL.md +135 -0
  82. package/skills/code-documentation-code-explain/SKILL.md +46 -0
  83. package/skills/code-documentation-code-explain/resources/implementation-playbook.md +802 -0
  84. package/skills/code-documentation-doc-generate/SKILL.md +48 -0
  85. package/skills/code-documentation-doc-generate/resources/implementation-playbook.md +640 -0
  86. package/skills/code-refactoring-context-restore/SKILL.md +179 -0
  87. package/skills/code-refactoring-refactor-clean/SKILL.md +51 -0
  88. package/skills/code-refactoring-refactor-clean/resources/implementation-playbook.md +879 -0
  89. package/skills/code-refactoring-tech-debt/SKILL.md +386 -0
  90. package/skills/code-review-ai-ai-review/SKILL.md +450 -0
  91. package/skills/code-review-excellence/SKILL.md +40 -0
  92. package/skills/code-review-excellence/resources/implementation-playbook.md +515 -0
  93. package/skills/code-reviewer/SKILL.md +178 -0
  94. package/skills/codebase-cleanup-deps-audit/SKILL.md +51 -0
  95. package/skills/codebase-cleanup-deps-audit/resources/implementation-playbook.md +766 -0
  96. package/skills/codebase-cleanup-refactor-clean/SKILL.md +51 -0
  97. package/skills/codebase-cleanup-refactor-clean/resources/implementation-playbook.md +879 -0
  98. package/skills/codebase-cleanup-tech-debt/SKILL.md +386 -0
  99. package/skills/competitive-landscape/SKILL.md +34 -0
  100. package/skills/competitive-landscape/resources/implementation-playbook.md +494 -0
  101. package/skills/comprehensive-review-full-review/SKILL.md +146 -0
  102. package/skills/comprehensive-review-pr-enhance/SKILL.md +46 -0
  103. package/skills/comprehensive-review-pr-enhance/resources/implementation-playbook.md +691 -0
  104. package/skills/conductor-implement/SKILL.md +388 -0
  105. package/skills/conductor-manage/SKILL.md +39 -0
  106. package/skills/conductor-manage/resources/implementation-playbook.md +1120 -0
  107. package/skills/conductor-new-track/SKILL.md +433 -0
  108. package/skills/conductor-revert/SKILL.md +372 -0
  109. package/skills/conductor-setup/SKILL.md +426 -0
  110. package/skills/conductor-status/SKILL.md +338 -0
  111. package/skills/conductor-validator/SKILL.md +62 -0
  112. package/skills/content-marketer/SKILL.md +170 -0
  113. package/skills/context-driven-development/SKILL.md +400 -0
  114. package/skills/context-management-context-restore/SKILL.md +179 -0
  115. package/skills/context-management-context-save/SKILL.md +177 -0
  116. package/skills/context-manager/SKILL.md +185 -0
  117. package/skills/cost-optimization/SKILL.md +286 -0
  118. package/skills/cpp-pro/SKILL.md +59 -0
  119. package/skills/cqrs-implementation/SKILL.md +35 -0
  120. package/skills/cqrs-implementation/resources/implementation-playbook.md +540 -0
  121. package/skills/csharp-pro/SKILL.md +59 -0
  122. package/skills/customer-support/SKILL.md +170 -0
  123. package/skills/data-engineer/SKILL.md +224 -0
  124. package/skills/data-engineering-data-driven-feature/SKILL.md +182 -0
  125. package/skills/data-engineering-data-pipeline/SKILL.md +201 -0
  126. package/skills/data-quality-frameworks/SKILL.md +40 -0
  127. package/skills/data-quality-frameworks/resources/implementation-playbook.md +573 -0
  128. package/skills/data-scientist/SKILL.md +199 -0
  129. package/skills/data-storytelling/SKILL.md +465 -0
  130. package/skills/database-admin/SKILL.md +165 -0
  131. package/skills/database-architect/SKILL.md +268 -0
  132. package/skills/database-cloud-optimization-cost-optimize/SKILL.md +44 -0
  133. package/skills/database-cloud-optimization-cost-optimize/resources/implementation-playbook.md +1441 -0
  134. package/skills/database-migration/SKILL.md +436 -0
  135. package/skills/database-migrations-migration-observability/SKILL.md +420 -0
  136. package/skills/database-migrations-sql-migrations/SKILL.md +53 -0
  137. package/skills/database-migrations-sql-migrations/resources/implementation-playbook.md +499 -0
  138. package/skills/database-optimizer/SKILL.md +167 -0
  139. package/skills/dbt-transformation-patterns/SKILL.md +34 -0
  140. package/skills/dbt-transformation-patterns/resources/implementation-playbook.md +547 -0
  141. package/skills/debugger/SKILL.md +49 -0
  142. package/skills/debugging-strategies/SKILL.md +34 -0
  143. package/skills/debugging-strategies/resources/implementation-playbook.md +511 -0
  144. package/skills/debugging-toolkit-smart-debug/SKILL.md +197 -0
  145. package/skills/defi-protocol-templates/SKILL.md +466 -0
  146. package/skills/dependency-management-deps-audit/SKILL.md +44 -0
  147. package/skills/dependency-management-deps-audit/resources/implementation-playbook.md +766 -0
  148. package/skills/dependency-upgrade/SKILL.md +421 -0
  149. package/skills/deployment-engineer/SKILL.md +170 -0
  150. package/skills/deployment-pipeline-design/SKILL.md +371 -0
  151. package/skills/deployment-validation-config-validate/SKILL.md +496 -0
  152. package/skills/devops-troubleshooter/SKILL.md +161 -0
  153. package/skills/distributed-debugging-debug-trace/SKILL.md +44 -0
  154. package/skills/distributed-debugging-debug-trace/resources/implementation-playbook.md +1307 -0
  155. package/skills/distributed-tracing/SKILL.md +450 -0
  156. package/skills/django-pro/SKILL.md +180 -0
  157. package/skills/docs-architect/SKILL.md +98 -0
  158. package/skills/documentation-generation-doc-generate/SKILL.md +48 -0
  159. package/skills/documentation-generation-doc-generate/resources/implementation-playbook.md +640 -0
  160. package/skills/dotnet-architect/SKILL.md +197 -0
  161. package/skills/dotnet-backend-patterns/SKILL.md +37 -0
  162. package/skills/dotnet-backend-patterns/assets/repository-template.cs +523 -0
  163. package/skills/dotnet-backend-patterns/assets/service-template.cs +336 -0
  164. package/skills/dotnet-backend-patterns/references/dapper-patterns.md +544 -0
  165. package/skills/dotnet-backend-patterns/references/ef-core-best-practices.md +355 -0
  166. package/skills/dotnet-backend-patterns/resources/implementation-playbook.md +799 -0
  167. package/skills/dummy-skill/SKILL.md +5 -0
  168. package/skills/dx-optimizer/SKILL.md +83 -0
  169. package/skills/e2e-testing-patterns/SKILL.md +41 -0
  170. package/skills/e2e-testing-patterns/resources/implementation-playbook.md +531 -0
  171. package/skills/elixir-pro/SKILL.md +59 -0
  172. package/skills/embedding-strategies/SKILL.md +491 -0
  173. package/skills/employment-contract-templates/SKILL.md +39 -0
  174. package/skills/employment-contract-templates/resources/implementation-playbook.md +493 -0
  175. package/skills/error-debugging-error-analysis/SKILL.md +47 -0
  176. package/skills/error-debugging-error-analysis/resources/implementation-playbook.md +1143 -0
  177. package/skills/error-debugging-error-trace/SKILL.md +43 -0
  178. package/skills/error-debugging-error-trace/resources/implementation-playbook.md +1361 -0
  179. package/skills/error-debugging-multi-agent-review/SKILL.md +216 -0
  180. package/skills/error-detective/SKILL.md +53 -0
  181. package/skills/error-diagnostics-error-analysis/SKILL.md +47 -0
  182. package/skills/error-diagnostics-error-analysis/resources/implementation-playbook.md +1143 -0
  183. package/skills/error-diagnostics-error-trace/SKILL.md +48 -0
  184. package/skills/error-diagnostics-error-trace/resources/implementation-playbook.md +1371 -0
  185. package/skills/error-diagnostics-smart-debug/SKILL.md +197 -0
  186. package/skills/error-handling-patterns/SKILL.md +35 -0
  187. package/skills/error-handling-patterns/resources/implementation-playbook.md +635 -0
  188. package/skills/event-sourcing-architect/SKILL.md +58 -0
  189. package/skills/event-store-design/SKILL.md +449 -0
  190. package/skills/fastapi-pro/SKILL.md +192 -0
  191. package/skills/fastapi-templates/SKILL.md +32 -0
  192. package/skills/fastapi-templates/resources/implementation-playbook.md +566 -0
  193. package/skills/final-test/SKILL.md +5 -0
  194. package/skills/firmware-analyst/SKILL.md +320 -0
  195. package/skills/flutter-expert/SKILL.md +200 -0
  196. package/skills/framework-migration-code-migrate/SKILL.md +48 -0
  197. package/skills/framework-migration-code-migrate/resources/implementation-playbook.md +1052 -0
  198. package/skills/framework-migration-deps-upgrade/SKILL.md +48 -0
  199. package/skills/framework-migration-deps-upgrade/resources/implementation-playbook.md +755 -0
  200. package/skills/framework-migration-legacy-modernize/SKILL.md +132 -0
  201. package/skills/frontend-developer/SKILL.md +171 -0
  202. package/skills/frontend-mobile-development-component-scaffold/SKILL.md +403 -0
  203. package/skills/frontend-mobile-security-xss-scan/SKILL.md +322 -0
  204. package/skills/frontend-security-coder/SKILL.md +170 -0
  205. package/skills/full-stack-orchestration-full-stack-feature/SKILL.md +135 -0
  206. package/skills/gdpr-data-handling/SKILL.md +33 -0
  207. package/skills/gdpr-data-handling/resources/implementation-playbook.md +615 -0
  208. package/skills/git-advanced-workflows/SKILL.md +412 -0
  209. package/skills/git-pr-workflows-git-workflow/SKILL.md +140 -0
  210. package/skills/git-pr-workflows-onboard/SKILL.md +416 -0
  211. package/skills/git-pr-workflows-pr-enhance/SKILL.md +48 -0
  212. package/skills/git-pr-workflows-pr-enhance/resources/implementation-playbook.md +701 -0
  213. package/skills/github-actions-templates/SKILL.md +345 -0
  214. package/skills/gitlab-ci-patterns/SKILL.md +283 -0
  215. package/skills/gitops-workflow/SKILL.md +303 -0
  216. package/skills/gitops-workflow/references/argocd-setup.md +134 -0
  217. package/skills/gitops-workflow/references/sync-policies.md +131 -0
  218. package/skills/go-concurrency-patterns/SKILL.md +33 -0
  219. package/skills/go-concurrency-patterns/resources/implementation-playbook.md +654 -0
  220. package/skills/godot-gdscript-patterns/SKILL.md +33 -0
  221. package/skills/godot-gdscript-patterns/resources/implementation-playbook.md +804 -0
  222. package/skills/golang-pro/SKILL.md +179 -0
  223. package/skills/grafana-dashboards/SKILL.md +381 -0
  224. package/skills/graphql-architect/SKILL.md +182 -0
  225. package/skills/haskell-pro/SKILL.md +56 -0
  226. package/skills/helm-chart-scaffolding/SKILL.md +34 -0
  227. package/skills/helm-chart-scaffolding/assets/Chart.yaml.template +42 -0
  228. package/skills/helm-chart-scaffolding/assets/values.yaml.template +185 -0
  229. package/skills/helm-chart-scaffolding/references/chart-structure.md +500 -0
  230. package/skills/helm-chart-scaffolding/resources/implementation-playbook.md +543 -0
  231. package/skills/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
  232. package/skills/hr-pro/SKILL.md +126 -0
  233. package/skills/hybrid-cloud-architect/SKILL.md +168 -0
  234. package/skills/hybrid-cloud-networking/SKILL.md +238 -0
  235. package/skills/hybrid-search-implementation/SKILL.md +32 -0
  236. package/skills/hybrid-search-implementation/resources/implementation-playbook.md +567 -0
  237. package/skills/incident-responder/SKILL.md +213 -0
  238. package/skills/incident-response-incident-response/SKILL.md +168 -0
  239. package/skills/incident-response-smart-fix/SKILL.md +29 -0
  240. package/skills/incident-response-smart-fix/resources/implementation-playbook.md +838 -0
  241. package/skills/incident-runbook-templates/SKILL.md +395 -0
  242. package/skills/ios-developer/SKILL.md +219 -0
  243. package/skills/istio-traffic-management/SKILL.md +337 -0
  244. package/skills/java-pro/SKILL.md +177 -0
  245. package/skills/javascript-pro/SKILL.md +57 -0
  246. package/skills/javascript-testing-patterns/SKILL.md +35 -0
  247. package/skills/javascript-testing-patterns/resources/implementation-playbook.md +1024 -0
  248. package/skills/javascript-typescript-typescript-scaffold/SKILL.md +361 -0
  249. package/skills/julia-pro/SKILL.md +209 -0
  250. package/skills/k8s-manifest-generator/SKILL.md +35 -0
  251. package/skills/k8s-manifest-generator/assets/configmap-template.yaml +296 -0
  252. package/skills/k8s-manifest-generator/assets/deployment-template.yaml +203 -0
  253. package/skills/k8s-manifest-generator/assets/service-template.yaml +171 -0
  254. package/skills/k8s-manifest-generator/references/deployment-spec.md +753 -0
  255. package/skills/k8s-manifest-generator/references/service-spec.md +724 -0
  256. package/skills/k8s-manifest-generator/resources/implementation-playbook.md +510 -0
  257. package/skills/k8s-security-policies/SKILL.md +346 -0
  258. package/skills/k8s-security-policies/assets/network-policy-template.yaml +177 -0
  259. package/skills/k8s-security-policies/references/rbac-patterns.md +187 -0
  260. package/skills/kpi-dashboard-design/SKILL.md +440 -0
  261. package/skills/kubernetes-architect/SKILL.md +170 -0
  262. package/skills/langchain-architecture/SKILL.md +350 -0
  263. package/skills/legacy-modernizer/SKILL.md +53 -0
  264. package/skills/legal-advisor/SKILL.md +70 -0
  265. package/skills/linkerd-patterns/SKILL.md +321 -0
  266. package/skills/llm-application-dev-ai-assistant/SKILL.md +35 -0
  267. package/skills/llm-application-dev-ai-assistant/resources/implementation-playbook.md +1236 -0
  268. package/skills/llm-application-dev-langchain-agent/SKILL.md +246 -0
  269. package/skills/llm-application-dev-prompt-optimize/SKILL.md +37 -0
  270. package/skills/llm-application-dev-prompt-optimize/resources/implementation-playbook.md +591 -0
  271. package/skills/llm-evaluation/SKILL.md +483 -0
  272. package/skills/machine-learning-ops-ml-pipeline/SKILL.md +314 -0
  273. package/skills/malware-analyst/SKILL.md +247 -0
  274. package/skills/market-sizing-analysis/SKILL.md +425 -0
  275. package/skills/market-sizing-analysis/examples/saas-market-sizing.md +349 -0
  276. package/skills/market-sizing-analysis/references/data-sources.md +360 -0
  277. package/skills/memory-forensics/SKILL.md +491 -0
  278. package/skills/memory-safety-patterns/SKILL.md +33 -0
  279. package/skills/memory-safety-patterns/resources/implementation-playbook.md +603 -0
  280. package/skills/mermaid-expert/SKILL.md +59 -0
  281. package/skills/microservices-patterns/SKILL.md +35 -0
  282. package/skills/microservices-patterns/resources/implementation-playbook.md +607 -0
  283. package/skills/minecraft-bukkit-pro/SKILL.md +126 -0
  284. package/skills/ml-engineer/SKILL.md +168 -0
  285. package/skills/ml-pipeline-workflow/SKILL.md +257 -0
  286. package/skills/mlops-engineer/SKILL.md +219 -0
  287. package/skills/mobile-developer/SKILL.md +205 -0
  288. package/skills/mobile-security-coder/SKILL.md +184 -0
  289. package/skills/modern-javascript-patterns/SKILL.md +35 -0
  290. package/skills/modern-javascript-patterns/resources/implementation-playbook.md +910 -0
  291. package/skills/monorepo-architect/SKILL.md +61 -0
  292. package/skills/monorepo-management/SKILL.md +35 -0
  293. package/skills/monorepo-management/resources/implementation-playbook.md +621 -0
  294. package/skills/mtls-configuration/SKILL.md +359 -0
  295. package/skills/multi-cloud-architecture/SKILL.md +189 -0
  296. package/skills/multi-platform-apps-multi-platform/SKILL.md +203 -0
  297. package/skills/network-engineer/SKILL.md +169 -0
  298. package/skills/nextjs-app-router-patterns/SKILL.md +33 -0
  299. package/skills/nextjs-app-router-patterns/resources/implementation-playbook.md +543 -0
  300. package/skills/nft-standards/SKILL.md +395 -0
  301. package/skills/node-expert/SKILL.md +23 -0
  302. package/skills/nodejs-backend-patterns/SKILL.md +35 -0
  303. package/skills/nodejs-backend-patterns/resources/implementation-playbook.md +1019 -0
  304. package/skills/nx-workspace-patterns/SKILL.md +464 -0
  305. package/skills/observability-engineer/SKILL.md +237 -0
  306. package/skills/observability-monitoring-monitor-setup/SKILL.md +48 -0
  307. package/skills/observability-monitoring-monitor-setup/resources/implementation-playbook.md +505 -0
  308. package/skills/observability-monitoring-slo-implement/SKILL.md +43 -0
  309. package/skills/observability-monitoring-slo-implement/resources/implementation-playbook.md +1077 -0
  310. package/skills/on-call-handoff-patterns/SKILL.md +453 -0
  311. package/skills/openapi-spec-generation/SKILL.md +33 -0
  312. package/skills/openapi-spec-generation/resources/implementation-playbook.md +1027 -0
  313. package/skills/payment-integration/SKILL.md +77 -0
  314. package/skills/paypal-integration/SKILL.md +479 -0
  315. package/skills/pci-compliance/SKILL.md +478 -0
  316. package/skills/performance-engineer/SKILL.md +180 -0
  317. package/skills/performance-testing-review-ai-review/SKILL.md +450 -0
  318. package/skills/performance-testing-review-multi-agent-review/SKILL.md +216 -0
  319. package/skills/php-pro/SKILL.md +63 -0
  320. package/skills/posix-shell-pro/SKILL.md +304 -0
  321. package/skills/postgresql/SKILL.md +230 -0
  322. package/skills/postmortem-writing/SKILL.md +386 -0
  323. package/skills/projection-patterns/SKILL.md +33 -0
  324. package/skills/projection-patterns/resources/implementation-playbook.md +501 -0
  325. package/skills/prometheus-configuration/SKILL.md +404 -0
  326. package/skills/prompt-engineer/SKILL.md +272 -0
  327. package/skills/prompt-engineering-patterns/SKILL.md +213 -0
  328. package/skills/prompt-engineering-patterns/assets/few-shot-examples.json +106 -0
  329. package/skills/prompt-engineering-patterns/assets/prompt-template-library.md +246 -0
  330. package/skills/prompt-engineering-patterns/references/chain-of-thought.md +399 -0
  331. package/skills/prompt-engineering-patterns/references/few-shot-learning.md +369 -0
  332. package/skills/prompt-engineering-patterns/references/prompt-optimization.md +414 -0
  333. package/skills/prompt-engineering-patterns/references/prompt-templates.md +470 -0
  334. package/skills/prompt-engineering-patterns/references/system-prompts.md +189 -0
  335. package/skills/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  336. package/skills/protocol-reverse-engineering/SKILL.md +29 -0
  337. package/skills/protocol-reverse-engineering/resources/implementation-playbook.md +509 -0
  338. package/skills/python-development-python-scaffold/SKILL.md +331 -0
  339. package/skills/python-packaging/SKILL.md +36 -0
  340. package/skills/python-packaging/resources/implementation-playbook.md +869 -0
  341. package/skills/python-performance-optimization/SKILL.md +36 -0
  342. package/skills/python-performance-optimization/resources/implementation-playbook.md +868 -0
  343. package/skills/python-pro/SKILL.md +158 -0
  344. package/skills/python-testing-patterns/SKILL.md +37 -0
  345. package/skills/python-testing-patterns/resources/implementation-playbook.md +906 -0
  346. package/skills/quant-analyst/SKILL.md +53 -0
  347. package/skills/rag-implementation/SKILL.md +421 -0
  348. package/skills/react-modernization/SKILL.md +34 -0
  349. package/skills/react-modernization/resources/implementation-playbook.md +512 -0
  350. package/skills/react-native-architecture/SKILL.md +33 -0
  351. package/skills/react-native-architecture/resources/implementation-playbook.md +670 -0
  352. package/skills/react-state-management/SKILL.md +441 -0
  353. package/skills/reference-builder/SKILL.md +188 -0
  354. package/skills/reverse-engineer/SKILL.md +173 -0
  355. package/skills/risk-manager/SKILL.md +61 -0
  356. package/skills/risk-metrics-calculation/SKILL.md +33 -0
  357. package/skills/risk-metrics-calculation/resources/implementation-playbook.md +554 -0
  358. package/skills/ruby-pro/SKILL.md +56 -0
  359. package/skills/rust-async-patterns/SKILL.md +33 -0
  360. package/skills/rust-async-patterns/resources/implementation-playbook.md +516 -0
  361. package/skills/rust-pro/SKILL.md +178 -0
  362. package/skills/saga-orchestration/SKILL.md +496 -0
  363. package/skills/sales-automator/SKILL.md +55 -0
  364. package/skills/sast-configuration/SKILL.md +212 -0
  365. package/skills/scala-pro/SKILL.md +82 -0
  366. package/skills/screen-reader-testing/SKILL.md +33 -0
  367. package/skills/screen-reader-testing/resources/implementation-playbook.md +544 -0
  368. package/skills/search-specialist/SKILL.md +80 -0
  369. package/skills/secrets-management/SKILL.md +364 -0
  370. package/skills/security-auditor/SKILL.md +169 -0
  371. package/skills/security-compliance-compliance-check/SKILL.md +55 -0
  372. package/skills/security-compliance-compliance-check/resources/implementation-playbook.md +963 -0
  373. package/skills/security-requirement-extraction/SKILL.md +33 -0
  374. package/skills/security-requirement-extraction/resources/implementation-playbook.md +676 -0
  375. package/skills/security-scanning-security-dependencies/SKILL.md +43 -0
  376. package/skills/security-scanning-security-dependencies/resources/implementation-playbook.md +544 -0
  377. package/skills/security-scanning-security-hardening/SKILL.md +147 -0
  378. package/skills/security-scanning-security-sast/SKILL.md +495 -0
  379. package/skills/seo-authority-builder/SKILL.md +136 -0
  380. package/skills/seo-cannibalization-detector/SKILL.md +123 -0
  381. package/skills/seo-content-auditor/SKILL.md +83 -0
  382. package/skills/seo-content-planner/SKILL.md +108 -0
  383. package/skills/seo-content-refresher/SKILL.md +118 -0
  384. package/skills/seo-content-writer/SKILL.md +96 -0
  385. package/skills/seo-keyword-strategist/SKILL.md +95 -0
  386. package/skills/seo-meta-optimizer/SKILL.md +92 -0
  387. package/skills/seo-snippet-hunter/SKILL.md +114 -0
  388. package/skills/seo-structure-architect/SKILL.md +108 -0
  389. package/skills/service-mesh-expert/SKILL.md +58 -0
  390. package/skills/service-mesh-observability/SKILL.md +395 -0
  391. package/skills/shellcheck-configuration/SKILL.md +466 -0
  392. package/skills/similarity-search-patterns/SKILL.md +33 -0
  393. package/skills/similarity-search-patterns/resources/implementation-playbook.md +557 -0
  394. package/skills/slo-implementation/SKILL.md +341 -0
  395. package/skills/solidity-security/SKILL.md +34 -0
  396. package/skills/solidity-security/resources/implementation-playbook.md +524 -0
  397. package/skills/spark-optimization/SKILL.md +427 -0
  398. package/skills/sql-optimization-patterns/SKILL.md +35 -0
  399. package/skills/sql-optimization-patterns/resources/implementation-playbook.md +504 -0
  400. package/skills/sql-pro/SKILL.md +173 -0
  401. package/skills/startup-analyst/SKILL.md +328 -0
  402. package/skills/startup-business-analyst-business-case/SKILL.md +487 -0
  403. package/skills/startup-business-analyst-financial-projections/SKILL.md +353 -0
  404. package/skills/startup-business-analyst-market-opportunity/SKILL.md +240 -0
  405. package/skills/startup-financial-modeling/SKILL.md +467 -0
  406. package/skills/startup-metrics-framework/SKILL.md +34 -0
  407. package/skills/startup-metrics-framework/resources/implementation-playbook.md +500 -0
  408. package/skills/stride-analysis-patterns/SKILL.md +33 -0
  409. package/skills/stride-analysis-patterns/resources/implementation-playbook.md +655 -0
  410. package/skills/stripe-integration/SKILL.md +454 -0
  411. package/skills/systems-programming-rust-project/SKILL.md +440 -0
  412. package/skills/tailwind-design-system/SKILL.md +33 -0
  413. package/skills/tailwind-design-system/resources/implementation-playbook.md +665 -0
  414. package/skills/tdd-orchestrator/SKILL.md +205 -0
  415. package/skills/tdd-workflows-tdd-cycle/SKILL.md +221 -0
  416. package/skills/tdd-workflows-tdd-green/SKILL.md +73 -0
  417. package/skills/tdd-workflows-tdd-green/resources/implementation-playbook.md +870 -0
  418. package/skills/tdd-workflows-tdd-red/SKILL.md +164 -0
  419. package/skills/tdd-workflows-tdd-refactor/SKILL.md +187 -0
  420. package/skills/team-collaboration-issue/SKILL.md +37 -0
  421. package/skills/team-collaboration-issue/resources/implementation-playbook.md +640 -0
  422. package/skills/team-collaboration-standup-notes/SKILL.md +44 -0
  423. package/skills/team-collaboration-standup-notes/resources/implementation-playbook.md +768 -0
  424. package/skills/team-composition-analysis/SKILL.md +413 -0
  425. package/skills/temporal-python-pro/SKILL.md +370 -0
  426. package/skills/temporal-python-testing/SKILL.md +170 -0
  427. package/skills/temporal-python-testing/resources/integration-testing.md +455 -0
  428. package/skills/temporal-python-testing/resources/local-setup.md +553 -0
  429. package/skills/temporal-python-testing/resources/replay-testing.md +462 -0
  430. package/skills/temporal-python-testing/resources/unit-testing.md +328 -0
  431. package/skills/terraform-module-library/SKILL.md +261 -0
  432. package/skills/terraform-module-library/references/aws-modules.md +63 -0
  433. package/skills/terraform-specialist/SKILL.md +166 -0
  434. package/skills/test-automator/SKILL.md +224 -0
  435. package/skills/threat-mitigation-mapping/SKILL.md +33 -0
  436. package/skills/threat-mitigation-mapping/resources/implementation-playbook.md +744 -0
  437. package/skills/threat-modeling-expert/SKILL.md +60 -0
  438. package/skills/track-management/SKILL.md +38 -0
  439. package/skills/track-management/resources/implementation-playbook.md +591 -0
  440. package/skills/turborepo-caching/SKILL.md +419 -0
  441. package/skills/tutorial-engineer/SKILL.md +139 -0
  442. package/skills/typescript-advanced-types/SKILL.md +35 -0
  443. package/skills/typescript-advanced-types/resources/implementation-playbook.md +716 -0
  444. package/skills/typescript-pro/SKILL.md +55 -0
  445. package/skills/ui-minimal/SKILL.md +23 -0
  446. package/skills/ui-ux-designer/SKILL.md +209 -0
  447. package/skills/ui-visual-validator/SKILL.md +214 -0
  448. package/skills/unit-testing-test-generate/SKILL.md +319 -0
  449. package/skills/unity-developer/SKILL.md +230 -0
  450. package/skills/unity-ecs-patterns/SKILL.md +33 -0
  451. package/skills/unity-ecs-patterns/resources/implementation-playbook.md +625 -0
  452. package/skills/uv-package-manager/SKILL.md +37 -0
  453. package/skills/uv-package-manager/resources/implementation-playbook.md +830 -0
  454. package/skills/vector-database-engineer/SKILL.md +60 -0
  455. package/skills/vector-index-tuning/SKILL.md +42 -0
  456. package/skills/vector-index-tuning/resources/implementation-playbook.md +507 -0
  457. package/skills/wcag-audit-patterns/SKILL.md +41 -0
  458. package/skills/wcag-audit-patterns/resources/implementation-playbook.md +541 -0
  459. package/skills/web3-testing/SKILL.md +427 -0
  460. package/skills/workflow-orchestration-patterns/SKILL.md +333 -0
  461. package/skills/workflow-patterns/SKILL.md +38 -0
  462. package/skills/workflow-patterns/resources/implementation-playbook.md +621 -0
@@ -0,0 +1,671 @@
1
+ # Attack Tree Construction Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ ## Core Concepts
6
+
7
+ ### 1. Attack Tree Structure
8
+
9
+ ```
10
+ [Root Goal]
11
+ |
12
+ ┌────────────┴────────────┐
13
+ │ │
14
+ [Sub-goal 1] [Sub-goal 2]
15
+ (OR node) (AND node)
16
+ │ │
17
+ ┌─────┴─────┐ ┌─────┴─────┐
18
+ │ │ │ │
19
+ [Attack] [Attack] [Attack] [Attack]
20
+ (leaf) (leaf) (leaf) (leaf)
21
+ ```
22
+
23
+ ### 2. Node Types
24
+
25
+ | Type | Symbol | Description |
26
+ |------|--------|-------------|
27
+ | **OR** | Oval | Any child achieves goal |
28
+ | **AND** | Rectangle | All children required |
29
+ | **Leaf** | Box | Atomic attack step |
30
+
31
+ ### 3. Attack Attributes
32
+
33
+ | Attribute | Description | Values |
34
+ |-----------|-------------|--------|
35
+ | **Cost** | Resources needed | $, $$, $$$ |
36
+ | **Time** | Duration to execute | Hours, Days, Weeks |
37
+ | **Skill** | Expertise required | Low, Medium, High |
38
+ | **Detection** | Likelihood of detection | Low, Medium, High |
39
+
40
+ ## Templates
41
+
42
+ ### Template 1: Attack Tree Data Model
43
+
44
+ ```python
45
+ from dataclasses import dataclass, field
46
+ from enum import Enum
47
+ from typing import List, Dict, Optional, Union
48
+ import json
49
+
50
+ class NodeType(Enum):
51
+ OR = "or"
52
+ AND = "and"
53
+ LEAF = "leaf"
54
+
55
+
56
+ class Difficulty(Enum):
57
+ TRIVIAL = 1
58
+ LOW = 2
59
+ MEDIUM = 3
60
+ HIGH = 4
61
+ EXPERT = 5
62
+
63
+
64
+ class Cost(Enum):
65
+ FREE = 0
66
+ LOW = 1
67
+ MEDIUM = 2
68
+ HIGH = 3
69
+ VERY_HIGH = 4
70
+
71
+
72
+ class DetectionRisk(Enum):
73
+ NONE = 0
74
+ LOW = 1
75
+ MEDIUM = 2
76
+ HIGH = 3
77
+ CERTAIN = 4
78
+
79
+
80
+ @dataclass
81
+ class AttackAttributes:
82
+ difficulty: Difficulty = Difficulty.MEDIUM
83
+ cost: Cost = Cost.MEDIUM
84
+ detection_risk: DetectionRisk = DetectionRisk.MEDIUM
85
+ time_hours: float = 8.0
86
+ requires_insider: bool = False
87
+ requires_physical: bool = False
88
+
89
+
90
+ @dataclass
91
+ class AttackNode:
92
+ id: str
93
+ name: str
94
+ description: str
95
+ node_type: NodeType
96
+ attributes: AttackAttributes = field(default_factory=AttackAttributes)
97
+ children: List['AttackNode'] = field(default_factory=list)
98
+ mitigations: List[str] = field(default_factory=list)
99
+ cve_refs: List[str] = field(default_factory=list)
100
+
101
+ def add_child(self, child: 'AttackNode') -> None:
102
+ self.children.append(child)
103
+
104
+ def calculate_path_difficulty(self) -> float:
105
+ """Calculate aggregate difficulty for this path."""
106
+ if self.node_type == NodeType.LEAF:
107
+ return self.attributes.difficulty.value
108
+
109
+ if not self.children:
110
+ return 0
111
+
112
+ child_difficulties = [c.calculate_path_difficulty() for c in self.children]
113
+
114
+ if self.node_type == NodeType.OR:
115
+ return min(child_difficulties)
116
+ else: # AND
117
+ return max(child_difficulties)
118
+
119
+ def calculate_path_cost(self) -> float:
120
+ """Calculate aggregate cost for this path."""
121
+ if self.node_type == NodeType.LEAF:
122
+ return self.attributes.cost.value
123
+
124
+ if not self.children:
125
+ return 0
126
+
127
+ child_costs = [c.calculate_path_cost() for c in self.children]
128
+
129
+ if self.node_type == NodeType.OR:
130
+ return min(child_costs)
131
+ else: # AND
132
+ return sum(child_costs)
133
+
134
+ def to_dict(self) -> Dict:
135
+ """Convert to dictionary for serialization."""
136
+ return {
137
+ "id": self.id,
138
+ "name": self.name,
139
+ "description": self.description,
140
+ "type": self.node_type.value,
141
+ "attributes": {
142
+ "difficulty": self.attributes.difficulty.name,
143
+ "cost": self.attributes.cost.name,
144
+ "detection_risk": self.attributes.detection_risk.name,
145
+ "time_hours": self.attributes.time_hours,
146
+ },
147
+ "mitigations": self.mitigations,
148
+ "children": [c.to_dict() for c in self.children]
149
+ }
150
+
151
+
152
+ @dataclass
153
+ class AttackTree:
154
+ name: str
155
+ description: str
156
+ root: AttackNode
157
+ version: str = "1.0"
158
+
159
+ def find_easiest_path(self) -> List[AttackNode]:
160
+ """Find the path with lowest difficulty."""
161
+ return self._find_path(self.root, minimize="difficulty")
162
+
163
+ def find_cheapest_path(self) -> List[AttackNode]:
164
+ """Find the path with lowest cost."""
165
+ return self._find_path(self.root, minimize="cost")
166
+
167
+ def find_stealthiest_path(self) -> List[AttackNode]:
168
+ """Find the path with lowest detection risk."""
169
+ return self._find_path(self.root, minimize="detection")
170
+
171
+ def _find_path(
172
+ self,
173
+ node: AttackNode,
174
+ minimize: str
175
+ ) -> List[AttackNode]:
176
+ """Recursive path finding."""
177
+ if node.node_type == NodeType.LEAF:
178
+ return [node]
179
+
180
+ if not node.children:
181
+ return [node]
182
+
183
+ if node.node_type == NodeType.OR:
184
+ # Pick the best child path
185
+ best_path = None
186
+ best_score = float('inf')
187
+
188
+ for child in node.children:
189
+ child_path = self._find_path(child, minimize)
190
+ score = self._path_score(child_path, minimize)
191
+ if score < best_score:
192
+ best_score = score
193
+ best_path = child_path
194
+
195
+ return [node] + (best_path or [])
196
+ else: # AND
197
+ # Must traverse all children
198
+ path = [node]
199
+ for child in node.children:
200
+ path.extend(self._find_path(child, minimize))
201
+ return path
202
+
203
+ def _path_score(self, path: List[AttackNode], metric: str) -> float:
204
+ """Calculate score for a path."""
205
+ if metric == "difficulty":
206
+ return sum(n.attributes.difficulty.value for n in path if n.node_type == NodeType.LEAF)
207
+ elif metric == "cost":
208
+ return sum(n.attributes.cost.value for n in path if n.node_type == NodeType.LEAF)
209
+ elif metric == "detection":
210
+ return sum(n.attributes.detection_risk.value for n in path if n.node_type == NodeType.LEAF)
211
+ return 0
212
+
213
+ def get_all_leaf_attacks(self) -> List[AttackNode]:
214
+ """Get all leaf attack nodes."""
215
+ leaves = []
216
+ self._collect_leaves(self.root, leaves)
217
+ return leaves
218
+
219
+ def _collect_leaves(self, node: AttackNode, leaves: List[AttackNode]) -> None:
220
+ if node.node_type == NodeType.LEAF:
221
+ leaves.append(node)
222
+ for child in node.children:
223
+ self._collect_leaves(child, leaves)
224
+
225
+ def get_unmitigated_attacks(self) -> List[AttackNode]:
226
+ """Find attacks without mitigations."""
227
+ return [n for n in self.get_all_leaf_attacks() if not n.mitigations]
228
+
229
+ def export_json(self) -> str:
230
+ """Export tree to JSON."""
231
+ return json.dumps({
232
+ "name": self.name,
233
+ "description": self.description,
234
+ "version": self.version,
235
+ "root": self.root.to_dict()
236
+ }, indent=2)
237
+ ```
238
+
239
+ ### Template 2: Attack Tree Builder
240
+
241
+ ```python
242
+ class AttackTreeBuilder:
243
+ """Fluent builder for attack trees."""
244
+
245
+ def __init__(self, name: str, description: str):
246
+ self.name = name
247
+ self.description = description
248
+ self._node_stack: List[AttackNode] = []
249
+ self._root: Optional[AttackNode] = None
250
+
251
+ def goal(self, id: str, name: str, description: str = "") -> 'AttackTreeBuilder':
252
+ """Set the root goal (OR node by default)."""
253
+ self._root = AttackNode(
254
+ id=id,
255
+ name=name,
256
+ description=description,
257
+ node_type=NodeType.OR
258
+ )
259
+ self._node_stack = [self._root]
260
+ return self
261
+
262
+ def or_node(self, id: str, name: str, description: str = "") -> 'AttackTreeBuilder':
263
+ """Add an OR sub-goal."""
264
+ node = AttackNode(
265
+ id=id,
266
+ name=name,
267
+ description=description,
268
+ node_type=NodeType.OR
269
+ )
270
+ self._current().add_child(node)
271
+ self._node_stack.append(node)
272
+ return self
273
+
274
+ def and_node(self, id: str, name: str, description: str = "") -> 'AttackTreeBuilder':
275
+ """Add an AND sub-goal (all children required)."""
276
+ node = AttackNode(
277
+ id=id,
278
+ name=name,
279
+ description=description,
280
+ node_type=NodeType.AND
281
+ )
282
+ self._current().add_child(node)
283
+ self._node_stack.append(node)
284
+ return self
285
+
286
+ def attack(
287
+ self,
288
+ id: str,
289
+ name: str,
290
+ description: str = "",
291
+ difficulty: Difficulty = Difficulty.MEDIUM,
292
+ cost: Cost = Cost.MEDIUM,
293
+ detection: DetectionRisk = DetectionRisk.MEDIUM,
294
+ time_hours: float = 8.0,
295
+ mitigations: List[str] = None
296
+ ) -> 'AttackTreeBuilder':
297
+ """Add a leaf attack node."""
298
+ node = AttackNode(
299
+ id=id,
300
+ name=name,
301
+ description=description,
302
+ node_type=NodeType.LEAF,
303
+ attributes=AttackAttributes(
304
+ difficulty=difficulty,
305
+ cost=cost,
306
+ detection_risk=detection,
307
+ time_hours=time_hours
308
+ ),
309
+ mitigations=mitigations or []
310
+ )
311
+ self._current().add_child(node)
312
+ return self
313
+
314
+ def end(self) -> 'AttackTreeBuilder':
315
+ """Close current node, return to parent."""
316
+ if len(self._node_stack) > 1:
317
+ self._node_stack.pop()
318
+ return self
319
+
320
+ def build(self) -> AttackTree:
321
+ """Build the attack tree."""
322
+ if not self._root:
323
+ raise ValueError("No root goal defined")
324
+ return AttackTree(
325
+ name=self.name,
326
+ description=self.description,
327
+ root=self._root
328
+ )
329
+
330
+ def _current(self) -> AttackNode:
331
+ if not self._node_stack:
332
+ raise ValueError("No current node")
333
+ return self._node_stack[-1]
334
+
335
+
336
+ # Example usage
337
+ def build_account_takeover_tree() -> AttackTree:
338
+ """Build attack tree for account takeover scenario."""
339
+ return (
340
+ AttackTreeBuilder("Account Takeover", "Gain unauthorized access to user account")
341
+ .goal("G1", "Take Over User Account")
342
+
343
+ .or_node("S1", "Steal Credentials")
344
+ .attack(
345
+ "A1", "Phishing Attack",
346
+ difficulty=Difficulty.LOW,
347
+ cost=Cost.LOW,
348
+ detection=DetectionRisk.MEDIUM,
349
+ mitigations=["Security awareness training", "Email filtering"]
350
+ )
351
+ .attack(
352
+ "A2", "Credential Stuffing",
353
+ difficulty=Difficulty.TRIVIAL,
354
+ cost=Cost.LOW,
355
+ detection=DetectionRisk.HIGH,
356
+ mitigations=["Rate limiting", "MFA", "Password breach monitoring"]
357
+ )
358
+ .attack(
359
+ "A3", "Keylogger Malware",
360
+ difficulty=Difficulty.MEDIUM,
361
+ cost=Cost.MEDIUM,
362
+ detection=DetectionRisk.MEDIUM,
363
+ mitigations=["Endpoint protection", "MFA"]
364
+ )
365
+ .end()
366
+
367
+ .or_node("S2", "Bypass Authentication")
368
+ .attack(
369
+ "A4", "Session Hijacking",
370
+ difficulty=Difficulty.MEDIUM,
371
+ cost=Cost.LOW,
372
+ detection=DetectionRisk.LOW,
373
+ mitigations=["Secure session management", "HTTPS only"]
374
+ )
375
+ .attack(
376
+ "A5", "Authentication Bypass Vulnerability",
377
+ difficulty=Difficulty.HIGH,
378
+ cost=Cost.LOW,
379
+ detection=DetectionRisk.LOW,
380
+ mitigations=["Security testing", "Code review", "WAF"]
381
+ )
382
+ .end()
383
+
384
+ .or_node("S3", "Social Engineering")
385
+ .and_node("S3.1", "Account Recovery Attack")
386
+ .attack(
387
+ "A6", "Gather Personal Information",
388
+ difficulty=Difficulty.LOW,
389
+ cost=Cost.FREE,
390
+ detection=DetectionRisk.NONE
391
+ )
392
+ .attack(
393
+ "A7", "Call Support Desk",
394
+ difficulty=Difficulty.MEDIUM,
395
+ cost=Cost.FREE,
396
+ detection=DetectionRisk.MEDIUM,
397
+ mitigations=["Support verification procedures", "Security questions"]
398
+ )
399
+ .end()
400
+ .end()
401
+
402
+ .build()
403
+ )
404
+ ```
405
+
406
+ ### Template 3: Mermaid Diagram Generator
407
+
408
+ ```python
409
+ class MermaidExporter:
410
+ """Export attack trees to Mermaid diagram format."""
411
+
412
+ def __init__(self, tree: AttackTree):
413
+ self.tree = tree
414
+ self._lines: List[str] = []
415
+ self._node_count = 0
416
+
417
+ def export(self) -> str:
418
+ """Export tree to Mermaid flowchart."""
419
+ self._lines = ["flowchart TD"]
420
+ self._export_node(self.tree.root, None)
421
+ return "\n".join(self._lines)
422
+
423
+ def _export_node(self, node: AttackNode, parent_id: Optional[str]) -> str:
424
+ """Recursively export nodes."""
425
+ node_id = f"N{self._node_count}"
426
+ self._node_count += 1
427
+
428
+ # Node shape based on type
429
+ if node.node_type == NodeType.OR:
430
+ shape = f"{node_id}(({node.name}))"
431
+ elif node.node_type == NodeType.AND:
432
+ shape = f"{node_id}[{node.name}]"
433
+ else: # LEAF
434
+ # Color based on difficulty
435
+ style = self._get_leaf_style(node)
436
+ shape = f"{node_id}[/{node.name}/]"
437
+ self._lines.append(f" style {node_id} {style}")
438
+
439
+ self._lines.append(f" {shape}")
440
+
441
+ if parent_id:
442
+ connector = "-->" if node.node_type != NodeType.AND else "==>"
443
+ self._lines.append(f" {parent_id} {connector} {node_id}")
444
+
445
+ for child in node.children:
446
+ self._export_node(child, node_id)
447
+
448
+ return node_id
449
+
450
+ def _get_leaf_style(self, node: AttackNode) -> str:
451
+ """Get style based on attack attributes."""
452
+ colors = {
453
+ Difficulty.TRIVIAL: "fill:#ff6b6b", # Red - easy attack
454
+ Difficulty.LOW: "fill:#ffa06b",
455
+ Difficulty.MEDIUM: "fill:#ffd93d",
456
+ Difficulty.HIGH: "fill:#6bcb77",
457
+ Difficulty.EXPERT: "fill:#4d96ff", # Blue - hard attack
458
+ }
459
+ color = colors.get(node.attributes.difficulty, "fill:#gray")
460
+ return color
461
+
462
+
463
+ class PlantUMLExporter:
464
+ """Export attack trees to PlantUML format."""
465
+
466
+ def __init__(self, tree: AttackTree):
467
+ self.tree = tree
468
+
469
+ def export(self) -> str:
470
+ """Export tree to PlantUML."""
471
+ lines = [
472
+ "@startmindmap",
473
+ f"* {self.tree.name}",
474
+ ]
475
+ self._export_node(self.tree.root, lines, 1)
476
+ lines.append("@endmindmap")
477
+ return "\n".join(lines)
478
+
479
+ def _export_node(self, node: AttackNode, lines: List[str], depth: int) -> None:
480
+ """Recursively export nodes."""
481
+ prefix = "*" * (depth + 1)
482
+
483
+ if node.node_type == NodeType.OR:
484
+ marker = "[OR]"
485
+ elif node.node_type == NodeType.AND:
486
+ marker = "[AND]"
487
+ else:
488
+ diff = node.attributes.difficulty.name
489
+ marker = f"<<{diff}>>"
490
+
491
+ lines.append(f"{prefix} {marker} {node.name}")
492
+
493
+ for child in node.children:
494
+ self._export_node(child, lines, depth + 1)
495
+ ```
496
+
497
+ ### Template 4: Attack Path Analysis
498
+
499
+ ```python
500
+ from typing import Set, Tuple
501
+
502
+ class AttackPathAnalyzer:
503
+ """Analyze attack paths and coverage."""
504
+
505
+ def __init__(self, tree: AttackTree):
506
+ self.tree = tree
507
+
508
+ def get_all_paths(self) -> List[List[AttackNode]]:
509
+ """Get all possible attack paths."""
510
+ paths = []
511
+ self._collect_paths(self.tree.root, [], paths)
512
+ return paths
513
+
514
+ def _collect_paths(
515
+ self,
516
+ node: AttackNode,
517
+ current_path: List[AttackNode],
518
+ all_paths: List[List[AttackNode]]
519
+ ) -> None:
520
+ """Recursively collect all paths."""
521
+ current_path = current_path + [node]
522
+
523
+ if node.node_type == NodeType.LEAF:
524
+ all_paths.append(current_path)
525
+ return
526
+
527
+ if not node.children:
528
+ all_paths.append(current_path)
529
+ return
530
+
531
+ if node.node_type == NodeType.OR:
532
+ # Each child is a separate path
533
+ for child in node.children:
534
+ self._collect_paths(child, current_path, all_paths)
535
+ else: # AND
536
+ # Must combine all children
537
+ child_paths = []
538
+ for child in node.children:
539
+ child_sub_paths = []
540
+ self._collect_paths(child, [], child_sub_paths)
541
+ child_paths.append(child_sub_paths)
542
+
543
+ # Combine paths from all AND children
544
+ combined = self._combine_and_paths(child_paths)
545
+ for combo in combined:
546
+ all_paths.append(current_path + combo)
547
+
548
+ def _combine_and_paths(
549
+ self,
550
+ child_paths: List[List[List[AttackNode]]]
551
+ ) -> List[List[AttackNode]]:
552
+ """Combine paths from AND node children."""
553
+ if not child_paths:
554
+ return [[]]
555
+
556
+ if len(child_paths) == 1:
557
+ return [path for paths in child_paths for path in paths]
558
+
559
+ # Cartesian product of all child path combinations
560
+ result = [[]]
561
+ for paths in child_paths:
562
+ new_result = []
563
+ for existing in result:
564
+ for path in paths:
565
+ new_result.append(existing + path)
566
+ result = new_result
567
+ return result
568
+
569
+ def calculate_path_metrics(self, path: List[AttackNode]) -> Dict:
570
+ """Calculate metrics for a specific path."""
571
+ leaves = [n for n in path if n.node_type == NodeType.LEAF]
572
+
573
+ total_difficulty = sum(n.attributes.difficulty.value for n in leaves)
574
+ total_cost = sum(n.attributes.cost.value for n in leaves)
575
+ total_time = sum(n.attributes.time_hours for n in leaves)
576
+ max_detection = max((n.attributes.detection_risk.value for n in leaves), default=0)
577
+
578
+ return {
579
+ "steps": len(leaves),
580
+ "total_difficulty": total_difficulty,
581
+ "avg_difficulty": total_difficulty / len(leaves) if leaves else 0,
582
+ "total_cost": total_cost,
583
+ "total_time_hours": total_time,
584
+ "max_detection_risk": max_detection,
585
+ "requires_insider": any(n.attributes.requires_insider for n in leaves),
586
+ "requires_physical": any(n.attributes.requires_physical for n in leaves),
587
+ }
588
+
589
+ def identify_critical_nodes(self) -> List[Tuple[AttackNode, int]]:
590
+ """Find nodes that appear in the most paths."""
591
+ paths = self.get_all_paths()
592
+ node_counts: Dict[str, Tuple[AttackNode, int]] = {}
593
+
594
+ for path in paths:
595
+ for node in path:
596
+ if node.id not in node_counts:
597
+ node_counts[node.id] = (node, 0)
598
+ node_counts[node.id] = (node, node_counts[node.id][1] + 1)
599
+
600
+ return sorted(
601
+ node_counts.values(),
602
+ key=lambda x: x[1],
603
+ reverse=True
604
+ )
605
+
606
+ def coverage_analysis(self, mitigated_attacks: Set[str]) -> Dict:
607
+ """Analyze how mitigations affect attack coverage."""
608
+ all_paths = self.get_all_paths()
609
+ blocked_paths = []
610
+ open_paths = []
611
+
612
+ for path in all_paths:
613
+ path_attacks = {n.id for n in path if n.node_type == NodeType.LEAF}
614
+ if path_attacks & mitigated_attacks:
615
+ blocked_paths.append(path)
616
+ else:
617
+ open_paths.append(path)
618
+
619
+ return {
620
+ "total_paths": len(all_paths),
621
+ "blocked_paths": len(blocked_paths),
622
+ "open_paths": len(open_paths),
623
+ "coverage_percentage": len(blocked_paths) / len(all_paths) * 100 if all_paths else 0,
624
+ "open_path_details": [
625
+ {"path": [n.name for n in p], "metrics": self.calculate_path_metrics(p)}
626
+ for p in open_paths[:5] # Top 5 open paths
627
+ ]
628
+ }
629
+
630
+ def prioritize_mitigations(self) -> List[Dict]:
631
+ """Prioritize mitigations by impact."""
632
+ critical_nodes = self.identify_critical_nodes()
633
+ paths = self.get_all_paths()
634
+ total_paths = len(paths)
635
+
636
+ recommendations = []
637
+ for node, count in critical_nodes:
638
+ if node.node_type == NodeType.LEAF and node.mitigations:
639
+ recommendations.append({
640
+ "attack": node.name,
641
+ "attack_id": node.id,
642
+ "paths_blocked": count,
643
+ "coverage_impact": count / total_paths * 100,
644
+ "difficulty": node.attributes.difficulty.name,
645
+ "mitigations": node.mitigations,
646
+ })
647
+
648
+ return sorted(recommendations, key=lambda x: x["coverage_impact"], reverse=True)
649
+ ```
650
+
651
+ ## Best Practices
652
+
653
+ ### Do's
654
+ - **Start with clear goals** - Define what attacker wants
655
+ - **Be exhaustive** - Consider all attack vectors
656
+ - **Attribute attacks** - Cost, skill, and detection
657
+ - **Update regularly** - New threats emerge
658
+ - **Validate with experts** - Red team review
659
+
660
+ ### Don'ts
661
+ - **Don't oversimplify** - Real attacks are complex
662
+ - **Don't ignore dependencies** - AND nodes matter
663
+ - **Don't forget insider threats** - Not all attackers are external
664
+ - **Don't skip mitigations** - Trees are for defense planning
665
+ - **Don't make it static** - Threat landscape evolves
666
+
667
+ ## Resources
668
+
669
+ - [Attack Trees by Bruce Schneier](https://www.schneier.com/academic/archives/1999/12/attack_trees.html)
670
+ - [MITRE ATT&CK Framework](https://attack.mitre.org/)
671
+ - [OWASP Attack Surface Analysis](https://owasp.org/www-community/controls/Attack_Surface_Analysis_Cheat_Sheet)
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: auth-implementation-patterns
3
+ description: Master authentication and authorization patterns including JWT, OAuth2, session management, and RBAC to build secure, scalable access control systems. Use when implementing auth systems, securing APIs, or debugging security issues.
4
+ ---
5
+
6
+ # Authentication & Authorization Implementation Patterns
7
+
8
+ Build secure, scalable authentication and authorization systems using industry-standard patterns and modern best practices.
9
+
10
+ ## Use this skill when
11
+
12
+ - Implementing user authentication systems
13
+ - Securing REST or GraphQL APIs
14
+ - Adding OAuth2/social login or SSO
15
+ - Designing session management or RBAC
16
+ - Debugging authentication or authorization issues
17
+
18
+ ## Do not use this skill when
19
+
20
+ - You only need UI copy or login page styling
21
+ - The task is infrastructure-only without identity concerns
22
+ - You cannot change auth policies or credential storage
23
+
24
+ ## Instructions
25
+
26
+ - Define users, tenants, flows, and threat model constraints.
27
+ - Choose auth strategy (session, JWT, OIDC) and token lifecycle.
28
+ - Design authorization model and policy enforcement points.
29
+ - Plan secrets storage, rotation, logging, and audit requirements.
30
+ - If detailed examples are required, open `resources/implementation-playbook.md`.
31
+
32
+ ## Safety
33
+
34
+ - Never log secrets, tokens, or credentials.
35
+ - Enforce least privilege and secure storage for keys.
36
+
37
+ ## Resources
38
+
39
+ - `resources/implementation-playbook.md` for detailed patterns and examples.