@ngxtm/devkit 2.1.0 → 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 (533) hide show
  1. package/cli/detect.js +292 -0
  2. package/cli/index.js +204 -92
  3. package/cli/init.js +245 -0
  4. package/cli/update.js +243 -0
  5. package/cli/utils.js +195 -0
  6. package/package.json +16 -20
  7. package/rules-index.json +76 -0
  8. package/scripts/generate-index.js +223 -0
  9. package/scripts/merge-commands.js +290 -0
  10. package/scripts/organize-rules.js +226 -0
  11. package/templates/base/hooks/lib/ck-config-utils.cjs +769 -0
  12. package/templates/base/hooks/lib/ck-paths.cjs +110 -0
  13. package/templates/base/hooks/lib/colors.cjs +95 -0
  14. package/templates/base/hooks/lib/config-counter.cjs +103 -0
  15. package/templates/base/hooks/lib/context-builder.cjs +600 -0
  16. package/templates/base/hooks/lib/context-tracker.cjs +335 -0
  17. package/templates/base/hooks/lib/privacy-checker.cjs +297 -0
  18. package/templates/base/hooks/lib/project-detector.cjs +430 -0
  19. package/templates/base/hooks/lib/scout-checker.cjs +172 -0
  20. package/templates/base/hooks/lib/transcript-parser.cjs +164 -0
  21. package/templates/base/hooks/privacy-block.cjs +145 -0
  22. package/agents/backend-engineer.md +0 -154
  23. package/agents/brainstormer.md +0 -169
  24. package/agents/business-analyst.md +0 -166
  25. package/agents/database-architect.md +0 -159
  26. package/agents/debugger.md +0 -155
  27. package/agents/designer.md +0 -150
  28. package/agents/devops-engineer.md +0 -155
  29. package/agents/docs-manager.md +0 -171
  30. package/agents/frontend-engineer.md +0 -159
  31. package/agents/game-engineer.md +0 -148
  32. package/agents/mobile-engineer.md +0 -149
  33. package/agents/performance-engineer.md +0 -152
  34. package/agents/planner.md +0 -161
  35. package/agents/project-manager.md +0 -160
  36. package/agents/researcher.md +0 -146
  37. package/agents/reviewer.md +0 -155
  38. package/agents/scouter.md +0 -157
  39. package/agents/security-engineer.md +0 -154
  40. package/agents/tech-lead.md +0 -159
  41. package/agents/tester.md +0 -157
  42. package/agents-claudekit/brainstormer.md +0 -113
  43. package/agents-claudekit/code-reviewer.md +0 -157
  44. package/agents-claudekit/code-simplifier.md +0 -42
  45. package/agents-claudekit/copywriter.md +0 -110
  46. package/agents-claudekit/database-admin.md +0 -92
  47. package/agents-claudekit/debugger.md +0 -137
  48. package/agents-claudekit/docs-manager.md +0 -208
  49. package/agents-claudekit/fullstack-developer.md +0 -95
  50. package/agents-claudekit/git-manager.md +0 -394
  51. package/agents-claudekit/journal-writer.md +0 -113
  52. package/agents-claudekit/mcp-manager.md +0 -93
  53. package/agents-claudekit/planner.md +0 -108
  54. package/agents-claudekit/project-manager.md +0 -125
  55. package/agents-claudekit/researcher.md +0 -38
  56. package/agents-claudekit/scout-external.md +0 -141
  57. package/agents-claudekit/scout.md +0 -107
  58. package/agents-claudekit/tester.md +0 -105
  59. package/agents-claudekit/ui-ux-designer.md +0 -236
  60. package/commands/ask.md +0 -64
  61. package/commands/brainstorm.md +0 -64
  62. package/commands/code.md +0 -64
  63. package/commands/cook.md +0 -64
  64. package/commands/debug.md +0 -64
  65. package/commands/design/fast.md +0 -134
  66. package/commands/fix/fast.md +0 -84
  67. package/commands/fix/hard.md +0 -116
  68. package/commands/fix.md +0 -64
  69. package/commands/plan/fast.md +0 -78
  70. package/commands/plan/hard.md +0 -131
  71. package/commands/plan.md +0 -64
  72. package/commands/test.md +0 -64
  73. package/matrix-skills/_index.yaml +0 -275
  74. package/matrix-skills/ai-ml.yaml +0 -353
  75. package/matrix-skills/architecture.yaml +0 -93
  76. package/matrix-skills/backend.yaml +0 -280
  77. package/matrix-skills/cloud.yaml +0 -112
  78. package/matrix-skills/data.yaml +0 -74
  79. package/matrix-skills/design.yaml +0 -98
  80. package/matrix-skills/devops.yaml +0 -200
  81. package/matrix-skills/frontend.yaml +0 -200
  82. package/matrix-skills/gaming.yaml +0 -39
  83. package/matrix-skills/languages.yaml +0 -160
  84. package/matrix-skills/management.yaml +0 -50
  85. package/matrix-skills/mcp.yaml +0 -82
  86. package/matrix-skills/mobile.yaml +0 -85
  87. package/matrix-skills/performance.yaml +0 -23
  88. package/matrix-skills/planning.yaml +0 -117
  89. package/matrix-skills/quality.yaml +0 -195
  90. package/matrix-skills/research.yaml +0 -106
  91. package/matrix-skills/security.yaml +0 -293
  92. package/matrix-skills/tools.yaml +0 -352
  93. package/output-styles/coding-level-0-eli5.md +0 -103
  94. package/output-styles/coding-level-1-junior.md +0 -124
  95. package/output-styles/coding-level-2-mid.md +0 -146
  96. package/output-styles/coding-level-3-senior.md +0 -148
  97. package/output-styles/coding-level-4-lead.md +0 -159
  98. package/output-styles/coding-level-5-god.md +0 -91
  99. package/rules/README.md +0 -141
  100. package/rules/metadata.json +0 -54
  101. package/settings.json +0 -3
  102. package/statusline.cjs +0 -500
  103. package/statusline.ps1 +0 -307
  104. package/statusline.sh +0 -237
  105. package/workflows/development-rules.md +0 -42
  106. package/workflows/documentation-management.md +0 -121
  107. package/workflows/orchestration-protocol.md +0 -16
  108. package/workflows/primary-workflow.md +0 -45
  109. /package/{commands → merged-commands}/ask/fast.md +0 -0
  110. /package/{commands → merged-commands}/ask/hard.md +0 -0
  111. /package/{commands-claudekit → merged-commands}/ask.md +0 -0
  112. /package/{commands → merged-commands}/auto.md +0 -0
  113. /package/{commands-claudekit → merged-commands}/bootstrap/auto/fast.md +0 -0
  114. /package/{commands-claudekit → merged-commands}/bootstrap/auto/parallel.md +0 -0
  115. /package/{commands-claudekit → merged-commands}/bootstrap/auto.md +0 -0
  116. /package/{commands-claudekit → merged-commands}/bootstrap.md +0 -0
  117. /package/{commands → merged-commands}/brainstorm/fast.md +0 -0
  118. /package/{commands → merged-commands}/brainstorm/hard.md +0 -0
  119. /package/{commands-claudekit → merged-commands}/brainstorm.md +0 -0
  120. /package/{commands-claudekit → merged-commands}/ck-help.md +0 -0
  121. /package/{commands-claudekit → merged-commands}/code/auto.md +0 -0
  122. /package/{commands → merged-commands}/code/fast.md +0 -0
  123. /package/{commands → merged-commands}/code/hard.md +0 -0
  124. /package/{commands-claudekit → merged-commands}/code/no-test.md +0 -0
  125. /package/{commands-claudekit → merged-commands}/code/parallel.md +0 -0
  126. /package/{commands-claudekit → merged-commands}/code.md +0 -0
  127. /package/{commands-claudekit → merged-commands}/coding-level.md +0 -0
  128. /package/{commands-claudekit → merged-commands}/content/cro.md +0 -0
  129. /package/{commands-claudekit → merged-commands}/content/enhance.md +0 -0
  130. /package/{commands-claudekit → merged-commands}/content/fast.md +0 -0
  131. /package/{commands-claudekit → merged-commands}/content/good.md +0 -0
  132. /package/{commands-claudekit → merged-commands}/cook/auto/fast.md +0 -0
  133. /package/{commands-claudekit → merged-commands}/cook/auto/parallel.md +0 -0
  134. /package/{commands-claudekit → merged-commands}/cook/auto.md +0 -0
  135. /package/{commands → merged-commands}/cook/fast.md +0 -0
  136. /package/{commands → merged-commands}/cook/hard.md +0 -0
  137. /package/{commands-claudekit → merged-commands}/cook.md +0 -0
  138. /package/{commands → merged-commands}/debug/fast.md +0 -0
  139. /package/{commands → merged-commands}/debug/hard.md +0 -0
  140. /package/{commands-claudekit → merged-commands}/debug.md +0 -0
  141. /package/{commands → merged-commands}/deploy/check.md +0 -0
  142. /package/{commands → merged-commands}/deploy/preview.md +0 -0
  143. /package/{commands → merged-commands}/deploy/production.md +0 -0
  144. /package/{commands → merged-commands}/deploy/rollback.md +0 -0
  145. /package/{commands → merged-commands}/deploy.md +0 -0
  146. /package/{commands-claudekit → merged-commands}/design/3d.md +0 -0
  147. /package/{commands-claudekit → merged-commands}/design/describe.md +0 -0
  148. /package/{commands-claudekit → merged-commands}/design/fast.md +0 -0
  149. /package/{commands-claudekit → merged-commands}/design/good.md +0 -0
  150. /package/{commands → merged-commands}/design/hard.md +0 -0
  151. /package/{commands-claudekit → merged-commands}/design/screenshot.md +0 -0
  152. /package/{commands-claudekit → merged-commands}/design/video.md +0 -0
  153. /package/{commands → merged-commands}/design.md +0 -0
  154. /package/{commands → merged-commands}/docs/audit.md +0 -0
  155. /package/{commands → merged-commands}/docs/business.md +0 -0
  156. /package/{commands → merged-commands}/docs/core.md +0 -0
  157. /package/{commands-claudekit → merged-commands}/docs/init.md +0 -0
  158. /package/{commands-claudekit → merged-commands}/docs/summarize.md +0 -0
  159. /package/{commands-claudekit → merged-commands}/docs/update.md +0 -0
  160. /package/{commands → merged-commands}/docs.md +0 -0
  161. /package/{commands-claudekit → merged-commands}/fix/ci.md +0 -0
  162. /package/{commands-claudekit → merged-commands}/fix/fast.md +0 -0
  163. /package/{commands-claudekit → merged-commands}/fix/hard.md +0 -0
  164. /package/{commands-claudekit → merged-commands}/fix/logs.md +0 -0
  165. /package/{commands-claudekit → merged-commands}/fix/parallel.md +0 -0
  166. /package/{commands-claudekit → merged-commands}/fix/test.md +0 -0
  167. /package/{commands-claudekit → merged-commands}/fix/types.md +0 -0
  168. /package/{commands-claudekit → merged-commands}/fix/ui.md +0 -0
  169. /package/{commands-claudekit → merged-commands}/fix.md +0 -0
  170. /package/{commands-claudekit → merged-commands}/git/cm.md +0 -0
  171. /package/{commands-claudekit → merged-commands}/git/cp.md +0 -0
  172. /package/{commands-claudekit → merged-commands}/git/merge.md +0 -0
  173. /package/{commands-claudekit → merged-commands}/git/pr.md +0 -0
  174. /package/{commands-claudekit → merged-commands}/integrate/polar.md +0 -0
  175. /package/{commands-claudekit → merged-commands}/integrate/sepay.md +0 -0
  176. /package/{commands-claudekit → merged-commands}/journal.md +0 -0
  177. /package/{commands-claudekit → merged-commands}/kanban.md +0 -0
  178. /package/{commands-claudekit → merged-commands}/plan/archive.md +0 -0
  179. /package/{commands-claudekit → merged-commands}/plan/ci.md +0 -0
  180. /package/{commands-claudekit → merged-commands}/plan/cro.md +0 -0
  181. /package/{commands-claudekit → merged-commands}/plan/fast.md +0 -0
  182. /package/{commands-claudekit → merged-commands}/plan/hard.md +0 -0
  183. /package/{commands-claudekit → merged-commands}/plan/parallel.md +0 -0
  184. /package/{commands-claudekit → merged-commands}/plan/two.md +0 -0
  185. /package/{commands-claudekit → merged-commands}/plan/validate.md +0 -0
  186. /package/{commands-claudekit → merged-commands}/plan.md +0 -0
  187. /package/{commands-claudekit → merged-commands}/preview.md +0 -0
  188. /package/{commands-claudekit → merged-commands}/review/codebase/parallel.md +0 -0
  189. /package/{commands-claudekit → merged-commands}/review/codebase.md +0 -0
  190. /package/{commands → merged-commands}/review/fast.md +0 -0
  191. /package/{commands → merged-commands}/review/hard.md +0 -0
  192. /package/{commands → merged-commands}/review.md +0 -0
  193. /package/{commands-claudekit → merged-commands}/scout/ext.md +0 -0
  194. /package/{commands-claudekit → merged-commands}/scout.md +0 -0
  195. /package/{commands-claudekit → merged-commands}/skill/add.md +0 -0
  196. /package/{commands-claudekit → merged-commands}/skill/create.md +0 -0
  197. /package/{commands-claudekit → merged-commands}/skill/fix-logs.md +0 -0
  198. /package/{commands-claudekit → merged-commands}/skill/optimize/auto.md +0 -0
  199. /package/{commands-claudekit → merged-commands}/skill/optimize.md +0 -0
  200. /package/{commands-claudekit → merged-commands}/skill/plan.md +0 -0
  201. /package/{commands-claudekit → merged-commands}/skill/update.md +0 -0
  202. /package/{commands → merged-commands}/test/fast.md +0 -0
  203. /package/{commands → merged-commands}/test/hard.md +0 -0
  204. /package/{commands-claudekit → merged-commands}/test/ui.md +0 -0
  205. /package/{commands-claudekit → merged-commands}/test.md +0 -0
  206. /package/{commands-claudekit → merged-commands}/use-mcp.md +0 -0
  207. /package/{commands-claudekit → merged-commands}/watzup.md +0 -0
  208. /package/{commands-claudekit → merged-commands}/worktree.md +0 -0
  209. /package/{rules → templates/dart/rules}/dart/best-practices/SKILL.md +0 -0
  210. /package/{rules → templates/dart/rules}/dart/language/SKILL.md +0 -0
  211. /package/{rules → templates/dart/rules}/dart/tooling/SKILL.md +0 -0
  212. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/SKILL.md +0 -0
  213. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/REFERENCE.md +0 -0
  214. /package/{rules → templates/flutter/rules}/flutter/auto-route-navigation/references/router-config.md +0 -0
  215. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/SKILL.md +0 -0
  216. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/REFERENCE.md +0 -0
  217. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/auth-bloc-example.md +0 -0
  218. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/equatable-usage.md +0 -0
  219. /package/{rules → templates/flutter/rules}/flutter/bloc-state-management/references/property-based-state.md +0 -0
  220. /package/{rules → templates/flutter/rules}/flutter/bloc.rule.md +0 -0
  221. /package/{rules → templates/flutter/rules}/flutter/cicd/SKILL.md +0 -0
  222. /package/{rules → templates/flutter/rules}/flutter/cicd/references/advanced-workflow.md +0 -0
  223. /package/{rules → templates/flutter/rules}/flutter/cicd/references/fastlane.md +0 -0
  224. /package/{rules → templates/flutter/rules}/flutter/cicd/references/github-actions.md +0 -0
  225. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/SKILL.md +0 -0
  226. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/REFERENCE.md +0 -0
  227. /package/{rules → templates/flutter/rules}/flutter/dependency-injection/references/modules.md +0 -0
  228. /package/{rules → templates/flutter/rules}/flutter/error-handling/SKILL.md +0 -0
  229. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/REFERENCE.md +0 -0
  230. /package/{rules → templates/flutter/rules}/flutter/error-handling/references/error-mapping.md +0 -0
  231. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/SKILL.md +0 -0
  232. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/REFERENCE.md +0 -0
  233. /package/{rules → templates/flutter/rules}/flutter/feature-based-clean-architecture/references/folder-structure.md +0 -0
  234. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/SKILL.md +0 -0
  235. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/app-pages.md +0 -0
  236. /package/{rules → templates/flutter/rules}/flutter/getx-navigation/references/middleware-example.md +0 -0
  237. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/SKILL.md +0 -0
  238. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/binding-example.md +0 -0
  239. /package/{rules → templates/flutter/rules}/flutter/getx-state-management/references/reactive-vs-simple.md +0 -0
  240. /package/{rules → templates/flutter/rules}/flutter/go-router-navigation/SKILL.md +0 -0
  241. /package/{rules → templates/flutter/rules}/flutter/idiomatic-flutter/SKILL.md +0 -0
  242. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/SKILL.md +0 -0
  243. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/REFERENCE.md +0 -0
  244. /package/{rules → templates/flutter/rules}/flutter/layer-based-clean-architecture/references/repository-mapping.md +0 -0
  245. /package/{rules → templates/flutter/rules}/flutter/localization/SKILL.md +0 -0
  246. /package/{rules → templates/flutter/rules}/flutter/localization/references/REFERENCE.md +0 -0
  247. /package/{rules → templates/flutter/rules}/flutter/localization/references/sheet-loader.md +0 -0
  248. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/SKILL.md +0 -0
  249. /package/{rules → templates/flutter/rules}/flutter/navigator-v1-navigation/references/on-generate-route.md +0 -0
  250. /package/{rules → templates/flutter/rules}/flutter/performance/SKILL.md +0 -0
  251. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/SKILL.md +0 -0
  252. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/REFERENCE.md +0 -0
  253. /package/{rules → templates/flutter/rules}/flutter/retrofit-networking/references/token-refresh.md +0 -0
  254. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/SKILL.md +0 -0
  255. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/architecture.md +0 -0
  256. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/best-practices.md +0 -0
  257. /package/{rules → templates/flutter/rules}/flutter/riverpod-state-management/references/testing.md +0 -0
  258. /package/{rules → templates/flutter/rules}/flutter/riverpod.rule.md +0 -0
  259. /package/{rules → templates/flutter/rules}/flutter/security/SKILL.md +0 -0
  260. /package/{rules → templates/flutter/rules}/flutter/security/references/REFERENCE.md +0 -0
  261. /package/{rules → templates/flutter/rules}/flutter/security/references/network-security.md +0 -0
  262. /package/{rules → templates/flutter/rules}/flutter/testing/SKILL.md +0 -0
  263. /package/{rules → templates/flutter/rules}/flutter/testing/references/REFERENCE.md +0 -0
  264. /package/{rules → templates/flutter/rules}/flutter/testing/references/bloc-testing.md +0 -0
  265. /package/{rules → templates/flutter/rules}/flutter/testing/references/integration-testing.md +0 -0
  266. /package/{rules → templates/flutter/rules}/flutter/testing/references/robot-pattern.md +0 -0
  267. /package/{rules → templates/flutter/rules}/flutter/testing/references/unit-testing.md +0 -0
  268. /package/{rules → templates/flutter/rules}/flutter/testing/references/widget-testing.md +0 -0
  269. /package/{rules → templates/flutter/rules}/flutter/widgets/SKILL.md +0 -0
  270. /package/{rules → templates/golang/rules}/golang/chi-router/SKILL.md +0 -0
  271. /package/{rules → templates/golang/rules}/golang/chi-router/references/REFERENCE.md +0 -0
  272. /package/{rules → templates/golang/rules}/golang/chi-router/references/routing-patterns.md +0 -0
  273. /package/{rules → templates/golang/rules}/golang/cobra-cli/SKILL.md +0 -0
  274. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/REFERENCE.md +0 -0
  275. /package/{rules → templates/golang/rules}/golang/cobra-cli/references/command-patterns.md +0 -0
  276. /package/{rules → templates/golang/rules}/golang/core/SKILL.md +0 -0
  277. /package/{rules → templates/golang/rules}/golang/core/references/REFERENCE.md +0 -0
  278. /package/{rules → templates/golang/rules}/golang/core/references/concurrency-patterns.md +0 -0
  279. /package/{rules → templates/golang/rules}/golang/core/references/error-handling.md +0 -0
  280. /package/{rules → templates/golang/rules}/golang/echo-framework/SKILL.md +0 -0
  281. /package/{rules → templates/golang/rules}/golang/echo-framework/references/REFERENCE.md +0 -0
  282. /package/{rules → templates/golang/rules}/golang/echo-framework/references/middleware-patterns.md +0 -0
  283. /package/{rules → templates/golang/rules}/golang/echo-framework/references/routing-patterns.md +0 -0
  284. /package/{rules → templates/golang/rules}/golang/ent-orm/SKILL.md +0 -0
  285. /package/{rules → templates/golang/rules}/golang/ent-orm/references/REFERENCE.md +0 -0
  286. /package/{rules → templates/golang/rules}/golang/ent-orm/references/schema-patterns.md +0 -0
  287. /package/{rules → templates/golang/rules}/golang/fiber-framework/SKILL.md +0 -0
  288. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/REFERENCE.md +0 -0
  289. /package/{rules → templates/golang/rules}/golang/fiber-framework/references/routing-patterns.md +0 -0
  290. /package/{rules → templates/golang/rules}/golang/gin-framework/SKILL.md +0 -0
  291. /package/{rules → templates/golang/rules}/golang/gin-framework/references/REFERENCE.md +0 -0
  292. /package/{rules → templates/golang/rules}/golang/gin-framework/references/middleware-patterns.md +0 -0
  293. /package/{rules → templates/golang/rules}/golang/gorm-orm/SKILL.md +0 -0
  294. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/REFERENCE.md +0 -0
  295. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/model-definitions.md +0 -0
  296. /package/{rules → templates/golang/rules}/golang/gorm-orm/references/query-patterns.md +0 -0
  297. /package/{rules → templates/golang/rules}/golang/grpc/SKILL.md +0 -0
  298. /package/{rules → templates/golang/rules}/golang/grpc/references/REFERENCE.md +0 -0
  299. /package/{rules → templates/golang/rules}/golang/grpc/references/service-patterns.md +0 -0
  300. /package/{rules → templates/golang/rules}/golang/testify/SKILL.md +0 -0
  301. /package/{rules → templates/golang/rules}/golang/testify/references/REFERENCE.md +0 -0
  302. /package/{rules → templates/golang/rules}/golang/testify/references/assert-patterns.md +0 -0
  303. /package/{rules → templates/golang/rules}/golang/validator/SKILL.md +0 -0
  304. /package/{rules → templates/golang/rules}/golang/validator/references/REFERENCE.md +0 -0
  305. /package/{rules → templates/golang/rules}/golang/validator/references/validation-tags.md +0 -0
  306. /package/{rules → templates/golang/rules}/golang/viper-config/SKILL.md +0 -0
  307. /package/{rules → templates/golang/rules}/golang/viper-config/references/REFERENCE.md +0 -0
  308. /package/{rules → templates/golang/rules}/golang/viper-config/references/config-loading.md +0 -0
  309. /package/{rules → templates/golang/rules}/golang/wire-di/SKILL.md +0 -0
  310. /package/{rules → templates/golang/rules}/golang/wire-di/references/REFERENCE.md +0 -0
  311. /package/{rules → templates/golang/rules}/golang/wire-di/references/provider-patterns.md +0 -0
  312. /package/{rules → templates/golang/rules}/golang/zap-logging/SKILL.md +0 -0
  313. /package/{rules → templates/golang/rules}/golang/zap-logging/references/REFERENCE.md +0 -0
  314. /package/{rules → templates/golang/rules}/golang/zap-logging/references/logger-config.md +0 -0
  315. /package/{rules → templates/java/rules}/java/build-gradle/SKILL.md +0 -0
  316. /package/{rules → templates/java/rules}/java/build-gradle/references/REFERENCE.md +0 -0
  317. /package/{rules → templates/java/rules}/java/build-gradle/references/kotlin-dsl.md +0 -0
  318. /package/{rules → templates/java/rules}/java/build-gradle/references/task-configuration.md +0 -0
  319. /package/{rules → templates/java/rules}/java/build-maven/SKILL.md +0 -0
  320. /package/{rules → templates/java/rules}/java/build-maven/references/REFERENCE.md +0 -0
  321. /package/{rules → templates/java/rules}/java/build-maven/references/dependency-management.md +0 -0
  322. /package/{rules → templates/java/rules}/java/build-maven/references/lifecycle-phases.md +0 -0
  323. /package/{rules → templates/java/rules}/java/graalvm-native/SKILL.md +0 -0
  324. /package/{rules → templates/java/rules}/java/graalvm-native/references/REFERENCE.md +0 -0
  325. /package/{rules → templates/java/rules}/java/java-collections-streams/SKILL.md +0 -0
  326. /package/{rules → templates/java/rules}/java/java-collections-streams/references/REFERENCE.md +0 -0
  327. /package/{rules → templates/java/rules}/java/java-collections-streams/references/collectors-patterns.md +0 -0
  328. /package/{rules → templates/java/rules}/java/java-collections-streams/references/stream-pipelines.md +0 -0
  329. /package/{rules → templates/java/rules}/java/java-concurrency/SKILL.md +0 -0
  330. /package/{rules → templates/java/rules}/java/java-concurrency/references/REFERENCE.md +0 -0
  331. /package/{rules → templates/java/rules}/java/java-concurrency/references/completable-future.md +0 -0
  332. /package/{rules → templates/java/rules}/java/java-concurrency/references/executor-patterns.md +0 -0
  333. /package/{rules → templates/java/rules}/java/java-concurrency/references/virtual-threads.md +0 -0
  334. /package/{rules → templates/java/rules}/java/java-core-language/SKILL.md +0 -0
  335. /package/{rules → templates/java/rules}/java/java-core-language/references/REFERENCE.md +0 -0
  336. /package/{rules → templates/java/rules}/java/java-core-language/references/jvm-memory-model.md +0 -0
  337. /package/{rules → templates/java/rules}/java/java-core-language/references/modern-java-features.md +0 -0
  338. /package/{rules → templates/java/rules}/java/java-project-structure/SKILL.md +0 -0
  339. /package/{rules → templates/java/rules}/java/java-project-structure/references/REFERENCE.md +0 -0
  340. /package/{rules → templates/java/rules}/java/java-project-structure/references/maven-project-layout.md +0 -0
  341. /package/{rules → templates/java/rules}/java/java-project-structure/references/module-system.md +0 -0
  342. /package/{rules → templates/java/rules}/java/micronaut-core/SKILL.md +0 -0
  343. /package/{rules → templates/java/rules}/java/micronaut-core/references/REFERENCE.md +0 -0
  344. /package/{rules → templates/java/rules}/java/micronaut-reactive/SKILL.md +0 -0
  345. /package/{rules → templates/java/rules}/java/micronaut-reactive/references/REFERENCE.md +0 -0
  346. /package/{rules → templates/java/rules}/java/quarkus-core/SKILL.md +0 -0
  347. /package/{rules → templates/java/rules}/java/quarkus-core/references/REFERENCE.md +0 -0
  348. /package/{rules → templates/java/rules}/java/quarkus-reactive/SKILL.md +0 -0
  349. /package/{rules → templates/java/rules}/java/quarkus-reactive/references/REFERENCE.md +0 -0
  350. /package/{rules → templates/java/rules}/java/spring-batch/SKILL.md +0 -0
  351. /package/{rules → templates/java/rules}/java/spring-batch/references/REFERENCE.md +0 -0
  352. /package/{rules → templates/java/rules}/java/spring-boot-architecture/SKILL.md +0 -0
  353. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/REFERENCE.md +0 -0
  354. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/auto-configuration.md +0 -0
  355. /package/{rules → templates/java/rules}/java/spring-boot-architecture/references/configuration-properties.md +0 -0
  356. /package/{rules → templates/java/rules}/java/spring-boot-web/SKILL.md +0 -0
  357. /package/{rules → templates/java/rules}/java/spring-boot-web/references/REFERENCE.md +0 -0
  358. /package/{rules → templates/java/rules}/java/spring-cloud/SKILL.md +0 -0
  359. /package/{rules → templates/java/rules}/java/spring-cloud/references/REFERENCE.md +0 -0
  360. /package/{rules → templates/java/rules}/java/spring-data-jpa/SKILL.md +0 -0
  361. /package/{rules → templates/java/rules}/java/spring-data-jpa/references/REFERENCE.md +0 -0
  362. /package/{rules → templates/java/rules}/java/spring-security/SKILL.md +0 -0
  363. /package/{rules → templates/java/rules}/java/spring-security/references/REFERENCE.md +0 -0
  364. /package/{rules → templates/java/rules}/java/spring-security/references/jwt-auth-flow.md +0 -0
  365. /package/{rules → templates/java/rules}/java/testing-junit-mockito/SKILL.md +0 -0
  366. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/REFERENCE.md +0 -0
  367. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/junit5-patterns.md +0 -0
  368. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/mockito-patterns.md +0 -0
  369. /package/{rules → templates/java/rules}/java/testing-junit-mockito/references/spring-boot-testing.md +0 -0
  370. /package/{rules → templates/javascript/rules}/javascript/best-practices/SKILL.md +0 -0
  371. /package/{rules → templates/javascript/rules}/javascript/best-practices/references/REFERENCE.md +0 -0
  372. /package/{rules → templates/javascript/rules}/javascript/language/SKILL.md +0 -0
  373. /package/{rules → templates/javascript/rules}/javascript/language/references/REFERENCE.md +0 -0
  374. /package/{rules → templates/javascript/rules}/javascript/tooling/SKILL.md +0 -0
  375. /package/{rules → templates/javascript/rules}/javascript/tooling/references/REFERENCE.md +0 -0
  376. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/SKILL.md +0 -0
  377. /package/{rules → templates/nestjs/rules}/nestjs/api-standards/references/pagination-wrapper.md +0 -0
  378. /package/{rules → templates/nestjs/rules}/nestjs/architecture/SKILL.md +0 -0
  379. /package/{rules → templates/nestjs/rules}/nestjs/architecture/references/dynamic-module.md +0 -0
  380. /package/{rules → templates/nestjs/rules}/nestjs/caching/SKILL.md +0 -0
  381. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/REFERENCE.md +0 -0
  382. /package/{rules → templates/nestjs/rules}/nestjs/caching/references/cache-patterns.md +0 -0
  383. /package/{rules → templates/nestjs/rules}/nestjs/configuration/SKILL.md +0 -0
  384. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/REFERENCE.md +0 -0
  385. /package/{rules → templates/nestjs/rules}/nestjs/configuration/references/config-patterns.md +0 -0
  386. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/SKILL.md +0 -0
  387. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/REFERENCE.md +0 -0
  388. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/controller-patterns.md +0 -0
  389. /package/{rules → templates/nestjs/rules}/nestjs/controllers-services/references/service-patterns.md +0 -0
  390. /package/{rules → templates/nestjs/rules}/nestjs/database/SKILL.md +0 -0
  391. /package/{rules → templates/nestjs/rules}/nestjs/database/references/REFERENCE.md +0 -0
  392. /package/{rules → templates/nestjs/rules}/nestjs/database/references/typeorm-patterns.md +0 -0
  393. /package/{rules → templates/nestjs/rules}/nestjs/deployment/SKILL.md +0 -0
  394. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/REFERENCE.md +0 -0
  395. /package/{rules → templates/nestjs/rules}/nestjs/deployment/references/deployment-patterns.md +0 -0
  396. /package/{rules → templates/nestjs/rules}/nestjs/documentation/SKILL.md +0 -0
  397. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/REFERENCE.md +0 -0
  398. /package/{rules → templates/nestjs/rules}/nestjs/documentation/references/swagger-patterns.md +0 -0
  399. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/SKILL.md +0 -0
  400. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/REFERENCE.md +0 -0
  401. /package/{rules → templates/nestjs/rules}/nestjs/error-handling/references/exception-filters.md +0 -0
  402. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/SKILL.md +0 -0
  403. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/REFERENCE.md +0 -0
  404. /package/{rules → templates/nestjs/rules}/nestjs/file-uploads/references/upload-patterns.md +0 -0
  405. /package/{rules → templates/nestjs/rules}/nestjs/observability/SKILL.md +0 -0
  406. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/REFERENCE.md +0 -0
  407. /package/{rules → templates/nestjs/rules}/nestjs/observability/references/logging-metrics.md +0 -0
  408. /package/{rules → templates/nestjs/rules}/nestjs/performance/SKILL.md +0 -0
  409. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/REFERENCE.md +0 -0
  410. /package/{rules → templates/nestjs/rules}/nestjs/performance/references/performance-patterns.md +0 -0
  411. /package/{rules → templates/nestjs/rules}/nestjs/real-time/SKILL.md +0 -0
  412. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/REFERENCE.md +0 -0
  413. /package/{rules → templates/nestjs/rules}/nestjs/real-time/references/websocket-patterns.md +0 -0
  414. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/SKILL.md +0 -0
  415. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/REFERENCE.md +0 -0
  416. /package/{rules → templates/nestjs/rules}/nestjs/scheduling/references/scheduling-patterns.md +0 -0
  417. /package/{rules → templates/nestjs/rules}/nestjs/search/SKILL.md +0 -0
  418. /package/{rules → templates/nestjs/rules}/nestjs/search/references/REFERENCE.md +0 -0
  419. /package/{rules → templates/nestjs/rules}/nestjs/search/references/search-patterns.md +0 -0
  420. /package/{rules → templates/nestjs/rules}/nestjs/security/SKILL.md +0 -0
  421. /package/{rules → templates/nestjs/rules}/nestjs/security/references/REFERENCE.md +0 -0
  422. /package/{rules → templates/nestjs/rules}/nestjs/security/references/authentication.md +0 -0
  423. /package/{rules → templates/nestjs/rules}/nestjs/testing/SKILL.md +0 -0
  424. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/REFERENCE.md +0 -0
  425. /package/{rules → templates/nestjs/rules}/nestjs/testing/references/unit-testing.md +0 -0
  426. /package/{rules → templates/nestjs/rules}/nestjs/transport/SKILL.md +0 -0
  427. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/REFERENCE.md +0 -0
  428. /package/{rules → templates/nestjs/rules}/nestjs/transport/references/microservices-patterns.md +0 -0
  429. /package/{rules → templates/nextjs/rules}/nextjs/app-router/SKILL.md +0 -0
  430. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/REFERENCE.md +0 -0
  431. /package/{rules → templates/nextjs/rules}/nextjs/app-router/references/routing-patterns.md +0 -0
  432. /package/{rules → templates/nextjs/rules}/nextjs/architecture/SKILL.md +0 -0
  433. /package/{rules → templates/nextjs/rules}/nextjs/architecture/references/fsd-structure.md +0 -0
  434. /package/{rules → templates/nextjs/rules}/nextjs/authentication/SKILL.md +0 -0
  435. /package/{rules → templates/nextjs/rules}/nextjs/authentication/references/auth-implementation.md +0 -0
  436. /package/{rules → templates/nextjs/rules}/nextjs/caching/SKILL.md +0 -0
  437. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/REFERENCE.md +0 -0
  438. /package/{rules → templates/nextjs/rules}/nextjs/caching/references/cache-strategies.md +0 -0
  439. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/SKILL.md +0 -0
  440. /package/{rules → templates/nextjs/rules}/nextjs/data-access-layer/references/patterns.md +0 -0
  441. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/SKILL.md +0 -0
  442. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/REFERENCE.md +0 -0
  443. /package/{rules → templates/nextjs/rules}/nextjs/data-fetching/references/fetch-patterns.md +0 -0
  444. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/SKILL.md +0 -0
  445. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/REFERENCE.md +0 -0
  446. /package/{rules → templates/nextjs/rules}/nextjs/internationalization/references/i18n-patterns.md +0 -0
  447. /package/{rules → templates/nextjs/rules}/nextjs/optimization/SKILL.md +0 -0
  448. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/REFERENCE.md +0 -0
  449. /package/{rules → templates/nextjs/rules}/nextjs/optimization/references/optimization-patterns.md +0 -0
  450. /package/{rules → templates/nextjs/rules}/nextjs/rendering/SKILL.md +0 -0
  451. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/REFERENCE.md +0 -0
  452. /package/{rules → templates/nextjs/rules}/nextjs/rendering/references/rendering-modes.md +0 -0
  453. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/SKILL.md +0 -0
  454. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/REFERENCE.md +0 -0
  455. /package/{rules → templates/nextjs/rules}/nextjs/server-actions/references/action-patterns.md +0 -0
  456. /package/{rules → templates/nextjs/rules}/nextjs/server-components/SKILL.md +0 -0
  457. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/REFERENCE.md +0 -0
  458. /package/{rules → templates/nextjs/rules}/nextjs/server-components/references/component-patterns.md +0 -0
  459. /package/{rules → templates/nextjs/rules}/nextjs/state-management/SKILL.md +0 -0
  460. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/REFERENCE.md +0 -0
  461. /package/{rules → templates/nextjs/rules}/nextjs/state-management/references/state-patterns.md +0 -0
  462. /package/{rules → templates/nextjs/rules}/nextjs/styling/SKILL.md +0 -0
  463. /package/{rules → templates/nextjs/rules}/nextjs/styling/references/implementation.md +0 -0
  464. /package/{rules → templates/react/rules}/react/component-patterns/SKILL.md +0 -0
  465. /package/{rules → templates/react/rules}/react/component-patterns/references/REFERENCE.md +0 -0
  466. /package/{rules → templates/react/rules}/react/hooks/SKILL.md +0 -0
  467. /package/{rules → templates/react/rules}/react/hooks/references/REFERENCE.md +0 -0
  468. /package/{rules → templates/react/rules}/react/hooks.rule.md +0 -0
  469. /package/{rules → templates/react/rules}/react/performance/SKILL.md +0 -0
  470. /package/{rules → templates/react/rules}/react/performance/references/REFERENCE.md +0 -0
  471. /package/{rules → templates/react/rules}/react/security/SKILL.md +0 -0
  472. /package/{rules → templates/react/rules}/react/security/references/REFERENCE.md +0 -0
  473. /package/{rules → templates/react/rules}/react/state-management/SKILL.md +0 -0
  474. /package/{rules → templates/react/rules}/react/state-management/references/REFERENCE.md +0 -0
  475. /package/{rules → templates/react/rules}/react/testing/SKILL.md +0 -0
  476. /package/{rules → templates/react/rules}/react/testing/references/REFERENCE.md +0 -0
  477. /package/{rules → templates/react/rules}/react/tooling/SKILL.md +0 -0
  478. /package/{rules → templates/react/rules}/react/typescript/SKILL.md +0 -0
  479. /package/{rules → templates/rust/rules}/rust/actix-web/SKILL.md +0 -0
  480. /package/{rules → templates/rust/rules}/rust/actix-web/references/REFERENCE.md +0 -0
  481. /package/{rules → templates/rust/rules}/rust/actix-web/references/handler-patterns.md +0 -0
  482. /package/{rules → templates/rust/rules}/rust/async-graphql/SKILL.md +0 -0
  483. /package/{rules → templates/rust/rules}/rust/async-graphql/references/REFERENCE.md +0 -0
  484. /package/{rules → templates/rust/rules}/rust/async-graphql/references/schema-patterns.md +0 -0
  485. /package/{rules → templates/rust/rules}/rust/axum/SKILL.md +0 -0
  486. /package/{rules → templates/rust/rules}/rust/axum/references/REFERENCE.md +0 -0
  487. /package/{rules → templates/rust/rules}/rust/axum/references/handler-patterns.md +0 -0
  488. /package/{rules → templates/rust/rules}/rust/bevy/SKILL.md +0 -0
  489. /package/{rules → templates/rust/rules}/rust/bevy/references/REFERENCE.md +0 -0
  490. /package/{rules → templates/rust/rules}/rust/bevy/references/ecs-patterns.md +0 -0
  491. /package/{rules → templates/rust/rules}/rust/clap/SKILL.md +0 -0
  492. /package/{rules → templates/rust/rules}/rust/clap/references/REFERENCE.md +0 -0
  493. /package/{rules → templates/rust/rules}/rust/clap/references/derive-patterns.md +0 -0
  494. /package/{rules → templates/rust/rules}/rust/core/SKILL.md +0 -0
  495. /package/{rules → templates/rust/rules}/rust/core/references/REFERENCE.md +0 -0
  496. /package/{rules → templates/rust/rules}/rust/core/references/error-handling.md +0 -0
  497. /package/{rules → templates/rust/rules}/rust/diesel-orm/SKILL.md +0 -0
  498. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/REFERENCE.md +0 -0
  499. /package/{rules → templates/rust/rules}/rust/diesel-orm/references/schema-patterns.md +0 -0
  500. /package/{rules → templates/rust/rules}/rust/rocket/SKILL.md +0 -0
  501. /package/{rules → templates/rust/rules}/rust/rocket/references/REFERENCE.md +0 -0
  502. /package/{rules → templates/rust/rules}/rust/rocket/references/handler-patterns.md +0 -0
  503. /package/{rules → templates/rust/rules}/rust/sea-orm/SKILL.md +0 -0
  504. /package/{rules → templates/rust/rules}/rust/sea-orm/references/REFERENCE.md +0 -0
  505. /package/{rules → templates/rust/rules}/rust/sea-orm/references/entity-patterns.md +0 -0
  506. /package/{rules → templates/rust/rules}/rust/serde-serialization/SKILL.md +0 -0
  507. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/REFERENCE.md +0 -0
  508. /package/{rules → templates/rust/rules}/rust/serde-serialization/references/serialization-patterns.md +0 -0
  509. /package/{rules → templates/rust/rules}/rust/sqlx-database/SKILL.md +0 -0
  510. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/REFERENCE.md +0 -0
  511. /package/{rules → templates/rust/rules}/rust/sqlx-database/references/query-patterns.md +0 -0
  512. /package/{rules → templates/rust/rules}/rust/tauri/SKILL.md +0 -0
  513. /package/{rules → templates/rust/rules}/rust/tauri/references/REFERENCE.md +0 -0
  514. /package/{rules → templates/rust/rules}/rust/tauri/references/command-patterns.md +0 -0
  515. /package/{rules → templates/rust/rules}/rust/tokio-runtime/SKILL.md +0 -0
  516. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/REFERENCE.md +0 -0
  517. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/async-patterns.md +0 -0
  518. /package/{rules → templates/rust/rules}/rust/tokio-runtime/references/synchronization.md +0 -0
  519. /package/{rules → templates/rust/rules}/rust/tonic/SKILL.md +0 -0
  520. /package/{rules → templates/rust/rules}/rust/tonic/references/REFERENCE.md +0 -0
  521. /package/{rules → templates/rust/rules}/rust/tonic/references/service-patterns.md +0 -0
  522. /package/{rules → templates/rust/rules}/rust/tracing/SKILL.md +0 -0
  523. /package/{rules → templates/rust/rules}/rust/tracing/references/REFERENCE.md +0 -0
  524. /package/{rules → templates/rust/rules}/rust/tracing/references/instrumentation.md +0 -0
  525. /package/{rules → templates/typescript/rules}/typescript/best-practices/SKILL.md +0 -0
  526. /package/{rules → templates/typescript/rules}/typescript/best-practices/references/REFERENCE.md +0 -0
  527. /package/{rules → templates/typescript/rules}/typescript/language/SKILL.md +0 -0
  528. /package/{rules → templates/typescript/rules}/typescript/language/references/REFERENCE.md +0 -0
  529. /package/{rules → templates/typescript/rules}/typescript/patterns.rule.md +0 -0
  530. /package/{rules → templates/typescript/rules}/typescript/security/SKILL.md +0 -0
  531. /package/{rules → templates/typescript/rules}/typescript/security/references/REFERENCE.md +0 -0
  532. /package/{rules → templates/typescript/rules}/typescript/tooling/SKILL.md +0 -0
  533. /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` |