aigroup-workflow 1.3.0 → 2.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 (619) hide show
  1. package/.claude/agents/architect.md +211 -0
  2. package/.claude/agents/build-error-resolver.md +114 -0
  3. package/.claude/agents/code-reviewer.md +237 -0
  4. package/.claude/agents/doc-updater.md +107 -0
  5. package/.claude/agents/e2e-runner.md +107 -0
  6. package/.claude/agents/init-architect.md +185 -128
  7. package/.claude/agents/planner.md +212 -0
  8. package/.claude/agents/refactor-cleaner.md +85 -0
  9. package/.claude/agents/rust-reviewer.md +94 -0
  10. package/.claude/agents/security-reviewer.md +108 -0
  11. package/.claude/agents/tdd-guide.md +91 -0
  12. package/.claude/commands/fix-build.md +32 -0
  13. package/.claude/commands/git-commit.md +1 -1
  14. package/.claude/commands/init-project.md +66 -50
  15. package/.claude/commands/plan.md +32 -0
  16. package/.claude/commands/review.md +29 -0
  17. package/.claude/commands/tdd.md +32 -0
  18. package/.claude/commands/workflow-start.md +87 -0
  19. package/.claude/hooks.json +3 -3
  20. package/.claude-plugin/plugin.json +20 -0
  21. package/.codex/AGENTS.md +107 -0
  22. package/.codex/agents/docs-researcher.toml +14 -0
  23. package/.codex/agents/explorer.toml +14 -0
  24. package/.codex/agents/reviewer.toml +16 -0
  25. package/.codex/config.toml +93 -0
  26. package/.codex-plugin/plugin.json +33 -0
  27. package/AGENTS.md +76 -0
  28. package/CLAUDE.md +18 -83
  29. package/README.md +220 -317
  30. package/cli/commands/check.mjs +11 -19
  31. package/cli/commands/init.mjs +133 -49
  32. package/cli/commands/status.mjs +42 -39
  33. package/cli/commands/update.mjs +10 -12
  34. package/cli/utils/scaffold.mjs +297 -126
  35. package/docs/README.md +46 -29
  36. package/docs/red-flags.md +29 -24
  37. package/docs/rules/README.md +51 -0
  38. package/docs/rules/agents.md +50 -0
  39. package/docs/rules/coding-style.md +79 -0
  40. package/docs/rules/cpp/coding-style.md +44 -0
  41. package/docs/rules/cpp/hooks.md +39 -0
  42. package/docs/rules/cpp/patterns.md +51 -0
  43. package/docs/rules/cpp/security.md +51 -0
  44. package/docs/rules/cpp/testing.md +44 -0
  45. package/docs/rules/csharp/coding-style.md +72 -0
  46. package/docs/rules/csharp/hooks.md +25 -0
  47. package/docs/rules/csharp/patterns.md +50 -0
  48. package/docs/rules/csharp/security.md +58 -0
  49. package/docs/rules/csharp/testing.md +46 -0
  50. package/docs/rules/dart/coding-style.md +159 -0
  51. package/docs/rules/dart/hooks.md +66 -0
  52. package/docs/rules/dart/patterns.md +261 -0
  53. package/docs/rules/dart/security.md +135 -0
  54. package/docs/rules/dart/testing.md +215 -0
  55. package/docs/rules/git-workflow.md +53 -0
  56. package/docs/rules/golang/coding-style.md +32 -0
  57. package/docs/rules/golang/hooks.md +17 -0
  58. package/docs/rules/golang/patterns.md +45 -0
  59. package/docs/rules/golang/security.md +34 -0
  60. package/docs/rules/golang/testing.md +31 -0
  61. package/docs/rules/hooks.md +61 -0
  62. package/docs/rules/java/coding-style.md +114 -0
  63. package/docs/rules/java/hooks.md +18 -0
  64. package/docs/rules/java/patterns.md +146 -0
  65. package/docs/rules/java/security.md +100 -0
  66. package/docs/rules/java/testing.md +131 -0
  67. package/docs/rules/kotlin/coding-style.md +86 -0
  68. package/docs/rules/kotlin/hooks.md +17 -0
  69. package/docs/rules/kotlin/patterns.md +146 -0
  70. package/docs/rules/kotlin/security.md +82 -0
  71. package/docs/rules/kotlin/testing.md +128 -0
  72. package/docs/rules/performance.md +30 -0
  73. package/docs/rules/perl/coding-style.md +46 -0
  74. package/docs/rules/perl/hooks.md +22 -0
  75. package/docs/rules/perl/patterns.md +76 -0
  76. package/docs/rules/perl/security.md +69 -0
  77. package/docs/rules/perl/testing.md +54 -0
  78. package/docs/rules/php/coding-style.md +40 -0
  79. package/docs/rules/php/hooks.md +24 -0
  80. package/docs/rules/php/patterns.md +33 -0
  81. package/docs/rules/php/security.md +37 -0
  82. package/docs/rules/php/testing.md +39 -0
  83. package/docs/rules/python/coding-style.md +42 -0
  84. package/docs/rules/python/hooks.md +19 -0
  85. package/docs/rules/python/patterns.md +39 -0
  86. package/docs/rules/python/security.md +30 -0
  87. package/docs/rules/python/testing.md +38 -0
  88. package/docs/rules/rust/coding-style.md +151 -0
  89. package/docs/rules/rust/hooks.md +16 -0
  90. package/docs/rules/rust/patterns.md +168 -0
  91. package/docs/rules/rust/security.md +141 -0
  92. package/docs/rules/rust/testing.md +154 -0
  93. package/docs/rules/security.md +73 -0
  94. package/docs/rules/swift/coding-style.md +47 -0
  95. package/docs/rules/swift/hooks.md +20 -0
  96. package/docs/rules/swift/patterns.md +66 -0
  97. package/docs/rules/swift/security.md +33 -0
  98. package/docs/rules/swift/testing.md +45 -0
  99. package/docs/rules/testing.md +77 -0
  100. package/docs/rules/typescript/coding-style.md +199 -0
  101. package/docs/rules/typescript/hooks.md +22 -0
  102. package/docs/rules/typescript/patterns.md +52 -0
  103. package/docs/rules/typescript/security.md +28 -0
  104. package/docs/rules/typescript/testing.md +18 -0
  105. package/docs/rules/web/coding-style.md +96 -0
  106. package/docs/rules/web/design-quality.md +63 -0
  107. package/docs/rules/web/hooks.md +120 -0
  108. package/docs/rules/web/patterns.md +79 -0
  109. package/docs/rules/web/performance.md +64 -0
  110. package/docs/rules/web/security.md +57 -0
  111. package/docs/rules/web/testing.md +55 -0
  112. package/docs/templates/code-review.md +1 -1
  113. package/docs/templates/implementation-plan.md +82 -82
  114. package/docs/workflow-pipeline.md +55 -127
  115. package/manifests/install-modules.json +294 -0
  116. package/package.json +7 -2
  117. package/scripts/harness/log-event.sh +11 -21
  118. package/scripts/harness/logs-query.sh +3 -8
  119. package/scripts/harness/tests/test-log-event.sh +16 -31
  120. package/scripts/harness/tests/test-logs-query.sh +4 -4
  121. package/scripts/hooks/README.md +49 -0
  122. package/scripts/hooks/checks/claude-md-size.cjs +21 -0
  123. package/scripts/hooks/checks/delegation-antipatterns.cjs +66 -0
  124. package/scripts/hooks/checks/empty-docs.cjs +32 -0
  125. package/scripts/hooks/checks/orchestration-artifacts.cjs +65 -0
  126. package/scripts/hooks/checks/structure.cjs +23 -0
  127. package/scripts/hooks/checks/workflow-state.cjs +56 -0
  128. package/scripts/hooks/dispatcher.cjs +64 -0
  129. package/scripts/hooks/lib/runner.cjs +81 -0
  130. package/scripts/orchestration/lib/orchestrator.cjs +181 -0
  131. package/scripts/orchestration/session.cjs +180 -0
  132. package/skills/documentation/SKILL.md +45 -0
  133. package/skills/{max/workflow/entropy-management → entropy-management}/SKILL.md +115 -124
  134. package/skills/requirement-engineering/SKILL.md +111 -0
  135. package/skills/{max/workflow/subagent-driven-development → subagent-driven-development}/SKILL.md +18 -18
  136. package/skills/{max/workflow/writing-plans → writing-plans}/SKILL.md +165 -165
  137. package/.claude/agents/ella.md +0 -101
  138. package/.claude/agents/jarvis.md +0 -193
  139. package/.claude/agents/kyle.md +0 -168
  140. package/docs/ARCHITECTURE.md +0 -117
  141. package/docs/QUALITY_SCORE.md +0 -44
  142. package/docs/coding-standards.md +0 -48
  143. package/docs/dispatch-rules.md +0 -83
  144. package/docs/steering-loop.md +0 -72
  145. package/docs/tech-debt-tracker.md +0 -26
  146. package/docs/templates/memory/activeContext.template.md +0 -30
  147. package/docs/templates/memory/projectContext.template.md +0 -36
  148. package/docs/templates/memory/systemPatterns.template.md +0 -26
  149. package/scripts/check-gitignore.sh +0 -130
  150. package/scripts/clean-system-files.sh +0 -169
  151. package/scripts/harness/hook-post-edit.sh +0 -40
  152. package/scripts/harness/hook-stop.sh +0 -70
  153. package/scripts/harness/hook-subagent-stop.sh +0 -54
  154. package/scripts/harness/lint-delegation.sh +0 -168
  155. package/scripts/harness/lint-docs.sh +0 -121
  156. package/scripts/harness/lint-process.sh +0 -221
  157. package/scripts/harness/lint-structure.sh +0 -145
  158. package/scripts/harness/lint-workflow-artifacts.sh +0 -150
  159. package/scripts/harness/run-all.sh +0 -77
  160. package/scripts/harness/workflow-state.sh +0 -397
  161. package/scripts/update-skills.sh +0 -187
  162. package/skills/max/workflow/brainstorming/SKILL.md +0 -111
  163. package/skills/max/workflow/documentation/SKILL.md +0 -82
  164. package/skills/max/workflow/requirement-validation/SKILL.md +0 -107
  165. package/skills/max/workflow/solution-design/SKILL.md +0 -117
  166. package/skills/max/workflow/testing/SKILL.md +0 -118
  167. /package/skills/{ella/angular-architect → angular-architect}/SKILL.md +0 -0
  168. /package/skills/{ella/angular-architect → angular-architect}/references/components.md +0 -0
  169. /package/skills/{ella/angular-architect → angular-architect}/references/ngrx.md +0 -0
  170. /package/skills/{ella/angular-architect → angular-architect}/references/routing.md +0 -0
  171. /package/skills/{ella/angular-architect → angular-architect}/references/rxjs.md +0 -0
  172. /package/skills/{ella/angular-architect → angular-architect}/references/testing.md +0 -0
  173. /package/skills/{jarvis/api-designer → api-designer}/SKILL.md +0 -0
  174. /package/skills/{jarvis/api-designer → api-designer}/references/error-handling.md +0 -0
  175. /package/skills/{jarvis/api-designer → api-designer}/references/openapi.md +0 -0
  176. /package/skills/{jarvis/api-designer → api-designer}/references/pagination.md +0 -0
  177. /package/skills/{jarvis/api-designer → api-designer}/references/rest-patterns.md +0 -0
  178. /package/skills/{jarvis/api-designer → api-designer}/references/versioning.md +0 -0
  179. /package/skills/{jarvis/architecture-designer → architecture-designer}/SKILL.md +0 -0
  180. /package/skills/{jarvis/architecture-designer → architecture-designer}/references/adr-template.md +0 -0
  181. /package/skills/{jarvis/architecture-designer → architecture-designer}/references/architecture-patterns.md +0 -0
  182. /package/skills/{jarvis/architecture-designer → architecture-designer}/references/database-selection.md +0 -0
  183. /package/skills/{jarvis/architecture-designer → architecture-designer}/references/nfr-checklist.md +0 -0
  184. /package/skills/{jarvis/architecture-designer → architecture-designer}/references/system-design.md +0 -0
  185. /package/skills/{kyle/chaos-engineer → chaos-engineer}/SKILL.md +0 -0
  186. /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/chaos-tools.md +0 -0
  187. /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/experiment-design.md +0 -0
  188. /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/game-days.md +0 -0
  189. /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/infrastructure-chaos.md +0 -0
  190. /package/skills/{kyle/chaos-engineer → chaos-engineer}/references/kubernetes-chaos.md +0 -0
  191. /package/skills/{jarvis/cli-developer → cli-developer}/SKILL.md +0 -0
  192. /package/skills/{jarvis/cli-developer → cli-developer}/references/design-patterns.md +0 -0
  193. /package/skills/{jarvis/cli-developer → cli-developer}/references/go-cli.md +0 -0
  194. /package/skills/{jarvis/cli-developer → cli-developer}/references/node-cli.md +0 -0
  195. /package/skills/{jarvis/cli-developer → cli-developer}/references/python-cli.md +0 -0
  196. /package/skills/{jarvis/cli-developer → cli-developer}/references/ux-patterns.md +0 -0
  197. /package/skills/{jarvis/cloud-architect → cloud-architect}/SKILL.md +0 -0
  198. /package/skills/{jarvis/cloud-architect → cloud-architect}/references/aws.md +0 -0
  199. /package/skills/{jarvis/cloud-architect → cloud-architect}/references/azure.md +0 -0
  200. /package/skills/{jarvis/cloud-architect → cloud-architect}/references/cost.md +0 -0
  201. /package/skills/{jarvis/cloud-architect → cloud-architect}/references/gcp.md +0 -0
  202. /package/skills/{jarvis/cloud-architect → cloud-architect}/references/multi-cloud.md +0 -0
  203. /package/skills/{jarvis/code-documenter → code-documenter}/SKILL.md +0 -0
  204. /package/skills/{jarvis/code-documenter → code-documenter}/references/api-docs-fastapi-django.md +0 -0
  205. /package/skills/{jarvis/code-documenter → code-documenter}/references/api-docs-nestjs-express.md +0 -0
  206. /package/skills/{jarvis/code-documenter → code-documenter}/references/coverage-reports.md +0 -0
  207. /package/skills/{jarvis/code-documenter → code-documenter}/references/documentation-systems.md +0 -0
  208. /package/skills/{jarvis/code-documenter → code-documenter}/references/interactive-api-docs.md +0 -0
  209. /package/skills/{jarvis/code-documenter → code-documenter}/references/python-docstrings.md +0 -0
  210. /package/skills/{jarvis/code-documenter → code-documenter}/references/typescript-jsdoc.md +0 -0
  211. /package/skills/{jarvis/code-documenter → code-documenter}/references/user-guides-tutorials.md +0 -0
  212. /package/skills/{kyle/code-reviewer → code-reviewer}/SKILL.md +0 -0
  213. /package/skills/{kyle/code-reviewer → code-reviewer}/references/common-issues.md +0 -0
  214. /package/skills/{kyle/code-reviewer → code-reviewer}/references/feedback-examples.md +0 -0
  215. /package/skills/{kyle/code-reviewer → code-reviewer}/references/receiving-feedback.md +0 -0
  216. /package/skills/{kyle/code-reviewer → code-reviewer}/references/report-template.md +0 -0
  217. /package/skills/{kyle/code-reviewer → code-reviewer}/references/review-checklist.md +0 -0
  218. /package/skills/{kyle/code-reviewer → code-reviewer}/references/spec-compliance-review.md +0 -0
  219. /package/skills/{max/competitive-analysis → competitive-analysis}/SKILL.md +0 -0
  220. /package/skills/{jarvis/cpp-pro → cpp-pro}/SKILL.md +0 -0
  221. /package/skills/{jarvis/cpp-pro → cpp-pro}/references/build-tooling.md +0 -0
  222. /package/skills/{jarvis/cpp-pro → cpp-pro}/references/concurrency.md +0 -0
  223. /package/skills/{jarvis/cpp-pro → cpp-pro}/references/memory-performance.md +0 -0
  224. /package/skills/{jarvis/cpp-pro → cpp-pro}/references/modern-cpp.md +0 -0
  225. /package/skills/{jarvis/cpp-pro → cpp-pro}/references/templates.md +0 -0
  226. /package/skills/{jarvis/csharp-developer → csharp-developer}/SKILL.md +0 -0
  227. /package/skills/{jarvis/csharp-developer → csharp-developer}/references/aspnet-core.md +0 -0
  228. /package/skills/{jarvis/csharp-developer → csharp-developer}/references/blazor.md +0 -0
  229. /package/skills/{jarvis/csharp-developer → csharp-developer}/references/entity-framework.md +0 -0
  230. /package/skills/{jarvis/csharp-developer → csharp-developer}/references/modern-csharp.md +0 -0
  231. /package/skills/{jarvis/csharp-developer → csharp-developer}/references/performance.md +0 -0
  232. /package/skills/{jarvis/database-optimizer → database-optimizer}/SKILL.md +0 -0
  233. /package/skills/{jarvis/database-optimizer → database-optimizer}/references/index-strategies.md +0 -0
  234. /package/skills/{jarvis/database-optimizer → database-optimizer}/references/monitoring-analysis.md +0 -0
  235. /package/skills/{jarvis/database-optimizer → database-optimizer}/references/mysql-tuning.md +0 -0
  236. /package/skills/{jarvis/database-optimizer → database-optimizer}/references/postgresql-tuning.md +0 -0
  237. /package/skills/{jarvis/database-optimizer → database-optimizer}/references/query-optimization.md +0 -0
  238. /package/skills/{jarvis/debugging-wizard → debugging-wizard}/SKILL.md +0 -0
  239. /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/common-patterns.md +0 -0
  240. /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/debugging-tools.md +0 -0
  241. /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/quick-fixes.md +0 -0
  242. /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/strategies.md +0 -0
  243. /package/skills/{jarvis/debugging-wizard → debugging-wizard}/references/systematic-debugging.md +0 -0
  244. /package/skills/{ella/commands → design-commands}/design.md +0 -0
  245. /package/skills/{ella/commands → design-commands}/handoff.md +0 -0
  246. /package/skills/{ella/commands → design-commands}/prototype.md +0 -0
  247. /package/skills/{ella/commands → design-commands}/spec.md +0 -0
  248. /package/skills/{ella/commands → design-commands}/style.md +0 -0
  249. /package/skills/{jarvis/devops-engineer → devops-engineer}/SKILL.md +0 -0
  250. /package/skills/{jarvis/devops-engineer → devops-engineer}/references/deployment-strategies.md +0 -0
  251. /package/skills/{jarvis/devops-engineer → devops-engineer}/references/docker-patterns.md +0 -0
  252. /package/skills/{jarvis/devops-engineer → devops-engineer}/references/github-actions.md +0 -0
  253. /package/skills/{jarvis/devops-engineer → devops-engineer}/references/incident-response.md +0 -0
  254. /package/skills/{jarvis/devops-engineer → devops-engineer}/references/kubernetes.md +0 -0
  255. /package/skills/{jarvis/devops-engineer → devops-engineer}/references/platform-engineering.md +0 -0
  256. /package/skills/{jarvis/devops-engineer → devops-engineer}/references/release-automation.md +0 -0
  257. /package/skills/{jarvis/devops-engineer → devops-engineer}/references/terraform-iac.md +0 -0
  258. /package/skills/{jarvis/django-expert → django-expert}/SKILL.md +0 -0
  259. /package/skills/{jarvis/django-expert → django-expert}/references/authentication.md +0 -0
  260. /package/skills/{jarvis/django-expert → django-expert}/references/drf-serializers.md +0 -0
  261. /package/skills/{jarvis/django-expert → django-expert}/references/models-orm.md +0 -0
  262. /package/skills/{jarvis/django-expert → django-expert}/references/testing-django.md +0 -0
  263. /package/skills/{jarvis/django-expert → django-expert}/references/viewsets-views.md +0 -0
  264. /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/SKILL.md +0 -0
  265. /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/authentication.md +0 -0
  266. /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/clean-architecture.md +0 -0
  267. /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/cloud-native.md +0 -0
  268. /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/entity-framework.md +0 -0
  269. /package/skills/{jarvis/dotnet-core-expert → dotnet-core-expert}/references/minimal-apis.md +0 -0
  270. /package/skills/{jarvis/fastapi-expert → fastapi-expert}/SKILL.md +0 -0
  271. /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/async-sqlalchemy.md +0 -0
  272. /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/authentication.md +0 -0
  273. /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/endpoints-routing.md +0 -0
  274. /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/migration-from-django.md +0 -0
  275. /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/pydantic-v2.md +0 -0
  276. /package/skills/{jarvis/fastapi-expert → fastapi-expert}/references/testing-async.md +0 -0
  277. /package/skills/{jarvis/feature-forge → feature-forge}/SKILL.md +0 -0
  278. /package/skills/{jarvis/feature-forge → feature-forge}/references/acceptance-criteria.md +0 -0
  279. /package/skills/{jarvis/feature-forge → feature-forge}/references/ears-syntax.md +0 -0
  280. /package/skills/{jarvis/feature-forge → feature-forge}/references/interview-questions.md +0 -0
  281. /package/skills/{jarvis/feature-forge → feature-forge}/references/pre-discovery-subagents.md +0 -0
  282. /package/skills/{jarvis/feature-forge → feature-forge}/references/specification-template.md +0 -0
  283. /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/SKILL.md +0 -0
  284. /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/dataset-preparation.md +0 -0
  285. /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/deployment-optimization.md +0 -0
  286. /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/evaluation-metrics.md +0 -0
  287. /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/hyperparameter-tuning.md +0 -0
  288. /package/skills/{jarvis/fine-tuning-expert → fine-tuning-expert}/references/lora-peft.md +0 -0
  289. /package/skills/{max/workflow/finishing-a-development-branch → finishing-a-development-branch}/SKILL.md +0 -0
  290. /package/skills/{ella/flutter-expert → flutter-expert}/SKILL.md +0 -0
  291. /package/skills/{ella/flutter-expert → flutter-expert}/references/bloc-state.md +0 -0
  292. /package/skills/{ella/flutter-expert → flutter-expert}/references/gorouter-navigation.md +0 -0
  293. /package/skills/{ella/flutter-expert → flutter-expert}/references/performance.md +0 -0
  294. /package/skills/{ella/flutter-expert → flutter-expert}/references/project-structure.md +0 -0
  295. /package/skills/{ella/flutter-expert → flutter-expert}/references/riverpod-state.md +0 -0
  296. /package/skills/{ella/flutter-expert → flutter-expert}/references/widget-patterns.md +0 -0
  297. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/SKILL.md +0 -0
  298. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/api-design-standards.md +0 -0
  299. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/architecture-decisions.md +0 -0
  300. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/backend-patterns.md +0 -0
  301. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/common-patterns.md +0 -0
  302. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/deliverables-checklist.md +0 -0
  303. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/design-template.md +0 -0
  304. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/error-handling.md +0 -0
  305. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/frontend-patterns.md +0 -0
  306. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/integration-patterns.md +0 -0
  307. /package/skills/{jarvis/fullstack-guardian → fullstack-guardian}/references/security-checklist.md +0 -0
  308. /package/skills/{jarvis/golang-pro → golang-pro}/SKILL.md +0 -0
  309. /package/skills/{jarvis/golang-pro → golang-pro}/references/concurrency.md +0 -0
  310. /package/skills/{jarvis/golang-pro → golang-pro}/references/generics.md +0 -0
  311. /package/skills/{jarvis/golang-pro → golang-pro}/references/interfaces.md +0 -0
  312. /package/skills/{jarvis/golang-pro → golang-pro}/references/project-structure.md +0 -0
  313. /package/skills/{jarvis/golang-pro → golang-pro}/references/testing.md +0 -0
  314. /package/skills/{jarvis/graphql-architect → graphql-architect}/SKILL.md +0 -0
  315. /package/skills/{jarvis/graphql-architect → graphql-architect}/references/federation.md +0 -0
  316. /package/skills/{jarvis/graphql-architect → graphql-architect}/references/migration-from-rest.md +0 -0
  317. /package/skills/{jarvis/graphql-architect → graphql-architect}/references/resolvers.md +0 -0
  318. /package/skills/{jarvis/graphql-architect → graphql-architect}/references/schema-design.md +0 -0
  319. /package/skills/{jarvis/graphql-architect → graphql-architect}/references/security.md +0 -0
  320. /package/skills/{jarvis/graphql-architect → graphql-architect}/references/subscriptions.md +0 -0
  321. /package/skills/{jarvis/java-architect → java-architect}/SKILL.md +0 -0
  322. /package/skills/{jarvis/java-architect → java-architect}/references/jpa-optimization.md +0 -0
  323. /package/skills/{jarvis/java-architect → java-architect}/references/reactive-webflux.md +0 -0
  324. /package/skills/{jarvis/java-architect → java-architect}/references/spring-boot-setup.md +0 -0
  325. /package/skills/{jarvis/java-architect → java-architect}/references/spring-security.md +0 -0
  326. /package/skills/{jarvis/java-architect → java-architect}/references/testing-patterns.md +0 -0
  327. /package/skills/{jarvis/javascript-pro → javascript-pro}/SKILL.md +0 -0
  328. /package/skills/{jarvis/javascript-pro → javascript-pro}/references/async-patterns.md +0 -0
  329. /package/skills/{jarvis/javascript-pro → javascript-pro}/references/browser-apis.md +0 -0
  330. /package/skills/{jarvis/javascript-pro → javascript-pro}/references/modern-syntax.md +0 -0
  331. /package/skills/{jarvis/javascript-pro → javascript-pro}/references/modules.md +0 -0
  332. /package/skills/{jarvis/javascript-pro → javascript-pro}/references/node-essentials.md +0 -0
  333. /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/SKILL.md +0 -0
  334. /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/android-compose.md +0 -0
  335. /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/coroutines-flow.md +0 -0
  336. /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/dsl-idioms.md +0 -0
  337. /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/ktor-server.md +0 -0
  338. /package/skills/{jarvis/kotlin-specialist → kotlin-specialist}/references/multiplatform-kmp.md +0 -0
  339. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/SKILL.md +0 -0
  340. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/configuration.md +0 -0
  341. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/cost-optimization.md +0 -0
  342. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/custom-operators.md +0 -0
  343. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/gitops.md +0 -0
  344. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/helm-charts.md +0 -0
  345. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/multi-cluster.md +0 -0
  346. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/networking.md +0 -0
  347. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/service-mesh.md +0 -0
  348. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/storage.md +0 -0
  349. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/troubleshooting.md +0 -0
  350. /package/skills/{jarvis/kubernetes-specialist → kubernetes-specialist}/references/workloads.md +0 -0
  351. /package/skills/{jarvis/laravel-specialist → laravel-specialist}/SKILL.md +0 -0
  352. /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/eloquent.md +0 -0
  353. /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/livewire.md +0 -0
  354. /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/queues.md +0 -0
  355. /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/routing.md +0 -0
  356. /package/skills/{jarvis/laravel-specialist → laravel-specialist}/references/testing.md +0 -0
  357. /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/SKILL.md +0 -0
  358. /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/legacy-testing.md +0 -0
  359. /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/migration-strategies.md +0 -0
  360. /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/refactoring-patterns.md +0 -0
  361. /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/strangler-fig-pattern.md +0 -0
  362. /package/skills/{jarvis/legacy-modernizer → legacy-modernizer}/references/system-assessment.md +0 -0
  363. /package/skills/{jarvis/mcp-developer → mcp-developer}/SKILL.md +0 -0
  364. /package/skills/{jarvis/mcp-developer → mcp-developer}/references/protocol.md +0 -0
  365. /package/skills/{jarvis/mcp-developer → mcp-developer}/references/python-sdk.md +0 -0
  366. /package/skills/{jarvis/mcp-developer → mcp-developer}/references/resources.md +0 -0
  367. /package/skills/{jarvis/mcp-developer → mcp-developer}/references/tools.md +0 -0
  368. /package/skills/{jarvis/mcp-developer → mcp-developer}/references/typescript-sdk.md +0 -0
  369. /package/skills/{max/meeting-notes → meeting-notes}/SKILL.md +0 -0
  370. /package/skills/{jarvis/microservices-architect → microservices-architect}/SKILL.md +0 -0
  371. /package/skills/{jarvis/microservices-architect → microservices-architect}/references/communication.md +0 -0
  372. /package/skills/{jarvis/microservices-architect → microservices-architect}/references/data.md +0 -0
  373. /package/skills/{jarvis/microservices-architect → microservices-architect}/references/decomposition.md +0 -0
  374. /package/skills/{jarvis/microservices-architect → microservices-architect}/references/observability.md +0 -0
  375. /package/skills/{jarvis/microservices-architect → microservices-architect}/references/patterns.md +0 -0
  376. /package/skills/{jarvis/ml-pipeline → ml-pipeline}/SKILL.md +0 -0
  377. /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/experiment-tracking.md +0 -0
  378. /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/feature-engineering.md +0 -0
  379. /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/model-validation.md +0 -0
  380. /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/pipeline-orchestration.md +0 -0
  381. /package/skills/{jarvis/ml-pipeline → ml-pipeline}/references/training-pipelines.md +0 -0
  382. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/SKILL.md +0 -0
  383. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/alerting-rules.md +0 -0
  384. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/application-profiling.md +0 -0
  385. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/capacity-planning.md +0 -0
  386. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/dashboards.md +0 -0
  387. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/opentelemetry.md +0 -0
  388. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/performance-testing.md +0 -0
  389. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/prometheus-metrics.md +0 -0
  390. /package/skills/{jarvis/monitoring-expert → monitoring-expert}/references/structured-logging.md +0 -0
  391. /package/skills/{jarvis/nestjs-expert → nestjs-expert}/SKILL.md +0 -0
  392. /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/authentication.md +0 -0
  393. /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/controllers-routing.md +0 -0
  394. /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/dtos-validation.md +0 -0
  395. /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/migration-from-express.md +0 -0
  396. /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/services-di.md +0 -0
  397. /package/skills/{jarvis/nestjs-expert → nestjs-expert}/references/testing-patterns.md +0 -0
  398. /package/skills/{ella/nextjs-developer → nextjs-developer}/SKILL.md +0 -0
  399. /package/skills/{ella/nextjs-developer → nextjs-developer}/references/app-router.md +0 -0
  400. /package/skills/{ella/nextjs-developer → nextjs-developer}/references/data-fetching.md +0 -0
  401. /package/skills/{ella/nextjs-developer → nextjs-developer}/references/deployment.md +0 -0
  402. /package/skills/{ella/nextjs-developer → nextjs-developer}/references/server-actions.md +0 -0
  403. /package/skills/{ella/nextjs-developer → nextjs-developer}/references/server-components.md +0 -0
  404. /package/skills/{jarvis/pandas-pro → pandas-pro}/SKILL.md +0 -0
  405. /package/skills/{jarvis/pandas-pro → pandas-pro}/references/aggregation-groupby.md +0 -0
  406. /package/skills/{jarvis/pandas-pro → pandas-pro}/references/data-cleaning.md +0 -0
  407. /package/skills/{jarvis/pandas-pro → pandas-pro}/references/dataframe-operations.md +0 -0
  408. /package/skills/{jarvis/pandas-pro → pandas-pro}/references/merging-joining.md +0 -0
  409. /package/skills/{jarvis/pandas-pro → pandas-pro}/references/performance-optimization.md +0 -0
  410. /package/skills/{jarvis/php-pro → php-pro}/SKILL.md +0 -0
  411. /package/skills/{jarvis/php-pro → php-pro}/references/async-patterns.md +0 -0
  412. /package/skills/{jarvis/php-pro → php-pro}/references/laravel-patterns.md +0 -0
  413. /package/skills/{jarvis/php-pro → php-pro}/references/modern-php-features.md +0 -0
  414. /package/skills/{jarvis/php-pro → php-pro}/references/symfony-patterns.md +0 -0
  415. /package/skills/{jarvis/php-pro → php-pro}/references/testing-quality.md +0 -0
  416. /package/skills/{kyle/playwright-expert → playwright-expert}/SKILL.md +0 -0
  417. /package/skills/{kyle/playwright-expert → playwright-expert}/references/api-mocking.md +0 -0
  418. /package/skills/{kyle/playwright-expert → playwright-expert}/references/configuration.md +0 -0
  419. /package/skills/{kyle/playwright-expert → playwright-expert}/references/debugging-flaky.md +0 -0
  420. /package/skills/{kyle/playwright-expert → playwright-expert}/references/page-object-model.md +0 -0
  421. /package/skills/{kyle/playwright-expert → playwright-expert}/references/selectors-locators.md +0 -0
  422. /package/skills/{jarvis/postgres-pro → postgres-pro}/SKILL.md +0 -0
  423. /package/skills/{jarvis/postgres-pro → postgres-pro}/references/extensions.md +0 -0
  424. /package/skills/{jarvis/postgres-pro → postgres-pro}/references/jsonb.md +0 -0
  425. /package/skills/{jarvis/postgres-pro → postgres-pro}/references/maintenance.md +0 -0
  426. /package/skills/{jarvis/postgres-pro → postgres-pro}/references/performance.md +0 -0
  427. /package/skills/{jarvis/postgres-pro → postgres-pro}/references/replication.md +0 -0
  428. /package/skills/{max/prd-template → prd-template}/SKILL.md +0 -0
  429. /package/skills/{jarvis/python-pro → python-pro}/SKILL.md +0 -0
  430. /package/skills/{jarvis/python-pro → python-pro}/references/async-patterns.md +0 -0
  431. /package/skills/{jarvis/python-pro → python-pro}/references/packaging.md +0 -0
  432. /package/skills/{jarvis/python-pro → python-pro}/references/standard-library.md +0 -0
  433. /package/skills/{jarvis/python-pro → python-pro}/references/testing.md +0 -0
  434. /package/skills/{jarvis/python-pro → python-pro}/references/type-system.md +0 -0
  435. /package/skills/{jarvis/rag-architect → rag-architect}/SKILL.md +0 -0
  436. /package/skills/{jarvis/rag-architect → rag-architect}/references/chunking-strategies.md +0 -0
  437. /package/skills/{jarvis/rag-architect → rag-architect}/references/embedding-models.md +0 -0
  438. /package/skills/{jarvis/rag-architect → rag-architect}/references/rag-evaluation.md +0 -0
  439. /package/skills/{jarvis/rag-architect → rag-architect}/references/retrieval-optimization.md +0 -0
  440. /package/skills/{jarvis/rag-architect → rag-architect}/references/vector-databases.md +0 -0
  441. /package/skills/{jarvis/rails-expert → rails-expert}/SKILL.md +0 -0
  442. /package/skills/{jarvis/rails-expert → rails-expert}/references/active-record.md +0 -0
  443. /package/skills/{jarvis/rails-expert → rails-expert}/references/api-development.md +0 -0
  444. /package/skills/{jarvis/rails-expert → rails-expert}/references/background-jobs.md +0 -0
  445. /package/skills/{jarvis/rails-expert → rails-expert}/references/hotwire-turbo.md +0 -0
  446. /package/skills/{jarvis/rails-expert → rails-expert}/references/rspec-testing.md +0 -0
  447. /package/skills/{ella/react-expert → react-expert}/SKILL.md +0 -0
  448. /package/skills/{ella/react-expert → react-expert}/references/hooks-patterns.md +0 -0
  449. /package/skills/{ella/react-expert → react-expert}/references/migration-class-to-modern.md +0 -0
  450. /package/skills/{ella/react-expert → react-expert}/references/performance.md +0 -0
  451. /package/skills/{ella/react-expert → react-expert}/references/react-19-features.md +0 -0
  452. /package/skills/{ella/react-expert → react-expert}/references/server-components.md +0 -0
  453. /package/skills/{ella/react-expert → react-expert}/references/state-management.md +0 -0
  454. /package/skills/{ella/react-expert → react-expert}/references/testing-react.md +0 -0
  455. /package/skills/{ella/react-native-expert → react-native-expert}/SKILL.md +0 -0
  456. /package/skills/{ella/react-native-expert → react-native-expert}/references/expo-router.md +0 -0
  457. /package/skills/{ella/react-native-expert → react-native-expert}/references/list-optimization.md +0 -0
  458. /package/skills/{ella/react-native-expert → react-native-expert}/references/platform-handling.md +0 -0
  459. /package/skills/{ella/react-native-expert → react-native-expert}/references/project-structure.md +0 -0
  460. /package/skills/{ella/react-native-expert → react-native-expert}/references/storage-hooks.md +0 -0
  461. /package/skills/{jarvis/rust-engineer → rust-engineer}/SKILL.md +0 -0
  462. /package/skills/{jarvis/rust-engineer → rust-engineer}/references/async.md +0 -0
  463. /package/skills/{jarvis/rust-engineer → rust-engineer}/references/error-handling.md +0 -0
  464. /package/skills/{jarvis/rust-engineer → rust-engineer}/references/ownership.md +0 -0
  465. /package/skills/{jarvis/rust-engineer → rust-engineer}/references/testing.md +0 -0
  466. /package/skills/{jarvis/rust-engineer → rust-engineer}/references/traits.md +0 -0
  467. /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/SKILL.md +0 -0
  468. /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/authentication.md +0 -0
  469. /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/input-validation.md +0 -0
  470. /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/owasp-prevention.md +0 -0
  471. /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/security-headers.md +0 -0
  472. /package/skills/{jarvis/secure-code-guardian → secure-code-guardian}/references/xss-csrf.md +0 -0
  473. /package/skills/{kyle/security-reviewer → security-reviewer}/SKILL.md +0 -0
  474. /package/skills/{kyle/security-reviewer → security-reviewer}/references/infrastructure-security.md +0 -0
  475. /package/skills/{kyle/security-reviewer → security-reviewer}/references/penetration-testing.md +0 -0
  476. /package/skills/{kyle/security-reviewer → security-reviewer}/references/report-template.md +0 -0
  477. /package/skills/{kyle/security-reviewer → security-reviewer}/references/sast-tools.md +0 -0
  478. /package/skills/{kyle/security-reviewer → security-reviewer}/references/secret-scanning.md +0 -0
  479. /package/skills/{kyle/security-reviewer → security-reviewer}/references/vulnerability-patterns.md +0 -0
  480. /package/skills/{ella/senior-frontend → senior-frontend}/SKILL.md +0 -0
  481. /package/skills/{ella/senior-frontend → senior-frontend}/references/frontend_best_practices.md +0 -0
  482. /package/skills/{ella/senior-frontend → senior-frontend}/references/nextjs_optimization_guide.md +0 -0
  483. /package/skills/{ella/senior-frontend → senior-frontend}/references/react_patterns.md +0 -0
  484. /package/skills/{ella/senior-frontend → senior-frontend}/scripts/bundle_analyzer.py +0 -0
  485. /package/skills/{ella/senior-frontend → senior-frontend}/scripts/component_generator.py +0 -0
  486. /package/skills/{ella/senior-frontend → senior-frontend}/scripts/frontend_scaffolder.py +0 -0
  487. /package/skills/{kyle/senior-qa → senior-qa}/README.md +0 -0
  488. /package/skills/{kyle/senior-qa → senior-qa}/SKILL.md +0 -0
  489. /package/skills/{kyle/senior-qa → senior-qa}/references/qa_best_practices.md +0 -0
  490. /package/skills/{kyle/senior-qa → senior-qa}/references/test_automation_patterns.md +0 -0
  491. /package/skills/{kyle/senior-qa → senior-qa}/references/testing_strategies.md +0 -0
  492. /package/skills/{kyle/senior-qa → senior-qa}/scripts/coverage_analyzer.py +0 -0
  493. /package/skills/{kyle/senior-qa → senior-qa}/scripts/e2e_test_scaffolder.py +0 -0
  494. /package/skills/{kyle/senior-qa → senior-qa}/scripts/test_suite_generator.py +0 -0
  495. /package/skills/{jarvis/spark-engineer → spark-engineer}/SKILL.md +0 -0
  496. /package/skills/{jarvis/spark-engineer → spark-engineer}/references/partitioning-caching.md +0 -0
  497. /package/skills/{jarvis/spark-engineer → spark-engineer}/references/performance-tuning.md +0 -0
  498. /package/skills/{jarvis/spark-engineer → spark-engineer}/references/rdd-operations.md +0 -0
  499. /package/skills/{jarvis/spark-engineer → spark-engineer}/references/spark-sql-dataframes.md +0 -0
  500. /package/skills/{jarvis/spark-engineer → spark-engineer}/references/streaming-patterns.md +0 -0
  501. /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/SKILL.md +0 -0
  502. /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/cloud.md +0 -0
  503. /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/data.md +0 -0
  504. /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/security.md +0 -0
  505. /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/testing.md +0 -0
  506. /package/skills/{jarvis/spring-boot-engineer → spring-boot-engineer}/references/web.md +0 -0
  507. /package/skills/{jarvis/sql-pro → sql-pro}/SKILL.md +0 -0
  508. /package/skills/{jarvis/sql-pro → sql-pro}/references/database-design.md +0 -0
  509. /package/skills/{jarvis/sql-pro → sql-pro}/references/dialect-differences.md +0 -0
  510. /package/skills/{jarvis/sql-pro → sql-pro}/references/optimization.md +0 -0
  511. /package/skills/{jarvis/sql-pro → sql-pro}/references/query-patterns.md +0 -0
  512. /package/skills/{jarvis/sql-pro → sql-pro}/references/window-functions.md +0 -0
  513. /package/skills/{jarvis/sre-engineer → sre-engineer}/SKILL.md +0 -0
  514. /package/skills/{jarvis/sre-engineer → sre-engineer}/references/automation-toil.md +0 -0
  515. /package/skills/{jarvis/sre-engineer → sre-engineer}/references/error-budget-policy.md +0 -0
  516. /package/skills/{jarvis/sre-engineer → sre-engineer}/references/incident-chaos.md +0 -0
  517. /package/skills/{jarvis/sre-engineer → sre-engineer}/references/monitoring-alerting.md +0 -0
  518. /package/skills/{jarvis/sre-engineer → sre-engineer}/references/slo-sli-management.md +0 -0
  519. /package/skills/{max/stakeholder-update → stakeholder-update}/SKILL.md +0 -0
  520. /package/skills/{jarvis/swift-expert → swift-expert}/SKILL.md +0 -0
  521. /package/skills/{jarvis/swift-expert → swift-expert}/references/async-concurrency.md +0 -0
  522. /package/skills/{jarvis/swift-expert → swift-expert}/references/memory-performance.md +0 -0
  523. /package/skills/{jarvis/swift-expert → swift-expert}/references/protocol-oriented.md +0 -0
  524. /package/skills/{jarvis/swift-expert → swift-expert}/references/swiftui-patterns.md +0 -0
  525. /package/skills/{jarvis/swift-expert → swift-expert}/references/testing-patterns.md +0 -0
  526. /package/skills/{max/workflow/systematic-debugging → systematic-debugging}/SKILL.md +0 -0
  527. /package/skills/{kyle/tdd-guide → tdd-guide}/HOW_TO_USE.md +0 -0
  528. /package/skills/{kyle/tdd-guide → tdd-guide}/README.md +0 -0
  529. /package/skills/{kyle/tdd-guide → tdd-guide}/SKILL.md +0 -0
  530. /package/skills/{kyle/tdd-guide → tdd-guide}/assets/expected_output.json +0 -0
  531. /package/skills/{kyle/tdd-guide → tdd-guide}/assets/sample_coverage_report.lcov +0 -0
  532. /package/skills/{kyle/tdd-guide → tdd-guide}/assets/sample_input_python.json +0 -0
  533. /package/skills/{kyle/tdd-guide → tdd-guide}/assets/sample_input_typescript.json +0 -0
  534. /package/skills/{kyle/tdd-guide → tdd-guide}/references/ci-integration.md +0 -0
  535. /package/skills/{kyle/tdd-guide → tdd-guide}/references/framework-guide.md +0 -0
  536. /package/skills/{kyle/tdd-guide → tdd-guide}/references/tdd-best-practices.md +0 -0
  537. /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/coverage_analyzer.py +0 -0
  538. /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/fixture_generator.py +0 -0
  539. /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/format_detector.py +0 -0
  540. /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/framework_adapter.py +0 -0
  541. /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/metrics_calculator.py +0 -0
  542. /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/output_formatter.py +0 -0
  543. /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/tdd_workflow.py +0 -0
  544. /package/skills/{kyle/tdd-guide → tdd-guide}/scripts/test_generator.py +0 -0
  545. /package/skills/{jarvis/terraform-engineer → terraform-engineer}/SKILL.md +0 -0
  546. /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/best-practices.md +0 -0
  547. /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/module-patterns.md +0 -0
  548. /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/providers.md +0 -0
  549. /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/state-management.md +0 -0
  550. /package/skills/{jarvis/terraform-engineer → terraform-engineer}/references/testing.md +0 -0
  551. /package/skills/{kyle/test-master → test-master}/SKILL.md +0 -0
  552. /package/skills/{kyle/test-master → test-master}/references/automation-frameworks.md +0 -0
  553. /package/skills/{kyle/test-master → test-master}/references/e2e-testing.md +0 -0
  554. /package/skills/{kyle/test-master → test-master}/references/integration-testing.md +0 -0
  555. /package/skills/{kyle/test-master → test-master}/references/performance-testing.md +0 -0
  556. /package/skills/{kyle/test-master → test-master}/references/qa-methodology.md +0 -0
  557. /package/skills/{kyle/test-master → test-master}/references/security-testing.md +0 -0
  558. /package/skills/{kyle/test-master → test-master}/references/tdd-iron-laws.md +0 -0
  559. /package/skills/{kyle/test-master → test-master}/references/test-reports.md +0 -0
  560. /package/skills/{kyle/test-master → test-master}/references/testing-anti-patterns.md +0 -0
  561. /package/skills/{kyle/test-master → test-master}/references/unit-testing.md +0 -0
  562. /package/skills/{jarvis/typescript-pro → typescript-pro}/SKILL.md +0 -0
  563. /package/skills/{jarvis/typescript-pro → typescript-pro}/references/advanced-types.md +0 -0
  564. /package/skills/{jarvis/typescript-pro → typescript-pro}/references/configuration.md +0 -0
  565. /package/skills/{jarvis/typescript-pro → typescript-pro}/references/patterns.md +0 -0
  566. /package/skills/{jarvis/typescript-pro → typescript-pro}/references/type-guards.md +0 -0
  567. /package/skills/{jarvis/typescript-pro → typescript-pro}/references/utility-types.md +0 -0
  568. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/SKILL.md +0 -0
  569. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/charts.csv +0 -0
  570. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/colors.csv +0 -0
  571. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/icons.csv +0 -0
  572. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/landing.csv +0 -0
  573. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/products.csv +0 -0
  574. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/react-performance.csv +0 -0
  575. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/astro.csv +0 -0
  576. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/flutter.csv +0 -0
  577. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/html-tailwind.csv +0 -0
  578. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/jetpack-compose.csv +0 -0
  579. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nextjs.csv +0 -0
  580. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nuxt-ui.csv +0 -0
  581. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/nuxtjs.csv +0 -0
  582. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/react-native.csv +0 -0
  583. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/react.csv +0 -0
  584. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/shadcn.csv +0 -0
  585. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/svelte.csv +0 -0
  586. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/swiftui.csv +0 -0
  587. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/stacks/vue.csv +0 -0
  588. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/styles.csv +0 -0
  589. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/typography.csv +0 -0
  590. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/ui-reasoning.csv +0 -0
  591. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/ux-guidelines.csv +0 -0
  592. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/data/web-interface.csv +0 -0
  593. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/__pycache__/core.cpython-39.pyc +0 -0
  594. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/__pycache__/design_system.cpython-39.pyc +0 -0
  595. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/core.py +0 -0
  596. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/design_system.py +0 -0
  597. /package/skills/{ella/ui-ux-pro-max → ui-ux-pro-max}/scripts/search.py +0 -0
  598. /package/skills/{max/user-research-synthesis → user-research-synthesis}/SKILL.md +0 -0
  599. /package/skills/{max/workflow/verification-before-completion → verification-before-completion}/SKILL.md +0 -0
  600. /package/skills/{ella/vue-expert → vue-expert}/SKILL.md +0 -0
  601. /package/skills/{ella/vue-expert → vue-expert}/references/build-tooling.md +0 -0
  602. /package/skills/{ella/vue-expert → vue-expert}/references/components.md +0 -0
  603. /package/skills/{ella/vue-expert → vue-expert}/references/composition-api.md +0 -0
  604. /package/skills/{ella/vue-expert → vue-expert}/references/mobile-hybrid.md +0 -0
  605. /package/skills/{ella/vue-expert → vue-expert}/references/nuxt.md +0 -0
  606. /package/skills/{ella/vue-expert → vue-expert}/references/state-management.md +0 -0
  607. /package/skills/{ella/vue-expert → vue-expert}/references/typescript.md +0 -0
  608. /package/skills/{ella/vue-expert-js → vue-expert-js}/SKILL.md +0 -0
  609. /package/skills/{ella/vue-expert-js → vue-expert-js}/references/component-architecture.md +0 -0
  610. /package/skills/{ella/vue-expert-js → vue-expert-js}/references/composables-patterns.md +0 -0
  611. /package/skills/{ella/vue-expert-js → vue-expert-js}/references/jsdoc-typing.md +0 -0
  612. /package/skills/{ella/vue-expert-js → vue-expert-js}/references/state-management.md +0 -0
  613. /package/skills/{ella/vue-expert-js → vue-expert-js}/references/testing-patterns.md +0 -0
  614. /package/skills/{jarvis/websocket-engineer → websocket-engineer}/SKILL.md +0 -0
  615. /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/alternatives.md +0 -0
  616. /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/patterns.md +0 -0
  617. /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/protocol.md +0 -0
  618. /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/scaling.md +0 -0
  619. /package/skills/{jarvis/websocket-engineer → websocket-engineer}/references/security.md +0 -0
@@ -0,0 +1,39 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.pyi"
5
+ ---
6
+ # Python Patterns
7
+
8
+ > This file extends [common/patterns.md](../common/patterns.md) with Python specific content.
9
+
10
+ ## Protocol (Duck Typing)
11
+
12
+ ```python
13
+ from typing import Protocol
14
+
15
+ class Repository(Protocol):
16
+ def find_by_id(self, id: str) -> dict | None: ...
17
+ def save(self, entity: dict) -> dict: ...
18
+ ```
19
+
20
+ ## Dataclasses as DTOs
21
+
22
+ ```python
23
+ from dataclasses import dataclass
24
+
25
+ @dataclass
26
+ class CreateUserRequest:
27
+ name: str
28
+ email: str
29
+ age: int | None = None
30
+ ```
31
+
32
+ ## Context Managers & Generators
33
+
34
+ - Use context managers (`with` statement) for resource management
35
+ - Use generators for lazy evaluation and memory-efficient iteration
36
+
37
+ ## Reference
38
+
39
+ See skill: `python-patterns` for comprehensive patterns including decorators, concurrency, and package organization.
@@ -0,0 +1,30 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.pyi"
5
+ ---
6
+ # Python Security
7
+
8
+ > This file extends [common/security.md](../common/security.md) with Python specific content.
9
+
10
+ ## Secret Management
11
+
12
+ ```python
13
+ import os
14
+ from dotenv import load_dotenv
15
+
16
+ load_dotenv()
17
+
18
+ api_key = os.environ["OPENAI_API_KEY"] # Raises KeyError if missing
19
+ ```
20
+
21
+ ## Security Scanning
22
+
23
+ - Use **bandit** for static security analysis:
24
+ ```bash
25
+ bandit -r src/
26
+ ```
27
+
28
+ ## Reference
29
+
30
+ See skill: `django-security` for Django-specific security guidelines (if applicable).
@@ -0,0 +1,38 @@
1
+ ---
2
+ paths:
3
+ - "**/*.py"
4
+ - "**/*.pyi"
5
+ ---
6
+ # Python Testing
7
+
8
+ > This file extends [common/testing.md](../common/testing.md) with Python specific content.
9
+
10
+ ## Framework
11
+
12
+ Use **pytest** as the testing framework.
13
+
14
+ ## Coverage
15
+
16
+ ```bash
17
+ pytest --cov=src --cov-report=term-missing
18
+ ```
19
+
20
+ ## Test Organization
21
+
22
+ Use `pytest.mark` for test categorization:
23
+
24
+ ```python
25
+ import pytest
26
+
27
+ @pytest.mark.unit
28
+ def test_calculate_total():
29
+ ...
30
+
31
+ @pytest.mark.integration
32
+ def test_database_connection():
33
+ ...
34
+ ```
35
+
36
+ ## Reference
37
+
38
+ See skill: `python-testing` for detailed pytest patterns and fixtures.
@@ -0,0 +1,151 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Coding Style
6
+
7
+ > This file extends [common/coding-style.md](../common/coding-style.md) with Rust-specific content.
8
+
9
+ ## Formatting
10
+
11
+ - **rustfmt** for enforcement — always run `cargo fmt` before committing
12
+ - **clippy** for lints — `cargo clippy -- -D warnings` (treat warnings as errors)
13
+ - 4-space indent (rustfmt default)
14
+ - Max line width: 100 characters (rustfmt default)
15
+
16
+ ## Immutability
17
+
18
+ Rust variables are immutable by default — embrace this:
19
+
20
+ - Use `let` by default; only use `let mut` when mutation is required
21
+ - Prefer returning new values over mutating in place
22
+ - Use `Cow<'_, T>` when a function may or may not need to allocate
23
+
24
+ ```rust
25
+ use std::borrow::Cow;
26
+
27
+ // GOOD — immutable by default, new value returned
28
+ fn normalize(input: &str) -> Cow<'_, str> {
29
+ if input.contains(' ') {
30
+ Cow::Owned(input.replace(' ', "_"))
31
+ } else {
32
+ Cow::Borrowed(input)
33
+ }
34
+ }
35
+
36
+ // BAD — unnecessary mutation
37
+ fn normalize_bad(input: &mut String) {
38
+ *input = input.replace(' ', "_");
39
+ }
40
+ ```
41
+
42
+ ## Naming
43
+
44
+ Follow standard Rust conventions:
45
+ - `snake_case` for functions, methods, variables, modules, crates
46
+ - `PascalCase` (UpperCamelCase) for types, traits, enums, type parameters
47
+ - `SCREAMING_SNAKE_CASE` for constants and statics
48
+ - Lifetimes: short lowercase (`'a`, `'de`) — descriptive names for complex cases (`'input`)
49
+
50
+ ## Ownership and Borrowing
51
+
52
+ - Borrow (`&T`) by default; take ownership only when you need to store or consume
53
+ - Never clone to satisfy the borrow checker without understanding the root cause
54
+ - Accept `&str` over `String`, `&[T]` over `Vec<T>` in function parameters
55
+ - Use `impl Into<String>` for constructors that need to own a `String`
56
+
57
+ ```rust
58
+ // GOOD — borrows when ownership isn't needed
59
+ fn word_count(text: &str) -> usize {
60
+ text.split_whitespace().count()
61
+ }
62
+
63
+ // GOOD — takes ownership in constructor via Into
64
+ fn new(name: impl Into<String>) -> Self {
65
+ Self { name: name.into() }
66
+ }
67
+
68
+ // BAD — takes String when &str suffices
69
+ fn word_count_bad(text: String) -> usize {
70
+ text.split_whitespace().count()
71
+ }
72
+ ```
73
+
74
+ ## Error Handling
75
+
76
+ - Use `Result<T, E>` and `?` for propagation — never `unwrap()` in production code
77
+ - **Libraries**: define typed errors with `thiserror`
78
+ - **Applications**: use `anyhow` for flexible error context
79
+ - Add context with `.with_context(|| format!("failed to ..."))?`
80
+ - Reserve `unwrap()` / `expect()` for tests and truly unreachable states
81
+
82
+ ```rust
83
+ // GOOD — library error with thiserror
84
+ #[derive(Debug, thiserror::Error)]
85
+ pub enum ConfigError {
86
+ #[error("failed to read config: {0}")]
87
+ Io(#[from] std::io::Error),
88
+ #[error("invalid config format: {0}")]
89
+ Parse(String),
90
+ }
91
+
92
+ // GOOD — application error with anyhow
93
+ use anyhow::Context;
94
+
95
+ fn load_config(path: &str) -> anyhow::Result<Config> {
96
+ let content = std::fs::read_to_string(path)
97
+ .with_context(|| format!("failed to read {path}"))?;
98
+ toml::from_str(&content)
99
+ .with_context(|| format!("failed to parse {path}"))
100
+ }
101
+ ```
102
+
103
+ ## Iterators Over Loops
104
+
105
+ Prefer iterator chains for transformations; use loops for complex control flow:
106
+
107
+ ```rust
108
+ // GOOD — declarative and composable
109
+ let active_emails: Vec<&str> = users.iter()
110
+ .filter(|u| u.is_active)
111
+ .map(|u| u.email.as_str())
112
+ .collect();
113
+
114
+ // GOOD — loop for complex logic with early returns
115
+ for user in &users {
116
+ if let Some(verified) = verify_email(&user.email)? {
117
+ send_welcome(&verified)?;
118
+ }
119
+ }
120
+ ```
121
+
122
+ ## Module Organization
123
+
124
+ Organize by domain, not by type:
125
+
126
+ ```text
127
+ src/
128
+ ├── main.rs
129
+ ├── lib.rs
130
+ ├── auth/ # Domain module
131
+ │ ├── mod.rs
132
+ │ ├── token.rs
133
+ │ └── middleware.rs
134
+ ├── orders/ # Domain module
135
+ │ ├── mod.rs
136
+ │ ├── model.rs
137
+ │ └── service.rs
138
+ └── db/ # Infrastructure
139
+ ├── mod.rs
140
+ └── pool.rs
141
+ ```
142
+
143
+ ## Visibility
144
+
145
+ - Default to private; use `pub(crate)` for internal sharing
146
+ - Only mark `pub` what is part of the crate's public API
147
+ - Re-export public API from `lib.rs`
148
+
149
+ ## References
150
+
151
+ See skill: `rust-patterns` for comprehensive Rust idioms and patterns.
@@ -0,0 +1,16 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ - "**/Cargo.toml"
5
+ ---
6
+ # Rust Hooks
7
+
8
+ > This file extends [common/hooks.md](../common/hooks.md) with Rust-specific content.
9
+
10
+ ## PostToolUse Hooks
11
+
12
+ Configure in `~/.claude/settings.json`:
13
+
14
+ - **cargo fmt**: Auto-format `.rs` files after edit
15
+ - **cargo clippy**: Run lint checks after editing Rust files
16
+ - **cargo check**: Verify compilation after changes (faster than `cargo build`)
@@ -0,0 +1,168 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Patterns
6
+
7
+ > This file extends [common/patterns.md](../common/patterns.md) with Rust-specific content.
8
+
9
+ ## Repository Pattern with Traits
10
+
11
+ Encapsulate data access behind a trait:
12
+
13
+ ```rust
14
+ pub trait OrderRepository: Send + Sync {
15
+ fn find_by_id(&self, id: u64) -> Result<Option<Order>, StorageError>;
16
+ fn find_all(&self) -> Result<Vec<Order>, StorageError>;
17
+ fn save(&self, order: &Order) -> Result<Order, StorageError>;
18
+ fn delete(&self, id: u64) -> Result<(), StorageError>;
19
+ }
20
+ ```
21
+
22
+ Concrete implementations handle storage details (Postgres, SQLite, in-memory for tests).
23
+
24
+ ## Service Layer
25
+
26
+ Business logic in service structs; inject dependencies via constructor:
27
+
28
+ ```rust
29
+ pub struct OrderService {
30
+ repo: Box<dyn OrderRepository>,
31
+ payment: Box<dyn PaymentGateway>,
32
+ }
33
+
34
+ impl OrderService {
35
+ pub fn new(repo: Box<dyn OrderRepository>, payment: Box<dyn PaymentGateway>) -> Self {
36
+ Self { repo, payment }
37
+ }
38
+
39
+ pub fn place_order(&self, request: CreateOrderRequest) -> anyhow::Result<OrderSummary> {
40
+ let order = Order::from(request);
41
+ self.payment.charge(order.total())?;
42
+ let saved = self.repo.save(&order)?;
43
+ Ok(OrderSummary::from(saved))
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Newtype Pattern for Type Safety
49
+
50
+ Prevent argument mix-ups with distinct wrapper types:
51
+
52
+ ```rust
53
+ struct UserId(u64);
54
+ struct OrderId(u64);
55
+
56
+ fn get_order(user: UserId, order: OrderId) -> anyhow::Result<Order> {
57
+ // Can't accidentally swap user and order IDs at call sites
58
+ todo!()
59
+ }
60
+ ```
61
+
62
+ ## Enum State Machines
63
+
64
+ Model states as enums — make illegal states unrepresentable:
65
+
66
+ ```rust
67
+ enum ConnectionState {
68
+ Disconnected,
69
+ Connecting { attempt: u32 },
70
+ Connected { session_id: String },
71
+ Failed { reason: String, retries: u32 },
72
+ }
73
+
74
+ fn handle(state: &ConnectionState) {
75
+ match state {
76
+ ConnectionState::Disconnected => connect(),
77
+ ConnectionState::Connecting { attempt } if *attempt > 3 => abort(),
78
+ ConnectionState::Connecting { .. } => wait(),
79
+ ConnectionState::Connected { session_id } => use_session(session_id),
80
+ ConnectionState::Failed { retries, .. } if *retries < 5 => retry(),
81
+ ConnectionState::Failed { reason, .. } => log_failure(reason),
82
+ }
83
+ }
84
+ ```
85
+
86
+ Always match exhaustively — no wildcard `_` for business-critical enums.
87
+
88
+ ## Builder Pattern
89
+
90
+ Use for structs with many optional parameters:
91
+
92
+ ```rust
93
+ pub struct ServerConfig {
94
+ host: String,
95
+ port: u16,
96
+ max_connections: usize,
97
+ }
98
+
99
+ impl ServerConfig {
100
+ pub fn builder(host: impl Into<String>, port: u16) -> ServerConfigBuilder {
101
+ ServerConfigBuilder {
102
+ host: host.into(),
103
+ port,
104
+ max_connections: 100,
105
+ }
106
+ }
107
+ }
108
+
109
+ pub struct ServerConfigBuilder {
110
+ host: String,
111
+ port: u16,
112
+ max_connections: usize,
113
+ }
114
+
115
+ impl ServerConfigBuilder {
116
+ pub fn max_connections(mut self, n: usize) -> Self {
117
+ self.max_connections = n;
118
+ self
119
+ }
120
+
121
+ pub fn build(self) -> ServerConfig {
122
+ ServerConfig {
123
+ host: self.host,
124
+ port: self.port,
125
+ max_connections: self.max_connections,
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ ## Sealed Traits for Extensibility Control
132
+
133
+ Use a private module to seal a trait, preventing external implementations:
134
+
135
+ ```rust
136
+ mod private {
137
+ pub trait Sealed {}
138
+ }
139
+
140
+ pub trait Format: private::Sealed {
141
+ fn encode(&self, data: &[u8]) -> Vec<u8>;
142
+ }
143
+
144
+ pub struct Json;
145
+ impl private::Sealed for Json {}
146
+ impl Format for Json {
147
+ fn encode(&self, data: &[u8]) -> Vec<u8> { todo!() }
148
+ }
149
+ ```
150
+
151
+ ## API Response Envelope
152
+
153
+ Consistent API responses using a generic enum:
154
+
155
+ ```rust
156
+ #[derive(Debug, serde::Serialize)]
157
+ #[serde(tag = "status")]
158
+ pub enum ApiResponse<T: serde::Serialize> {
159
+ #[serde(rename = "ok")]
160
+ Ok { data: T },
161
+ #[serde(rename = "error")]
162
+ Error { message: String },
163
+ }
164
+ ```
165
+
166
+ ## References
167
+
168
+ See skill: `rust-patterns` for comprehensive patterns including ownership, traits, generics, concurrency, and async.
@@ -0,0 +1,141 @@
1
+ ---
2
+ paths:
3
+ - "**/*.rs"
4
+ ---
5
+ # Rust Security
6
+
7
+ > This file extends [common/security.md](../common/security.md) with Rust-specific content.
8
+
9
+ ## Secrets Management
10
+
11
+ - Never hardcode API keys, tokens, or credentials in source code
12
+ - Use environment variables: `std::env::var("API_KEY")`
13
+ - Fail fast if required secrets are missing at startup
14
+ - Keep `.env` files in `.gitignore`
15
+
16
+ ```rust
17
+ // BAD
18
+ const API_KEY: &str = "sk-abc123...";
19
+
20
+ // GOOD — environment variable with early validation
21
+ fn load_api_key() -> anyhow::Result<String> {
22
+ std::env::var("PAYMENT_API_KEY")
23
+ .context("PAYMENT_API_KEY must be set")
24
+ }
25
+ ```
26
+
27
+ ## SQL Injection Prevention
28
+
29
+ - Always use parameterized queries — never format user input into SQL strings
30
+ - Use query builder or ORM (sqlx, diesel, sea-orm) with bind parameters
31
+
32
+ ```rust
33
+ // BAD — SQL injection via format string
34
+ let query = format!("SELECT * FROM users WHERE name = '{name}'");
35
+ sqlx::query(&query).fetch_one(&pool).await?;
36
+
37
+ // GOOD — parameterized query with sqlx
38
+ // Placeholder syntax varies by backend: Postgres: $1 | MySQL: ? | SQLite: $1
39
+ sqlx::query("SELECT * FROM users WHERE name = $1")
40
+ .bind(&name)
41
+ .fetch_one(&pool)
42
+ .await?;
43
+ ```
44
+
45
+ ## Input Validation
46
+
47
+ - Validate all user input at system boundaries before processing
48
+ - Use the type system to enforce invariants (newtype pattern)
49
+ - Parse, don't validate — convert unstructured data to typed structs at the boundary
50
+ - Reject invalid input with clear error messages
51
+
52
+ ```rust
53
+ // Parse, don't validate — invalid states are unrepresentable
54
+ pub struct Email(String);
55
+
56
+ impl Email {
57
+ pub fn parse(input: &str) -> Result<Self, ValidationError> {
58
+ let trimmed = input.trim();
59
+ let at_pos = trimmed.find('@')
60
+ .filter(|&p| p > 0 && p < trimmed.len() - 1)
61
+ .ok_or_else(|| ValidationError::InvalidEmail(input.to_string()))?;
62
+ let domain = &trimmed[at_pos + 1..];
63
+ if trimmed.len() > 254 || !domain.contains('.') {
64
+ return Err(ValidationError::InvalidEmail(input.to_string()));
65
+ }
66
+ // For production use, prefer a validated email crate (e.g., `email_address`)
67
+ Ok(Self(trimmed.to_string()))
68
+ }
69
+
70
+ pub fn as_str(&self) -> &str {
71
+ &self.0
72
+ }
73
+ }
74
+ ```
75
+
76
+ ## Unsafe Code
77
+
78
+ - Minimize `unsafe` blocks — prefer safe abstractions
79
+ - Every `unsafe` block must have a `// SAFETY:` comment explaining the invariant
80
+ - Never use `unsafe` to bypass the borrow checker for convenience
81
+ - Audit all `unsafe` code during review — it is a red flag without justification
82
+ - Prefer `safe` FFI wrappers around C libraries
83
+
84
+ ```rust
85
+ // GOOD — safety comment documents ALL required invariants
86
+ let widget: &Widget = {
87
+ // SAFETY: `ptr` is non-null, aligned, points to an initialized Widget,
88
+ // and no mutable references or mutations exist for its lifetime.
89
+ unsafe { &*ptr }
90
+ };
91
+
92
+ // BAD — no safety justification
93
+ unsafe { &*ptr }
94
+ ```
95
+
96
+ ## Dependency Security
97
+
98
+ - Run `cargo audit` to scan for known CVEs in dependencies
99
+ - Run `cargo deny check` for license and advisory compliance
100
+ - Use `cargo tree` to audit transitive dependencies
101
+ - Keep dependencies updated — set up Dependabot or Renovate
102
+ - Minimize dependency count — evaluate before adding new crates
103
+
104
+ ```bash
105
+ # Security audit
106
+ cargo audit
107
+
108
+ # Deny advisories, duplicate versions, and restricted licenses
109
+ cargo deny check
110
+
111
+ # Inspect dependency tree
112
+ cargo tree
113
+ cargo tree -d # Show duplicates only
114
+ ```
115
+
116
+ ## Error Messages
117
+
118
+ - Never expose internal paths, stack traces, or database errors in API responses
119
+ - Log detailed errors server-side; return generic messages to clients
120
+ - Use `tracing` or `log` for structured server-side logging
121
+
122
+ ```rust
123
+ // Map errors to appropriate status codes and generic messages
124
+ // (Example uses axum; adapt the response type to your framework)
125
+ match order_service.find_by_id(id) {
126
+ Ok(order) => Ok((StatusCode::OK, Json(order))),
127
+ Err(ServiceError::NotFound(_)) => {
128
+ tracing::info!(order_id = id, "order not found");
129
+ Err((StatusCode::NOT_FOUND, "Resource not found"))
130
+ }
131
+ Err(e) => {
132
+ tracing::error!(order_id = id, error = %e, "unexpected error");
133
+ Err((StatusCode::INTERNAL_SERVER_ERROR, "Internal server error"))
134
+ }
135
+ }
136
+ ```
137
+
138
+ ## References
139
+
140
+ See skill: `rust-patterns` for unsafe code guidelines and ownership patterns.
141
+ See skill: `security-review` for general security checklists.