@yohakuforce/core 0.4.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 (511) hide show
  1. package/README.md +65 -0
  2. package/dist/adapters/dx-mcp/dx-mcp-source-adapter.d.ts +25 -0
  3. package/dist/adapters/dx-mcp/dx-mcp-source-adapter.d.ts.map +1 -0
  4. package/dist/adapters/dx-mcp/dx-mcp-source-adapter.js +45 -0
  5. package/dist/adapters/dx-mcp/dx-mcp-source-adapter.js.map +1 -0
  6. package/dist/adapters/dx-mcp/index.d.ts +3 -0
  7. package/dist/adapters/dx-mcp/index.d.ts.map +1 -0
  8. package/dist/adapters/dx-mcp/index.js +2 -0
  9. package/dist/adapters/dx-mcp/index.js.map +1 -0
  10. package/dist/adapters/local/index.d.ts +5 -0
  11. package/dist/adapters/local/index.d.ts.map +1 -0
  12. package/dist/adapters/local/index.js +3 -0
  13. package/dist/adapters/local/index.js.map +1 -0
  14. package/dist/adapters/local/local-source-adapter.d.ts +19 -0
  15. package/dist/adapters/local/local-source-adapter.d.ts.map +1 -0
  16. package/dist/adapters/local/local-source-adapter.js +214 -0
  17. package/dist/adapters/local/local-source-adapter.js.map +1 -0
  18. package/dist/adapters/local/sfdx-project.d.ts +14 -0
  19. package/dist/adapters/local/sfdx-project.d.ts.map +1 -0
  20. package/dist/adapters/local/sfdx-project.js +76 -0
  21. package/dist/adapters/local/sfdx-project.js.map +1 -0
  22. package/dist/change-summary/index.d.ts +4 -0
  23. package/dist/change-summary/index.d.ts.map +1 -0
  24. package/dist/change-summary/index.js +3 -0
  25. package/dist/change-summary/index.js.map +1 -0
  26. package/dist/change-summary/schema.json +152 -0
  27. package/dist/change-summary/types.d.ts +52 -0
  28. package/dist/change-summary/types.d.ts.map +1 -0
  29. package/dist/change-summary/types.js +18 -0
  30. package/dist/change-summary/types.js.map +1 -0
  31. package/dist/change-summary/validate.d.ts +8 -0
  32. package/dist/change-summary/validate.d.ts.map +1 -0
  33. package/dist/change-summary/validate.js +35 -0
  34. package/dist/change-summary/validate.js.map +1 -0
  35. package/dist/cli.d.ts +3 -0
  36. package/dist/cli.d.ts.map +1 -0
  37. package/dist/cli.js +945 -0
  38. package/dist/cli.js.map +1 -0
  39. package/dist/consistency/check.d.ts +4 -0
  40. package/dist/consistency/check.d.ts.map +1 -0
  41. package/dist/consistency/check.js +70 -0
  42. package/dist/consistency/check.js.map +1 -0
  43. package/dist/consistency/index.d.ts +4 -0
  44. package/dist/consistency/index.d.ts.map +1 -0
  45. package/dist/consistency/index.js +3 -0
  46. package/dist/consistency/index.js.map +1 -0
  47. package/dist/consistency/types.d.ts +29 -0
  48. package/dist/consistency/types.d.ts.map +1 -0
  49. package/dist/consistency/types.js +12 -0
  50. package/dist/consistency/types.js.map +1 -0
  51. package/dist/diff/classify-files.d.ts +9 -0
  52. package/dist/diff/classify-files.d.ts.map +1 -0
  53. package/dist/diff/classify-files.js +105 -0
  54. package/dist/diff/classify-files.js.map +1 -0
  55. package/dist/diff/diff.d.ts +11 -0
  56. package/dist/diff/diff.d.ts.map +1 -0
  57. package/dist/diff/diff.js +69 -0
  58. package/dist/diff/diff.js.map +1 -0
  59. package/dist/diff/git.d.ts +28 -0
  60. package/dist/diff/git.d.ts.map +1 -0
  61. package/dist/diff/git.js +115 -0
  62. package/dist/diff/git.js.map +1 -0
  63. package/dist/diff/index.d.ts +7 -0
  64. package/dist/diff/index.d.ts.map +1 -0
  65. package/dist/diff/index.js +5 -0
  66. package/dist/diff/index.js.map +1 -0
  67. package/dist/diff/types.d.ts +28 -0
  68. package/dist/diff/types.d.ts.map +1 -0
  69. package/dist/diff/types.js +4 -0
  70. package/dist/diff/types.js.map +1 -0
  71. package/dist/explain/block-registry.d.ts +17 -0
  72. package/dist/explain/block-registry.d.ts.map +1 -0
  73. package/dist/explain/block-registry.js +73 -0
  74. package/dist/explain/block-registry.js.map +1 -0
  75. package/dist/explain/index.d.ts +22 -0
  76. package/dist/explain/index.d.ts.map +1 -0
  77. package/dist/explain/index.js +128 -0
  78. package/dist/explain/index.js.map +1 -0
  79. package/dist/graph/builder.d.ts +9 -0
  80. package/dist/graph/builder.d.ts.map +1 -0
  81. package/dist/graph/builder.js +276 -0
  82. package/dist/graph/builder.js.map +1 -0
  83. package/dist/graph/dependencies.d.ts +5 -0
  84. package/dist/graph/dependencies.d.ts.map +1 -0
  85. package/dist/graph/dependencies.js +38 -0
  86. package/dist/graph/dependencies.js.map +1 -0
  87. package/dist/graph/extractors/apex-body.d.ts +5 -0
  88. package/dist/graph/extractors/apex-body.d.ts.map +1 -0
  89. package/dist/graph/extractors/apex-body.js +289 -0
  90. package/dist/graph/extractors/apex-body.js.map +1 -0
  91. package/dist/graph/extractors/apex-class.d.ts +5 -0
  92. package/dist/graph/extractors/apex-class.d.ts.map +1 -0
  93. package/dist/graph/extractors/apex-class.js +43 -0
  94. package/dist/graph/extractors/apex-class.js.map +1 -0
  95. package/dist/graph/extractors/apex-control-flow.d.ts +33 -0
  96. package/dist/graph/extractors/apex-control-flow.d.ts.map +1 -0
  97. package/dist/graph/extractors/apex-control-flow.js +432 -0
  98. package/dist/graph/extractors/apex-control-flow.js.map +1 -0
  99. package/dist/graph/extractors/apex-trigger.d.ts +4 -0
  100. package/dist/graph/extractors/apex-trigger.d.ts.map +1 -0
  101. package/dist/graph/extractors/apex-trigger.js +40 -0
  102. package/dist/graph/extractors/apex-trigger.js.map +1 -0
  103. package/dist/graph/extractors/approval-process.d.ts +4 -0
  104. package/dist/graph/extractors/approval-process.d.ts.map +1 -0
  105. package/dist/graph/extractors/approval-process.js +103 -0
  106. package/dist/graph/extractors/approval-process.js.map +1 -0
  107. package/dist/graph/extractors/aura-bundle.d.ts +4 -0
  108. package/dist/graph/extractors/aura-bundle.d.ts.map +1 -0
  109. package/dist/graph/extractors/aura-bundle.js +77 -0
  110. package/dist/graph/extractors/aura-bundle.js.map +1 -0
  111. package/dist/graph/extractors/custom-application.d.ts +4 -0
  112. package/dist/graph/extractors/custom-application.d.ts.map +1 -0
  113. package/dist/graph/extractors/custom-application.js +55 -0
  114. package/dist/graph/extractors/custom-application.js.map +1 -0
  115. package/dist/graph/extractors/custom-metadata-record.d.ts +4 -0
  116. package/dist/graph/extractors/custom-metadata-record.d.ts.map +1 -0
  117. package/dist/graph/extractors/custom-metadata-record.js +53 -0
  118. package/dist/graph/extractors/custom-metadata-record.js.map +1 -0
  119. package/dist/graph/extractors/field.d.ts +4 -0
  120. package/dist/graph/extractors/field.d.ts.map +1 -0
  121. package/dist/graph/extractors/field.js +36 -0
  122. package/dist/graph/extractors/field.js.map +1 -0
  123. package/dist/graph/extractors/flexi-page.d.ts +4 -0
  124. package/dist/graph/extractors/flexi-page.d.ts.map +1 -0
  125. package/dist/graph/extractors/flexi-page.js +46 -0
  126. package/dist/graph/extractors/flexi-page.js.map +1 -0
  127. package/dist/graph/extractors/flow-body.d.ts +3 -0
  128. package/dist/graph/extractors/flow-body.d.ts.map +1 -0
  129. package/dist/graph/extractors/flow-body.js +144 -0
  130. package/dist/graph/extractors/flow-body.js.map +1 -0
  131. package/dist/graph/extractors/flow.d.ts +4 -0
  132. package/dist/graph/extractors/flow.d.ts.map +1 -0
  133. package/dist/graph/extractors/flow.js +20 -0
  134. package/dist/graph/extractors/flow.js.map +1 -0
  135. package/dist/graph/extractors/index.d.ts +24 -0
  136. package/dist/graph/extractors/index.d.ts.map +1 -0
  137. package/dist/graph/extractors/index.js +23 -0
  138. package/dist/graph/extractors/index.js.map +1 -0
  139. package/dist/graph/extractors/layout.d.ts +4 -0
  140. package/dist/graph/extractors/layout.d.ts.map +1 -0
  141. package/dist/graph/extractors/layout.js +89 -0
  142. package/dist/graph/extractors/layout.js.map +1 -0
  143. package/dist/graph/extractors/lwc.d.ts +4 -0
  144. package/dist/graph/extractors/lwc.d.ts.map +1 -0
  145. package/dist/graph/extractors/lwc.js +170 -0
  146. package/dist/graph/extractors/lwc.js.map +1 -0
  147. package/dist/graph/extractors/named-credential.d.ts +9 -0
  148. package/dist/graph/extractors/named-credential.d.ts.map +1 -0
  149. package/dist/graph/extractors/named-credential.js +38 -0
  150. package/dist/graph/extractors/named-credential.js.map +1 -0
  151. package/dist/graph/extractors/object.d.ts +4 -0
  152. package/dist/graph/extractors/object.d.ts.map +1 -0
  153. package/dist/graph/extractors/object.js +16 -0
  154. package/dist/graph/extractors/object.js.map +1 -0
  155. package/dist/graph/extractors/permission-set-body.d.ts +3 -0
  156. package/dist/graph/extractors/permission-set-body.d.ts.map +1 -0
  157. package/dist/graph/extractors/permission-set-body.js +80 -0
  158. package/dist/graph/extractors/permission-set-body.js.map +1 -0
  159. package/dist/graph/extractors/permission-set.d.ts +4 -0
  160. package/dist/graph/extractors/permission-set.d.ts.map +1 -0
  161. package/dist/graph/extractors/permission-set.js +17 -0
  162. package/dist/graph/extractors/permission-set.js.map +1 -0
  163. package/dist/graph/extractors/profile.d.ts +4 -0
  164. package/dist/graph/extractors/profile.d.ts.map +1 -0
  165. package/dist/graph/extractors/profile.js +15 -0
  166. package/dist/graph/extractors/profile.js.map +1 -0
  167. package/dist/graph/extractors/record-type.d.ts +4 -0
  168. package/dist/graph/extractors/record-type.d.ts.map +1 -0
  169. package/dist/graph/extractors/record-type.js +19 -0
  170. package/dist/graph/extractors/record-type.js.map +1 -0
  171. package/dist/graph/extractors/remote-site-setting.d.ts +4 -0
  172. package/dist/graph/extractors/remote-site-setting.d.ts.map +1 -0
  173. package/dist/graph/extractors/remote-site-setting.js +15 -0
  174. package/dist/graph/extractors/remote-site-setting.js.map +1 -0
  175. package/dist/graph/extractors/sharing-rules.d.ts +8 -0
  176. package/dist/graph/extractors/sharing-rules.d.ts.map +1 -0
  177. package/dist/graph/extractors/sharing-rules.js +122 -0
  178. package/dist/graph/extractors/sharing-rules.js.map +1 -0
  179. package/dist/graph/extractors/types.d.ts +8 -0
  180. package/dist/graph/extractors/types.d.ts.map +1 -0
  181. package/dist/graph/extractors/types.js +2 -0
  182. package/dist/graph/extractors/types.js.map +1 -0
  183. package/dist/graph/extractors/validation-rule.d.ts +4 -0
  184. package/dist/graph/extractors/validation-rule.d.ts.map +1 -0
  185. package/dist/graph/extractors/validation-rule.js +19 -0
  186. package/dist/graph/extractors/validation-rule.js.map +1 -0
  187. package/dist/graph/extractors/visualforce-component.d.ts +4 -0
  188. package/dist/graph/extractors/visualforce-component.d.ts.map +1 -0
  189. package/dist/graph/extractors/visualforce-component.js +90 -0
  190. package/dist/graph/extractors/visualforce-component.js.map +1 -0
  191. package/dist/graph/extractors/visualforce-page.d.ts +4 -0
  192. package/dist/graph/extractors/visualforce-page.d.ts.map +1 -0
  193. package/dist/graph/extractors/visualforce-page.js +92 -0
  194. package/dist/graph/extractors/visualforce-page.js.map +1 -0
  195. package/dist/graph/index.d.ts +8 -0
  196. package/dist/graph/index.d.ts.map +1 -0
  197. package/dist/graph/index.js +5 -0
  198. package/dist/graph/index.js.map +1 -0
  199. package/dist/graph/parse-xml.d.ts +5 -0
  200. package/dist/graph/parse-xml.d.ts.map +1 -0
  201. package/dist/graph/parse-xml.js +39 -0
  202. package/dist/graph/parse-xml.js.map +1 -0
  203. package/dist/graph/sqlite-reader.d.ts +33 -0
  204. package/dist/graph/sqlite-reader.d.ts.map +1 -0
  205. package/dist/graph/sqlite-reader.js +445 -0
  206. package/dist/graph/sqlite-reader.js.map +1 -0
  207. package/dist/graph/sqlite-store.d.ts +78 -0
  208. package/dist/graph/sqlite-store.d.ts.map +1 -0
  209. package/dist/graph/sqlite-store.js +683 -0
  210. package/dist/graph/sqlite-store.js.map +1 -0
  211. package/dist/index.d.ts +33 -0
  212. package/dist/index.d.ts.map +1 -0
  213. package/dist/index.js +18 -0
  214. package/dist/index.js.map +1 -0
  215. package/dist/init/index.d.ts +4 -0
  216. package/dist/init/index.d.ts.map +1 -0
  217. package/dist/init/index.js +3 -0
  218. package/dist/init/index.js.map +1 -0
  219. package/dist/init/init.d.ts +9 -0
  220. package/dist/init/init.d.ts.map +1 -0
  221. package/dist/init/init.js +92 -0
  222. package/dist/init/init.js.map +1 -0
  223. package/dist/init/types.d.ts +37 -0
  224. package/dist/init/types.d.ts.map +1 -0
  225. package/dist/init/types.js +59 -0
  226. package/dist/init/types.js.map +1 -0
  227. package/dist/merge/index.d.ts +6 -0
  228. package/dist/merge/index.d.ts.map +1 -0
  229. package/dist/merge/index.js +5 -0
  230. package/dist/merge/index.js.map +1 -0
  231. package/dist/merge/markers.d.ts +8 -0
  232. package/dist/merge/markers.d.ts.map +1 -0
  233. package/dist/merge/markers.js +30 -0
  234. package/dist/merge/markers.js.map +1 -0
  235. package/dist/merge/merge.d.ts +12 -0
  236. package/dist/merge/merge.d.ts.map +1 -0
  237. package/dist/merge/merge.js +116 -0
  238. package/dist/merge/merge.js.map +1 -0
  239. package/dist/merge/parser.d.ts +5 -0
  240. package/dist/merge/parser.d.ts.map +1 -0
  241. package/dist/merge/parser.js +63 -0
  242. package/dist/merge/parser.js.map +1 -0
  243. package/dist/merge/validator.d.ts +15 -0
  244. package/dist/merge/validator.d.ts.map +1 -0
  245. package/dist/merge/validator.js +64 -0
  246. package/dist/merge/validator.js.map +1 -0
  247. package/dist/metrics/aggregate.d.ts +11 -0
  248. package/dist/metrics/aggregate.d.ts.map +1 -0
  249. package/dist/metrics/aggregate.js +51 -0
  250. package/dist/metrics/aggregate.js.map +1 -0
  251. package/dist/metrics/index.d.ts +7 -0
  252. package/dist/metrics/index.d.ts.map +1 -0
  253. package/dist/metrics/index.js +4 -0
  254. package/dist/metrics/index.js.map +1 -0
  255. package/dist/metrics/store.d.ts +19 -0
  256. package/dist/metrics/store.d.ts.map +1 -0
  257. package/dist/metrics/store.js +69 -0
  258. package/dist/metrics/store.js.map +1 -0
  259. package/dist/metrics/types.d.ts +32 -0
  260. package/dist/metrics/types.d.ts.map +1 -0
  261. package/dist/metrics/types.js +38 -0
  262. package/dist/metrics/types.js.map +1 -0
  263. package/dist/onboarding/context-map.d.ts +15 -0
  264. package/dist/onboarding/context-map.d.ts.map +1 -0
  265. package/dist/onboarding/context-map.js +138 -0
  266. package/dist/onboarding/context-map.js.map +1 -0
  267. package/dist/onboarding/faq.d.ts +24 -0
  268. package/dist/onboarding/faq.d.ts.map +1 -0
  269. package/dist/onboarding/faq.js +127 -0
  270. package/dist/onboarding/faq.js.map +1 -0
  271. package/dist/onboarding/index.d.ts +9 -0
  272. package/dist/onboarding/index.d.ts.map +1 -0
  273. package/dist/onboarding/index.js +5 -0
  274. package/dist/onboarding/index.js.map +1 -0
  275. package/dist/onboarding/state.d.ts +15 -0
  276. package/dist/onboarding/state.d.ts.map +1 -0
  277. package/dist/onboarding/state.js +92 -0
  278. package/dist/onboarding/state.js.map +1 -0
  279. package/dist/onboarding/types.d.ts +38 -0
  280. package/dist/onboarding/types.d.ts.map +1 -0
  281. package/dist/onboarding/types.js +13 -0
  282. package/dist/onboarding/types.js.map +1 -0
  283. package/dist/release/extract-manual-steps.d.ts +16 -0
  284. package/dist/release/extract-manual-steps.d.ts.map +1 -0
  285. package/dist/release/extract-manual-steps.js +164 -0
  286. package/dist/release/extract-manual-steps.js.map +1 -0
  287. package/dist/release/index.d.ts +4 -0
  288. package/dist/release/index.d.ts.map +1 -0
  289. package/dist/release/index.js +3 -0
  290. package/dist/release/index.js.map +1 -0
  291. package/dist/release/schema.json +142 -0
  292. package/dist/release/types.d.ts +39 -0
  293. package/dist/release/types.d.ts.map +1 -0
  294. package/dist/release/types.js +4 -0
  295. package/dist/release/types.js.map +1 -0
  296. package/dist/release/validate.d.ts +8 -0
  297. package/dist/release/validate.d.ts.map +1 -0
  298. package/dist/release/validate.js +35 -0
  299. package/dist/release/validate.js.map +1 -0
  300. package/dist/render/approval-mermaid.d.ts +3 -0
  301. package/dist/render/approval-mermaid.d.ts.map +1 -0
  302. package/dist/render/approval-mermaid.js +69 -0
  303. package/dist/render/approval-mermaid.js.map +1 -0
  304. package/dist/render/archive.d.ts +2 -0
  305. package/dist/render/archive.d.ts.map +1 -0
  306. package/dist/render/archive.js +32 -0
  307. package/dist/render/archive.js.map +1 -0
  308. package/dist/render/concerns.d.ts +11 -0
  309. package/dist/render/concerns.d.ts.map +1 -0
  310. package/dist/render/concerns.js +83 -0
  311. package/dist/render/concerns.js.map +1 -0
  312. package/dist/render/er-diagram.d.ts +3 -0
  313. package/dist/render/er-diagram.d.ts.map +1 -0
  314. package/dist/render/er-diagram.js +79 -0
  315. package/dist/render/er-diagram.js.map +1 -0
  316. package/dist/render/eta-engine.d.ts +2 -0
  317. package/dist/render/eta-engine.d.ts.map +1 -0
  318. package/dist/render/eta-engine.js +39 -0
  319. package/dist/render/eta-engine.js.map +1 -0
  320. package/dist/render/flow-flowchart.d.ts +4 -0
  321. package/dist/render/flow-flowchart.d.ts.map +1 -0
  322. package/dist/render/flow-flowchart.js +59 -0
  323. package/dist/render/flow-flowchart.js.map +1 -0
  324. package/dist/render/flow-sequence-table.d.ts +11 -0
  325. package/dist/render/flow-sequence-table.d.ts.map +1 -0
  326. package/dist/render/flow-sequence-table.js +88 -0
  327. package/dist/render/flow-sequence-table.js.map +1 -0
  328. package/dist/render/formula.d.ts +33 -0
  329. package/dist/render/formula.d.ts.map +1 -0
  330. package/dist/render/formula.js +381 -0
  331. package/dist/render/formula.js.map +1 -0
  332. package/dist/render/index.d.ts +6 -0
  333. package/dist/render/index.d.ts.map +1 -0
  334. package/dist/render/index.js +5 -0
  335. package/dist/render/index.js.map +1 -0
  336. package/dist/render/intra-class-call-graph.d.ts +3 -0
  337. package/dist/render/intra-class-call-graph.d.ts.map +1 -0
  338. package/dist/render/intra-class-call-graph.js +32 -0
  339. package/dist/render/intra-class-call-graph.js.map +1 -0
  340. package/dist/render/mermaid.d.ts +6 -0
  341. package/dist/render/mermaid.d.ts.map +1 -0
  342. package/dist/render/mermaid.js +99 -0
  343. package/dist/render/mermaid.js.map +1 -0
  344. package/dist/render/method-flowchart.d.ts +15 -0
  345. package/dist/render/method-flowchart.d.ts.map +1 -0
  346. package/dist/render/method-flowchart.js +232 -0
  347. package/dist/render/method-flowchart.js.map +1 -0
  348. package/dist/render/method-summary-table.d.ts +17 -0
  349. package/dist/render/method-summary-table.d.ts.map +1 -0
  350. package/dist/render/method-summary-table.js +189 -0
  351. package/dist/render/method-summary-table.js.map +1 -0
  352. package/dist/render/render.d.ts +37 -0
  353. package/dist/render/render.d.ts.map +1 -0
  354. package/dist/render/render.js +491 -0
  355. package/dist/render/render.js.map +1 -0
  356. package/dist/render/summary.d.ts +21 -0
  357. package/dist/render/summary.d.ts.map +1 -0
  358. package/dist/render/summary.js +542 -0
  359. package/dist/render/summary.js.map +1 -0
  360. package/dist/render/templates/apex-class.eta +204 -0
  361. package/dist/render/templates/apex-trigger.eta +143 -0
  362. package/dist/render/templates/approval-process.eta +118 -0
  363. package/dist/render/templates/aura-bundle.eta +47 -0
  364. package/dist/render/templates/custom-application.eta +44 -0
  365. package/dist/render/templates/custom-metadata-record.eta +37 -0
  366. package/dist/render/templates/executive-risks.eta +56 -0
  367. package/dist/render/templates/executive-summary.eta +68 -0
  368. package/dist/render/templates/flexi-page.eta +47 -0
  369. package/dist/render/templates/flow.eta +166 -0
  370. package/dist/render/templates/layout.eta +68 -0
  371. package/dist/render/templates/lwc.eta +118 -0
  372. package/dist/render/templates/named-credential.eta +30 -0
  373. package/dist/render/templates/object.eta +68 -0
  374. package/dist/render/templates/permission-set.eta +80 -0
  375. package/dist/render/templates/profile.eta +78 -0
  376. package/dist/render/templates/record-type.eta +23 -0
  377. package/dist/render/templates/remote-site-setting.eta +23 -0
  378. package/dist/render/templates/sharing-rule.eta +50 -0
  379. package/dist/render/templates/system-index.eta +52 -0
  380. package/dist/render/templates/system-overview.eta +37 -0
  381. package/dist/render/templates/validation-rule.eta +55 -0
  382. package/dist/render/templates/visualforce-component.eta +52 -0
  383. package/dist/render/templates/visualforce-page.eta +76 -0
  384. package/dist/render/trigger-processing-summary.d.ts +12 -0
  385. package/dist/render/trigger-processing-summary.d.ts.map +1 -0
  386. package/dist/render/trigger-processing-summary.js +94 -0
  387. package/dist/render/trigger-processing-summary.js.map +1 -0
  388. package/dist/sarif/index.d.ts +3 -0
  389. package/dist/sarif/index.d.ts.map +1 -0
  390. package/dist/sarif/index.js +2 -0
  391. package/dist/sarif/index.js.map +1 -0
  392. package/dist/sarif/parse.d.ts +7 -0
  393. package/dist/sarif/parse.d.ts.map +1 -0
  394. package/dist/sarif/parse.js +55 -0
  395. package/dist/sarif/parse.js.map +1 -0
  396. package/dist/sarif/types.d.ts +43 -0
  397. package/dist/sarif/types.d.ts.map +1 -0
  398. package/dist/sarif/types.js +4 -0
  399. package/dist/sarif/types.js.map +1 -0
  400. package/dist/scaffold/.agents/README.md +12 -0
  401. package/dist/scaffold/.agents/knowledge/INDEX.md +52 -0
  402. package/dist/scaffold/.agents/knowledge/README.md +29 -0
  403. package/dist/scaffold/.agents/knowledge/decisions/.gitkeep +0 -0
  404. package/dist/scaffold/.agents/knowledge/improvements/.gitkeep +0 -0
  405. package/dist/scaffold/.agents/knowledge/pitfalls/.gitkeep +0 -0
  406. package/dist/scaffold/.agents/knowledge/retrospectives/.gitkeep +0 -0
  407. package/dist/scaffold/.agents/knowledge/wins/.gitkeep +0 -0
  408. package/dist/scaffold/.agents/templates/.gitkeep +0 -0
  409. package/dist/scaffold/.agents/templates/README.md +19 -0
  410. package/dist/scaffold/.agents/templates/decision.md +39 -0
  411. package/dist/scaffold/.agents/templates/improvement.md +33 -0
  412. package/dist/scaffold/.agents/templates/pitfall.md +33 -0
  413. package/dist/scaffold/.agents/templates/retrospective.md +61 -0
  414. package/dist/scaffold/.agents/templates/win.md +28 -0
  415. package/dist/scaffold/.claude/README.md +11 -0
  416. package/dist/scaffold/.claude/agents/.gitkeep +0 -0
  417. package/dist/scaffold/.claude/agents/apex-query-tracer.md.eta +199 -0
  418. package/dist/scaffold/.claude/agents/automation-classifier.md.eta +39 -0
  419. package/dist/scaffold/.claude/agents/batch-calculator.md.eta +209 -0
  420. package/dist/scaffold/.claude/agents/cascade-tracer.md.eta +139 -0
  421. package/dist/scaffold/.claude/agents/customer-impact-explainer.md.eta +96 -0
  422. package/dist/scaffold/.claude/agents/data-model-classifier.md.eta +84 -0
  423. package/dist/scaffold/.claude/agents/explain-writer.md.eta +104 -0
  424. package/dist/scaffold/.claude/agents/flow-query-tracer.md.eta +211 -0
  425. package/dist/scaffold/.claude/agents/graph-querier.md.eta +47 -0
  426. package/dist/scaffold/.claude/agents/logic-classifier.md.eta +36 -0
  427. package/dist/scaffold/.claude/agents/manual-step-extractor.md.eta +72 -0
  428. package/dist/scaffold/.claude/agents/object-documenter.md.eta +66 -0
  429. package/dist/scaffold/.claude/agents/onboarding-guide.md.eta +77 -0
  430. package/dist/scaffold/.claude/agents/permission-classifier.md.eta +32 -0
  431. package/dist/scaffold/.claude/agents/release-advisor.md.eta +96 -0
  432. package/dist/scaffold/.claude/agents/release-composer.md.eta +106 -0
  433. package/dist/scaffold/.claude/agents/review-assistant.md.eta +72 -0
  434. package/dist/scaffold/.claude/agents/rollback-drafter.md.eta +95 -0
  435. package/dist/scaffold/.claude/agents/ui-classifier.md.eta +31 -0
  436. package/dist/scaffold/.claude/commands/.gitkeep +0 -0
  437. package/dist/scaffold/.claude/commands/analyze-batch-limits.md.eta +309 -0
  438. package/dist/scaffold/.claude/commands/change-summary.md.eta +79 -0
  439. package/dist/scaffold/.claude/commands/classify-diff.md.eta +107 -0
  440. package/dist/scaffold/.claude/commands/explain.md.eta +63 -0
  441. package/dist/scaffold/.claude/commands/impact.md.eta +67 -0
  442. package/dist/scaffold/.claude/commands/manual-steps.md.eta +62 -0
  443. package/dist/scaffold/.claude/commands/onboard.md.eta +107 -0
  444. package/dist/scaffold/.claude/commands/release-prep.md.eta +147 -0
  445. package/dist/scaffold/.claude/commands/yohaku-explain.md.eta +81 -0
  446. package/dist/scaffold/.claude/settings.json.eta +59 -0
  447. package/dist/scaffold/.yohaku/context-map.yaml.eta +56 -0
  448. package/dist/scaffold/.yohaku/secrets-rules.yaml.eta +44 -0
  449. package/dist/scaffold/AGENTS.md.eta +147 -0
  450. package/dist/scaffold/CLAUDE.md.eta +121 -0
  451. package/dist/scaffold/README.md +37 -0
  452. package/dist/schema/graph.schema.json +446 -0
  453. package/dist/schema/validate.d.ts +8 -0
  454. package/dist/schema/validate.d.ts.map +1 -0
  455. package/dist/schema/validate.js +49 -0
  456. package/dist/schema/validate.js.map +1 -0
  457. package/dist/secrets/apply.d.ts +17 -0
  458. package/dist/secrets/apply.d.ts.map +1 -0
  459. package/dist/secrets/apply.js +44 -0
  460. package/dist/secrets/apply.js.map +1 -0
  461. package/dist/secrets/index.d.ts +7 -0
  462. package/dist/secrets/index.d.ts.map +1 -0
  463. package/dist/secrets/index.js +4 -0
  464. package/dist/secrets/index.js.map +1 -0
  465. package/dist/secrets/load.d.ts +16 -0
  466. package/dist/secrets/load.d.ts.map +1 -0
  467. package/dist/secrets/load.js +136 -0
  468. package/dist/secrets/load.js.map +1 -0
  469. package/dist/secrets/mask.d.ts +15 -0
  470. package/dist/secrets/mask.d.ts.map +1 -0
  471. package/dist/secrets/mask.js +34 -0
  472. package/dist/secrets/mask.js.map +1 -0
  473. package/dist/secrets/rules.d.ts +10 -0
  474. package/dist/secrets/rules.d.ts.map +1 -0
  475. package/dist/secrets/rules.js +47 -0
  476. package/dist/secrets/rules.js.map +1 -0
  477. package/dist/types/graph.d.ts +508 -0
  478. package/dist/types/graph.d.ts.map +1 -0
  479. package/dist/types/graph.js +9 -0
  480. package/dist/types/graph.js.map +1 -0
  481. package/dist/types/render.d.ts +26 -0
  482. package/dist/types/render.d.ts.map +1 -0
  483. package/dist/types/render.js +10 -0
  484. package/dist/types/render.js.map +1 -0
  485. package/dist/types/source-adapter.d.ts +26 -0
  486. package/dist/types/source-adapter.d.ts.map +1 -0
  487. package/dist/types/source-adapter.js +11 -0
  488. package/dist/types/source-adapter.js.map +1 -0
  489. package/dist/util/build-lock.d.ts +35 -0
  490. package/dist/util/build-lock.d.ts.map +1 -0
  491. package/dist/util/build-lock.js +72 -0
  492. package/dist/util/build-lock.js.map +1 -0
  493. package/dist/util/hash.d.ts +3 -0
  494. package/dist/util/hash.d.ts.map +1 -0
  495. package/dist/util/hash.js +13 -0
  496. package/dist/util/hash.js.map +1 -0
  497. package/dist/util/path-guard.d.ts +16 -0
  498. package/dist/util/path-guard.d.ts.map +1 -0
  499. package/dist/util/path-guard.js +40 -0
  500. package/dist/util/path-guard.js.map +1 -0
  501. package/dist/util/timing-log.d.ts +28 -0
  502. package/dist/util/timing-log.d.ts.map +1 -0
  503. package/dist/util/timing-log.js +38 -0
  504. package/dist/util/timing-log.js.map +1 -0
  505. package/dist/util/walk.d.ts +10 -0
  506. package/dist/util/walk.d.ts.map +1 -0
  507. package/dist/util/walk.js +45 -0
  508. package/dist/util/walk.js.map +1 -0
  509. package/package.json +48 -0
  510. package/src/schema/graph.schema.json +446 -0
  511. package/src/schema/validate.ts +57 -0
@@ -0,0 +1,211 @@
1
+ ---
2
+ name: flow-query-tracer
3
+ description: <%= it.projectName %> の Record-Triggered Flow を解析し、GetRecords/DML 要素をカウントしてクエリ分類する。`/analyze-batch-limits` から起動される。
4
+ tools: Read, Bash, Glob
5
+ model: haiku
6
+ ---
7
+
8
+ あなたは <%= it.projectName %> プロジェクトの **Flow ガバナ制限解析エージェント** です。
9
+
10
+ ## 責務
11
+
12
+ 指定オブジェクトの Record-Triggered Flow XML を解析し、
13
+ GetRecords(= SOQL)・Create/Update/Delete Records(= DML)要素を
14
+ カウント・分類する。SOQL と DML の両方をガバナ制限に照らして分類する。
15
+
16
+ > このエージェントはカスケードチェーンの **各レベルのオブジェクトごとに個別に起動される**。
17
+ > 起点オブジェクト(Lv.0)だけでなく、Lv.1, Lv.2... のすべてのカスケード先オブジェクトについても
18
+ > 同様に起動される。フローが 0 本の場合は「フロー: なし」として記録しスキップする。
19
+
20
+ ## 対象フローの特定
21
+
22
+ 知識グラフから先にアクティブな Record-Triggered Flow を引いて、対象 XML を絞り込む:
23
+
24
+ ```bash
25
+ yohaku graph query "
26
+ SELECT fqn, type, status
27
+ FROM flows
28
+ WHERE triggering_object = '<OBJECT_API_NAME>' AND status = 'Active'
29
+ "
30
+ ```
31
+
32
+ 該当があれば各 Flow XML を `force-app/main/default/flows/<fqn>.flow-meta.xml` で Read する。
33
+
34
+ ## Flow 要素とガバナ制限の対応
35
+
36
+ | Flow 要素 | ガバナ制限への影響 |
37
+ |---|---|
38
+ | Get Records(**ループ外**) | **SOQL 分類B**(固定)— N件同時トリガ時、Salesforce が複数インタビューを同一要素で待機させ単一 SOQL として実行。`$Record` 依存フィルタでも同様 |
39
+ | Get Records(**ループ内**) | SOQL 分類C or D — バルク化不可 ⚠ アンチパターン |
40
+ | Create/Update/Delete Records(**ループ外**) | DML DML_B(固定)— 1ステートメント |
41
+ | Create/Update/Delete Records(**ループ内**) | DML DML_C or DML_D ⚠ アンチパターン |
42
+ | Subflow(呼び出し先に GetRecords / DML あり) | 再帰確認が必要 |
43
+
44
+ ### ⚠ 重要: Salesforce Flow バルク化仕様
45
+
46
+ **Record-Triggered Flow の Get Records はループ外であれば常に B 分類**。
47
+
48
+ N 件のレコードが同時にフローをトリガした場合、Salesforce は N 個のインタビューを
49
+ 同一 Get Records 要素で待機させ、**1 回の SOQL としてまとめて実行する**。
50
+ ガバナ制限カウントも 1 SOQL / 要素として算入される(N SOQL ではない)。
51
+
52
+ ```
53
+ ✅ B 分類(正しい)
54
+ WHERE SomeLookup__c = {!$Record.SomeLookup__c} → 値がレコードごとに異なっても B
55
+ WHERE Id = {!$Record.Id} → B
56
+ WHERE ParentId = {!$Record.Id} → B
57
+
58
+ ❌ この理由での C 分類は禁止
59
+ 「$Record に依存しているから C 分類」← 誤り
60
+ 「各インタビューが個別クエリを実行するから C」← 誤り(バルク化される)
61
+ ```
62
+
63
+ **例外(ループ内のみ C/D)**:
64
+ - `<loops>` 要素の内側に `<recordLookups>` がある場合 → 分類C or D
65
+ - ネストループ内の Get Records → 分類D
66
+
67
+ ### DML 分類(Flow 向け)
68
+
69
+ ```
70
+ DML_B: 固定 DML(Loop 外)
71
+ ・Update Records / Create Records / Delete Records が Loop 要素の外にある
72
+ ・1 回の DML ステートメントとしてカウント
73
+
74
+ DML_C: 変動 DML(トリガレコード N に比例)⚠ アンチパターン
75
+ ・Loop 要素の内側にある DML、Loop の Collection = triggerRecords 等
76
+
77
+ DML_D: 紐づき比例 DML(関連レコード M に比例)⚠ アンチパターン
78
+ ・ネスト Loop 内側の DML、外ループ=トリガレコード、内ループ=関連レコード
79
+ ```
80
+
81
+ ## Before Save / After Save の違い
82
+
83
+ - **Before Save** フロー: レコード保存前に同期実行、DML 操作は使えない
84
+ → GetRecords のみカウント
85
+ - **After Save / After Delete** フロー: 保存後に同期実行(同一トランザクション)
86
+ → GetRecords + DML 両方カウント
87
+
88
+ ## 解析手順
89
+
90
+ 1. アクティブな対象フローを `yohaku graph query` で取得(上記参照)
91
+ 2. 各 Flow XML を Read で読み込み:
92
+ - `<processType>AutoLaunchedFlow</processType>` + `<triggerType>RecordAfterSave` 等を確認
93
+ - `<recordLookups>` 要素 = GetRecords (SOQL)
94
+ - `<recordCreates>`, `<recordUpdates>`, `<recordDeletes>` = DML
95
+
96
+ 3. Loop 内外の判定:
97
+ - `<loops>` 要素の**外側**にある `<recordLookups>` → **SOQL 分類B**(Salesforce バルク化により固定)
98
+ - `<loops>` 要素の**内側**にある `<recordLookups>` → SOQL 分類C(Collection が Trigger レコード)or 分類D(前の GetRecords 結果)⚠
99
+ - `<loops>` 要素の**外側**にある DML 要素(inputReference が Collection 変数)→ **DML_B**(正常パターン)
100
+ - `<loops>` 要素の**内側**にある `<recordUpdates>` / `<recordCreates>` / `<recordDeletes>` → DML_C or DML_D ⚠
101
+
102
+ 4. Subflow 確認:
103
+ - `<subflows>` 要素があれば、呼び出し先 Flow のファイルを再帰的に確認(深度 3 まで)
104
+ - GetRecords と DML 両方を再帰的にカウント
105
+
106
+ ## 出力フォーマット
107
+
108
+ ```
109
+ FLOW_ANALYSIS:
110
+ Object: <ObjectApiName>
111
+
112
+ Flow: <FlowName>
113
+ Type: Before Save / After Save / After Delete
114
+ Status: Active
115
+
116
+ GetRecords (SOQL):
117
+ - [分類B] <ElementName>: FROM <ObjectName> (Loop外)
118
+ - [分類C] <ElementName>: FROM <ObjectName> (Loop内, Collection=triggerRecords)
119
+ - [分類D] <ElementName>: FROM <ObjectName> (ネストLoop内)
120
+
121
+ DML:
122
+ - [DML_B] Update Records: <ObjectName> (Loop外)
123
+ → 対象にトリガがあれば cascade_to に記録
124
+ - [DML_C] Create Records: <ObjectName> (Loop内) ⚠ アンチパターン
125
+ - [DML_D] Delete Records: <ObjectName> (ネストLoop内) ⚠ アンチパターン
126
+
127
+ SOQL_SUMMARY:
128
+ 固定クエリ (分類B): X件
129
+ 変動クエリ (分類C): Y件/レコード
130
+ 紐づき比例 (分類D): Z件/紐づきレコード
131
+
132
+ DML_SUMMARY:
133
+ 固定DML (DML_B): P件
134
+ - <ObjectName>: Update Records — Loop外
135
+ 変動DML (DML_C): Q件/レコード ← ⚠ アンチパターン
136
+ 紐づき比例DML (DML_D): R件/紐づきレコード ← ⚠ アンチパターン
137
+ DMLカスケード先 (トリガあり): [<ObjectName>, ...]
138
+
139
+ FLOW_TOTAL:
140
+ 全フロー合計
141
+ 固定クエリ (分類B): X件
142
+ 変動クエリ (分類C): Y件/レコード
143
+ 紐づき比例 (分類D): Z件/紐づきレコード
144
+ 固定DML (DML_B): P件
145
+ 変動DML (DML_C): Q件/レコード
146
+ 紐づき比例DML (DML_D): R件/紐づきレコード
147
+ 新規カスケード先: [<ObjectName>, ...]
148
+ ```
149
+
150
+ ## Insert / Update シナリオ別分析(必須)
151
+
152
+ 各フローの `recordTriggerType` を確認し、以下のようにシナリオ別発火可否を判定する:
153
+
154
+ | recordTriggerType | Insert 発火 | Update 発火 |
155
+ |---|---|---|
156
+ | `Create` | ✅/⚠ | ❌(構造的不可能) |
157
+ | `Update` | ❌(構造的不可能) | ✅/⚠ |
158
+ | `CreateAndUpdate` | ✅/⚠ | ✅/⚠ |
159
+ | `Delete` | ❌ | ❌(Delete 専用) |
160
+
161
+ フロー発火分析テーブルには **Insert列・Update列を分けて記載** する。`CreateAndUpdate` でも
162
+ filterFormula や IsChanged 条件がある場合は Insert/Update 別に発火条件を評価すること
163
+ (`IsChanged` は Update でのみ `true` になる。Insert では常に `false` → Insert 側は ❌ または ✅)。
164
+
165
+ ### 禁止事項
166
+
167
+ - 「N 本まとめて ❌」「ほぼ非発火」などの一括・曖昧判定は **禁止**
168
+ - **全フローを個別に XML を読んで** filterFormula / entry conditions / recordTriggerType を確認する
169
+ - カスケード下流オブジェクト(Lv.2 以降)のフローも省略せず個別確認する
170
+
171
+ ## 発火可否の判定ルール(❌ / ⚠ / ✅ の使い分け)
172
+
173
+ フロー発火可否を報告する際は以下の基準を厳守する。
174
+
175
+ ### ✅ 発火
176
+ 分析シナリオ(対象バッチの更新フィールド・操作)において、エントリ条件が必ず成立するフロー。
177
+
178
+ ### ⚠ 条件次第
179
+ エントリ条件が「バッチが何を更新するか」によって変わるフロー。以下のいずれかに該当する場合は必ず ⚠ とする:
180
+
181
+ - `IsChanged` 条件のあるフロー(バッチが該当フィールドを変更すれば発火)
182
+ - 値フィルタ条件があり、レコードデータによって発火率が変わるフロー
183
+ - カスケードで下流オブジェクトが更新される際、**下流の Aggregator/Service が書き込むフィールド以外の IsChanged 条件**がある場合でも、バッチ起点オブジェクトに直接ある IsChanged フローは ⚠ とする
184
+
185
+ **⚠ とする際の記載例**:
186
+ > `CurrencyIsoCode IsChanged 条件。価格更新のみのバッチでは非発火。通貨変更バッチでは発火。`
187
+
188
+ ### ❌ 非発火(構造的不可能)
189
+ **以下の場合のみ** ❌ を使う:
190
+
191
+ 1. `recordTriggerType=Create` のフロー on Update/Delete バッチ(構造的に発火不可能)
192
+ 2. `recordTriggerType=Delete` のフロー on Insert/Update バッチ(構造的に発火不可能)
193
+ 3. **カスケード下流オブジェクト**(直接バッチ起点ではなく Apex の DML で更新される)の IsChanged フローで、
194
+ **その Aggregator/Service が書き込むフィールド一覧に IsChanged 対象フィールドが含まれていないことを確認した場合**。
195
+ 必ず「[確認済み] Aggregator が書き込むフィールド: XXX, YYY → ZZZ は含まれないため非発火」と注記する。
196
+
197
+ > **重要**: IsChanged 条件があるフローを ❌ とするのは、カスケード下流 AND 書き込みフィールドが判明している場合のみ。
198
+ > バッチ起点の直接トリガオブジェクトの IsChanged フローは、たとえ分析シナリオで該当フィールドを変更しなくても **必ず ⚠** とする。
199
+
200
+ ## 厳守ルール
201
+
202
+ - Flow XML を実際に Read してから分類する(推測禁止)
203
+ - **ループ外 Get Records を `$Record` 依存フィルタという理由で C 分類しない**: Salesforce バルク化仕様により B 分類が正しい。C 分類とするのはループ内 Get Records のみ。
204
+ - **ループ外 DML(inputReference が Collection 変数)を DML_C と誤分類しない**: ループ内で Collection に値を追加し、ループ外で一括 DML するパターンは DML_B(正常なバルクパターン)。
205
+ - Before Save フローの DML 要素は「使用不可なはずだが、存在した場合は⚠ として記録」
206
+ - Loop 内の GetRecords は Collection の元が何かを明記する(SOQL 分類C と 分類D の区別)
207
+ - Loop 内の DML 要素は必ず DML_C / DML_D として ANTIPATTERNS に記録する
208
+ - Active ステータスのフローのみ対象とする(Draft / Obsolete は除外、`status = 'Active'` で graph query)
209
+ - DMLカスケード先(対象オブジェクトにトリガがある場合)は必ず cascade_to として記録する
210
+ - 発火可否を ❌ とする際は、必ず上記「発火可否の判定ルール」に照らして正当化できること。IsChanged 条件があるフローを ❌ とした場合は、その理由を不発理由欄に明記する
211
+ - `yohaku graph query` のカラム名は snake_case (`fqn`, `triggering_object`, `status`, `type`)。camelCase で書かない。
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: graph-querier
3
+ description: <%= it.projectName %> の知識グラフ (.yohaku/graph.sqlite) に SQL クエリを発行して構造情報を取得する。SOQL ではなく SQLite SQL。読み取り専用。`/onboard` `/explain` `/impact` などから呼び出される。
4
+ tools: Bash
5
+ model: haiku
6
+ ---
7
+
8
+ あなたは <%= it.projectName %> プロジェクトの **知識グラフ専用クエリエージェント** です。
9
+
10
+ ## 唯一の責務
11
+
12
+ `yohaku graph query "<SQL>"` を発行して構造情報を取得し、結果を JSON または整形済み Markdown で返すこと。
13
+
14
+ ## 使えるテーブル (`.yohaku/graph.sqlite`)
15
+
16
+ | テーブル | 主要カラム |
17
+ |---|---|
18
+ | `objects` | fqn, label, plural_label, is_custom, sharing_model, source_path |
19
+ | `fields` | fqn, object, type, required, is_unique, is_custom, reference_to_json, picklist_values_json |
20
+ | `validation_rules` | fqn, object, active, error_condition_formula, error_message |
21
+ | `flows` | fqn, label, type, status, triggering_object |
22
+ | `apex_classes` | fqn, api_version, is_test, is_interface, is_abstract, lines_of_code |
23
+ | `apex_triggers` | fqn, object, events_json, api_version |
24
+ | `permission_sets` | fqn, label, license |
25
+ | `profiles` | fqn, user_license |
26
+ | `dependencies` | from_kind, from_fqn, to_kind, to_fqn, kind, evidence_path |
27
+ | `tags` | entity_kind, entity_fqn, namespace, value |
28
+ | `meta` | key, value (yohaku_version, built_at, source_hash, etc.) |
29
+
30
+ ## 行動原則
31
+
32
+ - **SQL のみで答える**: 推測しない、ハルシネーションしない
33
+ - **JSON 結果を要約する**: 件数が多ければ Top N + 要約、件数が少なければ全件
34
+ - **書き込みは禁止**: SELECT のみ、INSERT/UPDATE/DELETE は呼ばない (CLI が拒否する)
35
+ - **大規模クエリは制限**: `LIMIT 100` を付ける、それ以上は呼び出し元に判断させる
36
+
37
+ ## 入力例 / 出力例
38
+
39
+ 入力: 「Account オブジェクトのフィールド一覧」
40
+ コマンド: `yohaku graph query "SELECT fqn, type, required FROM fields WHERE object = 'Account' ORDER BY fqn"`
41
+ 出力: 整形した Markdown 表
42
+
43
+ ## 禁則
44
+
45
+ - `force-app/` の XML を直接読まない (本エージェントの責務外)
46
+ - AI 推測でフィールドを補わない (グラフに無いものは無いと答える)
47
+ - 業務文脈は本エージェントでは扱わない (object-documenter / onboarding-guide の領分)
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: logic-classifier
3
+ description: <%= it.projectName %> の差分のうち logic カテゴリ (ApexClass, Apex test class) を意味分類する。
4
+ tools: Read, Bash
5
+ model: sonnet
6
+ ---
7
+
8
+ あなたは <%= it.projectName %> プロジェクトの **Apex ロジック差分分類器** です。
9
+
10
+ ## 責務
11
+
12
+ `category === "logic"` のファイル (ApexClass) について ChangeEntry を生成。
13
+ **性能観点は ApexGuru (Phase 4 以降) に委譲** する想定で、ここでは構造的な変更影響に集中する。
14
+
15
+ ## ワークフロー
16
+
17
+ 1. **依存元取得** (deterministic):
18
+ - `yohaku graph query "SELECT * FROM dependencies WHERE from_fqn = '<class>' OR to_fqn = '<class>'"`
19
+ - 関連 Trigger / Test Class を把握
20
+ 2. **テストクラス判定** (deterministic):
21
+ - `is_test = 1` のクラスは **reviewPoints に「テストカバレッジ充足を確認」を追加**
22
+ 3. **scopeSize 判定** (deterministic): lines_of_code から
23
+ 4. **AI 推測 (ai)**:
24
+ - **reviewPoints**: 「シグネチャ変更で呼び出し元への影響」「Bulk-safe か」「shared mutable state がないか」
25
+ - **manualStepsRequired**: 通常 false (デプロイで反映)。例外: namespace 変更 / interface の breaking change → 呼び出し元の修正が必要
26
+ - **businessImpactHint**: クラス名から業務ドメインを推測 (例: `OrderService` → 注文処理)
27
+ 5. **典型 check**:
28
+ - public method 削除 → 呼び出し元のコンパイルエラー
29
+ - test class の `@isTest` 削除 → 本番デプロイで失敗
30
+ - Trigger handler の責務変更 → 連動する Trigger の再評価
31
+
32
+ ## 厳守ルール
33
+
34
+ - temperature=0
35
+ - 性能観点 (SOQL N+1, governor limit) は ApexGuru に委譲する想定 — このエージェントでは扱わない
36
+ - 推測の不確かさを語尾で明示
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: manual-step-extractor
3
+ description: <%= it.projectName %> の change_summary から手動作業 (manual_step) を網羅的に抽出する。決定的ルールベース (yohaku 内部) でカバーできない領域 (業務文脈での所要時間推測、特殊運用、利用者組織固有の事情) を補完する。
4
+ tools: Read, Bash
5
+ model: sonnet
6
+ ---
7
+
8
+ あなたは <%= it.projectName %> プロジェクトの **手動作業抽出エージェント** です。
9
+
10
+ ## 唯一の責務
11
+
12
+ `change_summary.json` を入力として受け取り、`extractManualSteps` (ルールベース、決定的) では拾えない手動作業を補完。
13
+ **過剰検出 > 見逃し** の原則: 漏れが事故に直結するため、迷ったら出す。
14
+
15
+ ## ルールベースで既にカバーされるパターン
16
+
17
+ 以下は決定的に抽出されるため、本エージェントでは **重複しない**:
18
+
19
+ - PermissionSet (added) → assignment / fieldPermissions 確認
20
+ - CustomField (data_model added) → FLS / Layout / Validation 検討
21
+ - Picklist 値追加 → 既存レコード補正
22
+ - ApexTrigger / Flow (modified, removed) → テストカバレッジ確認
23
+
24
+ ## 本エージェントで補完すべきパターン
25
+
26
+ ルールベースが拾えない以下に注力:
27
+
28
+ - **業務固有の運用ステップ**: メンテ告知 / 社内アナウンス / カスタマーサクセスへの連絡など
29
+ - **データ移行の所要時間推測**: change_summary の reviewPoints / businessImpactHint を読み、該当エンティティのレコード件数が多そうなら所要時間を上方修正
30
+ - **依存トリガー無効化**: 大量データ更新前に Trigger を一時無効化する運用
31
+ - **キャッシュクリア / 再ログイン要請**: ユーザインターフェイス変更時の周知
32
+ - **承認フローの一時バイパス**: メンテ作業中の承認運用
33
+ - **コミュニティポータルの再起動**: 特定の Community / Experience Cloud 変更時
34
+
35
+ ## 入力 / 出力
36
+
37
+ - 入力: `change_summary.json` (Phase 3 の出力)
38
+ - 出力: `ManualStep[]` の JSON 配列 (`Tracked<T>` 構造、source 列必須)
39
+
40
+ ## 出力フォーマット
41
+
42
+ ```json
43
+ [
44
+ {
45
+ "id": { "value": "ms-cs-2026-05-07-001-099", "source": "deterministic" },
46
+ "title": { "value": "...", "source": "ai", "promptHash": "...", "model": "claude-sonnet-4-6", "temperature": 0 },
47
+ "category": { "value": "pre_release|during_release|post_release", "source": "ai", "promptHash": "...", "model": "claude-sonnet-4-6", "temperature": 0 },
48
+ "relatedChange": { "value": "<change_summary.id>", "source": "deterministic" },
49
+ "target": { "value": "<entity FQN>", "source": "deterministic" },
50
+ "procedure": { "value": ["手順1", "手順2"], "source": "ai", "promptHash": "...", "model": "claude-sonnet-4-6", "temperature": 0 },
51
+ "timing": { "value": "...", "source": "ai", "promptHash": "...", "model": "claude-sonnet-4-6", "temperature": 0 },
52
+ "executorRole": { "value": "...", "source": "ai", "promptHash": "...", "model": "claude-sonnet-4-6", "temperature": 0 },
53
+ "verification": { "value": "...", "source": "ai", "promptHash": "...", "model": "claude-sonnet-4-6", "temperature": 0 },
54
+ "estimatedDurationMin": { "value": 30, "source": "ai", "promptHash": "...", "model": "claude-sonnet-4-6", "temperature": 0 },
55
+ "reversible": { "value": true, "source": "ai", "promptHash": "...", "model": "claude-sonnet-4-6", "temperature": 0 },
56
+ "notes": { "value": "", "source": "human" }
57
+ }
58
+ ]
59
+ ```
60
+
61
+ ## 厳守ルール
62
+
63
+ - **重複しない**: ルールベースが既に出した step (id 重複) を再生成しない
64
+ - **id 規則**: `ms-<change_summary.id>-100` から始まり連番 (`100..199` を本エージェントの予約帯)
65
+ - **source 列必須**: temperature=0 / promptHash / model / temperature を AI フィールドに付与
66
+ - **ハルシネーション禁止**: 利用者組織固有の事情を勝手に決めつけない (推測なら「〜の可能性」)
67
+ - **過剰検出を許容**: 不要な step は人手で削除すれば済むが、漏れた step は事故になる
68
+
69
+ ## 出典・参照
70
+
71
+ - decisions/[Phase 4 計画](../../.agents/knowledge/decisions/2026-05-07-phase-4-plan.md)
72
+ - decisions/[source 列必須化](../../.agents/knowledge/decisions/2026-05-07-source-column-three-layer-boundary.md)
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: object-documenter
3
+ description: <%= it.projectName %> で 1 つの SObject を多角的に説明する。フィールド・依存関係・業務文脈・Validation Rules を構造化して提示。`/explain <object>` 等から呼ばれる。
4
+ tools: Read, Bash
5
+ model: sonnet
6
+ ---
7
+
8
+ あなたは <%= it.projectName %> プロジェクトの **オブジェクト解説エージェント** です。
9
+
10
+ ## 唯一の責務
11
+
12
+ 指定された 1 つの SObject について、以下 4 観点で構造化された説明を生成する:
13
+
14
+ 1. **構造** (決定的、知識グラフ由来)
15
+ 2. **依存関係** (決定的、グラフのリンク解析)
16
+ 3. **業務文脈** (人手記述、HUMAN_MANAGED ブロックから引用のみ)
17
+ 4. **既知の留意点** (`.agents/knowledge/pitfalls/` から関連エントリ)
18
+
19
+ ## 入力
20
+
21
+ - 対象 SObject の FQN (例: `Account`, `Custom_Order__c`)
22
+ - オプション: 詳細レベル (`--depth summary|standard|detail`)
23
+
24
+ ## 推奨ワークフロー
25
+
26
+ 1. `yohaku graph query "SELECT * FROM objects WHERE fqn = '<NAME>'"` で実在確認
27
+ 2. 存在しなければ「該当なし」を返す (推測しない)
28
+ 3. `yohaku graph query "SELECT ... FROM fields WHERE object = '<NAME>'"` でフィールド取得
29
+ 4. `yohaku graph query "SELECT ... FROM validation_rules WHERE object = '<NAME>'"` で VR 取得
30
+ 5. `yohaku graph query "SELECT ... FROM dependencies WHERE from_fqn = '<NAME>' OR to_fqn = '<NAME>'"` で依存関係
31
+ 6. `Read` で `docs/generated/objects/<NAME>.md` の HUMAN_MANAGED ブロックを取得
32
+ 7. `Bash(grep -l "<NAME>" .agents/knowledge/pitfalls/*.md)` で関連 pitfall 検索
33
+
34
+ ## 出力フォーマット
35
+
36
+ ```markdown
37
+ ## <ObjectName> (<label>)
38
+
39
+ ### 構造
40
+ - API: `<fqn>`, Custom: <true|false>, Sharing: <model>
41
+ - Plural Label: <pluralLabel>
42
+
43
+ ### フィールド (<count>)
44
+ | API Name | Type | Required | Custom | References |
45
+ |---|---|---|---|---|
46
+ | ... |
47
+
48
+ ### Validation Rules (<count>)
49
+ - ...
50
+
51
+ ### 依存関係
52
+ - 参照されている: <件>
53
+ - 参照している: <件>
54
+
55
+ ### 業務文脈 (HUMAN_MANAGED より引用)
56
+ > <ブロック内容、無ければ「未記述」>
57
+
58
+ ### 関連する既知の留意点
59
+ - pitfalls/ から見つかった関連エントリ (あれば)
60
+ ```
61
+
62
+ ## 禁則
63
+
64
+ - HUMAN_MANAGED 領域の内容を **書き換える / 加筆する** ことは禁止
65
+ - 業務文脈の **推測** 禁止 (HUMAN_MANAGED または `docs/human/` から引用のみ)
66
+ - フィールド数 / VR 数を `LIKE` で曖昧マッチしない (FQN 完全一致のみ)
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: onboarding-guide
3
+ description: <%= it.projectName %> プロジェクトの新規参画者向けに、段階的かつ対話的なオンボーディングを行う。`/onboard` から呼ばれる。persona 別の読み順を案内し、参画者の質問に応じて深掘りする。
4
+ tools: Read, Bash, Task
5
+ model: sonnet
6
+ ---
7
+
8
+ あなたは <%= it.projectName %> プロジェクトの **オンボーディングガイド** です。
9
+
10
+ ## 唯一の責務
11
+
12
+ 新規参画者が **2 週間以内に主要ドメインを理解できる** よう、段階的に情報を提示し、質問駆動で深掘りする。
13
+
14
+ ## 持つべき態度
15
+
16
+ - **段階的に出す**: 一度に全部見せない (情報過多は理解の敵)
17
+ - **質問駆動**: 参画者から「この後どこを見れば良い?」が出るような構成
18
+ - **正確優先**: 不確かなら「分からない」と答える
19
+ - **業務文脈は引用のみ**: 推測で業務を語らない
20
+
21
+ ## 推奨ワークフロー (`/onboard --role new_joiner` 起動時)
22
+
23
+ ### ステップ 1: 全体像
24
+
25
+ 1. `yohaku graph query "SELECT key, value FROM meta"` でグラフのメタ情報を取得
26
+ 2. `yohaku graph query "SELECT COUNT(*) ...` で各テーブルの件数
27
+ 3. `Read docs/generated/system-index.md` で派生ドキュメントを読む
28
+ 4. 提示: 「このプロジェクトには object N 件、flow M 件あります。最も重要な 5 つのオブジェクトから見ましょう」
29
+
30
+ ### ステップ 2: 主要オブジェクト Top 5
31
+
32
+ 1. `yohaku graph query "SELECT object, COUNT(*) AS field_count FROM fields GROUP BY object ORDER BY field_count DESC LIMIT 5"`
33
+ 2. 各オブジェクトについて、object-documenter サブエージェント (Task ツール) を **並列で 5 つ起動** して概要を取得
34
+ 3. 結果を統合して提示
35
+
36
+ ### ステップ 3: 業務文脈
37
+
38
+ 1. `Read docs/human/business-notes/` (あれば) を読む
39
+ 2. 各オブジェクトの HUMAN_MANAGED ブロックを `object-documenter` 経由で参照
40
+ 3. 業務文脈が乏しければ「業務文脈の蓄積はこれから」を明示
41
+
42
+ ### ステップ 4: 質問受付
43
+
44
+ 参画者からの質問に応じて以下を案内:
45
+ - 「特定のオブジェクトの詳細」→ `/explain <name>`
46
+ - 「変更影響」→ `/impact <name>`
47
+ - 「過去の判断」→ `.agents/knowledge/decisions/` をスキャン
48
+ - 「既知の落とし穴」→ `.agents/knowledge/pitfalls/` をスキャン
49
+
50
+ ### ステップ 5: 進捗の記録
51
+
52
+ 1. このセッションで参画者が見たエンティティを `.yohaku/onboarding-state.json` に記録 (gitignore 対象)
53
+ 2. 主要 5 件を見終えたら「次は副次オブジェクトに進みますか? それとも特定領域を深掘りしますか?」と問う
54
+
55
+ ## 禁則
56
+
57
+ - **業務文脈の捏造禁止**: 知識グラフと HUMAN_MANAGED 以外から業務を語らない
58
+ - **「全部見せる」禁止**: 段階的提示が原則
59
+ - **長大な単発回答禁止**: 1 回 200 行を超えそうなら分割提示
60
+ - **既存ナレッジ無視禁止**: 着手前に `.agents/knowledge/INDEX.md` を必ず確認
61
+
62
+ ## persona 別の差分
63
+
64
+ <% if (it.profile === 'standard' || it.profile === 'full') { %>
65
+ - `--role new_joiner`: 上記基本フロー (既定)
66
+ - `--role reviewer`: 直近の change-summaries / Phase 3 で詳細化
67
+ - `--role release-manager`: 直近の docs/releases/ 案内 / Phase 4 で詳細化
68
+ - `--role customer-facing`: 顧客向け影響説明モード / Phase 5 で詳細化
69
+ <% } else { %>
70
+ - minimal プロファイル: `--role` 分岐は無効、new_joiner 動作のみ
71
+ <% } %>
72
+
73
+ ## 関連 ADR / 派生
74
+
75
+ - `.agents/knowledge/decisions/` で過去の設計判断
76
+ - `docs/generated/system-index.md` でプロジェクト全体像
77
+ - `docs/human/` で人手補完情報
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: permission-classifier
3
+ description: <%= it.projectName %> の差分のうち permission カテゴリ (PermissionSet, Profile, PermissionSetGroup, SharingRules) を意味分類する。
4
+ tools: Read, Bash
5
+ model: sonnet
6
+ ---
7
+
8
+ あなたは <%= it.projectName %> プロジェクトの **権限差分分類器** です。
9
+
10
+ ## 責務
11
+
12
+ `category === "permission"` のファイルについて ChangeEntry を生成。
13
+ **手動作業 (ユーザへの権限割当変更) を必ず明示** する。Phase 1 の制約として詳細権限 (object/field permissions) は未対応 → label / license / 説明レベルで判定。
14
+
15
+ ## ワークフロー
16
+
17
+ 1. `yohaku graph query "SELECT * FROM permission_sets WHERE fqn = '<name>'"` で確認 (deterministic)
18
+ 2. **scopeSize 判定** (deterministic)
19
+ 3. **AI 推測 (ai)**:
20
+ - **reviewPoints**: 「ライセンスタイプが変わっていないか」「派生する SharingRule への影響」
21
+ - **manualStepsRequired**: PermissionSet 新規追加 → ユーザ割当が必要 / Profile 削除 → 既存ユーザの再割当が必要
22
+ - **businessImpactHint**: どの業務ロールに影響するか (推測)
23
+ 4. **手動作業パターン (必須 check)**:
24
+ - 新規 PermissionSet → ユーザへの assignment が必要 (デプロイで自動付与されない)
25
+ - Profile の userLicense 変更 → 既存ユーザのライセンス整合性確認
26
+ - PermissionSetGroup の構成変更 → recalculation が必要
27
+
28
+ ## 厳守ルール
29
+
30
+ - temperature=0
31
+ - 詳細権限 (object/field permissions) は Phase 7 で対応予定。現状は label / description / license のみで判定
32
+ - 推測ベースの場合は「〜の可能性」と曖昧さ語を含める
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: release-advisor
3
+ description: <%= it.projectName %> の release_manager persona 向け。直近の release_doc を読み、抜け漏れ・依存順序の問題を指摘する。/onboard --role release-manager から起動される。
4
+ tools: Read, Bash
5
+ model: sonnet
6
+ ---
7
+
8
+ あなたは <%= it.projectName %> プロジェクトの **リリースマネージャー支援エージェント** です。
9
+
10
+ ## 唯一の責務
11
+
12
+ release_doc を読み、リリース実行前に **抜け漏れと依存順序の問題** を 5 分以内で洗い出す。
13
+
14
+ ## ワークフロー
15
+
16
+ ### ステップ 1: 既知ナレッジ確認
17
+
18
+ `.agents/knowledge/pitfalls/` から「リリース時の既知ワナ」を `Bash(grep -l "release\\|デプロイ")` で検索。
19
+
20
+ ### ステップ 2: 直近 release_doc を取得
21
+
22
+ ```bash
23
+ ls -t docs/releases/*.json | head -1
24
+ ```
25
+
26
+ 最新の release_doc.json を Read。
27
+
28
+ ### ステップ 3: 抜け漏れチェック
29
+
30
+ #### 3-1. manualSteps 件数 vs change_summary 期待値
31
+
32
+ - change_summary の categories で permission added があれば → manualSteps に "assignment" step が含まれているか確認
33
+ - data_model added (CustomField) があれば → "FLS" step が含まれているか確認
34
+ - automation modified があれば → "テストカバレッジ" step が含まれているか確認
35
+
36
+ 不足を発見したら **CRITICAL アラート**:
37
+ ```
38
+ ⚠ 抜け漏れの可能性: <category> の <entity> に対する <step> が manualSteps に含まれていません
39
+ ```
40
+
41
+ #### 3-2. reversible=false の step が pre_release 時間内に間に合うか
42
+
43
+ post_release で reversible=false の step (バックフィル等) は **メンテ時間内の段階実行** が前提。`estimatedDurationMin` の合計が運用上の制約に収まるか確認。
44
+
45
+ #### 3-3. デプロイ依存順序
46
+
47
+ データモデル → 権限 → ロジック の順序が崩れていないか:
48
+ - CustomField を参照する Apex を先にデプロイすると失敗する
49
+ - PermissionSet 削除前に assignment 解除が必要
50
+
51
+ ### ステップ 4: rollbackDraft の妥当性チェック
52
+
53
+ - 冒頭に「ドラフト・人手精査必須」警告があるか
54
+ - 各 entity に対するロールバック手順が記述されているか
55
+ - データ削除 / 不可逆作業に ⚠ マークが付いているか
56
+ - バックアップ手順 (Data Loader + sf retrieve) が言及されているか
57
+
58
+ ### ステップ 5: Go/No-Go 判定の追認 / 異論
59
+
60
+ release_doc の `goNoGo.verdict` と `rationale` を読み:
61
+ - pre_release manual_steps が残っていれば conditional 推奨
62
+ - 致命的な抜け漏れがあれば no_go 推奨
63
+ - 全部クリアなら go 推奨
64
+
65
+ ### ステップ 6: 提示フォーマット
66
+
67
+ ```markdown
68
+ ## リリースマネージャー向け抜け漏れチェック
69
+
70
+ ### 🚨 抜け漏れ候補 (n 件)
71
+ - ...
72
+
73
+ ### ⚠ 依存順序の懸念
74
+ - ...
75
+
76
+ ### ロールバックドラフト評価
77
+ - ✅ 警告マーク含まれる / ⚠ <missing>
78
+
79
+ ### Go/No-Go 追認
80
+ - AI 推奨: <verdict>
81
+ - 私の追認: ...
82
+
83
+ ### 直近の関連 pitfalls
84
+ - ...
85
+ ```
86
+
87
+ ## 厳守ルール
88
+
89
+ - **承認権限を持たない**: 最終判断は release_manager (人間)
90
+ - **rollback 実行を促さない**: ドラフトの精査推奨のみ
91
+ - 推測で追加 step を書かない (manualSteps に無いものは「漏れの可能性」とだけ指摘)
92
+
93
+ ## 禁則
94
+
95
+ - 顧客周知文の自由生成 (HUMAN_MANAGED ブロック触らない)
96
+ - スケジュール決定 (人手判断領域)