@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,509 @@
1
+ # Apache Airflow DAG Patterns Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ ## Core Concepts
6
+
7
+ ### 1. DAG Design Principles
8
+
9
+ | Principle | Description |
10
+ |-----------|-------------|
11
+ | **Idempotent** | Running twice produces same result |
12
+ | **Atomic** | Tasks succeed or fail completely |
13
+ | **Incremental** | Process only new/changed data |
14
+ | **Observable** | Logs, metrics, alerts at every step |
15
+
16
+ ### 2. Task Dependencies
17
+
18
+ ```python
19
+ # Linear
20
+ task1 >> task2 >> task3
21
+
22
+ # Fan-out
23
+ task1 >> [task2, task3, task4]
24
+
25
+ # Fan-in
26
+ [task1, task2, task3] >> task4
27
+
28
+ # Complex
29
+ task1 >> task2 >> task4
30
+ task1 >> task3 >> task4
31
+ ```
32
+
33
+ ## Quick Start
34
+
35
+ ```python
36
+ # dags/example_dag.py
37
+ from datetime import datetime, timedelta
38
+ from airflow import DAG
39
+ from airflow.operators.python import PythonOperator
40
+ from airflow.operators.empty import EmptyOperator
41
+
42
+ default_args = {
43
+ 'owner': 'data-team',
44
+ 'depends_on_past': False,
45
+ 'email_on_failure': True,
46
+ 'email_on_retry': False,
47
+ 'retries': 3,
48
+ 'retry_delay': timedelta(minutes=5),
49
+ 'retry_exponential_backoff': True,
50
+ 'max_retry_delay': timedelta(hours=1),
51
+ }
52
+
53
+ with DAG(
54
+ dag_id='example_etl',
55
+ default_args=default_args,
56
+ description='Example ETL pipeline',
57
+ schedule='0 6 * * *', # Daily at 6 AM
58
+ start_date=datetime(2024, 1, 1),
59
+ catchup=False,
60
+ tags=['etl', 'example'],
61
+ max_active_runs=1,
62
+ ) as dag:
63
+
64
+ start = EmptyOperator(task_id='start')
65
+
66
+ def extract_data(**context):
67
+ execution_date = context['ds']
68
+ # Extract logic here
69
+ return {'records': 1000}
70
+
71
+ extract = PythonOperator(
72
+ task_id='extract',
73
+ python_callable=extract_data,
74
+ )
75
+
76
+ end = EmptyOperator(task_id='end')
77
+
78
+ start >> extract >> end
79
+ ```
80
+
81
+ ## Patterns
82
+
83
+ ### Pattern 1: TaskFlow API (Airflow 2.0+)
84
+
85
+ ```python
86
+ # dags/taskflow_example.py
87
+ from datetime import datetime
88
+ from airflow.decorators import dag, task
89
+ from airflow.models import Variable
90
+
91
+ @dag(
92
+ dag_id='taskflow_etl',
93
+ schedule='@daily',
94
+ start_date=datetime(2024, 1, 1),
95
+ catchup=False,
96
+ tags=['etl', 'taskflow'],
97
+ )
98
+ def taskflow_etl():
99
+ """ETL pipeline using TaskFlow API"""
100
+
101
+ @task()
102
+ def extract(source: str) -> dict:
103
+ """Extract data from source"""
104
+ import pandas as pd
105
+
106
+ df = pd.read_csv(f's3://bucket/{source}/{{ ds }}.csv')
107
+ return {'data': df.to_dict(), 'rows': len(df)}
108
+
109
+ @task()
110
+ def transform(extracted: dict) -> dict:
111
+ """Transform extracted data"""
112
+ import pandas as pd
113
+
114
+ df = pd.DataFrame(extracted['data'])
115
+ df['processed_at'] = datetime.now()
116
+ df = df.dropna()
117
+ return {'data': df.to_dict(), 'rows': len(df)}
118
+
119
+ @task()
120
+ def load(transformed: dict, target: str):
121
+ """Load data to target"""
122
+ import pandas as pd
123
+
124
+ df = pd.DataFrame(transformed['data'])
125
+ df.to_parquet(f's3://bucket/{target}/{{ ds }}.parquet')
126
+ return transformed['rows']
127
+
128
+ @task()
129
+ def notify(rows_loaded: int):
130
+ """Send notification"""
131
+ print(f'Loaded {rows_loaded} rows')
132
+
133
+ # Define dependencies with XCom passing
134
+ extracted = extract(source='raw_data')
135
+ transformed = transform(extracted)
136
+ loaded = load(transformed, target='processed_data')
137
+ notify(loaded)
138
+
139
+ # Instantiate the DAG
140
+ taskflow_etl()
141
+ ```
142
+
143
+ ### Pattern 2: Dynamic DAG Generation
144
+
145
+ ```python
146
+ # dags/dynamic_dag_factory.py
147
+ from datetime import datetime, timedelta
148
+ from airflow import DAG
149
+ from airflow.operators.python import PythonOperator
150
+ from airflow.models import Variable
151
+ import json
152
+
153
+ # Configuration for multiple similar pipelines
154
+ PIPELINE_CONFIGS = [
155
+ {'name': 'customers', 'schedule': '@daily', 'source': 's3://raw/customers'},
156
+ {'name': 'orders', 'schedule': '@hourly', 'source': 's3://raw/orders'},
157
+ {'name': 'products', 'schedule': '@weekly', 'source': 's3://raw/products'},
158
+ ]
159
+
160
+ def create_dag(config: dict) -> DAG:
161
+ """Factory function to create DAGs from config"""
162
+
163
+ dag_id = f"etl_{config['name']}"
164
+
165
+ default_args = {
166
+ 'owner': 'data-team',
167
+ 'retries': 3,
168
+ 'retry_delay': timedelta(minutes=5),
169
+ }
170
+
171
+ dag = DAG(
172
+ dag_id=dag_id,
173
+ default_args=default_args,
174
+ schedule=config['schedule'],
175
+ start_date=datetime(2024, 1, 1),
176
+ catchup=False,
177
+ tags=['etl', 'dynamic', config['name']],
178
+ )
179
+
180
+ with dag:
181
+ def extract_fn(source, **context):
182
+ print(f"Extracting from {source} for {context['ds']}")
183
+
184
+ def transform_fn(**context):
185
+ print(f"Transforming data for {context['ds']}")
186
+
187
+ def load_fn(table_name, **context):
188
+ print(f"Loading to {table_name} for {context['ds']}")
189
+
190
+ extract = PythonOperator(
191
+ task_id='extract',
192
+ python_callable=extract_fn,
193
+ op_kwargs={'source': config['source']},
194
+ )
195
+
196
+ transform = PythonOperator(
197
+ task_id='transform',
198
+ python_callable=transform_fn,
199
+ )
200
+
201
+ load = PythonOperator(
202
+ task_id='load',
203
+ python_callable=load_fn,
204
+ op_kwargs={'table_name': config['name']},
205
+ )
206
+
207
+ extract >> transform >> load
208
+
209
+ return dag
210
+
211
+ # Generate DAGs
212
+ for config in PIPELINE_CONFIGS:
213
+ globals()[f"dag_{config['name']}"] = create_dag(config)
214
+ ```
215
+
216
+ ### Pattern 3: Branching and Conditional Logic
217
+
218
+ ```python
219
+ # dags/branching_example.py
220
+ from airflow.decorators import dag, task
221
+ from airflow.operators.python import BranchPythonOperator
222
+ from airflow.operators.empty import EmptyOperator
223
+ from airflow.utils.trigger_rule import TriggerRule
224
+
225
+ @dag(
226
+ dag_id='branching_pipeline',
227
+ schedule='@daily',
228
+ start_date=datetime(2024, 1, 1),
229
+ catchup=False,
230
+ )
231
+ def branching_pipeline():
232
+
233
+ @task()
234
+ def check_data_quality() -> dict:
235
+ """Check data quality and return metrics"""
236
+ quality_score = 0.95 # Simulated
237
+ return {'score': quality_score, 'rows': 10000}
238
+
239
+ def choose_branch(**context) -> str:
240
+ """Determine which branch to execute"""
241
+ ti = context['ti']
242
+ metrics = ti.xcom_pull(task_ids='check_data_quality')
243
+
244
+ if metrics['score'] >= 0.9:
245
+ return 'high_quality_path'
246
+ elif metrics['score'] >= 0.7:
247
+ return 'medium_quality_path'
248
+ else:
249
+ return 'low_quality_path'
250
+
251
+ quality_check = check_data_quality()
252
+
253
+ branch = BranchPythonOperator(
254
+ task_id='branch',
255
+ python_callable=choose_branch,
256
+ )
257
+
258
+ high_quality = EmptyOperator(task_id='high_quality_path')
259
+ medium_quality = EmptyOperator(task_id='medium_quality_path')
260
+ low_quality = EmptyOperator(task_id='low_quality_path')
261
+
262
+ # Join point - runs after any branch completes
263
+ join = EmptyOperator(
264
+ task_id='join',
265
+ trigger_rule=TriggerRule.NONE_FAILED_MIN_ONE_SUCCESS,
266
+ )
267
+
268
+ quality_check >> branch >> [high_quality, medium_quality, low_quality] >> join
269
+
270
+ branching_pipeline()
271
+ ```
272
+
273
+ ### Pattern 4: Sensors and External Dependencies
274
+
275
+ ```python
276
+ # dags/sensor_patterns.py
277
+ from datetime import datetime, timedelta
278
+ from airflow import DAG
279
+ from airflow.sensors.filesystem import FileSensor
280
+ from airflow.providers.amazon.aws.sensors.s3 import S3KeySensor
281
+ from airflow.sensors.external_task import ExternalTaskSensor
282
+ from airflow.operators.python import PythonOperator
283
+
284
+ with DAG(
285
+ dag_id='sensor_example',
286
+ schedule='@daily',
287
+ start_date=datetime(2024, 1, 1),
288
+ catchup=False,
289
+ ) as dag:
290
+
291
+ # Wait for file on S3
292
+ wait_for_file = S3KeySensor(
293
+ task_id='wait_for_s3_file',
294
+ bucket_name='data-lake',
295
+ bucket_key='raw/{{ ds }}/data.parquet',
296
+ aws_conn_id='aws_default',
297
+ timeout=60 * 60 * 2, # 2 hours
298
+ poke_interval=60 * 5, # Check every 5 minutes
299
+ mode='reschedule', # Free up worker slot while waiting
300
+ )
301
+
302
+ # Wait for another DAG to complete
303
+ wait_for_upstream = ExternalTaskSensor(
304
+ task_id='wait_for_upstream_dag',
305
+ external_dag_id='upstream_etl',
306
+ external_task_id='final_task',
307
+ execution_date_fn=lambda dt: dt, # Same execution date
308
+ timeout=60 * 60 * 3,
309
+ mode='reschedule',
310
+ )
311
+
312
+ # Custom sensor using @task.sensor decorator
313
+ @task.sensor(poke_interval=60, timeout=3600, mode='reschedule')
314
+ def wait_for_api() -> PokeReturnValue:
315
+ """Custom sensor for API availability"""
316
+ import requests
317
+
318
+ response = requests.get('https://api.example.com/health')
319
+ is_done = response.status_code == 200
320
+
321
+ return PokeReturnValue(is_done=is_done, xcom_value=response.json())
322
+
323
+ api_ready = wait_for_api()
324
+
325
+ def process_data(**context):
326
+ api_result = context['ti'].xcom_pull(task_ids='wait_for_api')
327
+ print(f"API returned: {api_result}")
328
+
329
+ process = PythonOperator(
330
+ task_id='process',
331
+ python_callable=process_data,
332
+ )
333
+
334
+ [wait_for_file, wait_for_upstream, api_ready] >> process
335
+ ```
336
+
337
+ ### Pattern 5: Error Handling and Alerts
338
+
339
+ ```python
340
+ # dags/error_handling.py
341
+ from datetime import datetime, timedelta
342
+ from airflow import DAG
343
+ from airflow.operators.python import PythonOperator
344
+ from airflow.utils.trigger_rule import TriggerRule
345
+ from airflow.models import Variable
346
+
347
+ def task_failure_callback(context):
348
+ """Callback on task failure"""
349
+ task_instance = context['task_instance']
350
+ exception = context.get('exception')
351
+
352
+ # Send to Slack/PagerDuty/etc
353
+ message = f"""
354
+ Task Failed!
355
+ DAG: {task_instance.dag_id}
356
+ Task: {task_instance.task_id}
357
+ Execution Date: {context['ds']}
358
+ Error: {exception}
359
+ Log URL: {task_instance.log_url}
360
+ """
361
+ # send_slack_alert(message)
362
+ print(message)
363
+
364
+ def dag_failure_callback(context):
365
+ """Callback on DAG failure"""
366
+ # Aggregate failures, send summary
367
+ pass
368
+
369
+ with DAG(
370
+ dag_id='error_handling_example',
371
+ schedule='@daily',
372
+ start_date=datetime(2024, 1, 1),
373
+ catchup=False,
374
+ on_failure_callback=dag_failure_callback,
375
+ default_args={
376
+ 'on_failure_callback': task_failure_callback,
377
+ 'retries': 3,
378
+ 'retry_delay': timedelta(minutes=5),
379
+ },
380
+ ) as dag:
381
+
382
+ def might_fail(**context):
383
+ import random
384
+ if random.random() < 0.3:
385
+ raise ValueError("Random failure!")
386
+ return "Success"
387
+
388
+ risky_task = PythonOperator(
389
+ task_id='risky_task',
390
+ python_callable=might_fail,
391
+ )
392
+
393
+ def cleanup(**context):
394
+ """Cleanup runs regardless of upstream failures"""
395
+ print("Cleaning up...")
396
+
397
+ cleanup_task = PythonOperator(
398
+ task_id='cleanup',
399
+ python_callable=cleanup,
400
+ trigger_rule=TriggerRule.ALL_DONE, # Run even if upstream fails
401
+ )
402
+
403
+ def notify_success(**context):
404
+ """Only runs if all upstream succeeded"""
405
+ print("All tasks succeeded!")
406
+
407
+ success_notification = PythonOperator(
408
+ task_id='notify_success',
409
+ python_callable=notify_success,
410
+ trigger_rule=TriggerRule.ALL_SUCCESS,
411
+ )
412
+
413
+ risky_task >> [cleanup_task, success_notification]
414
+ ```
415
+
416
+ ### Pattern 6: Testing DAGs
417
+
418
+ ```python
419
+ # tests/test_dags.py
420
+ import pytest
421
+ from datetime import datetime
422
+ from airflow.models import DagBag
423
+
424
+ @pytest.fixture
425
+ def dagbag():
426
+ return DagBag(dag_folder='dags/', include_examples=False)
427
+
428
+ def test_dag_loaded(dagbag):
429
+ """Test that all DAGs load without errors"""
430
+ assert len(dagbag.import_errors) == 0, f"DAG import errors: {dagbag.import_errors}"
431
+
432
+ def test_dag_structure(dagbag):
433
+ """Test specific DAG structure"""
434
+ dag = dagbag.get_dag('example_etl')
435
+
436
+ assert dag is not None
437
+ assert len(dag.tasks) == 3
438
+ assert dag.schedule_interval == '0 6 * * *'
439
+
440
+ def test_task_dependencies(dagbag):
441
+ """Test task dependencies are correct"""
442
+ dag = dagbag.get_dag('example_etl')
443
+
444
+ extract_task = dag.get_task('extract')
445
+ assert 'start' in [t.task_id for t in extract_task.upstream_list]
446
+ assert 'end' in [t.task_id for t in extract_task.downstream_list]
447
+
448
+ def test_dag_integrity(dagbag):
449
+ """Test DAG has no cycles and is valid"""
450
+ for dag_id, dag in dagbag.dags.items():
451
+ assert dag.test_cycle() is None, f"Cycle detected in {dag_id}"
452
+
453
+ # Test individual task logic
454
+ def test_extract_function():
455
+ """Unit test for extract function"""
456
+ from dags.example_dag import extract_data
457
+
458
+ result = extract_data(ds='2024-01-01')
459
+ assert 'records' in result
460
+ assert isinstance(result['records'], int)
461
+ ```
462
+
463
+ ## Project Structure
464
+
465
+ ```
466
+ airflow/
467
+ ├── dags/
468
+ │ ├── __init__.py
469
+ │ ├── common/
470
+ │ │ ├── __init__.py
471
+ │ │ ├── operators.py # Custom operators
472
+ │ │ ├── sensors.py # Custom sensors
473
+ │ │ └── callbacks.py # Alert callbacks
474
+ │ ├── etl/
475
+ │ │ ├── customers.py
476
+ │ │ └── orders.py
477
+ │ └── ml/
478
+ │ └── training.py
479
+ ├── plugins/
480
+ │ └── custom_plugin.py
481
+ ├── tests/
482
+ │ ├── __init__.py
483
+ │ ├── test_dags.py
484
+ │ └── test_operators.py
485
+ ├── docker-compose.yml
486
+ └── requirements.txt
487
+ ```
488
+
489
+ ## Best Practices
490
+
491
+ ### Do's
492
+ - **Use TaskFlow API** - Cleaner code, automatic XCom
493
+ - **Set timeouts** - Prevent zombie tasks
494
+ - **Use `mode='reschedule'`** - For sensors, free up workers
495
+ - **Test DAGs** - Unit tests and integration tests
496
+ - **Idempotent tasks** - Safe to retry
497
+
498
+ ### Don'ts
499
+ - **Don't use `depends_on_past=True`** - Creates bottlenecks
500
+ - **Don't hardcode dates** - Use `{{ ds }}` macros
501
+ - **Don't use global state** - Tasks should be stateless
502
+ - **Don't skip catchup blindly** - Understand implications
503
+ - **Don't put heavy logic in DAG file** - Import from modules
504
+
505
+ ## Resources
506
+
507
+ - [Airflow Documentation](https://airflow.apache.org/docs/)
508
+ - [Astronomer Guides](https://docs.astronomer.io/learn)
509
+ - [TaskFlow API](https://airflow.apache.org/docs/apache-airflow/stable/tutorial/taskflow.html)