@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,544 @@
1
+ # Billing Automation Implementation Playbook
2
+
3
+ This file contains detailed patterns, checklists, and code samples referenced by the skill.
4
+
5
+ ## Core Concepts
6
+
7
+ ### 1. Billing Cycles
8
+ **Common Intervals:**
9
+ - Monthly (most common for SaaS)
10
+ - Annual (discounted long-term)
11
+ - Quarterly
12
+ - Weekly
13
+ - Custom (usage-based, per-seat)
14
+
15
+ ### 2. Subscription States
16
+ ```
17
+ trial → active → past_due → canceled
18
+ → paused → resumed
19
+ ```
20
+
21
+ ### 3. Dunning Management
22
+ Automated process to recover failed payments through:
23
+ - Retry schedules
24
+ - Customer notifications
25
+ - Grace periods
26
+ - Account restrictions
27
+
28
+ ### 4. Proration
29
+ Adjusting charges when:
30
+ - Upgrading/downgrading mid-cycle
31
+ - Adding/removing seats
32
+ - Changing billing frequency
33
+
34
+ ## Quick Start
35
+
36
+ ```python
37
+ from billing import BillingEngine, Subscription
38
+
39
+ # Initialize billing engine
40
+ billing = BillingEngine()
41
+
42
+ # Create subscription
43
+ subscription = billing.create_subscription(
44
+ customer_id="cus_123",
45
+ plan_id="plan_pro_monthly",
46
+ billing_cycle_anchor=datetime.now(),
47
+ trial_days=14
48
+ )
49
+
50
+ # Process billing cycle
51
+ billing.process_billing_cycle(subscription.id)
52
+ ```
53
+
54
+ ## Subscription Lifecycle Management
55
+
56
+ ```python
57
+ from datetime import datetime, timedelta
58
+ from enum import Enum
59
+
60
+ class SubscriptionStatus(Enum):
61
+ TRIAL = "trial"
62
+ ACTIVE = "active"
63
+ PAST_DUE = "past_due"
64
+ CANCELED = "canceled"
65
+ PAUSED = "paused"
66
+
67
+ class Subscription:
68
+ def __init__(self, customer_id, plan, billing_cycle_day=None):
69
+ self.id = generate_id()
70
+ self.customer_id = customer_id
71
+ self.plan = plan
72
+ self.status = SubscriptionStatus.TRIAL
73
+ self.current_period_start = datetime.now()
74
+ self.current_period_end = self.current_period_start + timedelta(days=plan.trial_days or 30)
75
+ self.billing_cycle_day = billing_cycle_day or self.current_period_start.day
76
+ self.trial_end = datetime.now() + timedelta(days=plan.trial_days) if plan.trial_days else None
77
+
78
+ def start_trial(self, trial_days):
79
+ """Start trial period."""
80
+ self.status = SubscriptionStatus.TRIAL
81
+ self.trial_end = datetime.now() + timedelta(days=trial_days)
82
+ self.current_period_end = self.trial_end
83
+
84
+ def activate(self):
85
+ """Activate subscription after trial or immediately."""
86
+ self.status = SubscriptionStatus.ACTIVE
87
+ self.current_period_start = datetime.now()
88
+ self.current_period_end = self.calculate_next_billing_date()
89
+
90
+ def mark_past_due(self):
91
+ """Mark subscription as past due after failed payment."""
92
+ self.status = SubscriptionStatus.PAST_DUE
93
+ # Trigger dunning workflow
94
+
95
+ def cancel(self, at_period_end=True):
96
+ """Cancel subscription."""
97
+ if at_period_end:
98
+ self.cancel_at_period_end = True
99
+ # Will cancel when current period ends
100
+ else:
101
+ self.status = SubscriptionStatus.CANCELED
102
+ self.canceled_at = datetime.now()
103
+
104
+ def calculate_next_billing_date(self):
105
+ """Calculate next billing date based on interval."""
106
+ if self.plan.interval == 'month':
107
+ return self.current_period_start + timedelta(days=30)
108
+ elif self.plan.interval == 'year':
109
+ return self.current_period_start + timedelta(days=365)
110
+ elif self.plan.interval == 'week':
111
+ return self.current_period_start + timedelta(days=7)
112
+ ```
113
+
114
+ ## Billing Cycle Processing
115
+
116
+ ```python
117
+ class BillingEngine:
118
+ def process_billing_cycle(self, subscription_id):
119
+ """Process billing for a subscription."""
120
+ subscription = self.get_subscription(subscription_id)
121
+
122
+ # Check if billing is due
123
+ if datetime.now() < subscription.current_period_end:
124
+ return
125
+
126
+ # Generate invoice
127
+ invoice = self.generate_invoice(subscription)
128
+
129
+ # Attempt payment
130
+ payment_result = self.charge_customer(
131
+ subscription.customer_id,
132
+ invoice.total
133
+ )
134
+
135
+ if payment_result.success:
136
+ # Payment successful
137
+ invoice.mark_paid()
138
+ subscription.advance_billing_period()
139
+ self.send_invoice(invoice)
140
+ else:
141
+ # Payment failed
142
+ subscription.mark_past_due()
143
+ self.start_dunning_process(subscription, invoice)
144
+
145
+ def generate_invoice(self, subscription):
146
+ """Generate invoice for billing period."""
147
+ invoice = Invoice(
148
+ customer_id=subscription.customer_id,
149
+ subscription_id=subscription.id,
150
+ period_start=subscription.current_period_start,
151
+ period_end=subscription.current_period_end
152
+ )
153
+
154
+ # Add subscription line item
155
+ invoice.add_line_item(
156
+ description=subscription.plan.name,
157
+ amount=subscription.plan.amount,
158
+ quantity=subscription.quantity or 1
159
+ )
160
+
161
+ # Add usage-based charges if applicable
162
+ if subscription.has_usage_billing:
163
+ usage_charges = self.calculate_usage_charges(subscription)
164
+ invoice.add_line_item(
165
+ description="Usage charges",
166
+ amount=usage_charges
167
+ )
168
+
169
+ # Calculate tax
170
+ tax = self.calculate_tax(invoice.subtotal, subscription.customer)
171
+ invoice.tax = tax
172
+
173
+ invoice.finalize()
174
+ return invoice
175
+
176
+ def charge_customer(self, customer_id, amount):
177
+ """Charge customer using saved payment method."""
178
+ customer = self.get_customer(customer_id)
179
+
180
+ try:
181
+ # Charge using payment processor
182
+ charge = stripe.Charge.create(
183
+ customer=customer.stripe_id,
184
+ amount=int(amount * 100), # Convert to cents
185
+ currency='usd'
186
+ )
187
+
188
+ return PaymentResult(success=True, transaction_id=charge.id)
189
+ except stripe.error.CardError as e:
190
+ return PaymentResult(success=False, error=str(e))
191
+ ```
192
+
193
+ ## Dunning Management
194
+
195
+ ```python
196
+ class DunningManager:
197
+ """Manage failed payment recovery."""
198
+
199
+ def __init__(self):
200
+ self.retry_schedule = [
201
+ {'days': 3, 'email_template': 'payment_failed_first'},
202
+ {'days': 7, 'email_template': 'payment_failed_reminder'},
203
+ {'days': 14, 'email_template': 'payment_failed_final'}
204
+ ]
205
+
206
+ def start_dunning_process(self, subscription, invoice):
207
+ """Start dunning process for failed payment."""
208
+ dunning_attempt = DunningAttempt(
209
+ subscription_id=subscription.id,
210
+ invoice_id=invoice.id,
211
+ attempt_number=1,
212
+ next_retry=datetime.now() + timedelta(days=3)
213
+ )
214
+
215
+ # Send initial failure notification
216
+ self.send_dunning_email(subscription, 'payment_failed_first')
217
+
218
+ # Schedule retries
219
+ self.schedule_retries(dunning_attempt)
220
+
221
+ def retry_payment(self, dunning_attempt):
222
+ """Retry failed payment."""
223
+ subscription = self.get_subscription(dunning_attempt.subscription_id)
224
+ invoice = self.get_invoice(dunning_attempt.invoice_id)
225
+
226
+ # Attempt payment again
227
+ result = self.charge_customer(subscription.customer_id, invoice.total)
228
+
229
+ if result.success:
230
+ # Payment succeeded
231
+ invoice.mark_paid()
232
+ subscription.status = SubscriptionStatus.ACTIVE
233
+ self.send_dunning_email(subscription, 'payment_recovered')
234
+ dunning_attempt.mark_resolved()
235
+ else:
236
+ # Still failing
237
+ dunning_attempt.attempt_number += 1
238
+
239
+ if dunning_attempt.attempt_number < len(self.retry_schedule):
240
+ # Schedule next retry
241
+ next_retry_config = self.retry_schedule[dunning_attempt.attempt_number]
242
+ dunning_attempt.next_retry = datetime.now() + timedelta(days=next_retry_config['days'])
243
+ self.send_dunning_email(subscription, next_retry_config['email_template'])
244
+ else:
245
+ # Exhausted retries, cancel subscription
246
+ subscription.cancel(at_period_end=False)
247
+ self.send_dunning_email(subscription, 'subscription_canceled')
248
+
249
+ def send_dunning_email(self, subscription, template):
250
+ """Send dunning notification to customer."""
251
+ customer = self.get_customer(subscription.customer_id)
252
+
253
+ email_content = self.render_template(template, {
254
+ 'customer_name': customer.name,
255
+ 'amount_due': subscription.plan.amount,
256
+ 'update_payment_url': f"https://app.example.com/billing"
257
+ })
258
+
259
+ send_email(
260
+ to=customer.email,
261
+ subject=email_content['subject'],
262
+ body=email_content['body']
263
+ )
264
+ ```
265
+
266
+ ## Proration
267
+
268
+ ```python
269
+ class ProrationCalculator:
270
+ """Calculate prorated charges for plan changes."""
271
+
272
+ @staticmethod
273
+ def calculate_proration(old_plan, new_plan, period_start, period_end, change_date):
274
+ """Calculate proration for plan change."""
275
+ # Days in current period
276
+ total_days = (period_end - period_start).days
277
+
278
+ # Days used on old plan
279
+ days_used = (change_date - period_start).days
280
+
281
+ # Days remaining on new plan
282
+ days_remaining = (period_end - change_date).days
283
+
284
+ # Calculate prorated amounts
285
+ unused_amount = (old_plan.amount / total_days) * days_remaining
286
+ new_plan_amount = (new_plan.amount / total_days) * days_remaining
287
+
288
+ # Net charge/credit
289
+ proration = new_plan_amount - unused_amount
290
+
291
+ return {
292
+ 'old_plan_credit': -unused_amount,
293
+ 'new_plan_charge': new_plan_amount,
294
+ 'net_proration': proration,
295
+ 'days_used': days_used,
296
+ 'days_remaining': days_remaining
297
+ }
298
+
299
+ @staticmethod
300
+ def calculate_seat_proration(current_seats, new_seats, price_per_seat, period_start, period_end, change_date):
301
+ """Calculate proration for seat changes."""
302
+ total_days = (period_end - period_start).days
303
+ days_remaining = (period_end - change_date).days
304
+
305
+ # Additional seats charge
306
+ additional_seats = new_seats - current_seats
307
+ prorated_amount = (additional_seats * price_per_seat / total_days) * days_remaining
308
+
309
+ return {
310
+ 'additional_seats': additional_seats,
311
+ 'prorated_charge': max(0, prorated_amount), # No refund for removing seats mid-cycle
312
+ 'effective_date': change_date
313
+ }
314
+ ```
315
+
316
+ ## Tax Calculation
317
+
318
+ ```python
319
+ class TaxCalculator:
320
+ """Calculate sales tax, VAT, GST."""
321
+
322
+ def __init__(self):
323
+ # Tax rates by region
324
+ self.tax_rates = {
325
+ 'US_CA': 0.0725, # California sales tax
326
+ 'US_NY': 0.04, # New York sales tax
327
+ 'GB': 0.20, # UK VAT
328
+ 'DE': 0.19, # Germany VAT
329
+ 'FR': 0.20, # France VAT
330
+ 'AU': 0.10, # Australia GST
331
+ }
332
+
333
+ def calculate_tax(self, amount, customer):
334
+ """Calculate applicable tax."""
335
+ # Determine tax jurisdiction
336
+ jurisdiction = self.get_tax_jurisdiction(customer)
337
+
338
+ if not jurisdiction:
339
+ return 0
340
+
341
+ # Get tax rate
342
+ tax_rate = self.tax_rates.get(jurisdiction, 0)
343
+
344
+ # Calculate tax
345
+ tax = amount * tax_rate
346
+
347
+ return {
348
+ 'tax_amount': tax,
349
+ 'tax_rate': tax_rate,
350
+ 'jurisdiction': jurisdiction,
351
+ 'tax_type': self.get_tax_type(jurisdiction)
352
+ }
353
+
354
+ def get_tax_jurisdiction(self, customer):
355
+ """Determine tax jurisdiction based on customer location."""
356
+ if customer.country == 'US':
357
+ # US: Tax based on customer state
358
+ return f"US_{customer.state}"
359
+ elif customer.country in ['GB', 'DE', 'FR']:
360
+ # EU: VAT
361
+ return customer.country
362
+ elif customer.country == 'AU':
363
+ # Australia: GST
364
+ return 'AU'
365
+ else:
366
+ return None
367
+
368
+ def get_tax_type(self, jurisdiction):
369
+ """Get type of tax for jurisdiction."""
370
+ if jurisdiction.startswith('US_'):
371
+ return 'Sales Tax'
372
+ elif jurisdiction in ['GB', 'DE', 'FR']:
373
+ return 'VAT'
374
+ elif jurisdiction == 'AU':
375
+ return 'GST'
376
+ return 'Tax'
377
+
378
+ def validate_vat_number(self, vat_number, country):
379
+ """Validate EU VAT number."""
380
+ # Use VIES API for validation
381
+ # Returns True if valid, False otherwise
382
+ pass
383
+ ```
384
+
385
+ ## Invoice Generation
386
+
387
+ ```python
388
+ class Invoice:
389
+ def __init__(self, customer_id, subscription_id=None):
390
+ self.id = generate_invoice_number()
391
+ self.customer_id = customer_id
392
+ self.subscription_id = subscription_id
393
+ self.status = 'draft'
394
+ self.line_items = []
395
+ self.subtotal = 0
396
+ self.tax = 0
397
+ self.total = 0
398
+ self.created_at = datetime.now()
399
+
400
+ def add_line_item(self, description, amount, quantity=1):
401
+ """Add line item to invoice."""
402
+ line_item = {
403
+ 'description': description,
404
+ 'unit_amount': amount,
405
+ 'quantity': quantity,
406
+ 'total': amount * quantity
407
+ }
408
+ self.line_items.append(line_item)
409
+ self.subtotal += line_item['total']
410
+
411
+ def finalize(self):
412
+ """Finalize invoice and calculate total."""
413
+ self.total = self.subtotal + self.tax
414
+ self.status = 'open'
415
+ self.finalized_at = datetime.now()
416
+
417
+ def mark_paid(self):
418
+ """Mark invoice as paid."""
419
+ self.status = 'paid'
420
+ self.paid_at = datetime.now()
421
+
422
+ def to_pdf(self):
423
+ """Generate PDF invoice."""
424
+ from reportlab.pdfgen import canvas
425
+
426
+ # Generate PDF
427
+ # Include: company info, customer info, line items, tax, total
428
+ pass
429
+
430
+ def to_html(self):
431
+ """Generate HTML invoice."""
432
+ template = """
433
+ <!DOCTYPE html>
434
+ <html>
435
+ <head><title>Invoice #{invoice_number}</title></head>
436
+ <body>
437
+ <h1>Invoice #{invoice_number}</h1>
438
+ <p>Date: {date}</p>
439
+ <h2>Bill To:</h2>
440
+ <p>{customer_name}<br>{customer_address}</p>
441
+ <table>
442
+ <tr><th>Description</th><th>Quantity</th><th>Amount</th></tr>
443
+ {line_items}
444
+ </table>
445
+ <p>Subtotal: ${subtotal}</p>
446
+ <p>Tax: ${tax}</p>
447
+ <h3>Total: ${total}</h3>
448
+ </body>
449
+ </html>
450
+ """
451
+
452
+ return template.format(
453
+ invoice_number=self.id,
454
+ date=self.created_at.strftime('%Y-%m-%d'),
455
+ customer_name=self.customer.name,
456
+ customer_address=self.customer.address,
457
+ line_items=self.render_line_items(),
458
+ subtotal=self.subtotal,
459
+ tax=self.tax,
460
+ total=self.total
461
+ )
462
+ ```
463
+
464
+ ## Usage-Based Billing
465
+
466
+ ```python
467
+ class UsageBillingEngine:
468
+ """Track and bill for usage."""
469
+
470
+ def track_usage(self, customer_id, metric, quantity):
471
+ """Track usage event."""
472
+ UsageRecord.create(
473
+ customer_id=customer_id,
474
+ metric=metric,
475
+ quantity=quantity,
476
+ timestamp=datetime.now()
477
+ )
478
+
479
+ def calculate_usage_charges(self, subscription, period_start, period_end):
480
+ """Calculate charges for usage in billing period."""
481
+ usage_records = UsageRecord.get_for_period(
482
+ subscription.customer_id,
483
+ period_start,
484
+ period_end
485
+ )
486
+
487
+ total_usage = sum(record.quantity for record in usage_records)
488
+
489
+ # Tiered pricing
490
+ if subscription.plan.pricing_model == 'tiered':
491
+ charge = self.calculate_tiered_pricing(total_usage, subscription.plan.tiers)
492
+ # Per-unit pricing
493
+ elif subscription.plan.pricing_model == 'per_unit':
494
+ charge = total_usage * subscription.plan.unit_price
495
+ # Volume pricing
496
+ elif subscription.plan.pricing_model == 'volume':
497
+ charge = self.calculate_volume_pricing(total_usage, subscription.plan.tiers)
498
+
499
+ return charge
500
+
501
+ def calculate_tiered_pricing(self, total_usage, tiers):
502
+ """Calculate cost using tiered pricing."""
503
+ charge = 0
504
+ remaining = total_usage
505
+
506
+ for tier in sorted(tiers, key=lambda x: x['up_to']):
507
+ tier_usage = min(remaining, tier['up_to'] - tier['from'])
508
+ charge += tier_usage * tier['unit_price']
509
+ remaining -= tier_usage
510
+
511
+ if remaining <= 0:
512
+ break
513
+
514
+ return charge
515
+ ```
516
+
517
+ ## Resources
518
+
519
+ - **references/billing-cycles.md**: Billing cycle management
520
+ - **references/dunning-management.md**: Failed payment recovery
521
+ - **references/proration.md**: Prorated charge calculations
522
+ - **references/tax-calculation.md**: Tax/VAT/GST handling
523
+ - **references/invoice-lifecycle.md**: Invoice state management
524
+ - **assets/billing-state-machine.yaml**: Billing workflow
525
+ - **assets/invoice-template.html**: Invoice templates
526
+ - **assets/dunning-policy.yaml**: Dunning configuration
527
+
528
+ ## Best Practices
529
+
530
+ 1. **Automate Everything**: Minimize manual intervention
531
+ 2. **Clear Communication**: Notify customers of billing events
532
+ 3. **Flexible Retry Logic**: Balance recovery with customer experience
533
+ 4. **Accurate Proration**: Fair calculation for plan changes
534
+ 5. **Tax Compliance**: Calculate correct tax for jurisdiction
535
+ 6. **Audit Trail**: Log all billing events
536
+ 7. **Graceful Degradation**: Handle edge cases without breaking
537
+
538
+ ## Common Pitfalls
539
+
540
+ - **Incorrect Proration**: Not accounting for partial periods
541
+ - **Missing Tax**: Forgetting to add tax to invoices
542
+ - **Aggressive Dunning**: Canceling too quickly
543
+ - **No Notifications**: Not informing customers of failures
544
+ - **Hardcoded Cycles**: Not supporting custom billing dates