agentic-team-templates 0.18.0 → 0.19.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 (223) hide show
  1. package/README.md +6 -5
  2. package/package.json +1 -1
  3. package/src/index.js +89 -8
  4. package/src/index.test.js +37 -11
  5. /package/templates/{utility-agent → agents/utility-agent}/.cursor/rules/action-control.md +0 -0
  6. /package/templates/{utility-agent → agents/utility-agent}/.cursor/rules/context-management.md +0 -0
  7. /package/templates/{utility-agent → agents/utility-agent}/.cursor/rules/hallucination-prevention.md +0 -0
  8. /package/templates/{utility-agent → agents/utility-agent}/.cursor/rules/overview.md +0 -0
  9. /package/templates/{utility-agent → agents/utility-agent}/.cursor/rules/token-optimization.md +0 -0
  10. /package/templates/{utility-agent → agents/utility-agent}/CLAUDE.md +0 -0
  11. /package/templates/{product-manager → business/product-manager}/.cursor/rules/communication.md +0 -0
  12. /package/templates/{product-manager → business/product-manager}/.cursor/rules/discovery.md +0 -0
  13. /package/templates/{product-manager → business/product-manager}/.cursor/rules/metrics.md +0 -0
  14. /package/templates/{product-manager → business/product-manager}/.cursor/rules/overview.md +0 -0
  15. /package/templates/{product-manager → business/product-manager}/.cursor/rules/prioritization.md +0 -0
  16. /package/templates/{product-manager → business/product-manager}/.cursor/rules/requirements.md +0 -0
  17. /package/templates/{product-manager → business/product-manager}/CLAUDE.md +0 -0
  18. /package/templates/{ux-designer → creative/ux-designer}/.cursor/rules/accessibility.md +0 -0
  19. /package/templates/{ux-designer → creative/ux-designer}/.cursor/rules/emotional-design.md +0 -0
  20. /package/templates/{ux-designer → creative/ux-designer}/.cursor/rules/handoff.md +0 -0
  21. /package/templates/{ux-designer → creative/ux-designer}/.cursor/rules/information-architecture.md +0 -0
  22. /package/templates/{ux-designer → creative/ux-designer}/.cursor/rules/interaction-design.md +0 -0
  23. /package/templates/{ux-designer → creative/ux-designer}/.cursor/rules/overview.md +0 -0
  24. /package/templates/{ux-designer → creative/ux-designer}/.cursor/rules/research.md +0 -0
  25. /package/templates/{ux-designer → creative/ux-designer}/.cursor/rules/visual-design.md +0 -0
  26. /package/templates/{ux-designer → creative/ux-designer}/CLAUDE.md +0 -0
  27. /package/templates/{educator → education/educator}/.cursor/rules/accessibility.md +0 -0
  28. /package/templates/{educator → education/educator}/.cursor/rules/assessment.md +0 -0
  29. /package/templates/{educator → education/educator}/.cursor/rules/curriculum.md +0 -0
  30. /package/templates/{educator → education/educator}/.cursor/rules/engagement.md +0 -0
  31. /package/templates/{educator → education/educator}/.cursor/rules/instructional-design.md +0 -0
  32. /package/templates/{educator → education/educator}/.cursor/rules/overview.md +0 -0
  33. /package/templates/{educator → education/educator}/.cursor/rules/retention.md +0 -0
  34. /package/templates/{educator → education/educator}/CLAUDE.md +0 -0
  35. /package/templates/{blockchain → engineering/blockchain}/.cursor/rules/defi-patterns.md +0 -0
  36. /package/templates/{blockchain → engineering/blockchain}/.cursor/rules/gas-optimization.md +0 -0
  37. /package/templates/{blockchain → engineering/blockchain}/.cursor/rules/overview.md +0 -0
  38. /package/templates/{blockchain → engineering/blockchain}/.cursor/rules/security.md +0 -0
  39. /package/templates/{blockchain → engineering/blockchain}/.cursor/rules/smart-contracts.md +0 -0
  40. /package/templates/{blockchain → engineering/blockchain}/.cursor/rules/testing.md +0 -0
  41. /package/templates/{blockchain → engineering/blockchain}/.cursor/rules/web3-integration.md +0 -0
  42. /package/templates/{blockchain → engineering/blockchain}/CLAUDE.md +0 -0
  43. /package/templates/{cli-tools → engineering/cli-tools}/.cursor/rules/architecture.md +0 -0
  44. /package/templates/{cli-tools → engineering/cli-tools}/.cursor/rules/arguments.md +0 -0
  45. /package/templates/{cli-tools → engineering/cli-tools}/.cursor/rules/distribution.md +0 -0
  46. /package/templates/{cli-tools → engineering/cli-tools}/.cursor/rules/error-handling.md +0 -0
  47. /package/templates/{cli-tools → engineering/cli-tools}/.cursor/rules/overview.md +0 -0
  48. /package/templates/{cli-tools → engineering/cli-tools}/.cursor/rules/testing.md +0 -0
  49. /package/templates/{cli-tools → engineering/cli-tools}/.cursor/rules/user-experience.md +0 -0
  50. /package/templates/{cli-tools → engineering/cli-tools}/CLAUDE.md +0 -0
  51. /package/templates/{data-engineering → engineering/data-engineering}/.cursor/rules/data-modeling.md +0 -0
  52. /package/templates/{data-engineering → engineering/data-engineering}/.cursor/rules/data-quality.md +0 -0
  53. /package/templates/{data-engineering → engineering/data-engineering}/.cursor/rules/overview.md +0 -0
  54. /package/templates/{data-engineering → engineering/data-engineering}/.cursor/rules/performance.md +0 -0
  55. /package/templates/{data-engineering → engineering/data-engineering}/.cursor/rules/pipeline-design.md +0 -0
  56. /package/templates/{data-engineering → engineering/data-engineering}/.cursor/rules/security.md +0 -0
  57. /package/templates/{data-engineering → engineering/data-engineering}/.cursor/rules/testing.md +0 -0
  58. /package/templates/{data-engineering → engineering/data-engineering}/CLAUDE.md +0 -0
  59. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/capacity-planning.md +0 -0
  60. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/change-management.md +0 -0
  61. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/chaos-engineering.md +0 -0
  62. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/disaster-recovery.md +0 -0
  63. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/incident-management.md +0 -0
  64. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/observability.md +0 -0
  65. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/overview.md +0 -0
  66. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/postmortems.md +0 -0
  67. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/runbooks.md +0 -0
  68. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/slo-sli.md +0 -0
  69. /package/templates/{devops-sre → engineering/devops-sre}/.cursor/rules/toil-reduction.md +0 -0
  70. /package/templates/{devops-sre → engineering/devops-sre}/CLAUDE.md +0 -0
  71. /package/templates/{fullstack → engineering/fullstack}/.cursor/rules/api-contracts.md +0 -0
  72. /package/templates/{fullstack → engineering/fullstack}/.cursor/rules/architecture.md +0 -0
  73. /package/templates/{fullstack → engineering/fullstack}/.cursor/rules/overview.md +0 -0
  74. /package/templates/{fullstack → engineering/fullstack}/.cursor/rules/shared-types.md +0 -0
  75. /package/templates/{fullstack → engineering/fullstack}/.cursor/rules/testing.md +0 -0
  76. /package/templates/{fullstack → engineering/fullstack}/CLAUDE.md +0 -0
  77. /package/templates/{ml-ai → engineering/ml-ai}/.cursor/rules/data-engineering.md +0 -0
  78. /package/templates/{ml-ai → engineering/ml-ai}/.cursor/rules/deployment.md +0 -0
  79. /package/templates/{ml-ai → engineering/ml-ai}/.cursor/rules/model-development.md +0 -0
  80. /package/templates/{ml-ai → engineering/ml-ai}/.cursor/rules/monitoring.md +0 -0
  81. /package/templates/{ml-ai → engineering/ml-ai}/.cursor/rules/overview.md +0 -0
  82. /package/templates/{ml-ai → engineering/ml-ai}/.cursor/rules/security.md +0 -0
  83. /package/templates/{ml-ai → engineering/ml-ai}/.cursor/rules/testing.md +0 -0
  84. /package/templates/{ml-ai → engineering/ml-ai}/CLAUDE.md +0 -0
  85. /package/templates/{mobile → engineering/mobile}/.cursor/rules/navigation.md +0 -0
  86. /package/templates/{mobile → engineering/mobile}/.cursor/rules/offline-first.md +0 -0
  87. /package/templates/{mobile → engineering/mobile}/.cursor/rules/overview.md +0 -0
  88. /package/templates/{mobile → engineering/mobile}/.cursor/rules/performance.md +0 -0
  89. /package/templates/{mobile → engineering/mobile}/.cursor/rules/testing.md +0 -0
  90. /package/templates/{mobile → engineering/mobile}/CLAUDE.md +0 -0
  91. /package/templates/{platform-engineering → engineering/platform-engineering}/.cursor/rules/ci-cd.md +0 -0
  92. /package/templates/{platform-engineering → engineering/platform-engineering}/.cursor/rules/developer-experience.md +0 -0
  93. /package/templates/{platform-engineering → engineering/platform-engineering}/.cursor/rules/infrastructure-as-code.md +0 -0
  94. /package/templates/{platform-engineering → engineering/platform-engineering}/.cursor/rules/kubernetes.md +0 -0
  95. /package/templates/{platform-engineering → engineering/platform-engineering}/.cursor/rules/observability.md +0 -0
  96. /package/templates/{platform-engineering → engineering/platform-engineering}/.cursor/rules/overview.md +0 -0
  97. /package/templates/{platform-engineering → engineering/platform-engineering}/.cursor/rules/security.md +0 -0
  98. /package/templates/{platform-engineering → engineering/platform-engineering}/.cursor/rules/testing.md +0 -0
  99. /package/templates/{platform-engineering → engineering/platform-engineering}/CLAUDE.md +0 -0
  100. /package/templates/{qa-engineering → engineering/qa-engineering}/.cursor/rules/automation.md +0 -0
  101. /package/templates/{qa-engineering → engineering/qa-engineering}/.cursor/rules/metrics.md +0 -0
  102. /package/templates/{qa-engineering → engineering/qa-engineering}/.cursor/rules/overview.md +0 -0
  103. /package/templates/{qa-engineering → engineering/qa-engineering}/.cursor/rules/quality-gates.md +0 -0
  104. /package/templates/{qa-engineering → engineering/qa-engineering}/.cursor/rules/test-design.md +0 -0
  105. /package/templates/{qa-engineering → engineering/qa-engineering}/.cursor/rules/test-strategy.md +0 -0
  106. /package/templates/{qa-engineering → engineering/qa-engineering}/CLAUDE.md +0 -0
  107. /package/templates/{testing → engineering/testing}/.cursor/rules/advanced-techniques.md +0 -0
  108. /package/templates/{testing → engineering/testing}/.cursor/rules/ci-cd-integration.md +0 -0
  109. /package/templates/{testing → engineering/testing}/.cursor/rules/overview.md +0 -0
  110. /package/templates/{testing → engineering/testing}/.cursor/rules/performance-testing.md +0 -0
  111. /package/templates/{testing → engineering/testing}/.cursor/rules/quality-metrics.md +0 -0
  112. /package/templates/{testing → engineering/testing}/.cursor/rules/reliability.md +0 -0
  113. /package/templates/{testing → engineering/testing}/.cursor/rules/tdd-methodology.md +0 -0
  114. /package/templates/{testing → engineering/testing}/.cursor/rules/test-data.md +0 -0
  115. /package/templates/{testing → engineering/testing}/.cursor/rules/test-design.md +0 -0
  116. /package/templates/{testing → engineering/testing}/.cursor/rules/test-types.md +0 -0
  117. /package/templates/{testing → engineering/testing}/CLAUDE.md +0 -0
  118. /package/templates/{web-backend → engineering/web-backend}/.cursor/rules/api-design.md +0 -0
  119. /package/templates/{web-backend → engineering/web-backend}/.cursor/rules/authentication.md +0 -0
  120. /package/templates/{web-backend → engineering/web-backend}/.cursor/rules/database-patterns.md +0 -0
  121. /package/templates/{web-backend → engineering/web-backend}/.cursor/rules/error-handling.md +0 -0
  122. /package/templates/{web-backend → engineering/web-backend}/.cursor/rules/overview.md +0 -0
  123. /package/templates/{web-backend → engineering/web-backend}/.cursor/rules/security.md +0 -0
  124. /package/templates/{web-backend → engineering/web-backend}/.cursor/rules/testing.md +0 -0
  125. /package/templates/{web-backend → engineering/web-backend}/CLAUDE.md +0 -0
  126. /package/templates/{web-frontend → engineering/web-frontend}/.cursor/rules/accessibility.md +0 -0
  127. /package/templates/{web-frontend → engineering/web-frontend}/.cursor/rules/component-patterns.md +0 -0
  128. /package/templates/{web-frontend → engineering/web-frontend}/.cursor/rules/overview.md +0 -0
  129. /package/templates/{web-frontend → engineering/web-frontend}/.cursor/rules/performance.md +0 -0
  130. /package/templates/{web-frontend → engineering/web-frontend}/.cursor/rules/state-management.md +0 -0
  131. /package/templates/{web-frontend → engineering/web-frontend}/.cursor/rules/styling.md +0 -0
  132. /package/templates/{web-frontend → engineering/web-frontend}/.cursor/rules/testing.md +0 -0
  133. /package/templates/{web-frontend → engineering/web-frontend}/CLAUDE.md +0 -0
  134. /package/templates/{cpp-expert → languages/cpp-expert}/.cursor/rules/concurrency.md +0 -0
  135. /package/templates/{cpp-expert → languages/cpp-expert}/.cursor/rules/error-handling.md +0 -0
  136. /package/templates/{cpp-expert → languages/cpp-expert}/.cursor/rules/memory-and-ownership.md +0 -0
  137. /package/templates/{cpp-expert → languages/cpp-expert}/.cursor/rules/modern-cpp.md +0 -0
  138. /package/templates/{cpp-expert → languages/cpp-expert}/.cursor/rules/overview.md +0 -0
  139. /package/templates/{cpp-expert → languages/cpp-expert}/.cursor/rules/performance.md +0 -0
  140. /package/templates/{cpp-expert → languages/cpp-expert}/.cursor/rules/testing.md +0 -0
  141. /package/templates/{cpp-expert → languages/cpp-expert}/.cursor/rules/tooling.md +0 -0
  142. /package/templates/{cpp-expert → languages/cpp-expert}/CLAUDE.md +0 -0
  143. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/aspnet-core.md +0 -0
  144. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/async-patterns.md +0 -0
  145. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/dependency-injection.md +0 -0
  146. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/error-handling.md +0 -0
  147. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/language-features.md +0 -0
  148. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/overview.md +0 -0
  149. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/performance.md +0 -0
  150. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/testing.md +0 -0
  151. /package/templates/{csharp-expert → languages/csharp-expert}/.cursor/rules/tooling.md +0 -0
  152. /package/templates/{csharp-expert → languages/csharp-expert}/CLAUDE.md +0 -0
  153. /package/templates/{golang-expert → languages/golang-expert}/.cursor/rules/concurrency.md +0 -0
  154. /package/templates/{golang-expert → languages/golang-expert}/.cursor/rules/error-handling.md +0 -0
  155. /package/templates/{golang-expert → languages/golang-expert}/.cursor/rules/interfaces-and-types.md +0 -0
  156. /package/templates/{golang-expert → languages/golang-expert}/.cursor/rules/overview.md +0 -0
  157. /package/templates/{golang-expert → languages/golang-expert}/.cursor/rules/performance.md +0 -0
  158. /package/templates/{golang-expert → languages/golang-expert}/.cursor/rules/production-patterns.md +0 -0
  159. /package/templates/{golang-expert → languages/golang-expert}/.cursor/rules/stdlib-and-tooling.md +0 -0
  160. /package/templates/{golang-expert → languages/golang-expert}/.cursor/rules/testing.md +0 -0
  161. /package/templates/{golang-expert → languages/golang-expert}/CLAUDE.md +0 -0
  162. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/concurrency.md +0 -0
  163. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/error-handling.md +0 -0
  164. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/modern-java.md +0 -0
  165. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/overview.md +0 -0
  166. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/performance.md +0 -0
  167. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/persistence.md +0 -0
  168. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/spring-boot.md +0 -0
  169. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/testing.md +0 -0
  170. /package/templates/{java-expert → languages/java-expert}/.cursor/rules/tooling.md +0 -0
  171. /package/templates/{java-expert → languages/java-expert}/CLAUDE.md +0 -0
  172. /package/templates/{javascript-expert → languages/javascript-expert}/.cursor/rules/language-deep-dive.md +0 -0
  173. /package/templates/{javascript-expert → languages/javascript-expert}/.cursor/rules/node-patterns.md +0 -0
  174. /package/templates/{javascript-expert → languages/javascript-expert}/.cursor/rules/overview.md +0 -0
  175. /package/templates/{javascript-expert → languages/javascript-expert}/.cursor/rules/performance.md +0 -0
  176. /package/templates/{javascript-expert → languages/javascript-expert}/.cursor/rules/react-patterns.md +0 -0
  177. /package/templates/{javascript-expert → languages/javascript-expert}/.cursor/rules/testing.md +0 -0
  178. /package/templates/{javascript-expert → languages/javascript-expert}/.cursor/rules/tooling.md +0 -0
  179. /package/templates/{javascript-expert → languages/javascript-expert}/.cursor/rules/typescript-deep-dive.md +0 -0
  180. /package/templates/{javascript-expert → languages/javascript-expert}/CLAUDE.md +0 -0
  181. /package/templates/{kotlin-expert → languages/kotlin-expert}/.cursor/rules/coroutines.md +0 -0
  182. /package/templates/{kotlin-expert → languages/kotlin-expert}/.cursor/rules/error-handling.md +0 -0
  183. /package/templates/{kotlin-expert → languages/kotlin-expert}/.cursor/rules/frameworks.md +0 -0
  184. /package/templates/{kotlin-expert → languages/kotlin-expert}/.cursor/rules/language-features.md +0 -0
  185. /package/templates/{kotlin-expert → languages/kotlin-expert}/.cursor/rules/overview.md +0 -0
  186. /package/templates/{kotlin-expert → languages/kotlin-expert}/.cursor/rules/performance.md +0 -0
  187. /package/templates/{kotlin-expert → languages/kotlin-expert}/.cursor/rules/testing.md +0 -0
  188. /package/templates/{kotlin-expert → languages/kotlin-expert}/.cursor/rules/tooling.md +0 -0
  189. /package/templates/{kotlin-expert → languages/kotlin-expert}/CLAUDE.md +0 -0
  190. /package/templates/{python-expert → languages/python-expert}/.cursor/rules/async-python.md +0 -0
  191. /package/templates/{python-expert → languages/python-expert}/.cursor/rules/overview.md +0 -0
  192. /package/templates/{python-expert → languages/python-expert}/.cursor/rules/patterns-and-idioms.md +0 -0
  193. /package/templates/{python-expert → languages/python-expert}/.cursor/rules/performance.md +0 -0
  194. /package/templates/{python-expert → languages/python-expert}/.cursor/rules/testing.md +0 -0
  195. /package/templates/{python-expert → languages/python-expert}/.cursor/rules/tooling.md +0 -0
  196. /package/templates/{python-expert → languages/python-expert}/.cursor/rules/type-system.md +0 -0
  197. /package/templates/{python-expert → languages/python-expert}/.cursor/rules/web-and-apis.md +0 -0
  198. /package/templates/{python-expert → languages/python-expert}/CLAUDE.md +0 -0
  199. /package/templates/{rust-expert → languages/rust-expert}/.cursor/rules/concurrency.md +0 -0
  200. /package/templates/{rust-expert → languages/rust-expert}/.cursor/rules/ecosystem-and-tooling.md +0 -0
  201. /package/templates/{rust-expert → languages/rust-expert}/.cursor/rules/error-handling.md +0 -0
  202. /package/templates/{rust-expert → languages/rust-expert}/.cursor/rules/overview.md +0 -0
  203. /package/templates/{rust-expert → languages/rust-expert}/.cursor/rules/ownership-and-borrowing.md +0 -0
  204. /package/templates/{rust-expert → languages/rust-expert}/.cursor/rules/performance-and-unsafe.md +0 -0
  205. /package/templates/{rust-expert → languages/rust-expert}/.cursor/rules/testing.md +0 -0
  206. /package/templates/{rust-expert → languages/rust-expert}/.cursor/rules/traits-and-generics.md +0 -0
  207. /package/templates/{rust-expert → languages/rust-expert}/CLAUDE.md +0 -0
  208. /package/templates/{swift-expert → languages/swift-expert}/.cursor/rules/concurrency.md +0 -0
  209. /package/templates/{swift-expert → languages/swift-expert}/.cursor/rules/error-handling.md +0 -0
  210. /package/templates/{swift-expert → languages/swift-expert}/.cursor/rules/language-features.md +0 -0
  211. /package/templates/{swift-expert → languages/swift-expert}/.cursor/rules/overview.md +0 -0
  212. /package/templates/{swift-expert → languages/swift-expert}/.cursor/rules/performance.md +0 -0
  213. /package/templates/{swift-expert → languages/swift-expert}/.cursor/rules/swiftui.md +0 -0
  214. /package/templates/{swift-expert → languages/swift-expert}/.cursor/rules/testing.md +0 -0
  215. /package/templates/{swift-expert → languages/swift-expert}/.cursor/rules/tooling.md +0 -0
  216. /package/templates/{swift-expert → languages/swift-expert}/CLAUDE.md +0 -0
  217. /package/templates/{documentation → professional/documentation}/.cursor/rules/adr.md +0 -0
  218. /package/templates/{documentation → professional/documentation}/.cursor/rules/api-documentation.md +0 -0
  219. /package/templates/{documentation → professional/documentation}/.cursor/rules/code-comments.md +0 -0
  220. /package/templates/{documentation → professional/documentation}/.cursor/rules/maintenance.md +0 -0
  221. /package/templates/{documentation → professional/documentation}/.cursor/rules/overview.md +0 -0
  222. /package/templates/{documentation → professional/documentation}/.cursor/rules/readme-standards.md +0 -0
  223. /package/templates/{documentation → professional/documentation}/CLAUDE.md +0 -0
package/README.md CHANGED
@@ -342,11 +342,10 @@ We welcome contributions! Here's how to add new templates or improve existing on
342
342
 
343
343
  ### Adding a New Template
344
344
 
345
- 1. **Create the template directory structure:**
345
+ 1. **Create the template in the appropriate category directory:**
346
346
 
347
347
  ```text
348
- templates/your-template/
349
- ├── CLAUDE.md # Main development guide (required)
348
+ templates/<category>/your-template/
350
349
  └── .cursor/
351
350
  └── rules/
352
351
  ├── overview.md # Scope and core principles (required)
@@ -355,15 +354,17 @@ templates/your-template/
355
354
  └── ...
356
355
  ```
357
356
 
357
+ Categories: `engineering`, `languages`, `creative`, `business`, `marketing`, `professional`, `finance`, `education`, `health`, `home`, `science`, `personal`, `civic`, `trades`, `agents`
358
+
358
359
  2. **Follow the existing patterns:**
359
- - Look at `templates/web-frontend/` or `templates/platform-engineering/` for reference
360
+ - Look at `templates/engineering/web-frontend/` or `templates/languages/python-expert/` for reference
360
361
  - Each rule file should be focused on a single topic
361
362
  - Include code examples, not just guidelines
362
363
  - Add "Common Pitfalls" and "Definition of Done" sections
363
364
 
364
365
  3. **Required files:**
365
- - `CLAUDE.md` - Comprehensive guide with overview, tech stack, patterns, and examples
366
366
  - `.cursor/rules/overview.md` - Scope, core principles, and project structure
367
+ - Add a `category` field to the template entry in `src/index.js`
367
368
 
368
369
  ### Template Guidelines
369
370
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-team-templates",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "AI coding assistant templates for Cursor IDE. Pre-configured rules and guidelines that help AI assistants write better code. - use at your own risk",
5
5
  "keywords": [
6
6
  "cursor",
package/src/index.js CHANGED
@@ -22,109 +22,146 @@ const CURRENT_VERSION = packageJson.version;
22
22
  const REPO_URL = 'https://github.com/djm204/agentic-team-templates';
23
23
  const CHANGELOG_URL = `${REPO_URL}/releases/tag/${PACKAGE_NAME}-v${CURRENT_VERSION}`;
24
24
 
25
+ // Template categories (storage-only, not exposed to CLI users)
26
+ const CATEGORIES = [
27
+ 'engineering',
28
+ 'languages',
29
+ 'creative',
30
+ 'business',
31
+ 'professional',
32
+ 'education',
33
+ 'agents',
34
+ ];
35
+
25
36
  // Available templates
26
37
  const TEMPLATES = {
27
38
  'blockchain': {
39
+ category: 'engineering',
28
40
  description: 'Smart contracts, DeFi protocols, and Web3 applications (Solidity, Foundry, Viem)',
29
41
  rules: ['defi-patterns.md', 'gas-optimization.md', 'overview.md', 'security.md', 'smart-contracts.md', 'testing.md', 'web3-integration.md']
30
42
  },
31
43
  'cpp-expert': {
44
+ category: 'languages',
32
45
  description: 'Principal-level C++ engineering (modern C++, RAII, concurrency, templates, performance)',
33
46
  rules: ['concurrency.md', 'error-handling.md', 'memory-and-ownership.md', 'modern-cpp.md', 'overview.md', 'performance.md', 'testing.md', 'tooling.md']
34
47
  },
35
48
  'csharp-expert': {
49
+ category: 'languages',
36
50
  description: 'Principal-level C# engineering (async, DI, EF Core, ASP.NET Core, testing)',
37
51
  rules: ['aspnet-core.md', 'async-patterns.md', 'dependency-injection.md', 'error-handling.md', 'language-features.md', 'overview.md', 'performance.md', 'testing.md', 'tooling.md']
38
52
  },
39
53
  'cli-tools': {
54
+ category: 'engineering',
40
55
  description: 'Command-line applications and developer tools (Cobra, Commander, Click)',
41
56
  rules: ['architecture.md', 'arguments.md', 'distribution.md', 'error-handling.md', 'overview.md', 'testing.md', 'user-experience.md']
42
57
  },
43
58
  'data-engineering': {
59
+ category: 'engineering',
44
60
  description: 'Data platforms and pipelines (ETL, data modeling, data quality)',
45
61
  rules: ['data-modeling.md', 'data-quality.md', 'overview.md', 'performance.md', 'pipeline-design.md', 'security.md', 'testing.md']
46
62
  },
47
63
  'devops-sre': {
64
+ category: 'engineering',
48
65
  description: 'DevOps and SRE practices (incident management, observability, SLOs, chaos engineering)',
49
66
  rules: ['capacity-planning.md', 'change-management.md', 'chaos-engineering.md', 'disaster-recovery.md', 'incident-management.md', 'observability.md', 'overview.md', 'postmortems.md', 'runbooks.md', 'slo-sli.md', 'toil-reduction.md']
50
67
  },
51
68
  'documentation': {
69
+ category: 'professional',
52
70
  description: 'Technical documentation standards (READMEs, API docs, ADRs, code comments)',
53
71
  rules: ['adr.md', 'api-documentation.md', 'code-comments.md', 'maintenance.md', 'overview.md', 'readme-standards.md']
54
72
  },
55
73
  'educator': {
74
+ category: 'education',
56
75
  description: 'World-class pedagogy with evidence-based teaching, learning retention, gamification, and assessment design',
57
76
  rules: ['accessibility.md', 'assessment.md', 'curriculum.md', 'engagement.md', 'instructional-design.md', 'overview.md', 'retention.md']
58
77
  },
59
78
  'fullstack': {
79
+ category: 'engineering',
60
80
  description: 'Full-stack web applications (Next.js, Nuxt, SvelteKit, Remix)',
61
81
  rules: ['api-contracts.md', 'architecture.md', 'overview.md', 'shared-types.md', 'testing.md']
62
82
  },
63
83
  'golang-expert': {
84
+ category: 'languages',
64
85
  description: 'Principal-level Go engineering (concurrency, stdlib, production patterns, testing)',
65
86
  rules: ['concurrency.md', 'error-handling.md', 'interfaces-and-types.md', 'overview.md', 'performance.md', 'production-patterns.md', 'stdlib-and-tooling.md', 'testing.md']
66
87
  },
67
88
  'java-expert': {
89
+ category: 'languages',
68
90
  description: 'Principal-level Java engineering (JVM, Spring Boot, concurrency, JPA, testing)',
69
91
  rules: ['concurrency.md', 'error-handling.md', 'modern-java.md', 'overview.md', 'performance.md', 'persistence.md', 'spring-boot.md', 'testing.md', 'tooling.md']
70
92
  },
71
93
  'javascript-expert': {
94
+ category: 'languages',
72
95
  description: 'Principal-level JavaScript & TypeScript engineering (Node.js, React, type system, testing)',
73
96
  rules: ['language-deep-dive.md', 'node-patterns.md', 'overview.md', 'performance.md', 'react-patterns.md', 'testing.md', 'tooling.md', 'typescript-deep-dive.md']
74
97
  },
75
98
  'kotlin-expert': {
99
+ category: 'languages',
76
100
  description: 'Principal-level Kotlin engineering (coroutines, multiplatform, Ktor, Spring Boot, testing)',
77
101
  rules: ['coroutines.md', 'error-handling.md', 'frameworks.md', 'language-features.md', 'overview.md', 'performance.md', 'testing.md', 'tooling.md']
78
102
  },
79
103
  'ml-ai': {
104
+ category: 'engineering',
80
105
  description: 'Machine learning and AI systems (model development, deployment, monitoring)',
81
106
  rules: ['data-engineering.md', 'deployment.md', 'model-development.md', 'monitoring.md', 'overview.md', 'security.md', 'testing.md']
82
107
  },
83
108
  'mobile': {
109
+ category: 'engineering',
84
110
  description: 'Mobile applications (React Native, Flutter, native iOS/Android)',
85
111
  rules: ['navigation.md', 'offline-first.md', 'overview.md', 'performance.md', 'testing.md']
86
112
  },
87
113
  'platform-engineering': {
114
+ category: 'engineering',
88
115
  description: 'Internal developer platforms, infrastructure automation, and reliability engineering',
89
116
  rules: ['ci-cd.md', 'developer-experience.md', 'infrastructure-as-code.md', 'kubernetes.md', 'observability.md', 'overview.md', 'security.md', 'testing.md']
90
117
  },
91
118
  'product-manager': {
119
+ category: 'business',
92
120
  description: 'Product management with customer-centric discovery, prioritization, and execution',
93
121
  rules: ['communication.md', 'discovery.md', 'metrics.md', 'overview.md', 'prioritization.md', 'requirements.md']
94
122
  },
95
123
  'python-expert': {
124
+ category: 'languages',
96
125
  description: 'Principal-level Python engineering (type system, async, testing, FastAPI, Django)',
97
126
  rules: ['async-python.md', 'overview.md', 'patterns-and-idioms.md', 'performance.md', 'testing.md', 'tooling.md', 'type-system.md', 'web-and-apis.md']
98
127
  },
99
128
  'qa-engineering': {
129
+ category: 'engineering',
100
130
  description: 'Quality assurance programs for confident, rapid software delivery',
101
131
  rules: ['automation.md', 'metrics.md', 'overview.md', 'quality-gates.md', 'test-design.md', 'test-strategy.md']
102
132
  },
103
133
  'rust-expert': {
134
+ category: 'languages',
104
135
  description: 'Principal-level Rust engineering (ownership, concurrency, unsafe, traits, async)',
105
136
  rules: ['concurrency.md', 'ecosystem-and-tooling.md', 'error-handling.md', 'overview.md', 'ownership-and-borrowing.md', 'performance-and-unsafe.md', 'testing.md', 'traits-and-generics.md']
106
137
  },
107
138
  'swift-expert': {
139
+ category: 'languages',
108
140
  description: 'Principal-level Swift engineering (concurrency, SwiftUI, protocols, testing, Apple platforms)',
109
141
  rules: ['concurrency.md', 'error-handling.md', 'language-features.md', 'overview.md', 'performance.md', 'swiftui.md', 'testing.md', 'tooling.md']
110
142
  },
111
143
  'testing': {
144
+ category: 'engineering',
112
145
  description: 'Comprehensive testing practices (TDD, test design, CI/CD integration, performance testing)',
113
146
  rules: ['advanced-techniques.md', 'ci-cd-integration.md', 'overview.md', 'performance-testing.md', 'quality-metrics.md', 'reliability.md', 'tdd-methodology.md', 'test-data.md', 'test-design.md', 'test-types.md']
114
147
  },
115
148
  'utility-agent': {
149
+ category: 'agents',
116
150
  description: 'AI agent utilities with context management and hallucination prevention',
117
151
  rules: ['action-control.md', 'context-management.md', 'hallucination-prevention.md', 'overview.md', 'token-optimization.md']
118
152
  },
119
153
  'ux-designer': {
154
+ category: 'creative',
120
155
  description: 'Principal-level UX design with user research, interaction design, design systems, accessibility, and emotional design',
121
156
  rules: ['accessibility.md', 'emotional-design.md', 'handoff.md', 'information-architecture.md', 'interaction-design.md', 'overview.md', 'research.md', 'visual-design.md']
122
157
  },
123
158
  'web-backend': {
159
+ category: 'engineering',
124
160
  description: 'Backend APIs and services (REST, GraphQL, microservices)',
125
161
  rules: ['api-design.md', 'authentication.md', 'database-patterns.md', 'error-handling.md', 'overview.md', 'security.md', 'testing.md']
126
162
  },
127
163
  'web-frontend': {
164
+ category: 'engineering',
128
165
  description: 'Frontend web applications (SPAs, SSR, static sites, PWAs)',
129
166
  rules: ['accessibility.md', 'component-patterns.md', 'overview.md', 'performance.md', 'state-management.md', 'styling.md', 'testing.md']
130
167
  }
@@ -166,6 +203,17 @@ function resolveTemplateAlias(name) {
166
203
  return TEMPLATE_ALIASES[name] || name;
167
204
  }
168
205
 
206
+ /**
207
+ * Get the source path for a template's rule files
208
+ * @param {string} template - Template name
209
+ * @param {string} rule - Rule filename
210
+ * @returns {string} Full path to the rule file in templates/<category>/<template>/.cursor/rules/
211
+ */
212
+ function getTemplateRulePath(template, rule) {
213
+ const { category } = TEMPLATES[template];
214
+ return path.join(TEMPLATES_DIR, category, template, '.cursor', 'rules', rule);
215
+ }
216
+
169
217
  const SHARED_RULES = [
170
218
  'code-quality.md',
171
219
  'communication.md',
@@ -310,11 +358,25 @@ function printTemplates() {
310
358
 
311
359
  console.log(colors.yellow('Available Templates:\n'));
312
360
 
361
+ // Group templates by category
362
+ const byCategory = {};
313
363
  for (const [name, info] of Object.entries(TEMPLATES)) {
314
- const aliases = aliasesByTemplate[name];
315
- const aliasSuffix = aliases ? ` ${colors.dim(`(aliases: ${aliases.join(', ')})`)}` : '';
316
- console.log(` ${colors.green(name)}${aliasSuffix}`);
317
- console.log(` ${info.description}\n`);
364
+ const cat = info.category;
365
+ if (!byCategory[cat]) byCategory[cat] = [];
366
+ byCategory[cat].push({ name, info });
367
+ }
368
+
369
+ for (const category of CATEGORIES) {
370
+ const templates = byCategory[category];
371
+ if (!templates || templates.length === 0) continue;
372
+ const label = category.charAt(0).toUpperCase() + category.slice(1);
373
+ console.log(colors.blue(` ${label}:`));
374
+ for (const { name, info } of templates) {
375
+ const aliases = aliasesByTemplate[name];
376
+ const aliasSuffix = aliases ? ` ${colors.dim(`(aliases: ${aliases.join(', ')})`)}` : '';
377
+ console.log(` ${colors.green(name)}${aliasSuffix}`);
378
+ console.log(` ${info.description}\n`);
379
+ }
318
380
  }
319
381
 
320
382
  console.log(colors.blue('Shared rules (always included):'));
@@ -709,7 +771,7 @@ function generateCopilotInstructionsContent(installedTemplates) {
709
771
  // Read and concatenate template-specific rules
710
772
  const templateRulesContent = installedTemplates.map(template => {
711
773
  return TEMPLATES[template].rules.map(rule => {
712
- const rulePath = path.join(TEMPLATES_DIR, template, '.cursor', 'rules', rule);
774
+ const rulePath = getTemplateRulePath(template, rule);
713
775
  try {
714
776
  return fs.readFileSync(rulePath, 'utf8');
715
777
  } catch {
@@ -836,7 +898,7 @@ async function install(targetDir, templates, dryRun = false, force = false, ides
836
898
  console.log(colors.green(`► Installing ${template} template (${CURSOR_RULES_DIR}/)...`));
837
899
 
838
900
  for (const rule of TEMPLATES[template].rules) {
839
- const src = path.join(TEMPLATES_DIR, template, '.cursor', 'rules', rule);
901
+ const src = getTemplateRulePath(template, rule);
840
902
  const dest = path.join(cursorRulesDir, `${template}-${rule}`);
841
903
  const destName = `${template}-${rule}`;
842
904
 
@@ -886,6 +948,23 @@ async function install(targetDir, templates, dryRun = false, force = false, ides
886
948
  );
887
949
 
888
950
  if (shouldCleanup) {
951
+ // Copy legacy rule files to .cursor/rules/ before removing (don't overwrite existing)
952
+ const legacyEntries = fs.readdirSync(legacyDir, { withFileTypes: true });
953
+ let copiedCount = 0;
954
+ for (const entry of legacyEntries) {
955
+ if (!entry.isFile()) continue;
956
+ const name = entry.name;
957
+ const legacyPath = path.join(legacyDir, name);
958
+ const destPath = path.join(cursorRulesDir, name);
959
+ if (!fs.existsSync(destPath)) {
960
+ fs.copyFileSync(legacyPath, destPath);
961
+ console.log(colors.dim(` ${colors.green('[migrated]')} ${name} → ${CURSOR_RULES_DIR}/`));
962
+ copiedCount++;
963
+ }
964
+ }
965
+ if (copiedCount > 0) {
966
+ console.log(colors.green(` ✓ Migrated ${copiedCount} file(s) from ${LEGACY_CURSORRULES_DIR}/ to ${CURSOR_RULES_DIR}/.`));
967
+ }
889
968
  fs.rmSync(legacyDir, { recursive: true });
890
969
  console.log(colors.green(` ✓ Removed deprecated ${LEGACY_CURSORRULES_DIR}/ directory.`));
891
970
  } else {
@@ -1132,7 +1211,7 @@ async function remove(targetDir, templates, dryRun = false, force = false, skipC
1132
1211
  for (const rule of TEMPLATES[template].rules) {
1133
1212
  const destName = `${template}-${rule}`;
1134
1213
  const destPath = path.join(dir, destName);
1135
- const srcPath = path.join(TEMPLATES_DIR, template, '.cursor', 'rules', rule);
1214
+ const srcPath = getTemplateRulePath(template, rule);
1136
1215
 
1137
1216
  if (!fs.existsSync(destPath)) {
1138
1217
  continue;
@@ -1306,7 +1385,7 @@ async function reset(targetDir, dryRun = false, force = false, skipConfirm = fal
1306
1385
  for (const rule of templateInfo.rules) {
1307
1386
  const destName = `${templateName}-${rule}`;
1308
1387
  const destPath = path.join(dir, destName);
1309
- const srcPath = path.join(TEMPLATES_DIR, templateName, '.cursor', 'rules', rule);
1388
+ const srcPath = getTemplateRulePath(templateName, rule);
1310
1389
 
1311
1390
  if (!fs.existsSync(destPath)) continue;
1312
1391
 
@@ -1630,6 +1709,7 @@ export const _internals = {
1630
1709
  CHANGELOG_URL,
1631
1710
  CURSOR_RULES_DIR,
1632
1711
  LEGACY_CURSORRULES_DIR,
1712
+ CATEGORIES,
1633
1713
  TEMPLATES,
1634
1714
  TEMPLATE_ALIASES,
1635
1715
  SHARED_RULES,
@@ -1638,6 +1718,7 @@ export const _internals = {
1638
1718
  compareVersions,
1639
1719
  checkForUpdates,
1640
1720
  resolveTemplateAlias,
1721
+ getTemplateRulePath,
1641
1722
  filesMatch,
1642
1723
  parseMarkdownSections,
1643
1724
  generateSectionSignature,
package/src/index.test.js CHANGED
@@ -9,6 +9,7 @@ const {
9
9
  CURRENT_VERSION,
10
10
  CURSOR_RULES_DIR,
11
11
  LEGACY_CURSORRULES_DIR,
12
+ CATEGORIES,
12
13
  TEMPLATES,
13
14
  TEMPLATE_ALIASES,
14
15
  SHARED_RULES,
@@ -16,6 +17,7 @@ const {
16
17
  DEFAULT_IDES,
17
18
  compareVersions,
18
19
  resolveTemplateAlias,
20
+ getTemplateRulePath,
19
21
  filesMatch,
20
22
  parseMarkdownSections,
21
23
  generateSectionSignature,
@@ -108,12 +110,15 @@ describe('Constants', () => {
108
110
  expect(Object.keys(TEMPLATES).sort()).toEqual(expectedTemplates.sort());
109
111
  });
110
112
 
111
- it('each template should have description and rules array', () => {
113
+ it('each template should have category, description, and rules array', () => {
112
114
  for (const [name, template] of Object.entries(TEMPLATES)) {
115
+ expect(template).toHaveProperty('category');
116
+ expect(CATEGORIES).toContain(template.category);
117
+
113
118
  expect(template).toHaveProperty('description');
114
119
  expect(typeof template.description).toBe('string');
115
120
  expect(template.description.length).toBeGreaterThan(0);
116
-
121
+
117
122
  expect(template).toHaveProperty('rules');
118
123
  expect(Array.isArray(template.rules)).toBe(true);
119
124
  expect(template.rules.length).toBeGreaterThan(0);
@@ -125,6 +130,15 @@ describe('Constants', () => {
125
130
  expect(template.rules).toContain('overview.md');
126
131
  }
127
132
  });
133
+
134
+ it('each template rule file should exist on disk', () => {
135
+ for (const [name, template] of Object.entries(TEMPLATES)) {
136
+ for (const rule of template.rules) {
137
+ const rulePath = getTemplateRulePath(name, rule);
138
+ expect(fs.existsSync(rulePath), `Missing: ${rulePath}`).toBe(true);
139
+ }
140
+ }
141
+ });
128
142
  });
129
143
 
130
144
  describe('SHARED_RULES', () => {
@@ -777,23 +791,35 @@ describe('Install/Remove/Reset Operations', () => {
777
791
  expect(fs.existsSync(path.join(tempDir, '.cursor', 'rules', 'web-backend-overview.md'))).toBe(true);
778
792
  });
779
793
 
780
- it('should detect legacy .cursorrules/ and create notice when cleanup declined', async () => {
781
- // Create a legacy .cursorrules/ directory
794
+ it('should copy legacy .cursorrules/ files to .cursor/rules/ then remove legacy dir when cleanup confirmed', async () => {
782
795
  const legacyDir = path.join(tempDir, LEGACY_CURSORRULES_DIR);
796
+ const cursorRulesDir = path.join(tempDir, '.cursor', 'rules');
783
797
  fs.mkdirSync(legacyDir, { recursive: true });
784
798
  fs.writeFileSync(path.join(legacyDir, 'old-rule.md'), '# Old rule');
799
+ fs.writeFileSync(path.join(legacyDir, 'custom-guide.md'), '# Custom guide');
785
800
 
786
- // Install with skipConfirm=false but mock stdin to decline
787
- // Since we can't easily mock stdin, use the fact that confirm defaults to 'N'
788
- // We'll test the --yes path which auto-cleans, and also the notice path
789
- // For the notice path, install without skipConfirm - the confirm() will fail in test env
790
- // Actually, let's just test the --yes (skipConfirm) paths
791
-
792
- // Test: skipConfirm=true should remove legacy dir
793
801
  await install(tempDir, ['web-frontend'], false, false, ['cursor'], true);
794
802
 
795
803
  expect(fs.existsSync(legacyDir)).toBe(false);
796
804
  expect(fs.existsSync(path.join(tempDir, '.cursor', 'rules', 'web-frontend-overview.md'))).toBe(true);
805
+ expect(fs.existsSync(path.join(cursorRulesDir, 'old-rule.md'))).toBe(true);
806
+ expect(fs.readFileSync(path.join(cursorRulesDir, 'old-rule.md'), 'utf8')).toBe('# Old rule');
807
+ expect(fs.existsSync(path.join(cursorRulesDir, 'custom-guide.md'))).toBe(true);
808
+ expect(fs.readFileSync(path.join(cursorRulesDir, 'custom-guide.md'), 'utf8')).toBe('# Custom guide');
809
+ });
810
+
811
+ it('should not overwrite existing .cursor/rules/ files when migrating legacy', async () => {
812
+ const legacyDir = path.join(tempDir, LEGACY_CURSORRULES_DIR);
813
+ const cursorRulesDir = path.join(tempDir, '.cursor', 'rules');
814
+ fs.mkdirSync(cursorRulesDir, { recursive: true });
815
+ fs.writeFileSync(path.join(cursorRulesDir, 'my-rule.md'), '# New structure content');
816
+ fs.mkdirSync(legacyDir, { recursive: true });
817
+ fs.writeFileSync(path.join(legacyDir, 'my-rule.md'), '# Legacy content');
818
+
819
+ await install(tempDir, ['web-frontend'], false, false, ['cursor'], true);
820
+
821
+ expect(fs.readFileSync(path.join(cursorRulesDir, 'my-rule.md'), 'utf8')).toBe('# New structure content');
822
+ expect(fs.existsSync(legacyDir)).toBe(false);
797
823
  });
798
824
 
799
825
  it('should show legacy warning in dry-run mode without prompting', async () => {