@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,615 @@
1
+ # GDPR Data Handling Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ # GDPR Data Handling
6
+
7
+ Practical implementation guide for GDPR-compliant data processing, consent management, and privacy controls.
8
+
9
+ ## When to Use This Skill
10
+
11
+ - Building systems that process EU personal data
12
+ - Implementing consent management
13
+ - Handling data subject requests (DSRs)
14
+ - Conducting GDPR compliance reviews
15
+ - Designing privacy-first architectures
16
+ - Creating data processing agreements
17
+
18
+ ## Core Concepts
19
+
20
+ ### 1. Personal Data Categories
21
+
22
+ | Category | Examples | Protection Level |
23
+ |----------|----------|------------------|
24
+ | **Basic** | Name, email, phone | Standard |
25
+ | **Sensitive (Art. 9)** | Health, religion, ethnicity | Explicit consent |
26
+ | **Criminal (Art. 10)** | Convictions, offenses | Official authority |
27
+ | **Children's** | Under 16 data | Parental consent |
28
+
29
+ ### 2. Legal Bases for Processing
30
+
31
+ ```
32
+ Article 6 - Lawful Bases:
33
+ ├── Consent: Freely given, specific, informed
34
+ ├── Contract: Necessary for contract performance
35
+ ├── Legal Obligation: Required by law
36
+ ├── Vital Interests: Protecting someone's life
37
+ ├── Public Interest: Official functions
38
+ └── Legitimate Interest: Balanced against rights
39
+ ```
40
+
41
+ ### 3. Data Subject Rights
42
+
43
+ ```
44
+ Right to Access (Art. 15) ─┐
45
+ Right to Rectification (Art. 16) │
46
+ Right to Erasure (Art. 17) │ Must respond
47
+ Right to Restrict (Art. 18) │ within 1 month
48
+ Right to Portability (Art. 20) │
49
+ Right to Object (Art. 21) ─┘
50
+ ```
51
+
52
+ ## Implementation Patterns
53
+
54
+ ### Pattern 1: Consent Management
55
+
56
+ ```javascript
57
+ // Consent data model
58
+ const consentSchema = {
59
+ userId: String,
60
+ consents: [{
61
+ purpose: String, // 'marketing', 'analytics', etc.
62
+ granted: Boolean,
63
+ timestamp: Date,
64
+ source: String, // 'web_form', 'api', etc.
65
+ version: String, // Privacy policy version
66
+ ipAddress: String, // For proof
67
+ userAgent: String // For proof
68
+ }],
69
+ auditLog: [{
70
+ action: String, // 'granted', 'withdrawn', 'updated'
71
+ purpose: String,
72
+ timestamp: Date,
73
+ source: String
74
+ }]
75
+ };
76
+
77
+ // Consent service
78
+ class ConsentManager {
79
+ async recordConsent(userId, purpose, granted, metadata) {
80
+ const consent = {
81
+ purpose,
82
+ granted,
83
+ timestamp: new Date(),
84
+ source: metadata.source,
85
+ version: await this.getCurrentPolicyVersion(),
86
+ ipAddress: metadata.ipAddress,
87
+ userAgent: metadata.userAgent
88
+ };
89
+
90
+ // Store consent
91
+ await this.db.consents.updateOne(
92
+ { userId },
93
+ {
94
+ $push: {
95
+ consents: consent,
96
+ auditLog: {
97
+ action: granted ? 'granted' : 'withdrawn',
98
+ purpose,
99
+ timestamp: consent.timestamp,
100
+ source: metadata.source
101
+ }
102
+ }
103
+ },
104
+ { upsert: true }
105
+ );
106
+
107
+ // Emit event for downstream systems
108
+ await this.eventBus.emit('consent.changed', {
109
+ userId,
110
+ purpose,
111
+ granted,
112
+ timestamp: consent.timestamp
113
+ });
114
+ }
115
+
116
+ async hasConsent(userId, purpose) {
117
+ const record = await this.db.consents.findOne({ userId });
118
+ if (!record) return false;
119
+
120
+ const latestConsent = record.consents
121
+ .filter(c => c.purpose === purpose)
122
+ .sort((a, b) => b.timestamp - a.timestamp)[0];
123
+
124
+ return latestConsent?.granted === true;
125
+ }
126
+
127
+ async getConsentHistory(userId) {
128
+ const record = await this.db.consents.findOne({ userId });
129
+ return record?.auditLog || [];
130
+ }
131
+ }
132
+ ```
133
+
134
+ ```html
135
+ <!-- GDPR-compliant consent UI -->
136
+ <div class="consent-banner" role="dialog" aria-labelledby="consent-title">
137
+ <h2 id="consent-title">Cookie Preferences</h2>
138
+
139
+ <p>We use cookies to improve your experience. Select your preferences below.</p>
140
+
141
+ <form id="consent-form">
142
+ <!-- Necessary - always on, no consent needed -->
143
+ <div class="consent-category">
144
+ <input type="checkbox" id="necessary" checked disabled>
145
+ <label for="necessary">
146
+ <strong>Necessary</strong>
147
+ <span>Required for the website to function. Cannot be disabled.</span>
148
+ </label>
149
+ </div>
150
+
151
+ <!-- Analytics - requires consent -->
152
+ <div class="consent-category">
153
+ <input type="checkbox" id="analytics" name="analytics">
154
+ <label for="analytics">
155
+ <strong>Analytics</strong>
156
+ <span>Help us understand how you use our site.</span>
157
+ </label>
158
+ </div>
159
+
160
+ <!-- Marketing - requires consent -->
161
+ <div class="consent-category">
162
+ <input type="checkbox" id="marketing" name="marketing">
163
+ <label for="marketing">
164
+ <strong>Marketing</strong>
165
+ <span>Personalized ads based on your interests.</span>
166
+ </label>
167
+ </div>
168
+
169
+ <div class="consent-actions">
170
+ <button type="button" id="accept-all">Accept All</button>
171
+ <button type="button" id="reject-all">Reject All</button>
172
+ <button type="submit">Save Preferences</button>
173
+ </div>
174
+
175
+ <p class="consent-links">
176
+ <a href="/privacy-policy">Privacy Policy</a> |
177
+ <a href="/cookie-policy">Cookie Policy</a>
178
+ </p>
179
+ </form>
180
+ </div>
181
+ ```
182
+
183
+ ### Pattern 2: Data Subject Access Request (DSAR)
184
+
185
+ ```python
186
+ from datetime import datetime, timedelta
187
+ from typing import Dict, List, Optional
188
+ import json
189
+
190
+ class DSARHandler:
191
+ """Handle Data Subject Access Requests."""
192
+
193
+ RESPONSE_DEADLINE_DAYS = 30
194
+ EXTENSION_ALLOWED_DAYS = 60 # For complex requests
195
+
196
+ def __init__(self, data_sources: List['DataSource']):
197
+ self.data_sources = data_sources
198
+
199
+ async def submit_request(
200
+ self,
201
+ request_type: str, # 'access', 'erasure', 'rectification', 'portability'
202
+ user_id: str,
203
+ verified: bool,
204
+ details: Optional[Dict] = None
205
+ ) -> str:
206
+ """Submit a new DSAR."""
207
+ request = {
208
+ 'id': self.generate_request_id(),
209
+ 'type': request_type,
210
+ 'user_id': user_id,
211
+ 'status': 'pending_verification' if not verified else 'processing',
212
+ 'submitted_at': datetime.utcnow(),
213
+ 'deadline': datetime.utcnow() + timedelta(days=self.RESPONSE_DEADLINE_DAYS),
214
+ 'details': details or {},
215
+ 'audit_log': [{
216
+ 'action': 'submitted',
217
+ 'timestamp': datetime.utcnow(),
218
+ 'details': 'Request received'
219
+ }]
220
+ }
221
+
222
+ await self.db.dsar_requests.insert_one(request)
223
+ await self.notify_dpo(request)
224
+
225
+ return request['id']
226
+
227
+ async def process_access_request(self, request_id: str) -> Dict:
228
+ """Process a data access request."""
229
+ request = await self.get_request(request_id)
230
+
231
+ if request['type'] != 'access':
232
+ raise ValueError("Not an access request")
233
+
234
+ # Collect data from all sources
235
+ user_data = {}
236
+ for source in self.data_sources:
237
+ try:
238
+ data = await source.get_user_data(request['user_id'])
239
+ user_data[source.name] = data
240
+ except Exception as e:
241
+ user_data[source.name] = {'error': str(e)}
242
+
243
+ # Format response
244
+ response = {
245
+ 'request_id': request_id,
246
+ 'generated_at': datetime.utcnow().isoformat(),
247
+ 'data_categories': list(user_data.keys()),
248
+ 'data': user_data,
249
+ 'retention_info': await self.get_retention_info(),
250
+ 'processing_purposes': await self.get_processing_purposes(),
251
+ 'third_party_recipients': await self.get_recipients()
252
+ }
253
+
254
+ # Update request status
255
+ await self.update_request(request_id, 'completed', response)
256
+
257
+ return response
258
+
259
+ async def process_erasure_request(self, request_id: str) -> Dict:
260
+ """Process a right to erasure request."""
261
+ request = await self.get_request(request_id)
262
+
263
+ if request['type'] != 'erasure':
264
+ raise ValueError("Not an erasure request")
265
+
266
+ results = {}
267
+ exceptions = []
268
+
269
+ for source in self.data_sources:
270
+ try:
271
+ # Check for legal exceptions
272
+ can_delete, reason = await source.can_delete(request['user_id'])
273
+
274
+ if can_delete:
275
+ await source.delete_user_data(request['user_id'])
276
+ results[source.name] = 'deleted'
277
+ else:
278
+ exceptions.append({
279
+ 'source': source.name,
280
+ 'reason': reason # e.g., 'legal retention requirement'
281
+ })
282
+ results[source.name] = f'retained: {reason}'
283
+ except Exception as e:
284
+ results[source.name] = f'error: {str(e)}'
285
+
286
+ response = {
287
+ 'request_id': request_id,
288
+ 'completed_at': datetime.utcnow().isoformat(),
289
+ 'results': results,
290
+ 'exceptions': exceptions
291
+ }
292
+
293
+ await self.update_request(request_id, 'completed', response)
294
+
295
+ return response
296
+
297
+ async def process_portability_request(self, request_id: str) -> bytes:
298
+ """Generate portable data export."""
299
+ request = await self.get_request(request_id)
300
+ user_data = await self.process_access_request(request_id)
301
+
302
+ # Convert to machine-readable format (JSON)
303
+ portable_data = {
304
+ 'export_date': datetime.utcnow().isoformat(),
305
+ 'format_version': '1.0',
306
+ 'data': user_data['data']
307
+ }
308
+
309
+ return json.dumps(portable_data, indent=2, default=str).encode()
310
+ ```
311
+
312
+ ### Pattern 3: Data Retention
313
+
314
+ ```python
315
+ from datetime import datetime, timedelta
316
+ from enum import Enum
317
+
318
+ class RetentionBasis(Enum):
319
+ CONSENT = "consent"
320
+ CONTRACT = "contract"
321
+ LEGAL_OBLIGATION = "legal_obligation"
322
+ LEGITIMATE_INTEREST = "legitimate_interest"
323
+
324
+ class DataRetentionPolicy:
325
+ """Define and enforce data retention policies."""
326
+
327
+ POLICIES = {
328
+ 'user_account': {
329
+ 'retention_period_days': 365 * 3, # 3 years after last activity
330
+ 'basis': RetentionBasis.CONTRACT,
331
+ 'trigger': 'last_activity_date',
332
+ 'archive_before_delete': True
333
+ },
334
+ 'transaction_records': {
335
+ 'retention_period_days': 365 * 7, # 7 years for tax
336
+ 'basis': RetentionBasis.LEGAL_OBLIGATION,
337
+ 'trigger': 'transaction_date',
338
+ 'archive_before_delete': True,
339
+ 'legal_reference': 'Tax regulations require 7 year retention'
340
+ },
341
+ 'marketing_consent': {
342
+ 'retention_period_days': 365 * 2, # 2 years
343
+ 'basis': RetentionBasis.CONSENT,
344
+ 'trigger': 'consent_date',
345
+ 'archive_before_delete': False
346
+ },
347
+ 'support_tickets': {
348
+ 'retention_period_days': 365 * 2,
349
+ 'basis': RetentionBasis.LEGITIMATE_INTEREST,
350
+ 'trigger': 'ticket_closed_date',
351
+ 'archive_before_delete': True
352
+ },
353
+ 'analytics_data': {
354
+ 'retention_period_days': 365, # 1 year
355
+ 'basis': RetentionBasis.CONSENT,
356
+ 'trigger': 'collection_date',
357
+ 'archive_before_delete': False,
358
+ 'anonymize_instead': True
359
+ }
360
+ }
361
+
362
+ async def apply_retention_policies(self):
363
+ """Run retention policy enforcement."""
364
+ for data_type, policy in self.POLICIES.items():
365
+ cutoff_date = datetime.utcnow() - timedelta(
366
+ days=policy['retention_period_days']
367
+ )
368
+
369
+ if policy.get('anonymize_instead'):
370
+ await self.anonymize_old_data(data_type, cutoff_date)
371
+ else:
372
+ if policy.get('archive_before_delete'):
373
+ await self.archive_data(data_type, cutoff_date)
374
+ await self.delete_old_data(data_type, cutoff_date)
375
+
376
+ await self.log_retention_action(data_type, cutoff_date)
377
+
378
+ async def anonymize_old_data(self, data_type: str, before_date: datetime):
379
+ """Anonymize data instead of deleting."""
380
+ # Example: Replace identifying fields with hashes
381
+ if data_type == 'analytics_data':
382
+ await self.db.analytics.update_many(
383
+ {'collection_date': {'$lt': before_date}},
384
+ {'$set': {
385
+ 'user_id': None,
386
+ 'ip_address': None,
387
+ 'device_id': None,
388
+ 'anonymized': True,
389
+ 'anonymized_date': datetime.utcnow()
390
+ }}
391
+ )
392
+ ```
393
+
394
+ ### Pattern 4: Privacy by Design
395
+
396
+ ```python
397
+ class PrivacyFirstDataModel:
398
+ """Example of privacy-by-design data model."""
399
+
400
+ # Separate PII from behavioral data
401
+ user_profile_schema = {
402
+ 'user_id': str, # UUID, not sequential
403
+ 'email_hash': str, # Hashed for lookups
404
+ 'created_at': datetime,
405
+ # Minimal data collection
406
+ 'preferences': {
407
+ 'language': str,
408
+ 'timezone': str
409
+ }
410
+ }
411
+
412
+ # Encrypted at rest
413
+ user_pii_schema = {
414
+ 'user_id': str,
415
+ 'email': str, # Encrypted
416
+ 'name': str, # Encrypted
417
+ 'phone': str, # Encrypted (optional)
418
+ 'address': dict, # Encrypted (optional)
419
+ 'encryption_key_id': str
420
+ }
421
+
422
+ # Pseudonymized behavioral data
423
+ analytics_schema = {
424
+ 'session_id': str, # Not linked to user_id
425
+ 'pseudonym_id': str, # Rotating pseudonym
426
+ 'events': list,
427
+ 'device_category': str, # Generalized, not specific
428
+ 'country': str, # Not city-level
429
+ }
430
+
431
+ class DataMinimization:
432
+ """Implement data minimization principles."""
433
+
434
+ @staticmethod
435
+ def collect_only_needed(form_data: dict, purpose: str) -> dict:
436
+ """Filter form data to only fields needed for purpose."""
437
+ REQUIRED_FIELDS = {
438
+ 'account_creation': ['email', 'password'],
439
+ 'newsletter': ['email'],
440
+ 'purchase': ['email', 'name', 'address', 'payment'],
441
+ 'support': ['email', 'message']
442
+ }
443
+
444
+ allowed = REQUIRED_FIELDS.get(purpose, [])
445
+ return {k: v for k, v in form_data.items() if k in allowed}
446
+
447
+ @staticmethod
448
+ def generalize_location(ip_address: str) -> str:
449
+ """Generalize IP to country level only."""
450
+ import geoip2.database
451
+ reader = geoip2.database.Reader('GeoLite2-Country.mmdb')
452
+ try:
453
+ response = reader.country(ip_address)
454
+ return response.country.iso_code
455
+ except:
456
+ return 'UNKNOWN'
457
+ ```
458
+
459
+ ### Pattern 5: Breach Notification
460
+
461
+ ```python
462
+ from datetime import datetime
463
+ from enum import Enum
464
+
465
+ class BreachSeverity(Enum):
466
+ LOW = "low"
467
+ MEDIUM = "medium"
468
+ HIGH = "high"
469
+ CRITICAL = "critical"
470
+
471
+ class BreachNotificationHandler:
472
+ """Handle GDPR breach notification requirements."""
473
+
474
+ AUTHORITY_NOTIFICATION_HOURS = 72
475
+ AFFECTED_NOTIFICATION_REQUIRED_SEVERITY = BreachSeverity.HIGH
476
+
477
+ async def report_breach(
478
+ self,
479
+ description: str,
480
+ data_types: List[str],
481
+ affected_count: int,
482
+ severity: BreachSeverity
483
+ ) -> dict:
484
+ """Report and handle a data breach."""
485
+ breach = {
486
+ 'id': self.generate_breach_id(),
487
+ 'reported_at': datetime.utcnow(),
488
+ 'description': description,
489
+ 'data_types_affected': data_types,
490
+ 'affected_individuals_count': affected_count,
491
+ 'severity': severity.value,
492
+ 'status': 'investigating',
493
+ 'timeline': [{
494
+ 'event': 'breach_reported',
495
+ 'timestamp': datetime.utcnow(),
496
+ 'details': description
497
+ }]
498
+ }
499
+
500
+ await self.db.breaches.insert_one(breach)
501
+
502
+ # Immediate notifications
503
+ await self.notify_dpo(breach)
504
+ await self.notify_security_team(breach)
505
+
506
+ # Authority notification required within 72 hours
507
+ if self.requires_authority_notification(severity, data_types):
508
+ breach['authority_notification_deadline'] = (
509
+ datetime.utcnow() + timedelta(hours=self.AUTHORITY_NOTIFICATION_HOURS)
510
+ )
511
+ await self.schedule_authority_notification(breach)
512
+
513
+ # Affected individuals notification
514
+ if severity.value in [BreachSeverity.HIGH.value, BreachSeverity.CRITICAL.value]:
515
+ await self.schedule_individual_notifications(breach)
516
+
517
+ return breach
518
+
519
+ def requires_authority_notification(
520
+ self,
521
+ severity: BreachSeverity,
522
+ data_types: List[str]
523
+ ) -> bool:
524
+ """Determine if supervisory authority must be notified."""
525
+ # Always notify for sensitive data
526
+ sensitive_types = ['health', 'financial', 'credentials', 'biometric']
527
+ if any(t in sensitive_types for t in data_types):
528
+ return True
529
+
530
+ # Notify for medium+ severity
531
+ return severity in [BreachSeverity.MEDIUM, BreachSeverity.HIGH, BreachSeverity.CRITICAL]
532
+
533
+ async def generate_authority_report(self, breach_id: str) -> dict:
534
+ """Generate report for supervisory authority."""
535
+ breach = await self.get_breach(breach_id)
536
+
537
+ return {
538
+ 'organization': {
539
+ 'name': self.config.org_name,
540
+ 'contact': self.config.dpo_contact,
541
+ 'registration': self.config.registration_number
542
+ },
543
+ 'breach': {
544
+ 'nature': breach['description'],
545
+ 'categories_affected': breach['data_types_affected'],
546
+ 'approximate_number_affected': breach['affected_individuals_count'],
547
+ 'likely_consequences': self.assess_consequences(breach),
548
+ 'measures_taken': await self.get_remediation_measures(breach_id),
549
+ 'measures_proposed': await self.get_proposed_measures(breach_id)
550
+ },
551
+ 'timeline': breach['timeline'],
552
+ 'submitted_at': datetime.utcnow().isoformat()
553
+ }
554
+ ```
555
+
556
+ ## Compliance Checklist
557
+
558
+ ```markdown
559
+ ## GDPR Implementation Checklist
560
+
561
+ ### Legal Basis
562
+ - [ ] Documented legal basis for each processing activity
563
+ - [ ] Consent mechanisms meet GDPR requirements
564
+ - [ ] Legitimate interest assessments completed
565
+
566
+ ### Transparency
567
+ - [ ] Privacy policy is clear and accessible
568
+ - [ ] Processing purposes clearly stated
569
+ - [ ] Data retention periods documented
570
+
571
+ ### Data Subject Rights
572
+ - [ ] Access request process implemented
573
+ - [ ] Erasure request process implemented
574
+ - [ ] Portability export available
575
+ - [ ] Rectification process available
576
+ - [ ] Response within 30-day deadline
577
+
578
+ ### Security
579
+ - [ ] Encryption at rest implemented
580
+ - [ ] Encryption in transit (TLS)
581
+ - [ ] Access controls in place
582
+ - [ ] Audit logging enabled
583
+
584
+ ### Breach Response
585
+ - [ ] Breach detection mechanisms
586
+ - [ ] 72-hour notification process
587
+ - [ ] Breach documentation system
588
+
589
+ ### Documentation
590
+ - [ ] Records of processing activities (Art. 30)
591
+ - [ ] Data protection impact assessments
592
+ - [ ] Data processing agreements with vendors
593
+ ```
594
+
595
+ ## Best Practices
596
+
597
+ ### Do's
598
+ - **Minimize data collection** - Only collect what's needed
599
+ - **Document everything** - Processing activities, legal bases
600
+ - **Encrypt PII** - At rest and in transit
601
+ - **Implement access controls** - Need-to-know basis
602
+ - **Regular audits** - Verify compliance continuously
603
+
604
+ ### Don'ts
605
+ - **Don't pre-check consent boxes** - Must be opt-in
606
+ - **Don't bundle consent** - Separate purposes separately
607
+ - **Don't retain indefinitely** - Define and enforce retention
608
+ - **Don't ignore DSARs** - 30-day response required
609
+ - **Don't transfer without safeguards** - SCCs or adequacy decisions
610
+
611
+ ## Resources
612
+
613
+ - [GDPR Full Text](https://gdpr-info.eu/)
614
+ - [ICO Guidance](https://ico.org.uk/for-organisations/guide-to-data-protection/guide-to-the-general-data-protection-regulation-gdpr/)
615
+ - [EDPB Guidelines](https://edpb.europa.eu/our-work-tools/general-guidance/gdpr-guidelines-recommendations-best-practices_en)