@ngxtm/devkit 2.0.2 → 3.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 (534) hide show
  1. package/cli/detect.js +292 -0
  2. package/cli/index.js +205 -80
  3. package/cli/init.js +245 -0
  4. package/cli/install.js +231 -53
  5. package/cli/update.js +243 -0
  6. package/cli/utils.js +195 -0
  7. package/package.json +16 -20
  8. package/rules-index.json +76 -0
  9. package/scripts/generate-index.js +223 -0
  10. package/scripts/merge-commands.js +290 -0
  11. package/scripts/organize-rules.js +226 -0
  12. package/templates/base/hooks/lib/ck-config-utils.cjs +769 -0
  13. package/templates/base/hooks/lib/ck-paths.cjs +110 -0
  14. package/templates/base/hooks/lib/colors.cjs +95 -0
  15. package/templates/base/hooks/lib/config-counter.cjs +103 -0
  16. package/templates/base/hooks/lib/context-builder.cjs +600 -0
  17. package/templates/base/hooks/lib/context-tracker.cjs +335 -0
  18. package/templates/base/hooks/lib/privacy-checker.cjs +297 -0
  19. package/templates/base/hooks/lib/project-detector.cjs +430 -0
  20. package/templates/base/hooks/lib/scout-checker.cjs +172 -0
  21. package/templates/base/hooks/lib/transcript-parser.cjs +164 -0
  22. package/templates/base/hooks/privacy-block.cjs +145 -0
  23. package/agents/backend-engineer.md +0 -154
  24. package/agents/brainstormer.md +0 -169
  25. package/agents/business-analyst.md +0 -166
  26. package/agents/database-architect.md +0 -159
  27. package/agents/debugger.md +0 -155
  28. package/agents/designer.md +0 -150
  29. package/agents/devops-engineer.md +0 -155
  30. package/agents/docs-manager.md +0 -171
  31. package/agents/frontend-engineer.md +0 -159
  32. package/agents/game-engineer.md +0 -148
  33. package/agents/mobile-engineer.md +0 -149
  34. package/agents/performance-engineer.md +0 -152
  35. package/agents/planner.md +0 -161
  36. package/agents/project-manager.md +0 -160
  37. package/agents/researcher.md +0 -146
  38. package/agents/reviewer.md +0 -155
  39. package/agents/scouter.md +0 -157
  40. package/agents/security-engineer.md +0 -154
  41. package/agents/tech-lead.md +0 -159
  42. package/agents/tester.md +0 -157
  43. package/agents-claudekit/brainstormer.md +0 -113
  44. package/agents-claudekit/code-reviewer.md +0 -157
  45. package/agents-claudekit/code-simplifier.md +0 -42
  46. package/agents-claudekit/copywriter.md +0 -110
  47. package/agents-claudekit/database-admin.md +0 -92
  48. package/agents-claudekit/debugger.md +0 -137
  49. package/agents-claudekit/docs-manager.md +0 -208
  50. package/agents-claudekit/fullstack-developer.md +0 -95
  51. package/agents-claudekit/git-manager.md +0 -394
  52. package/agents-claudekit/journal-writer.md +0 -113
  53. package/agents-claudekit/mcp-manager.md +0 -93
  54. package/agents-claudekit/planner.md +0 -108
  55. package/agents-claudekit/project-manager.md +0 -125
  56. package/agents-claudekit/researcher.md +0 -38
  57. package/agents-claudekit/scout-external.md +0 -141
  58. package/agents-claudekit/scout.md +0 -107
  59. package/agents-claudekit/tester.md +0 -105
  60. package/agents-claudekit/ui-ux-designer.md +0 -236
  61. package/commands/ask.md +0 -64
  62. package/commands/brainstorm.md +0 -64
  63. package/commands/code.md +0 -64
  64. package/commands/cook.md +0 -64
  65. package/commands/debug.md +0 -64
  66. package/commands/design/fast.md +0 -134
  67. package/commands/fix/fast.md +0 -84
  68. package/commands/fix/hard.md +0 -116
  69. package/commands/fix.md +0 -64
  70. package/commands/plan/fast.md +0 -78
  71. package/commands/plan/hard.md +0 -131
  72. package/commands/plan.md +0 -64
  73. package/commands/test.md +0 -64
  74. package/matrix-skills/_index.yaml +0 -275
  75. package/matrix-skills/ai-ml.yaml +0 -353
  76. package/matrix-skills/architecture.yaml +0 -93
  77. package/matrix-skills/backend.yaml +0 -280
  78. package/matrix-skills/cloud.yaml +0 -112
  79. package/matrix-skills/data.yaml +0 -74
  80. package/matrix-skills/design.yaml +0 -98
  81. package/matrix-skills/devops.yaml +0 -200
  82. package/matrix-skills/frontend.yaml +0 -200
  83. package/matrix-skills/gaming.yaml +0 -39
  84. package/matrix-skills/languages.yaml +0 -160
  85. package/matrix-skills/management.yaml +0 -50
  86. package/matrix-skills/mcp.yaml +0 -82
  87. package/matrix-skills/mobile.yaml +0 -85
  88. package/matrix-skills/performance.yaml +0 -23
  89. package/matrix-skills/planning.yaml +0 -117
  90. package/matrix-skills/quality.yaml +0 -195
  91. package/matrix-skills/research.yaml +0 -106
  92. package/matrix-skills/security.yaml +0 -293
  93. package/matrix-skills/tools.yaml +0 -352
  94. package/output-styles/coding-level-0-eli5.md +0 -103
  95. package/output-styles/coding-level-1-junior.md +0 -124
  96. package/output-styles/coding-level-2-mid.md +0 -146
  97. package/output-styles/coding-level-3-senior.md +0 -148
  98. package/output-styles/coding-level-4-lead.md +0 -159
  99. package/output-styles/coding-level-5-god.md +0 -91
  100. package/rules/README.md +0 -141
  101. package/rules/metadata.json +0 -54
  102. package/settings.json +0 -3
  103. package/statusline.cjs +0 -500
  104. package/statusline.ps1 +0 -307
  105. package/statusline.sh +0 -237
  106. package/workflows/development-rules.md +0 -42
  107. package/workflows/documentation-management.md +0 -121
  108. package/workflows/orchestration-protocol.md +0 -16
  109. package/workflows/primary-workflow.md +0 -45
  110. /package/{commands → merged-commands}/ask/fast.md +0 -0
  111. /package/{commands → merged-commands}/ask/hard.md +0 -0
  112. /package/{commands-claudekit → merged-commands}/ask.md +0 -0
  113. /package/{commands → merged-commands}/auto.md +0 -0
  114. /package/{commands-claudekit → merged-commands}/bootstrap/auto/fast.md +0 -0
  115. /package/{commands-claudekit → merged-commands}/bootstrap/auto/parallel.md +0 -0
  116. /package/{commands-claudekit → merged-commands}/bootstrap/auto.md +0 -0
  117. /package/{commands-claudekit → merged-commands}/bootstrap.md +0 -0
  118. /package/{commands → merged-commands}/brainstorm/fast.md +0 -0
  119. /package/{commands → merged-commands}/brainstorm/hard.md +0 -0
  120. /package/{commands-claudekit → merged-commands}/brainstorm.md +0 -0
  121. /package/{commands-claudekit → merged-commands}/ck-help.md +0 -0
  122. /package/{commands-claudekit → merged-commands}/code/auto.md +0 -0
  123. /package/{commands → merged-commands}/code/fast.md +0 -0
  124. /package/{commands → merged-commands}/code/hard.md +0 -0
  125. /package/{commands-claudekit → merged-commands}/code/no-test.md +0 -0
  126. /package/{commands-claudekit → merged-commands}/code/parallel.md +0 -0
  127. /package/{commands-claudekit → merged-commands}/code.md +0 -0
  128. /package/{commands-claudekit → merged-commands}/coding-level.md +0 -0
  129. /package/{commands-claudekit → merged-commands}/content/cro.md +0 -0
  130. /package/{commands-claudekit → merged-commands}/content/enhance.md +0 -0
  131. /package/{commands-claudekit → merged-commands}/content/fast.md +0 -0
  132. /package/{commands-claudekit → merged-commands}/content/good.md +0 -0
  133. /package/{commands-claudekit → merged-commands}/cook/auto/fast.md +0 -0
  134. /package/{commands-claudekit → merged-commands}/cook/auto/parallel.md +0 -0
  135. /package/{commands-claudekit → merged-commands}/cook/auto.md +0 -0
  136. /package/{commands → merged-commands}/cook/fast.md +0 -0
  137. /package/{commands → merged-commands}/cook/hard.md +0 -0
  138. /package/{commands-claudekit → merged-commands}/cook.md +0 -0
  139. /package/{commands → merged-commands}/debug/fast.md +0 -0
  140. /package/{commands → merged-commands}/debug/hard.md +0 -0
  141. /package/{commands-claudekit → merged-commands}/debug.md +0 -0
  142. /package/{commands → merged-commands}/deploy/check.md +0 -0
  143. /package/{commands → merged-commands}/deploy/preview.md +0 -0
  144. /package/{commands → merged-commands}/deploy/production.md +0 -0
  145. /package/{commands → merged-commands}/deploy/rollback.md +0 -0
  146. /package/{commands → merged-commands}/deploy.md +0 -0
  147. /package/{commands-claudekit → merged-commands}/design/3d.md +0 -0
  148. /package/{commands-claudekit → merged-commands}/design/describe.md +0 -0
  149. /package/{commands-claudekit → merged-commands}/design/fast.md +0 -0
  150. /package/{commands-claudekit → merged-commands}/design/good.md +0 -0
  151. /package/{commands → merged-commands}/design/hard.md +0 -0
  152. /package/{commands-claudekit → merged-commands}/design/screenshot.md +0 -0
  153. /package/{commands-claudekit → merged-commands}/design/video.md +0 -0
  154. /package/{commands → merged-commands}/design.md +0 -0
  155. /package/{commands → merged-commands}/docs/audit.md +0 -0
  156. /package/{commands → merged-commands}/docs/business.md +0 -0
  157. /package/{commands → merged-commands}/docs/core.md +0 -0
  158. /package/{commands-claudekit → merged-commands}/docs/init.md +0 -0
  159. /package/{commands-claudekit → merged-commands}/docs/summarize.md +0 -0
  160. /package/{commands-claudekit → merged-commands}/docs/update.md +0 -0
  161. /package/{commands → merged-commands}/docs.md +0 -0
  162. /package/{commands-claudekit → merged-commands}/fix/ci.md +0 -0
  163. /package/{commands-claudekit → merged-commands}/fix/fast.md +0 -0
  164. /package/{commands-claudekit → merged-commands}/fix/hard.md +0 -0
  165. /package/{commands-claudekit → merged-commands}/fix/logs.md +0 -0
  166. /package/{commands-claudekit → merged-commands}/fix/parallel.md +0 -0
  167. /package/{commands-claudekit → merged-commands}/fix/test.md +0 -0
  168. /package/{commands-claudekit → merged-commands}/fix/types.md +0 -0
  169. /package/{commands-claudekit → merged-commands}/fix/ui.md +0 -0
  170. /package/{commands-claudekit → merged-commands}/fix.md +0 -0
  171. /package/{commands-claudekit → merged-commands}/git/cm.md +0 -0
  172. /package/{commands-claudekit → merged-commands}/git/cp.md +0 -0
  173. /package/{commands-claudekit → merged-commands}/git/merge.md +0 -0
  174. /package/{commands-claudekit → merged-commands}/git/pr.md +0 -0
  175. /package/{commands-claudekit → merged-commands}/integrate/polar.md +0 -0
  176. /package/{commands-claudekit → merged-commands}/integrate/sepay.md +0 -0
  177. /package/{commands-claudekit → merged-commands}/journal.md +0 -0
  178. /package/{commands-claudekit → merged-commands}/kanban.md +0 -0
  179. /package/{commands-claudekit → merged-commands}/plan/archive.md +0 -0
  180. /package/{commands-claudekit → merged-commands}/plan/ci.md +0 -0
  181. /package/{commands-claudekit → merged-commands}/plan/cro.md +0 -0
  182. /package/{commands-claudekit → merged-commands}/plan/fast.md +0 -0
  183. /package/{commands-claudekit → merged-commands}/plan/hard.md +0 -0
  184. /package/{commands-claudekit → merged-commands}/plan/parallel.md +0 -0
  185. /package/{commands-claudekit → merged-commands}/plan/two.md +0 -0
  186. /package/{commands-claudekit → merged-commands}/plan/validate.md +0 -0
  187. /package/{commands-claudekit → merged-commands}/plan.md +0 -0
  188. /package/{commands-claudekit → merged-commands}/preview.md +0 -0
  189. /package/{commands-claudekit → merged-commands}/review/codebase/parallel.md +0 -0
  190. /package/{commands-claudekit → merged-commands}/review/codebase.md +0 -0
  191. /package/{commands → merged-commands}/review/fast.md +0 -0
  192. /package/{commands → merged-commands}/review/hard.md +0 -0
  193. /package/{commands → merged-commands}/review.md +0 -0
  194. /package/{commands-claudekit → merged-commands}/scout/ext.md +0 -0
  195. /package/{commands-claudekit → merged-commands}/scout.md +0 -0
  196. /package/{commands-claudekit → merged-commands}/skill/add.md +0 -0
  197. /package/{commands-claudekit → merged-commands}/skill/create.md +0 -0
  198. /package/{commands-claudekit → merged-commands}/skill/fix-logs.md +0 -0
  199. /package/{commands-claudekit → merged-commands}/skill/optimize/auto.md +0 -0
  200. /package/{commands-claudekit → merged-commands}/skill/optimize.md +0 -0
  201. /package/{commands-claudekit → merged-commands}/skill/plan.md +0 -0
  202. /package/{commands-claudekit → merged-commands}/skill/update.md +0 -0
  203. /package/{commands → merged-commands}/test/fast.md +0 -0
  204. /package/{commands → merged-commands}/test/hard.md +0 -0
  205. /package/{commands-claudekit → merged-commands}/test/ui.md +0 -0
  206. /package/{commands-claudekit → merged-commands}/test.md +0 -0
  207. /package/{commands-claudekit → merged-commands}/use-mcp.md +0 -0
  208. /package/{commands-claudekit → merged-commands}/watzup.md +0 -0
  209. /package/{commands-claudekit → merged-commands}/worktree.md +0 -0
  210. /package/{rules → templates/dart/rules}/dart/best-practices/SKILL.md +0 -0
  211. /package/{rules → templates/dart/rules}/dart/language/SKILL.md +0 -0
  212. /package/{rules → templates/dart/rules}/dart/tooling/SKILL.md +0 -0
  213. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/SKILL.md +0 -0
  214. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/REFERENCE.md +0 -0
  215. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/router-config.md +0 -0
  216. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/SKILL.md +0 -0
  217. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/REFERENCE.md +0 -0
  218. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/auth-bloc-example.md +0 -0
  219. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/equatable-usage.md +0 -0
  220. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/property-based-state.md +0 -0
  221. /package/{rules → templates/flutter/rules}/flutter/bloc.rule.md +0 -0
  222. /package/{rules → templates/flutter/rules}/flutter/cicd/SKILL.md +0 -0
  223. /package/{rules → templates/flutter/rules}/flutter/cicd/references/advanced-workflow.md +0 -0
  224. /package/{rules → templates/flutter/rules}/flutter/cicd/references/fastlane.md +0 -0
  225. /package/{rules → templates/flutter/rules}/flutter/cicd/references/github-actions.md +0 -0
  226. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/SKILL.md +0 -0
  227. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/REFERENCE.md +0 -0
  228. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/modules.md +0 -0
  229. /package/{rules → templates/flutter/rules}/flutter/error-handling/SKILL.md +0 -0
  230. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/REFERENCE.md +0 -0
  231. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/error-mapping.md +0 -0
  232. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/SKILL.md +0 -0
  233. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/REFERENCE.md +0 -0
  234. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/folder-structure.md +0 -0
  235. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/SKILL.md +0 -0
  236. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/app-pages.md +0 -0
  237. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/middleware-example.md +0 -0
  238. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/SKILL.md +0 -0
  239. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/binding-example.md +0 -0
  240. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/reactive-vs-simple.md +0 -0
  241. /package/{rules → templates/flutter/rules}/flutter/go-router-navigation/SKILL.md +0 -0
  242. /package/{rules → templates/flutter/rules}/flutter/idiomatic-flutter/SKILL.md +0 -0
  243. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/SKILL.md +0 -0
  244. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/REFERENCE.md +0 -0
  245. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/repository-mapping.md +0 -0
  246. /package/{rules → templates/flutter/rules}/flutter/localization/SKILL.md +0 -0
  247. /package/{rules → templates/flutter/rules}/flutter/localization/references/REFERENCE.md +0 -0
  248. /package/{rules → templates/flutter/rules}/flutter/localization/references/sheet-loader.md +0 -0
  249. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/SKILL.md +0 -0
  250. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/references/on-generate-route.md +0 -0
  251. /package/{rules → templates/flutter/rules}/flutter/performance/SKILL.md +0 -0
  252. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/SKILL.md +0 -0
  253. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/REFERENCE.md +0 -0
  254. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/token-refresh.md +0 -0
  255. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/SKILL.md +0 -0
  256. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/architecture.md +0 -0
  257. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/best-practices.md +0 -0
  258. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/testing.md +0 -0
  259. /package/{rules → templates/flutter/rules}/flutter/riverpod.rule.md +0 -0
  260. /package/{rules → templates/flutter/rules}/flutter/security/SKILL.md +0 -0
  261. /package/{rules → templates/flutter/rules}/flutter/security/references/REFERENCE.md +0 -0
  262. /package/{rules → templates/flutter/rules}/flutter/security/references/network-security.md +0 -0
  263. /package/{rules → templates/flutter/rules}/flutter/testing/SKILL.md +0 -0
  264. /package/{rules → templates/flutter/rules}/flutter/testing/references/REFERENCE.md +0 -0
  265. /package/{rules → templates/flutter/rules}/flutter/testing/references/bloc-testing.md +0 -0
  266. /package/{rules → templates/flutter/rules}/flutter/testing/references/integration-testing.md +0 -0
  267. /package/{rules → templates/flutter/rules}/flutter/testing/references/robot-pattern.md +0 -0
  268. /package/{rules → templates/flutter/rules}/flutter/testing/references/unit-testing.md +0 -0
  269. /package/{rules → templates/flutter/rules}/flutter/testing/references/widget-testing.md +0 -0
  270. /package/{rules → templates/flutter/rules}/flutter/widgets/SKILL.md +0 -0
  271. /package/{rules → templates/golang/rules}/golang/chi-router/SKILL.md +0 -0
  272. /package/{rules → templates/golang/rules}/golang/chi-router/references/REFERENCE.md +0 -0
  273. /package/{rules → templates/golang/rules}/golang/chi-router/references/routing-patterns.md +0 -0
  274. /package/{rules → templates/golang/rules}/golang/cobra-cli/SKILL.md +0 -0
  275. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/REFERENCE.md +0 -0
  276. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/command-patterns.md +0 -0
  277. /package/{rules → templates/golang/rules}/golang/core/SKILL.md +0 -0
  278. /package/{rules → templates/golang/rules}/golang/core/references/REFERENCE.md +0 -0
  279. /package/{rules → templates/golang/rules}/golang/core/references/concurrency-patterns.md +0 -0
  280. /package/{rules → templates/golang/rules}/golang/core/references/error-handling.md +0 -0
  281. /package/{rules → templates/golang/rules}/golang/echo-framework/SKILL.md +0 -0
  282. /package/{rules → templates/golang/rules}/golang/echo-framework/references/REFERENCE.md +0 -0
  283. /package/{rules → templates/golang/rules}/golang/echo-framework/references/middleware-patterns.md +0 -0
  284. /package/{rules → templates/golang/rules}/golang/echo-framework/references/routing-patterns.md +0 -0
  285. /package/{rules → templates/golang/rules}/golang/ent-orm/SKILL.md +0 -0
  286. /package/{rules → templates/golang/rules}/golang/ent-orm/references/REFERENCE.md +0 -0
  287. /package/{rules → templates/golang/rules}/golang/ent-orm/references/schema-patterns.md +0 -0
  288. /package/{rules → templates/golang/rules}/golang/fiber-framework/SKILL.md +0 -0
  289. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/REFERENCE.md +0 -0
  290. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/routing-patterns.md +0 -0
  291. /package/{rules → templates/golang/rules}/golang/gin-framework/SKILL.md +0 -0
  292. /package/{rules → templates/golang/rules}/golang/gin-framework/references/REFERENCE.md +0 -0
  293. /package/{rules → templates/golang/rules}/golang/gin-framework/references/middleware-patterns.md +0 -0
  294. /package/{rules → templates/golang/rules}/golang/gorm-orm/SKILL.md +0 -0
  295. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/REFERENCE.md +0 -0
  296. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/model-definitions.md +0 -0
  297. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/query-patterns.md +0 -0
  298. /package/{rules → templates/golang/rules}/golang/grpc/SKILL.md +0 -0
  299. /package/{rules → templates/golang/rules}/golang/grpc/references/REFERENCE.md +0 -0
  300. /package/{rules → templates/golang/rules}/golang/grpc/references/service-patterns.md +0 -0
  301. /package/{rules → templates/golang/rules}/golang/testify/SKILL.md +0 -0
  302. /package/{rules → templates/golang/rules}/golang/testify/references/REFERENCE.md +0 -0
  303. /package/{rules → templates/golang/rules}/golang/testify/references/assert-patterns.md +0 -0
  304. /package/{rules → templates/golang/rules}/golang/validator/SKILL.md +0 -0
  305. /package/{rules → templates/golang/rules}/golang/validator/references/REFERENCE.md +0 -0
  306. /package/{rules → templates/golang/rules}/golang/validator/references/validation-tags.md +0 -0
  307. /package/{rules → templates/golang/rules}/golang/viper-config/SKILL.md +0 -0
  308. /package/{rules → templates/golang/rules}/golang/viper-config/references/REFERENCE.md +0 -0
  309. /package/{rules → templates/golang/rules}/golang/viper-config/references/config-loading.md +0 -0
  310. /package/{rules → templates/golang/rules}/golang/wire-di/SKILL.md +0 -0
  311. /package/{rules → templates/golang/rules}/golang/wire-di/references/REFERENCE.md +0 -0
  312. /package/{rules → templates/golang/rules}/golang/wire-di/references/provider-patterns.md +0 -0
  313. /package/{rules → templates/golang/rules}/golang/zap-logging/SKILL.md +0 -0
  314. /package/{rules → templates/golang/rules}/golang/zap-logging/references/REFERENCE.md +0 -0
  315. /package/{rules → templates/golang/rules}/golang/zap-logging/references/logger-config.md +0 -0
  316. /package/{rules → templates/java/rules}/java/build-gradle/SKILL.md +0 -0
  317. /package/{rules → templates/java/rules}/java/build-gradle/references/REFERENCE.md +0 -0
  318. /package/{rules → templates/java/rules}/java/build-gradle/references/kotlin-dsl.md +0 -0
  319. /package/{rules → templates/java/rules}/java/build-gradle/references/task-configuration.md +0 -0
  320. /package/{rules → templates/java/rules}/java/build-maven/SKILL.md +0 -0
  321. /package/{rules → templates/java/rules}/java/build-maven/references/REFERENCE.md +0 -0
  322. /package/{rules → templates/java/rules}/java/build-maven/references/dependency-management.md +0 -0
  323. /package/{rules → templates/java/rules}/java/build-maven/references/lifecycle-phases.md +0 -0
  324. /package/{rules → templates/java/rules}/java/graalvm-native/SKILL.md +0 -0
  325. /package/{rules → templates/java/rules}/java/graalvm-native/references/REFERENCE.md +0 -0
  326. /package/{rules → templates/java/rules}/java/java-collections-streams/SKILL.md +0 -0
  327. /package/{rules → templates/java/rules}/java/java-collections-streams/references/REFERENCE.md +0 -0
  328. /package/{rules → templates/java/rules}/java/java-collections-streams/references/collectors-patterns.md +0 -0
  329. /package/{rules → templates/java/rules}/java/java-collections-streams/references/stream-pipelines.md +0 -0
  330. /package/{rules → templates/java/rules}/java/java-concurrency/SKILL.md +0 -0
  331. /package/{rules → templates/java/rules}/java/java-concurrency/references/REFERENCE.md +0 -0
  332. /package/{rules → templates/java/rules}/java/java-concurrency/references/completable-future.md +0 -0
  333. /package/{rules → templates/java/rules}/java/java-concurrency/references/executor-patterns.md +0 -0
  334. /package/{rules → templates/java/rules}/java/java-concurrency/references/virtual-threads.md +0 -0
  335. /package/{rules → templates/java/rules}/java/java-core-language/SKILL.md +0 -0
  336. /package/{rules → templates/java/rules}/java/java-core-language/references/REFERENCE.md +0 -0
  337. /package/{rules → templates/java/rules}/java/java-core-language/references/jvm-memory-model.md +0 -0
  338. /package/{rules → templates/java/rules}/java/java-core-language/references/modern-java-features.md +0 -0
  339. /package/{rules → templates/java/rules}/java/java-project-structure/SKILL.md +0 -0
  340. /package/{rules → templates/java/rules}/java/java-project-structure/references/REFERENCE.md +0 -0
  341. /package/{rules → templates/java/rules}/java/java-project-structure/references/maven-project-layout.md +0 -0
  342. /package/{rules → templates/java/rules}/java/java-project-structure/references/module-system.md +0 -0
  343. /package/{rules → templates/java/rules}/java/micronaut-core/SKILL.md +0 -0
  344. /package/{rules → templates/java/rules}/java/micronaut-core/references/REFERENCE.md +0 -0
  345. /package/{rules → templates/java/rules}/java/micronaut-reactive/SKILL.md +0 -0
  346. /package/{rules → templates/java/rules}/java/micronaut-reactive/references/REFERENCE.md +0 -0
  347. /package/{rules → templates/java/rules}/java/quarkus-core/SKILL.md +0 -0
  348. /package/{rules → templates/java/rules}/java/quarkus-core/references/REFERENCE.md +0 -0
  349. /package/{rules → templates/java/rules}/java/quarkus-reactive/SKILL.md +0 -0
  350. /package/{rules → templates/java/rules}/java/quarkus-reactive/references/REFERENCE.md +0 -0
  351. /package/{rules → templates/java/rules}/java/spring-batch/SKILL.md +0 -0
  352. /package/{rules → templates/java/rules}/java/spring-batch/references/REFERENCE.md +0 -0
  353. /package/{rules → templates/java/rules}/java/spring-boot-architecture/SKILL.md +0 -0
  354. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/REFERENCE.md +0 -0
  355. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/auto-configuration.md +0 -0
  356. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/configuration-properties.md +0 -0
  357. /package/{rules → templates/java/rules}/java/spring-boot-web/SKILL.md +0 -0
  358. /package/{rules → templates/java/rules}/java/spring-boot-web/references/REFERENCE.md +0 -0
  359. /package/{rules → templates/java/rules}/java/spring-cloud/SKILL.md +0 -0
  360. /package/{rules → templates/java/rules}/java/spring-cloud/references/REFERENCE.md +0 -0
  361. /package/{rules → templates/java/rules}/java/spring-data-jpa/SKILL.md +0 -0
  362. /package/{rules → templates/java/rules}/java/spring-data-jpa/references/REFERENCE.md +0 -0
  363. /package/{rules → templates/java/rules}/java/spring-security/SKILL.md +0 -0
  364. /package/{rules → templates/java/rules}/java/spring-security/references/REFERENCE.md +0 -0
  365. /package/{rules → templates/java/rules}/java/spring-security/references/jwt-auth-flow.md +0 -0
  366. /package/{rules → templates/java/rules}/java/testing-junit-mockito/SKILL.md +0 -0
  367. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/REFERENCE.md +0 -0
  368. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/junit5-patterns.md +0 -0
  369. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/mockito-patterns.md +0 -0
  370. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/spring-boot-testing.md +0 -0
  371. /package/{rules → templates/javascript/rules}/javascript/best-practices/SKILL.md +0 -0
  372. /package/{rules → templates/javascript/rules}/javascript/best-practices/references/REFERENCE.md +0 -0
  373. /package/{rules → templates/javascript/rules}/javascript/language/SKILL.md +0 -0
  374. /package/{rules → templates/javascript/rules}/javascript/language/references/REFERENCE.md +0 -0
  375. /package/{rules → templates/javascript/rules}/javascript/tooling/SKILL.md +0 -0
  376. /package/{rules → templates/javascript/rules}/javascript/tooling/references/REFERENCE.md +0 -0
  377. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/SKILL.md +0 -0
  378. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/references/pagination-wrapper.md +0 -0
  379. /package/{rules → templates/nestjs/rules}/nestjs/architecture/SKILL.md +0 -0
  380. /package/{rules → templates/nestjs/rules}/nestjs/architecture/references/dynamic-module.md +0 -0
  381. /package/{rules → templates/nestjs/rules}/nestjs/caching/SKILL.md +0 -0
  382. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/REFERENCE.md +0 -0
  383. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/cache-patterns.md +0 -0
  384. /package/{rules → templates/nestjs/rules}/nestjs/configuration/SKILL.md +0 -0
  385. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/REFERENCE.md +0 -0
  386. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/config-patterns.md +0 -0
  387. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/SKILL.md +0 -0
  388. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/REFERENCE.md +0 -0
  389. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/controller-patterns.md +0 -0
  390. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/service-patterns.md +0 -0
  391. /package/{rules → templates/nestjs/rules}/nestjs/database/SKILL.md +0 -0
  392. /package/{rules → templates/nestjs/rules}/nestjs/database/references/REFERENCE.md +0 -0
  393. /package/{rules → templates/nestjs/rules}/nestjs/database/references/typeorm-patterns.md +0 -0
  394. /package/{rules → templates/nestjs/rules}/nestjs/deployment/SKILL.md +0 -0
  395. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/REFERENCE.md +0 -0
  396. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/deployment-patterns.md +0 -0
  397. /package/{rules → templates/nestjs/rules}/nestjs/documentation/SKILL.md +0 -0
  398. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/REFERENCE.md +0 -0
  399. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/swagger-patterns.md +0 -0
  400. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/SKILL.md +0 -0
  401. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/REFERENCE.md +0 -0
  402. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/exception-filters.md +0 -0
  403. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/SKILL.md +0 -0
  404. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/REFERENCE.md +0 -0
  405. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/upload-patterns.md +0 -0
  406. /package/{rules → templates/nestjs/rules}/nestjs/observability/SKILL.md +0 -0
  407. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/REFERENCE.md +0 -0
  408. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/logging-metrics.md +0 -0
  409. /package/{rules → templates/nestjs/rules}/nestjs/performance/SKILL.md +0 -0
  410. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/REFERENCE.md +0 -0
  411. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/performance-patterns.md +0 -0
  412. /package/{rules → templates/nestjs/rules}/nestjs/real-time/SKILL.md +0 -0
  413. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/REFERENCE.md +0 -0
  414. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/websocket-patterns.md +0 -0
  415. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/SKILL.md +0 -0
  416. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/REFERENCE.md +0 -0
  417. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/scheduling-patterns.md +0 -0
  418. /package/{rules → templates/nestjs/rules}/nestjs/search/SKILL.md +0 -0
  419. /package/{rules → templates/nestjs/rules}/nestjs/search/references/REFERENCE.md +0 -0
  420. /package/{rules → templates/nestjs/rules}/nestjs/search/references/search-patterns.md +0 -0
  421. /package/{rules → templates/nestjs/rules}/nestjs/security/SKILL.md +0 -0
  422. /package/{rules → templates/nestjs/rules}/nestjs/security/references/REFERENCE.md +0 -0
  423. /package/{rules → templates/nestjs/rules}/nestjs/security/references/authentication.md +0 -0
  424. /package/{rules → templates/nestjs/rules}/nestjs/testing/SKILL.md +0 -0
  425. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/REFERENCE.md +0 -0
  426. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/unit-testing.md +0 -0
  427. /package/{rules → templates/nestjs/rules}/nestjs/transport/SKILL.md +0 -0
  428. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/REFERENCE.md +0 -0
  429. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/microservices-patterns.md +0 -0
  430. /package/{rules → templates/nextjs/rules}/nextjs/app-router/SKILL.md +0 -0
  431. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/REFERENCE.md +0 -0
  432. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/routing-patterns.md +0 -0
  433. /package/{rules → templates/nextjs/rules}/nextjs/architecture/SKILL.md +0 -0
  434. /package/{rules → templates/nextjs/rules}/nextjs/architecture/references/fsd-structure.md +0 -0
  435. /package/{rules → templates/nextjs/rules}/nextjs/authentication/SKILL.md +0 -0
  436. /package/{rules → templates/nextjs/rules}/nextjs/authentication/references/auth-implementation.md +0 -0
  437. /package/{rules → templates/nextjs/rules}/nextjs/caching/SKILL.md +0 -0
  438. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/REFERENCE.md +0 -0
  439. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/cache-strategies.md +0 -0
  440. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/SKILL.md +0 -0
  441. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/references/patterns.md +0 -0
  442. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/SKILL.md +0 -0
  443. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/REFERENCE.md +0 -0
  444. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/fetch-patterns.md +0 -0
  445. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/SKILL.md +0 -0
  446. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/REFERENCE.md +0 -0
  447. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/i18n-patterns.md +0 -0
  448. /package/{rules → templates/nextjs/rules}/nextjs/optimization/SKILL.md +0 -0
  449. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/REFERENCE.md +0 -0
  450. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/optimization-patterns.md +0 -0
  451. /package/{rules → templates/nextjs/rules}/nextjs/rendering/SKILL.md +0 -0
  452. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/REFERENCE.md +0 -0
  453. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/rendering-modes.md +0 -0
  454. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/SKILL.md +0 -0
  455. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/REFERENCE.md +0 -0
  456. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/action-patterns.md +0 -0
  457. /package/{rules → templates/nextjs/rules}/nextjs/server-components/SKILL.md +0 -0
  458. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/REFERENCE.md +0 -0
  459. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/component-patterns.md +0 -0
  460. /package/{rules → templates/nextjs/rules}/nextjs/state-management/SKILL.md +0 -0
  461. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/REFERENCE.md +0 -0
  462. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/state-patterns.md +0 -0
  463. /package/{rules → templates/nextjs/rules}/nextjs/styling/SKILL.md +0 -0
  464. /package/{rules → templates/nextjs/rules}/nextjs/styling/references/implementation.md +0 -0
  465. /package/{rules → templates/react/rules}/react/component-patterns/SKILL.md +0 -0
  466. /package/{rules → templates/react/rules}/react/component-patterns/references/REFERENCE.md +0 -0
  467. /package/{rules → templates/react/rules}/react/hooks/SKILL.md +0 -0
  468. /package/{rules → templates/react/rules}/react/hooks/references/REFERENCE.md +0 -0
  469. /package/{rules → templates/react/rules}/react/hooks.rule.md +0 -0
  470. /package/{rules → templates/react/rules}/react/performance/SKILL.md +0 -0
  471. /package/{rules → templates/react/rules}/react/performance/references/REFERENCE.md +0 -0
  472. /package/{rules → templates/react/rules}/react/security/SKILL.md +0 -0
  473. /package/{rules → templates/react/rules}/react/security/references/REFERENCE.md +0 -0
  474. /package/{rules → templates/react/rules}/react/state-management/SKILL.md +0 -0
  475. /package/{rules → templates/react/rules}/react/state-management/references/REFERENCE.md +0 -0
  476. /package/{rules → templates/react/rules}/react/testing/SKILL.md +0 -0
  477. /package/{rules → templates/react/rules}/react/testing/references/REFERENCE.md +0 -0
  478. /package/{rules → templates/react/rules}/react/tooling/SKILL.md +0 -0
  479. /package/{rules → templates/react/rules}/react/typescript/SKILL.md +0 -0
  480. /package/{rules → templates/rust/rules}/rust/actix-web/SKILL.md +0 -0
  481. /package/{rules → templates/rust/rules}/rust/actix-web/references/REFERENCE.md +0 -0
  482. /package/{rules → templates/rust/rules}/rust/actix-web/references/handler-patterns.md +0 -0
  483. /package/{rules → templates/rust/rules}/rust/async-graphql/SKILL.md +0 -0
  484. /package/{rules → templates/rust/rules}/rust/async-graphql/references/REFERENCE.md +0 -0
  485. /package/{rules → templates/rust/rules}/rust/async-graphql/references/schema-patterns.md +0 -0
  486. /package/{rules → templates/rust/rules}/rust/axum/SKILL.md +0 -0
  487. /package/{rules → templates/rust/rules}/rust/axum/references/REFERENCE.md +0 -0
  488. /package/{rules → templates/rust/rules}/rust/axum/references/handler-patterns.md +0 -0
  489. /package/{rules → templates/rust/rules}/rust/bevy/SKILL.md +0 -0
  490. /package/{rules → templates/rust/rules}/rust/bevy/references/REFERENCE.md +0 -0
  491. /package/{rules → templates/rust/rules}/rust/bevy/references/ecs-patterns.md +0 -0
  492. /package/{rules → templates/rust/rules}/rust/clap/SKILL.md +0 -0
  493. /package/{rules → templates/rust/rules}/rust/clap/references/REFERENCE.md +0 -0
  494. /package/{rules → templates/rust/rules}/rust/clap/references/derive-patterns.md +0 -0
  495. /package/{rules → templates/rust/rules}/rust/core/SKILL.md +0 -0
  496. /package/{rules → templates/rust/rules}/rust/core/references/REFERENCE.md +0 -0
  497. /package/{rules → templates/rust/rules}/rust/core/references/error-handling.md +0 -0
  498. /package/{rules → templates/rust/rules}/rust/diesel-orm/SKILL.md +0 -0
  499. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/REFERENCE.md +0 -0
  500. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/schema-patterns.md +0 -0
  501. /package/{rules → templates/rust/rules}/rust/rocket/SKILL.md +0 -0
  502. /package/{rules → templates/rust/rules}/rust/rocket/references/REFERENCE.md +0 -0
  503. /package/{rules → templates/rust/rules}/rust/rocket/references/handler-patterns.md +0 -0
  504. /package/{rules → templates/rust/rules}/rust/sea-orm/SKILL.md +0 -0
  505. /package/{rules → templates/rust/rules}/rust/sea-orm/references/REFERENCE.md +0 -0
  506. /package/{rules → templates/rust/rules}/rust/sea-orm/references/entity-patterns.md +0 -0
  507. /package/{rules → templates/rust/rules}/rust/serde-serialization/SKILL.md +0 -0
  508. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/REFERENCE.md +0 -0
  509. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/serialization-patterns.md +0 -0
  510. /package/{rules → templates/rust/rules}/rust/sqlx-database/SKILL.md +0 -0
  511. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/REFERENCE.md +0 -0
  512. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/query-patterns.md +0 -0
  513. /package/{rules → templates/rust/rules}/rust/tauri/SKILL.md +0 -0
  514. /package/{rules → templates/rust/rules}/rust/tauri/references/REFERENCE.md +0 -0
  515. /package/{rules → templates/rust/rules}/rust/tauri/references/command-patterns.md +0 -0
  516. /package/{rules → templates/rust/rules}/rust/tokio-runtime/SKILL.md +0 -0
  517. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/REFERENCE.md +0 -0
  518. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/async-patterns.md +0 -0
  519. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/synchronization.md +0 -0
  520. /package/{rules → templates/rust/rules}/rust/tonic/SKILL.md +0 -0
  521. /package/{rules → templates/rust/rules}/rust/tonic/references/REFERENCE.md +0 -0
  522. /package/{rules → templates/rust/rules}/rust/tonic/references/service-patterns.md +0 -0
  523. /package/{rules → templates/rust/rules}/rust/tracing/SKILL.md +0 -0
  524. /package/{rules → templates/rust/rules}/rust/tracing/references/REFERENCE.md +0 -0
  525. /package/{rules → templates/rust/rules}/rust/tracing/references/instrumentation.md +0 -0
  526. /package/{rules → templates/typescript/rules}/typescript/best-practices/SKILL.md +0 -0
  527. /package/{rules → templates/typescript/rules}/typescript/best-practices/references/REFERENCE.md +0 -0
  528. /package/{rules → templates/typescript/rules}/typescript/language/SKILL.md +0 -0
  529. /package/{rules → templates/typescript/rules}/typescript/language/references/REFERENCE.md +0 -0
  530. /package/{rules → templates/typescript/rules}/typescript/patterns.rule.md +0 -0
  531. /package/{rules → templates/typescript/rules}/typescript/security/SKILL.md +0 -0
  532. /package/{rules → templates/typescript/rules}/typescript/security/references/REFERENCE.md +0 -0
  533. /package/{rules → templates/typescript/rules}/typescript/tooling/SKILL.md +0 -0
  534. /package/{rules → templates/typescript/rules}/typescript/tooling/references/REFERENCE.md +0 -0
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+
4
+ /**
5
+ * Transcript Parser - Extract tool/agent/todo state from session JSONL
6
+ * @module transcript-parser
7
+ */
8
+
9
+ const fs = require('fs');
10
+ const readline = require('readline');
11
+
12
+ /**
13
+ * Parse transcript JSONL file
14
+ * @param {string} transcriptPath - Path to transcript file
15
+ * @returns {Promise<TranscriptData>}
16
+ */
17
+ async function parseTranscript(transcriptPath) {
18
+ const result = {
19
+ tools: [],
20
+ agents: [],
21
+ todos: [],
22
+ sessionStart: null
23
+ };
24
+
25
+ if (!transcriptPath || !fs.existsSync(transcriptPath)) {
26
+ return result;
27
+ }
28
+
29
+ const toolMap = new Map();
30
+ const agentMap = new Map();
31
+ let latestTodos = [];
32
+
33
+ try {
34
+ const fileStream = fs.createReadStream(transcriptPath);
35
+ const rl = readline.createInterface({
36
+ input: fileStream,
37
+ crlfDelay: Infinity
38
+ });
39
+
40
+ for await (const line of rl) {
41
+ if (!line.trim()) continue;
42
+
43
+ try {
44
+ const entry = JSON.parse(line);
45
+ processEntry(entry, toolMap, agentMap, latestTodos, result);
46
+ } catch {
47
+ // Skip malformed lines
48
+ }
49
+ }
50
+ } catch {
51
+ // Return partial results on error
52
+ }
53
+
54
+ result.tools = Array.from(toolMap.values()).slice(-20);
55
+ result.agents = Array.from(agentMap.values()).slice(-10);
56
+ result.todos = latestTodos;
57
+
58
+ return result;
59
+ }
60
+
61
+ /**
62
+ * Process single JSONL entry
63
+ * @param {Object} entry - Parsed JSON line
64
+ * @param {Map} toolMap - Tool tracking map
65
+ * @param {Map} agentMap - Agent tracking map
66
+ * @param {Array} latestTodos - Latest todo array reference
67
+ * @param {Object} result - Result object
68
+ */
69
+ function processEntry(entry, toolMap, agentMap, latestTodos, result) {
70
+ const timestamp = entry.timestamp ? new Date(entry.timestamp) : new Date();
71
+
72
+ // Track session start
73
+ if (!result.sessionStart && entry.timestamp) {
74
+ result.sessionStart = timestamp;
75
+ }
76
+
77
+ const content = entry.message?.content;
78
+ if (!content || !Array.isArray(content)) return;
79
+
80
+ for (const block of content) {
81
+ // Handle tool_use blocks
82
+ if (block.type === 'tool_use' && block.id && block.name) {
83
+ if (block.name === 'Task') {
84
+ // Agent spawn
85
+ agentMap.set(block.id, {
86
+ id: block.id,
87
+ type: block.input?.subagent_type ?? 'unknown',
88
+ model: block.input?.model ?? null,
89
+ description: block.input?.description ?? null,
90
+ status: 'running',
91
+ startTime: timestamp,
92
+ endTime: null
93
+ });
94
+ } else if (block.name === 'TodoWrite') {
95
+ // Replace todo array
96
+ if (block.input?.todos && Array.isArray(block.input.todos)) {
97
+ latestTodos.length = 0;
98
+ latestTodos.push(...block.input.todos);
99
+ }
100
+ } else {
101
+ // Regular tool
102
+ toolMap.set(block.id, {
103
+ id: block.id,
104
+ name: block.name,
105
+ target: extractTarget(block.name, block.input),
106
+ status: 'running',
107
+ startTime: timestamp,
108
+ endTime: null
109
+ });
110
+ }
111
+ }
112
+
113
+ // Handle tool_result blocks
114
+ if (block.type === 'tool_result' && block.tool_use_id) {
115
+ const tool = toolMap.get(block.tool_use_id);
116
+ if (tool) {
117
+ tool.status = block.is_error ? 'error' : 'completed';
118
+ tool.endTime = timestamp;
119
+ }
120
+
121
+ const agent = agentMap.get(block.tool_use_id);
122
+ if (agent) {
123
+ agent.status = 'completed';
124
+ agent.endTime = timestamp;
125
+ }
126
+ }
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Extract target from tool input
132
+ * @param {string} toolName - Tool name
133
+ * @param {Object} input - Tool input object
134
+ * @returns {string|null} - Extracted target
135
+ */
136
+ function extractTarget(toolName, input) {
137
+ if (!input) return null;
138
+
139
+ switch (toolName) {
140
+ case 'Read':
141
+ case 'Write':
142
+ case 'Edit':
143
+ return input.file_path ?? input.path ?? null;
144
+
145
+ case 'Glob':
146
+ case 'Grep':
147
+ return input.pattern ?? null;
148
+
149
+ case 'Bash':
150
+ const cmd = input.command;
151
+ if (!cmd) return null;
152
+ return cmd.length > 30 ? cmd.slice(0, 30) + '...' : cmd;
153
+
154
+ default:
155
+ return null;
156
+ }
157
+ }
158
+
159
+ module.exports = {
160
+ parseTranscript,
161
+ // Export for testing
162
+ processEntry,
163
+ extractTarget
164
+ };
@@ -0,0 +1,145 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * privacy-block.cjs - Block access to sensitive files unless user-approved
4
+ *
5
+ * PRIVACY-based blocking (separate from SIZE-based scout-block)
6
+ * Blocks sensitive files. LLM must get user approval and use APPROVED: prefix.
7
+ *
8
+ * Flow:
9
+ * 1. LLM tries: Read ".env" → BLOCKED
10
+ * 2. LLM asks user for permission
11
+ * 3. User approves
12
+ * 4. LLM retries: Read "APPROVED:.env" → ALLOWED
13
+ *
14
+ * Core logic extracted to lib/privacy-checker.cjs for OpenCode plugin reuse.
15
+ */
16
+
17
+ const path = require('path');
18
+
19
+ // Import shared privacy checking logic
20
+ const {
21
+ checkPrivacy,
22
+ isSafeFile,
23
+ isPrivacyBlockDisabled,
24
+ isPrivacySensitive,
25
+ hasApprovalPrefix,
26
+ stripApprovalPrefix,
27
+ extractPaths,
28
+ isSuspiciousPath
29
+ } = require('./lib/privacy-checker.cjs');
30
+
31
+ /**
32
+ * Format block message with approval instructions and JSON marker for AskUserQuestion
33
+ * @param {string} filePath - Blocked file path
34
+ * @returns {string} Formatted block message with JSON marker
35
+ */
36
+ function formatBlockMessage(filePath) {
37
+ const basename = path.basename(filePath);
38
+
39
+ // JSON marker for LLM to parse and use AskUserQuestion tool
40
+ const promptData = {
41
+ type: 'PRIVACY_PROMPT',
42
+ file: filePath,
43
+ basename: basename,
44
+ question: {
45
+ header: 'File Access',
46
+ text: `I need to read "${basename}" which may contain sensitive data (API keys, passwords, tokens). Do you approve?`,
47
+ options: [
48
+ { label: 'Yes, approve access', description: `Allow reading ${basename} this time` },
49
+ { label: 'No, skip this file', description: 'Continue without accessing this file' }
50
+ ]
51
+ }
52
+ };
53
+
54
+ return `
55
+ \x1b[36mNOTE:\x1b[0m This is not an error - this block protects sensitive data.
56
+
57
+ \x1b[33mPRIVACY BLOCK\x1b[0m: Sensitive file access requires user approval
58
+
59
+ \x1b[33mFile:\x1b[0m ${filePath}
60
+
61
+ This file may contain secrets (API keys, passwords, tokens).
62
+
63
+ \x1b[90m@@PRIVACY_PROMPT_START@@\x1b[0m
64
+ ${JSON.stringify(promptData, null, 2)}
65
+ \x1b[90m@@PRIVACY_PROMPT_END@@\x1b[0m
66
+
67
+ \x1b[34mClaude:\x1b[0m Use AskUserQuestion tool with the JSON above, then:
68
+ \x1b[32mIf "Yes":\x1b[0m Use bash to read: cat "${filePath}"
69
+ \x1b[31mIf "No":\x1b[0m Continue without this file.
70
+ `;
71
+ }
72
+
73
+ /**
74
+ * Format approval notice
75
+ * @param {string} filePath - Approved file path
76
+ * @returns {string} Formatted approval notice
77
+ */
78
+ function formatApprovalNotice(filePath) {
79
+ return `\x1b[32m✓\x1b[0m Privacy: User-approved access to ${path.basename(filePath)}`;
80
+ }
81
+
82
+ // Main
83
+ async function main() {
84
+ let input = '';
85
+ for await (const chunk of process.stdin) {
86
+ input += chunk;
87
+ }
88
+
89
+ let hookData;
90
+ try {
91
+ hookData = JSON.parse(input);
92
+ } catch (e) {
93
+ process.exit(0); // Invalid JSON, allow
94
+ }
95
+
96
+ const { tool_input: toolInput, tool_name: toolName } = hookData;
97
+
98
+ // Use shared privacy checker
99
+ const result = checkPrivacy({
100
+ toolName,
101
+ toolInput,
102
+ options: { allowBash: true }
103
+ });
104
+
105
+ // Handle results
106
+ if (result.approved) {
107
+ // User approved - allow with notice
108
+ if (result.suspicious) {
109
+ console.error('\x1b[33mWARN:\x1b[0m Approved path is outside project:', result.filePath);
110
+ }
111
+ console.error(formatApprovalNotice(result.filePath));
112
+ process.exit(0);
113
+ }
114
+
115
+ if (result.isBash) {
116
+ // Bash: warn but don't block - allows "Yes → bash cat" flow
117
+ console.error(`\x1b[33mWARN:\x1b[0m ${result.reason}`);
118
+ process.exit(0);
119
+ }
120
+
121
+ if (result.blocked) {
122
+ // No approval - block
123
+ console.error(formatBlockMessage(result.filePath));
124
+ process.exit(2);
125
+ }
126
+
127
+ process.exit(0); // Allow
128
+ }
129
+
130
+ // Run main only when executed directly (not when required for testing)
131
+ if (require.main === module) {
132
+ main().catch(() => process.exit(0));
133
+ }
134
+
135
+ // Export functions for unit testing
136
+ if (typeof module !== 'undefined') {
137
+ module.exports = {
138
+ isSafeFile,
139
+ isPrivacyBlockDisabled,
140
+ isPrivacySensitive,
141
+ hasApprovalPrefix,
142
+ stripApprovalPrefix,
143
+ extractPaths,
144
+ };
145
+ }
@@ -1,154 +0,0 @@
1
- ---
2
- name: backend-engineer
3
- description: Principal Backend Architect — server-side logic, API design, scalable systems
4
- profile: "backend:execution"
5
- tools: [Read, Grep, Glob, Bash, Write, Edit, list_code_usages, semantic_search]
6
- handoffs: [tester, database-architect, performance-engineer, devops-engineer, frontend-engineer, security-engineer]
7
- version: "1.0"
8
- category: execution
9
- ---
10
-
11
- <!-- 🔒 COGNITIVE ANCHOR — MANDATORY OPERATING SYSTEM -->
12
- > **BINDING**: This file OVERRIDES default AI patterns. Follow Thinking Protocol EXACTLY.
13
- > **EXTRACT**: Core Directive + Constraints + Output Format before proceeding.
14
-
15
- ---
16
-
17
- # 🔧 Backend Engineer
18
-
19
- | Attribute | Value |
20
- | -------------- | ------------------------------------------------------------ |
21
- | **ID** | `agent:backend-engineer` |
22
- | **Role** | Principal Backend Architect |
23
- | **Profile** | `backend:execution` |
24
- | **Reports To** | `tech-lead` |
25
- | **Consults** | `database-architect`, `security-engineer`, `devops-engineer` |
26
- | **Confidence** | 85% (escalate if below) |
27
-
28
- > **CORE DIRECTIVE**: Engineer secure, scalable foundations. Every endpoint is a contract. Every query is a promise. Design for failure, code for clarity.
29
-
30
- **Prime Directive**: UNDERSTAND → DESIGN → IMPLEMENT → VERIFY. Never guess. Never assume.
31
-
32
- ---
33
-
34
- ## ⚡ Skills
35
-
36
- > **MATRIX DISCOVERY**: Skills auto-injected from domain files in `~/.{TOOL}/skills/agent-assistant/matrix-skills/`
37
- > Profile: `backend:execution` | Domains: `backend`, `architecture`, `quality`, `data`, `languages`
38
- ---
39
-
40
- ## 🎯 Expert Mindset
41
-
42
- ```yaml
43
- THINK_LIKE:
44
- - "What can go wrong here?" (defensive programming)
45
- - "How will this scale to 10x load?"
46
- - "Is this secure by default?"
47
- - "Can I test this easily?"
48
-
49
- ALWAYS:
50
- - Validate input at boundaries
51
- - Handle errors explicitly (never swallow)
52
- - Use transactions for multi-step operations
53
- - Log enough to debug, not too much to leak
54
- ```
55
-
56
- ---
57
-
58
- ## 🧠 Thinking Protocol
59
-
60
- ### Step 0: CONTEXT CHECK (MANDATORY)
61
-
62
- ```
63
- 1. CHECK PROJECT DOCS (if ./documents/ exists):
64
- - knowledge-standards.md → Coding standards
65
- - knowledge-architecture.md → Architecture patterns
66
- - knowledge-domain.md → Data models, API contracts
67
- → USE these as constraints for implementation
68
-
69
- 2. CHECK: ./reports/plans/PLAN-{feature}.md exists?
70
- → YES: READ fully, find YOUR tasks, follow EXACTLY
71
- → NO + Complex: STOP → Request plan from tech-lead
72
-
73
- 3. SCOUT codebase:
74
- → Follow existing patterns, don't invent new ones
75
- ```
76
-
77
- ### Step 1: UNDERSTAND THE DOMAIN
78
-
79
- | Domain | Key Concerns |
80
- | ----------- | ----------------------------------------- |
81
- | API | Contracts, validation, versioning, errors |
82
- | Database | Integrity, transactions, indexes, N+1 |
83
- | Auth | Security, token lifecycle, sessions |
84
- | Integration | Retries, timeouts, circuit breakers |
85
-
86
- ### Step 2: DESIGN FIRST
87
-
88
- Before coding:
89
- - Input/Output definition
90
- - Error scenarios and handling
91
- - Happy path + edge cases
92
- - Testing approach
93
-
94
- ### Step 3: IMPLEMENT
95
-
96
- 1. Input validation at entry point (Zod/Joi)
97
- 2. Business logic in service layer
98
- 3. Data access in repository/model
99
- 4. Proper error handling at each layer
100
- 5. Logging for debugging
101
-
102
- ### Step 4: SELF-CHECK
103
-
104
- - [ ] Plan compliance (if plan exists)
105
- - [ ] Error handling comprehensive
106
- - [ ] Input validation at boundaries
107
- - [ ] No hardcoded secrets/config
108
- - [ ] Tests for critical paths
109
-
110
- ---
111
-
112
- ## ⛔ Constraints
113
-
114
- | ❌ NEVER | ✅ ALWAYS |
115
- | ----------------------- | ------------------------- |
116
- | Skip error handling | Validate all external input |
117
- | Hardcode secrets | Use environment variables |
118
- | Trust user input | Sanitize and validate |
119
- | Ship without tests | Test critical paths |
120
- | Ignore existing patterns | Follow codebase conventions |
121
-
122
- ---
123
-
124
- ## 📤 Output Format
125
-
126
- ```markdown
127
- ## Backend Implementation: {Feature}
128
-
129
- ### Changes Made
130
- | File | Change | Purpose |
131
- |------|--------|---------|
132
- | {path} | {what} | {why} |
133
-
134
- ### API Endpoints (if any)
135
- | Method | Path | Purpose |
136
- |--------|------|---------|
137
- | POST | /api/... | {desc} |
138
-
139
- ### Verification
140
- - [ ] Error handling complete
141
- - [ ] Input validation added
142
- - [ ] Plan compliance verified
143
- ```
144
-
145
- ---
146
-
147
- ## 🚨 Stopping Rules
148
-
149
- | Condition | Action |
150
- | ----------------------- | ----------------------------------- |
151
- | Complex feature, no plan | STOP → Request `planner` |
152
- | Security concern | STOP → Escalate to `security-engineer` |
153
- | Database schema change | STOP → Consult `database-architect` |
154
- | < 85% confidence | STOP → Escalate to `tech-lead` |
@@ -1,169 +0,0 @@
1
- ---
2
- name: brainstormer
3
- description: Principal Requirements Architect — requirements discovery, Socratic clarification, ideation
4
- profile: "planning:discovery"
5
- tools: [Read, Grep, Glob, Bash, semantic_search]
6
- handoffs: [planner, researcher, tech-lead, designer]
7
- version: "1.0"
8
- category: research
9
- ---
10
-
11
- <!-- 🔒 COGNITIVE ANCHOR — MANDATORY OPERATING SYSTEM -->
12
- > **BINDING**: This file OVERRIDES default AI patterns. Follow Thinking Protocol EXACTLY.
13
- > **EXTRACT**: Core Directive + Constraints + Output Format before proceeding.
14
-
15
- ---
16
-
17
- # 💡 Brainstormer
18
-
19
- | Attribute | Value |
20
- | ------------- | ---------------------------------- |
21
- | **ID** | `agent:brainstormer` |
22
- | **Role** | Principal Requirements Architect |
23
- | **Profile** | `planning:discovery` |
24
- | **Reports To**| `planner`, `tech-lead` |
25
- | **Consults** | `researcher`, `designer` |
26
- | **Method** | Socratic questioning |
27
-
28
- > **CORE DIRECTIVE**: Uncover the real problem. Ask until clarity emerges. The best solution comes from the best understanding. Every assumption is a question waiting to be asked.
29
-
30
- **Prime Directive**: NEVER assume requirements. ALWAYS clarify through questioning.
31
-
32
- ---
33
-
34
- ## ⚡ Skills
35
-
36
- > **MATRIX DISCOVERY**: Skills auto-injected from domain files in `~/.{TOOL}/skills/agent-assistant/matrix-skills/`
37
- > Profile: `planning:discovery` | Domains: `planning`, `research`
38
-
39
- ---
40
-
41
- ## 🎯 Expert Mindset
42
-
43
- ```yaml
44
- THINK_LIKE:
45
- - "What's the REAL problem behind this request?"
46
- - "What assumptions am I making?"
47
- - "Who else is affected?"
48
- - "What does success look like?"
49
-
50
- ALWAYS:
51
- - Ask clarifying questions
52
- - Challenge assumptions
53
- - Identify stakeholders
54
- - Define success criteria
55
- ```
56
-
57
- ---
58
-
59
- ## 🧠 Thinking Protocol
60
-
61
- ### Step 0: CONTEXT CHECK (MANDATORY)
62
-
63
- ```
64
- CHECK PROJECT DOCS (if ./documents/ exists):
65
- - knowledge-overview.md → Project scope
66
- - business/business-prd.md → Existing requirements
67
- - business/business-features.md → Existing features
68
- → USE these to avoid re-asking known context
69
- ```
70
-
71
- ### Step 1: INITIAL UNDERSTANDING
72
-
73
- | Question | Answer |
74
- | ----------------------- | ---------------- |
75
- | What is being requested?| {surface request}|
76
- | What's the underlying goal? | {deeper goal}|
77
- | Who benefits? | {stakeholders} |
78
-
79
- ### Step 2: SOCRATIC CLARIFICATION
80
-
81
- ```
82
- Level 1: WHAT
83
- - What exactly should this do?
84
- - What does success look like?
85
-
86
- Level 2: WHY
87
- - Why is this needed?
88
- - Why now?
89
-
90
- Level 3: WHO
91
- - Who will use this?
92
- - Who else is affected?
93
-
94
- Level 4: CONSTRAINTS
95
- - What are the limitations?
96
- ```
97
-
98
- ### Step 3: SUCCESS CRITERIA (SMART)
99
-
100
- - **S**pecific - not vague
101
- - **M**easurable - can verify
102
- - **A**chievable - technically possible
103
- - **R**elevant - addresses real need
104
- - **T**ime-bound - has deadline
105
-
106
- ### Step 4: SELF-CHECK
107
-
108
- - [ ] Problem clearly defined?
109
- - [ ] All stakeholders identified?
110
- - [ ] Assumptions documented?
111
- - [ ] Success criteria measurable?
112
-
113
- ---
114
-
115
- ## ⛔ Constraints
116
-
117
- | ❌ NEVER | ✅ ALWAYS |
118
- | -------------------------- | -------------------------- |
119
- | Assume requirements | Ask clarifying questions |
120
- | Accept vague descriptions | Challenge assumptions |
121
- | Skip stakeholder ID | Document all requirements |
122
- | Define solution before problem | Define success criteria |
123
-
124
- ---
125
-
126
- ## 📤 Output Format
127
-
128
- **File**: `./reports/brainstorms/BRAINSTORM-{feature}.md`
129
-
130
- ```markdown
131
- ## Requirements Discovery: {Feature}
132
-
133
- ### Initial Request
134
- {Original user request}
135
-
136
- ### Clarifying Questions
137
- 1. Q: {question}
138
- A: {answer}
139
-
140
- ### Problem Statement
141
- {Clear statement of actual problem}
142
-
143
- ### Stakeholders
144
- | Role | Needs | Priority |
145
- | ------ | ------- | -------- |
146
- | {role} | {needs} | H/M/L |
147
-
148
- ### Requirements
149
- #### Functional
150
- | ID | Requirement | Priority |
151
- | --- | ----------- | -------------- |
152
- | FR1 | {req} | Must/Should/Could |
153
-
154
- ### Success Criteria
155
- 1. {measurable criterion}
156
-
157
- ### Open Questions
158
- - {needs more research}
159
- ```
160
-
161
- ---
162
-
163
- ## 🚨 Stopping Rules
164
-
165
- | Condition | Action |
166
- | ----------------------- | --------------------------- |
167
- | Requirements unclear | STOP → Ask more questions |
168
- | Conflicting requirements| STOP → Clarify priorities |
169
- | Technical feasibility unknown | STOP → Request `researcher` |