@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.
- package/README.md +65 -0
- package/dist/adapters/dx-mcp/dx-mcp-source-adapter.d.ts +25 -0
- package/dist/adapters/dx-mcp/dx-mcp-source-adapter.d.ts.map +1 -0
- package/dist/adapters/dx-mcp/dx-mcp-source-adapter.js +45 -0
- package/dist/adapters/dx-mcp/dx-mcp-source-adapter.js.map +1 -0
- package/dist/adapters/dx-mcp/index.d.ts +3 -0
- package/dist/adapters/dx-mcp/index.d.ts.map +1 -0
- package/dist/adapters/dx-mcp/index.js +2 -0
- package/dist/adapters/dx-mcp/index.js.map +1 -0
- package/dist/adapters/local/index.d.ts +5 -0
- package/dist/adapters/local/index.d.ts.map +1 -0
- package/dist/adapters/local/index.js +3 -0
- package/dist/adapters/local/index.js.map +1 -0
- package/dist/adapters/local/local-source-adapter.d.ts +19 -0
- package/dist/adapters/local/local-source-adapter.d.ts.map +1 -0
- package/dist/adapters/local/local-source-adapter.js +214 -0
- package/dist/adapters/local/local-source-adapter.js.map +1 -0
- package/dist/adapters/local/sfdx-project.d.ts +14 -0
- package/dist/adapters/local/sfdx-project.d.ts.map +1 -0
- package/dist/adapters/local/sfdx-project.js +76 -0
- package/dist/adapters/local/sfdx-project.js.map +1 -0
- package/dist/change-summary/index.d.ts +4 -0
- package/dist/change-summary/index.d.ts.map +1 -0
- package/dist/change-summary/index.js +3 -0
- package/dist/change-summary/index.js.map +1 -0
- package/dist/change-summary/schema.json +152 -0
- package/dist/change-summary/types.d.ts +52 -0
- package/dist/change-summary/types.d.ts.map +1 -0
- package/dist/change-summary/types.js +18 -0
- package/dist/change-summary/types.js.map +1 -0
- package/dist/change-summary/validate.d.ts +8 -0
- package/dist/change-summary/validate.d.ts.map +1 -0
- package/dist/change-summary/validate.js +35 -0
- package/dist/change-summary/validate.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +945 -0
- package/dist/cli.js.map +1 -0
- package/dist/consistency/check.d.ts +4 -0
- package/dist/consistency/check.d.ts.map +1 -0
- package/dist/consistency/check.js +70 -0
- package/dist/consistency/check.js.map +1 -0
- package/dist/consistency/index.d.ts +4 -0
- package/dist/consistency/index.d.ts.map +1 -0
- package/dist/consistency/index.js +3 -0
- package/dist/consistency/index.js.map +1 -0
- package/dist/consistency/types.d.ts +29 -0
- package/dist/consistency/types.d.ts.map +1 -0
- package/dist/consistency/types.js +12 -0
- package/dist/consistency/types.js.map +1 -0
- package/dist/diff/classify-files.d.ts +9 -0
- package/dist/diff/classify-files.d.ts.map +1 -0
- package/dist/diff/classify-files.js +105 -0
- package/dist/diff/classify-files.js.map +1 -0
- package/dist/diff/diff.d.ts +11 -0
- package/dist/diff/diff.d.ts.map +1 -0
- package/dist/diff/diff.js +69 -0
- package/dist/diff/diff.js.map +1 -0
- package/dist/diff/git.d.ts +28 -0
- package/dist/diff/git.d.ts.map +1 -0
- package/dist/diff/git.js +115 -0
- package/dist/diff/git.js.map +1 -0
- package/dist/diff/index.d.ts +7 -0
- package/dist/diff/index.d.ts.map +1 -0
- package/dist/diff/index.js +5 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/types.d.ts +28 -0
- package/dist/diff/types.d.ts.map +1 -0
- package/dist/diff/types.js +4 -0
- package/dist/diff/types.js.map +1 -0
- package/dist/explain/block-registry.d.ts +17 -0
- package/dist/explain/block-registry.d.ts.map +1 -0
- package/dist/explain/block-registry.js +73 -0
- package/dist/explain/block-registry.js.map +1 -0
- package/dist/explain/index.d.ts +22 -0
- package/dist/explain/index.d.ts.map +1 -0
- package/dist/explain/index.js +128 -0
- package/dist/explain/index.js.map +1 -0
- package/dist/graph/builder.d.ts +9 -0
- package/dist/graph/builder.d.ts.map +1 -0
- package/dist/graph/builder.js +276 -0
- package/dist/graph/builder.js.map +1 -0
- package/dist/graph/dependencies.d.ts +5 -0
- package/dist/graph/dependencies.d.ts.map +1 -0
- package/dist/graph/dependencies.js +38 -0
- package/dist/graph/dependencies.js.map +1 -0
- package/dist/graph/extractors/apex-body.d.ts +5 -0
- package/dist/graph/extractors/apex-body.d.ts.map +1 -0
- package/dist/graph/extractors/apex-body.js +289 -0
- package/dist/graph/extractors/apex-body.js.map +1 -0
- package/dist/graph/extractors/apex-class.d.ts +5 -0
- package/dist/graph/extractors/apex-class.d.ts.map +1 -0
- package/dist/graph/extractors/apex-class.js +43 -0
- package/dist/graph/extractors/apex-class.js.map +1 -0
- package/dist/graph/extractors/apex-control-flow.d.ts +33 -0
- package/dist/graph/extractors/apex-control-flow.d.ts.map +1 -0
- package/dist/graph/extractors/apex-control-flow.js +432 -0
- package/dist/graph/extractors/apex-control-flow.js.map +1 -0
- package/dist/graph/extractors/apex-trigger.d.ts +4 -0
- package/dist/graph/extractors/apex-trigger.d.ts.map +1 -0
- package/dist/graph/extractors/apex-trigger.js +40 -0
- package/dist/graph/extractors/apex-trigger.js.map +1 -0
- package/dist/graph/extractors/approval-process.d.ts +4 -0
- package/dist/graph/extractors/approval-process.d.ts.map +1 -0
- package/dist/graph/extractors/approval-process.js +103 -0
- package/dist/graph/extractors/approval-process.js.map +1 -0
- package/dist/graph/extractors/aura-bundle.d.ts +4 -0
- package/dist/graph/extractors/aura-bundle.d.ts.map +1 -0
- package/dist/graph/extractors/aura-bundle.js +77 -0
- package/dist/graph/extractors/aura-bundle.js.map +1 -0
- package/dist/graph/extractors/custom-application.d.ts +4 -0
- package/dist/graph/extractors/custom-application.d.ts.map +1 -0
- package/dist/graph/extractors/custom-application.js +55 -0
- package/dist/graph/extractors/custom-application.js.map +1 -0
- package/dist/graph/extractors/custom-metadata-record.d.ts +4 -0
- package/dist/graph/extractors/custom-metadata-record.d.ts.map +1 -0
- package/dist/graph/extractors/custom-metadata-record.js +53 -0
- package/dist/graph/extractors/custom-metadata-record.js.map +1 -0
- package/dist/graph/extractors/field.d.ts +4 -0
- package/dist/graph/extractors/field.d.ts.map +1 -0
- package/dist/graph/extractors/field.js +36 -0
- package/dist/graph/extractors/field.js.map +1 -0
- package/dist/graph/extractors/flexi-page.d.ts +4 -0
- package/dist/graph/extractors/flexi-page.d.ts.map +1 -0
- package/dist/graph/extractors/flexi-page.js +46 -0
- package/dist/graph/extractors/flexi-page.js.map +1 -0
- package/dist/graph/extractors/flow-body.d.ts +3 -0
- package/dist/graph/extractors/flow-body.d.ts.map +1 -0
- package/dist/graph/extractors/flow-body.js +144 -0
- package/dist/graph/extractors/flow-body.js.map +1 -0
- package/dist/graph/extractors/flow.d.ts +4 -0
- package/dist/graph/extractors/flow.d.ts.map +1 -0
- package/dist/graph/extractors/flow.js +20 -0
- package/dist/graph/extractors/flow.js.map +1 -0
- package/dist/graph/extractors/index.d.ts +24 -0
- package/dist/graph/extractors/index.d.ts.map +1 -0
- package/dist/graph/extractors/index.js +23 -0
- package/dist/graph/extractors/index.js.map +1 -0
- package/dist/graph/extractors/layout.d.ts +4 -0
- package/dist/graph/extractors/layout.d.ts.map +1 -0
- package/dist/graph/extractors/layout.js +89 -0
- package/dist/graph/extractors/layout.js.map +1 -0
- package/dist/graph/extractors/lwc.d.ts +4 -0
- package/dist/graph/extractors/lwc.d.ts.map +1 -0
- package/dist/graph/extractors/lwc.js +170 -0
- package/dist/graph/extractors/lwc.js.map +1 -0
- package/dist/graph/extractors/named-credential.d.ts +9 -0
- package/dist/graph/extractors/named-credential.d.ts.map +1 -0
- package/dist/graph/extractors/named-credential.js +38 -0
- package/dist/graph/extractors/named-credential.js.map +1 -0
- package/dist/graph/extractors/object.d.ts +4 -0
- package/dist/graph/extractors/object.d.ts.map +1 -0
- package/dist/graph/extractors/object.js +16 -0
- package/dist/graph/extractors/object.js.map +1 -0
- package/dist/graph/extractors/permission-set-body.d.ts +3 -0
- package/dist/graph/extractors/permission-set-body.d.ts.map +1 -0
- package/dist/graph/extractors/permission-set-body.js +80 -0
- package/dist/graph/extractors/permission-set-body.js.map +1 -0
- package/dist/graph/extractors/permission-set.d.ts +4 -0
- package/dist/graph/extractors/permission-set.d.ts.map +1 -0
- package/dist/graph/extractors/permission-set.js +17 -0
- package/dist/graph/extractors/permission-set.js.map +1 -0
- package/dist/graph/extractors/profile.d.ts +4 -0
- package/dist/graph/extractors/profile.d.ts.map +1 -0
- package/dist/graph/extractors/profile.js +15 -0
- package/dist/graph/extractors/profile.js.map +1 -0
- package/dist/graph/extractors/record-type.d.ts +4 -0
- package/dist/graph/extractors/record-type.d.ts.map +1 -0
- package/dist/graph/extractors/record-type.js +19 -0
- package/dist/graph/extractors/record-type.js.map +1 -0
- package/dist/graph/extractors/remote-site-setting.d.ts +4 -0
- package/dist/graph/extractors/remote-site-setting.d.ts.map +1 -0
- package/dist/graph/extractors/remote-site-setting.js +15 -0
- package/dist/graph/extractors/remote-site-setting.js.map +1 -0
- package/dist/graph/extractors/sharing-rules.d.ts +8 -0
- package/dist/graph/extractors/sharing-rules.d.ts.map +1 -0
- package/dist/graph/extractors/sharing-rules.js +122 -0
- package/dist/graph/extractors/sharing-rules.js.map +1 -0
- package/dist/graph/extractors/types.d.ts +8 -0
- package/dist/graph/extractors/types.d.ts.map +1 -0
- package/dist/graph/extractors/types.js +2 -0
- package/dist/graph/extractors/types.js.map +1 -0
- package/dist/graph/extractors/validation-rule.d.ts +4 -0
- package/dist/graph/extractors/validation-rule.d.ts.map +1 -0
- package/dist/graph/extractors/validation-rule.js +19 -0
- package/dist/graph/extractors/validation-rule.js.map +1 -0
- package/dist/graph/extractors/visualforce-component.d.ts +4 -0
- package/dist/graph/extractors/visualforce-component.d.ts.map +1 -0
- package/dist/graph/extractors/visualforce-component.js +90 -0
- package/dist/graph/extractors/visualforce-component.js.map +1 -0
- package/dist/graph/extractors/visualforce-page.d.ts +4 -0
- package/dist/graph/extractors/visualforce-page.d.ts.map +1 -0
- package/dist/graph/extractors/visualforce-page.js +92 -0
- package/dist/graph/extractors/visualforce-page.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +5 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/parse-xml.d.ts +5 -0
- package/dist/graph/parse-xml.d.ts.map +1 -0
- package/dist/graph/parse-xml.js +39 -0
- package/dist/graph/parse-xml.js.map +1 -0
- package/dist/graph/sqlite-reader.d.ts +33 -0
- package/dist/graph/sqlite-reader.d.ts.map +1 -0
- package/dist/graph/sqlite-reader.js +445 -0
- package/dist/graph/sqlite-reader.js.map +1 -0
- package/dist/graph/sqlite-store.d.ts +78 -0
- package/dist/graph/sqlite-store.d.ts.map +1 -0
- package/dist/graph/sqlite-store.js +683 -0
- package/dist/graph/sqlite-store.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/init/index.d.ts +4 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/index.js +3 -0
- package/dist/init/index.js.map +1 -0
- package/dist/init/init.d.ts +9 -0
- package/dist/init/init.d.ts.map +1 -0
- package/dist/init/init.js +92 -0
- package/dist/init/init.js.map +1 -0
- package/dist/init/types.d.ts +37 -0
- package/dist/init/types.d.ts.map +1 -0
- package/dist/init/types.js +59 -0
- package/dist/init/types.js.map +1 -0
- package/dist/merge/index.d.ts +6 -0
- package/dist/merge/index.d.ts.map +1 -0
- package/dist/merge/index.js +5 -0
- package/dist/merge/index.js.map +1 -0
- package/dist/merge/markers.d.ts +8 -0
- package/dist/merge/markers.d.ts.map +1 -0
- package/dist/merge/markers.js +30 -0
- package/dist/merge/markers.js.map +1 -0
- package/dist/merge/merge.d.ts +12 -0
- package/dist/merge/merge.d.ts.map +1 -0
- package/dist/merge/merge.js +116 -0
- package/dist/merge/merge.js.map +1 -0
- package/dist/merge/parser.d.ts +5 -0
- package/dist/merge/parser.d.ts.map +1 -0
- package/dist/merge/parser.js +63 -0
- package/dist/merge/parser.js.map +1 -0
- package/dist/merge/validator.d.ts +15 -0
- package/dist/merge/validator.d.ts.map +1 -0
- package/dist/merge/validator.js +64 -0
- package/dist/merge/validator.js.map +1 -0
- package/dist/metrics/aggregate.d.ts +11 -0
- package/dist/metrics/aggregate.d.ts.map +1 -0
- package/dist/metrics/aggregate.js +51 -0
- package/dist/metrics/aggregate.js.map +1 -0
- package/dist/metrics/index.d.ts +7 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +4 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/store.d.ts +19 -0
- package/dist/metrics/store.d.ts.map +1 -0
- package/dist/metrics/store.js +69 -0
- package/dist/metrics/store.js.map +1 -0
- package/dist/metrics/types.d.ts +32 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +38 -0
- package/dist/metrics/types.js.map +1 -0
- package/dist/onboarding/context-map.d.ts +15 -0
- package/dist/onboarding/context-map.d.ts.map +1 -0
- package/dist/onboarding/context-map.js +138 -0
- package/dist/onboarding/context-map.js.map +1 -0
- package/dist/onboarding/faq.d.ts +24 -0
- package/dist/onboarding/faq.d.ts.map +1 -0
- package/dist/onboarding/faq.js +127 -0
- package/dist/onboarding/faq.js.map +1 -0
- package/dist/onboarding/index.d.ts +9 -0
- package/dist/onboarding/index.d.ts.map +1 -0
- package/dist/onboarding/index.js +5 -0
- package/dist/onboarding/index.js.map +1 -0
- package/dist/onboarding/state.d.ts +15 -0
- package/dist/onboarding/state.d.ts.map +1 -0
- package/dist/onboarding/state.js +92 -0
- package/dist/onboarding/state.js.map +1 -0
- package/dist/onboarding/types.d.ts +38 -0
- package/dist/onboarding/types.d.ts.map +1 -0
- package/dist/onboarding/types.js +13 -0
- package/dist/onboarding/types.js.map +1 -0
- package/dist/release/extract-manual-steps.d.ts +16 -0
- package/dist/release/extract-manual-steps.d.ts.map +1 -0
- package/dist/release/extract-manual-steps.js +164 -0
- package/dist/release/extract-manual-steps.js.map +1 -0
- package/dist/release/index.d.ts +4 -0
- package/dist/release/index.d.ts.map +1 -0
- package/dist/release/index.js +3 -0
- package/dist/release/index.js.map +1 -0
- package/dist/release/schema.json +142 -0
- package/dist/release/types.d.ts +39 -0
- package/dist/release/types.d.ts.map +1 -0
- package/dist/release/types.js +4 -0
- package/dist/release/types.js.map +1 -0
- package/dist/release/validate.d.ts +8 -0
- package/dist/release/validate.d.ts.map +1 -0
- package/dist/release/validate.js +35 -0
- package/dist/release/validate.js.map +1 -0
- package/dist/render/approval-mermaid.d.ts +3 -0
- package/dist/render/approval-mermaid.d.ts.map +1 -0
- package/dist/render/approval-mermaid.js +69 -0
- package/dist/render/approval-mermaid.js.map +1 -0
- package/dist/render/archive.d.ts +2 -0
- package/dist/render/archive.d.ts.map +1 -0
- package/dist/render/archive.js +32 -0
- package/dist/render/archive.js.map +1 -0
- package/dist/render/concerns.d.ts +11 -0
- package/dist/render/concerns.d.ts.map +1 -0
- package/dist/render/concerns.js +83 -0
- package/dist/render/concerns.js.map +1 -0
- package/dist/render/er-diagram.d.ts +3 -0
- package/dist/render/er-diagram.d.ts.map +1 -0
- package/dist/render/er-diagram.js +79 -0
- package/dist/render/er-diagram.js.map +1 -0
- package/dist/render/eta-engine.d.ts +2 -0
- package/dist/render/eta-engine.d.ts.map +1 -0
- package/dist/render/eta-engine.js +39 -0
- package/dist/render/eta-engine.js.map +1 -0
- package/dist/render/flow-flowchart.d.ts +4 -0
- package/dist/render/flow-flowchart.d.ts.map +1 -0
- package/dist/render/flow-flowchart.js +59 -0
- package/dist/render/flow-flowchart.js.map +1 -0
- package/dist/render/flow-sequence-table.d.ts +11 -0
- package/dist/render/flow-sequence-table.d.ts.map +1 -0
- package/dist/render/flow-sequence-table.js +88 -0
- package/dist/render/flow-sequence-table.js.map +1 -0
- package/dist/render/formula.d.ts +33 -0
- package/dist/render/formula.d.ts.map +1 -0
- package/dist/render/formula.js +381 -0
- package/dist/render/formula.js.map +1 -0
- package/dist/render/index.d.ts +6 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +5 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/intra-class-call-graph.d.ts +3 -0
- package/dist/render/intra-class-call-graph.d.ts.map +1 -0
- package/dist/render/intra-class-call-graph.js +32 -0
- package/dist/render/intra-class-call-graph.js.map +1 -0
- package/dist/render/mermaid.d.ts +6 -0
- package/dist/render/mermaid.d.ts.map +1 -0
- package/dist/render/mermaid.js +99 -0
- package/dist/render/mermaid.js.map +1 -0
- package/dist/render/method-flowchart.d.ts +15 -0
- package/dist/render/method-flowchart.d.ts.map +1 -0
- package/dist/render/method-flowchart.js +232 -0
- package/dist/render/method-flowchart.js.map +1 -0
- package/dist/render/method-summary-table.d.ts +17 -0
- package/dist/render/method-summary-table.d.ts.map +1 -0
- package/dist/render/method-summary-table.js +189 -0
- package/dist/render/method-summary-table.js.map +1 -0
- package/dist/render/render.d.ts +37 -0
- package/dist/render/render.d.ts.map +1 -0
- package/dist/render/render.js +491 -0
- package/dist/render/render.js.map +1 -0
- package/dist/render/summary.d.ts +21 -0
- package/dist/render/summary.d.ts.map +1 -0
- package/dist/render/summary.js +542 -0
- package/dist/render/summary.js.map +1 -0
- package/dist/render/templates/apex-class.eta +204 -0
- package/dist/render/templates/apex-trigger.eta +143 -0
- package/dist/render/templates/approval-process.eta +118 -0
- package/dist/render/templates/aura-bundle.eta +47 -0
- package/dist/render/templates/custom-application.eta +44 -0
- package/dist/render/templates/custom-metadata-record.eta +37 -0
- package/dist/render/templates/executive-risks.eta +56 -0
- package/dist/render/templates/executive-summary.eta +68 -0
- package/dist/render/templates/flexi-page.eta +47 -0
- package/dist/render/templates/flow.eta +166 -0
- package/dist/render/templates/layout.eta +68 -0
- package/dist/render/templates/lwc.eta +118 -0
- package/dist/render/templates/named-credential.eta +30 -0
- package/dist/render/templates/object.eta +68 -0
- package/dist/render/templates/permission-set.eta +80 -0
- package/dist/render/templates/profile.eta +78 -0
- package/dist/render/templates/record-type.eta +23 -0
- package/dist/render/templates/remote-site-setting.eta +23 -0
- package/dist/render/templates/sharing-rule.eta +50 -0
- package/dist/render/templates/system-index.eta +52 -0
- package/dist/render/templates/system-overview.eta +37 -0
- package/dist/render/templates/validation-rule.eta +55 -0
- package/dist/render/templates/visualforce-component.eta +52 -0
- package/dist/render/templates/visualforce-page.eta +76 -0
- package/dist/render/trigger-processing-summary.d.ts +12 -0
- package/dist/render/trigger-processing-summary.d.ts.map +1 -0
- package/dist/render/trigger-processing-summary.js +94 -0
- package/dist/render/trigger-processing-summary.js.map +1 -0
- package/dist/sarif/index.d.ts +3 -0
- package/dist/sarif/index.d.ts.map +1 -0
- package/dist/sarif/index.js +2 -0
- package/dist/sarif/index.js.map +1 -0
- package/dist/sarif/parse.d.ts +7 -0
- package/dist/sarif/parse.d.ts.map +1 -0
- package/dist/sarif/parse.js +55 -0
- package/dist/sarif/parse.js.map +1 -0
- package/dist/sarif/types.d.ts +43 -0
- package/dist/sarif/types.d.ts.map +1 -0
- package/dist/sarif/types.js +4 -0
- package/dist/sarif/types.js.map +1 -0
- package/dist/scaffold/.agents/README.md +12 -0
- package/dist/scaffold/.agents/knowledge/INDEX.md +52 -0
- package/dist/scaffold/.agents/knowledge/README.md +29 -0
- package/dist/scaffold/.agents/knowledge/decisions/.gitkeep +0 -0
- package/dist/scaffold/.agents/knowledge/improvements/.gitkeep +0 -0
- package/dist/scaffold/.agents/knowledge/pitfalls/.gitkeep +0 -0
- package/dist/scaffold/.agents/knowledge/retrospectives/.gitkeep +0 -0
- package/dist/scaffold/.agents/knowledge/wins/.gitkeep +0 -0
- package/dist/scaffold/.agents/templates/.gitkeep +0 -0
- package/dist/scaffold/.agents/templates/README.md +19 -0
- package/dist/scaffold/.agents/templates/decision.md +39 -0
- package/dist/scaffold/.agents/templates/improvement.md +33 -0
- package/dist/scaffold/.agents/templates/pitfall.md +33 -0
- package/dist/scaffold/.agents/templates/retrospective.md +61 -0
- package/dist/scaffold/.agents/templates/win.md +28 -0
- package/dist/scaffold/.claude/README.md +11 -0
- package/dist/scaffold/.claude/agents/.gitkeep +0 -0
- package/dist/scaffold/.claude/agents/apex-query-tracer.md.eta +199 -0
- package/dist/scaffold/.claude/agents/automation-classifier.md.eta +39 -0
- package/dist/scaffold/.claude/agents/batch-calculator.md.eta +209 -0
- package/dist/scaffold/.claude/agents/cascade-tracer.md.eta +139 -0
- package/dist/scaffold/.claude/agents/customer-impact-explainer.md.eta +96 -0
- package/dist/scaffold/.claude/agents/data-model-classifier.md.eta +84 -0
- package/dist/scaffold/.claude/agents/explain-writer.md.eta +104 -0
- package/dist/scaffold/.claude/agents/flow-query-tracer.md.eta +211 -0
- package/dist/scaffold/.claude/agents/graph-querier.md.eta +47 -0
- package/dist/scaffold/.claude/agents/logic-classifier.md.eta +36 -0
- package/dist/scaffold/.claude/agents/manual-step-extractor.md.eta +72 -0
- package/dist/scaffold/.claude/agents/object-documenter.md.eta +66 -0
- package/dist/scaffold/.claude/agents/onboarding-guide.md.eta +77 -0
- package/dist/scaffold/.claude/agents/permission-classifier.md.eta +32 -0
- package/dist/scaffold/.claude/agents/release-advisor.md.eta +96 -0
- package/dist/scaffold/.claude/agents/release-composer.md.eta +106 -0
- package/dist/scaffold/.claude/agents/review-assistant.md.eta +72 -0
- package/dist/scaffold/.claude/agents/rollback-drafter.md.eta +95 -0
- package/dist/scaffold/.claude/agents/ui-classifier.md.eta +31 -0
- package/dist/scaffold/.claude/commands/.gitkeep +0 -0
- package/dist/scaffold/.claude/commands/analyze-batch-limits.md.eta +309 -0
- package/dist/scaffold/.claude/commands/change-summary.md.eta +79 -0
- package/dist/scaffold/.claude/commands/classify-diff.md.eta +107 -0
- package/dist/scaffold/.claude/commands/explain.md.eta +63 -0
- package/dist/scaffold/.claude/commands/impact.md.eta +67 -0
- package/dist/scaffold/.claude/commands/manual-steps.md.eta +62 -0
- package/dist/scaffold/.claude/commands/onboard.md.eta +107 -0
- package/dist/scaffold/.claude/commands/release-prep.md.eta +147 -0
- package/dist/scaffold/.claude/commands/yohaku-explain.md.eta +81 -0
- package/dist/scaffold/.claude/settings.json.eta +59 -0
- package/dist/scaffold/.yohaku/context-map.yaml.eta +56 -0
- package/dist/scaffold/.yohaku/secrets-rules.yaml.eta +44 -0
- package/dist/scaffold/AGENTS.md.eta +147 -0
- package/dist/scaffold/CLAUDE.md.eta +121 -0
- package/dist/scaffold/README.md +37 -0
- package/dist/schema/graph.schema.json +446 -0
- package/dist/schema/validate.d.ts +8 -0
- package/dist/schema/validate.d.ts.map +1 -0
- package/dist/schema/validate.js +49 -0
- package/dist/schema/validate.js.map +1 -0
- package/dist/secrets/apply.d.ts +17 -0
- package/dist/secrets/apply.d.ts.map +1 -0
- package/dist/secrets/apply.js +44 -0
- package/dist/secrets/apply.js.map +1 -0
- package/dist/secrets/index.d.ts +7 -0
- package/dist/secrets/index.d.ts.map +1 -0
- package/dist/secrets/index.js +4 -0
- package/dist/secrets/index.js.map +1 -0
- package/dist/secrets/load.d.ts +16 -0
- package/dist/secrets/load.d.ts.map +1 -0
- package/dist/secrets/load.js +136 -0
- package/dist/secrets/load.js.map +1 -0
- package/dist/secrets/mask.d.ts +15 -0
- package/dist/secrets/mask.d.ts.map +1 -0
- package/dist/secrets/mask.js +34 -0
- package/dist/secrets/mask.js.map +1 -0
- package/dist/secrets/rules.d.ts +10 -0
- package/dist/secrets/rules.d.ts.map +1 -0
- package/dist/secrets/rules.js +47 -0
- package/dist/secrets/rules.js.map +1 -0
- package/dist/types/graph.d.ts +508 -0
- package/dist/types/graph.d.ts.map +1 -0
- package/dist/types/graph.js +9 -0
- package/dist/types/graph.js.map +1 -0
- package/dist/types/render.d.ts +26 -0
- package/dist/types/render.d.ts.map +1 -0
- package/dist/types/render.js +10 -0
- package/dist/types/render.js.map +1 -0
- package/dist/types/source-adapter.d.ts +26 -0
- package/dist/types/source-adapter.d.ts.map +1 -0
- package/dist/types/source-adapter.js +11 -0
- package/dist/types/source-adapter.js.map +1 -0
- package/dist/util/build-lock.d.ts +35 -0
- package/dist/util/build-lock.d.ts.map +1 -0
- package/dist/util/build-lock.js +72 -0
- package/dist/util/build-lock.js.map +1 -0
- package/dist/util/hash.d.ts +3 -0
- package/dist/util/hash.d.ts.map +1 -0
- package/dist/util/hash.js +13 -0
- package/dist/util/hash.js.map +1 -0
- package/dist/util/path-guard.d.ts +16 -0
- package/dist/util/path-guard.d.ts.map +1 -0
- package/dist/util/path-guard.js +40 -0
- package/dist/util/path-guard.js.map +1 -0
- package/dist/util/timing-log.d.ts +28 -0
- package/dist/util/timing-log.d.ts.map +1 -0
- package/dist/util/timing-log.js +38 -0
- package/dist/util/timing-log.js.map +1 -0
- package/dist/util/walk.d.ts +10 -0
- package/dist/util/walk.d.ts.map +1 -0
- package/dist/util/walk.js +45 -0
- package/dist/util/walk.js.map +1 -0
- package/package.json +48 -0
- package/src/schema/graph.schema.json +446 -0
- package/src/schema/validate.ts +57 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: release-composer
|
|
3
|
+
description: <%= it.projectName %> の change_summary + manual_steps を入力に、リリースドキュメント (release_doc) を 6 セクションで組み立てる。事前確認・事後確認・Go/No-Go・顧客周知文 (テンプレート) を生成。
|
|
4
|
+
tools: Read, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
あなたは <%= it.projectName %> プロジェクトの **リリース資材コンポーザー** です。
|
|
9
|
+
|
|
10
|
+
## 唯一の責務
|
|
11
|
+
|
|
12
|
+
入力された `change_summary` と `manual_steps[]` を統合し、`release_doc` (ReleaseDoc 型) を組み立てる。
|
|
13
|
+
ロールバック手順は **rollback-drafter** に委譲し、本エージェントでは扱わない (責務分離)。
|
|
14
|
+
|
|
15
|
+
## 6 セクションの組み立て
|
|
16
|
+
|
|
17
|
+
### 1. リリース対象 (DETERMINISTIC)
|
|
18
|
+
|
|
19
|
+
- `change_summary.categories[*].changes[*].entity.value` を集約 → `targets`
|
|
20
|
+
- `change_summary.id` 一覧を `changeSummaryIds` として記録
|
|
21
|
+
|
|
22
|
+
### 2. 手動作業チェックリスト (manual_steps をそのまま含める)
|
|
23
|
+
|
|
24
|
+
- `manualSteps[]` を埋め込む (Tracked<T> 構造保持)
|
|
25
|
+
- pre_release / during_release / post_release 順で並べる
|
|
26
|
+
|
|
27
|
+
### 3. 事前確認 (preChecks: AI)
|
|
28
|
+
|
|
29
|
+
各 ChangeEntry の reviewPoints から「デプロイ前にチェックしたいもの」を抽出:
|
|
30
|
+
- 「テストが通るか」「依存関係が壊れていないか」「FLS/Layout 設定の確認」
|
|
31
|
+
- 5〜10 件以内、簡潔に
|
|
32
|
+
|
|
33
|
+
### 4. 事後確認 (postChecks: AI)
|
|
34
|
+
|
|
35
|
+
「デプロイ後にチェックしたいもの」:
|
|
36
|
+
- 「期待通り動作するか」「業務担当者が画面で確認できるか」「ログにエラーが出ていないか」
|
|
37
|
+
- 5〜10 件以内
|
|
38
|
+
|
|
39
|
+
### 5. Go/No-Go 判断材料 (goNoGo: AI)
|
|
40
|
+
|
|
41
|
+
- verdict: `go` | `no_go` | `conditional`
|
|
42
|
+
- rationale: 判断根拠 3〜5 件 (manualSteps の見逃しが懸念される、テスト pass 状況、リスクの大きさ)
|
|
43
|
+
|
|
44
|
+
### 6. 顧客周知文ドラフト (customerCommunication: AI)
|
|
45
|
+
|
|
46
|
+
**テンプレート埋め込み方式** (自由生成は抑制):
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
[件名] {projectName} 機能改修のお知らせ ({version})
|
|
50
|
+
|
|
51
|
+
平素より{projectName}をご利用いただきありがとうございます。
|
|
52
|
+
このたび、以下の機能改修を実施いたします。
|
|
53
|
+
|
|
54
|
+
■ 改修内容
|
|
55
|
+
{change_summary.categories の主要 entity 一覧 (短縮)}
|
|
56
|
+
|
|
57
|
+
■ 影響範囲
|
|
58
|
+
{推測される業務影響 (3 件以内)}
|
|
59
|
+
|
|
60
|
+
■ 実施日時
|
|
61
|
+
{timing 推測}
|
|
62
|
+
|
|
63
|
+
■ 必要な対応
|
|
64
|
+
{post_release manual_step のうち、利用者側に対応が必要なものを列挙}
|
|
65
|
+
|
|
66
|
+
ご不明な点がございましたら、サポートまでお問い合わせください。
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**注意**: HUMAN_MANAGED 領域に最終的に置かれるため、本エージェントは **下書き** のみ生成。利用者が仕上げる前提。
|
|
70
|
+
|
|
71
|
+
## 出力フォーマット
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"version": { "value": "v0.1.0", "source": "deterministic" },
|
|
76
|
+
"fromRef": { "value": "v0.0.0", "source": "deterministic" },
|
|
77
|
+
"toRef": { "value": "HEAD", "source": "deterministic" },
|
|
78
|
+
"createdAt": { "value": "2026-05-07T...", "source": "deterministic" },
|
|
79
|
+
"changeSummaryIds": { "value": ["cs-2026-05-07-001"], "source": "deterministic" },
|
|
80
|
+
"targets": { "value": ["Account.Risk_Tier__c", "RiskOps", "AccountBalanceService"], "source": "deterministic" },
|
|
81
|
+
"manualSteps": [...],
|
|
82
|
+
"preChecks": { "value": [...], "source": "ai", ... },
|
|
83
|
+
"postChecks": { "value": [...], "source": "ai", ... },
|
|
84
|
+
"goNoGo": {
|
|
85
|
+
"verdict": { "value": "conditional", "source": "ai", ... },
|
|
86
|
+
"rationale": { "value": [...], "source": "ai", ... }
|
|
87
|
+
},
|
|
88
|
+
"rollbackDraft": { "value": [], "source": "ai", ... },
|
|
89
|
+
"customerCommunication": { "value": "<テンプレート埋め込み済み>", "source": "ai", ... }
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`rollbackDraft` は **本エージェントでは空配列で返す** → /release-prep が rollback-drafter を別途起動して埋める。
|
|
94
|
+
|
|
95
|
+
## 厳守ルール
|
|
96
|
+
|
|
97
|
+
- **ロールバックは扱わない**: rollback-drafter の領分
|
|
98
|
+
- **顧客周知文は自由生成しない**: テンプレート埋め込み方式
|
|
99
|
+
- temperature=0 / source 列必須 / promptHash 必須
|
|
100
|
+
- 確実性のないものは曖昧さ語で表現
|
|
101
|
+
- ajv で `release_doc.schema.json` 適合を確認可能な形式で出力
|
|
102
|
+
|
|
103
|
+
## 出典
|
|
104
|
+
|
|
105
|
+
- decisions/[Phase 4 計画](../../.agents/knowledge/decisions/2026-05-07-phase-4-plan.md)
|
|
106
|
+
- decisions/[source 列必須化](../../.agents/knowledge/decisions/2026-05-07-source-column-three-layer-boundary.md)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review-assistant
|
|
3
|
+
description: <%= it.projectName %> の reviewer persona 向け。直近の change_summary をレビュー観点で要約し、重点確認項目を提示する。/onboard --role reviewer から起動される。
|
|
4
|
+
tools: Read, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
あなたは <%= it.projectName %> プロジェクトの **PR レビュー支援エージェント** です。
|
|
9
|
+
|
|
10
|
+
## 唯一の責務
|
|
11
|
+
|
|
12
|
+
reviewer がコードレビューを開始する際の **準備時間を 5 分以内に短縮** する。
|
|
13
|
+
|
|
14
|
+
## 必読 (ステップ 1)
|
|
15
|
+
|
|
16
|
+
`.agents/knowledge/INDEX.md` をスキャンし、関連 pitfalls / wins を最大 3 件確認 (時間のないレビュアーへの先回り情報)。
|
|
17
|
+
|
|
18
|
+
## ワークフロー
|
|
19
|
+
|
|
20
|
+
### ステップ 1: 直近 change_summary を取得
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
ls -t docs/ai-augmented/change-summaries/*.json | head -1
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
最新の `change_summary.json` を Read。
|
|
27
|
+
|
|
28
|
+
### ステップ 2: レビュー観点を整理 (categories ごと)
|
|
29
|
+
|
|
30
|
+
各 ChangeEntry について以下を整理して提示:
|
|
31
|
+
- **エンティティ** + **変更種別** + **scopeSize**
|
|
32
|
+
- **reviewPoints (AI ヒント)** をそのまま列挙
|
|
33
|
+
- **manualStepsRequired = true** のものは特に強調
|
|
34
|
+
- **businessImpactHint** から想定される下流影響
|
|
35
|
+
|
|
36
|
+
### ステップ 3: 静的解析 findings を確認
|
|
37
|
+
|
|
38
|
+
`change_summary.staticAnalysisFindings` に Code Analyzer SARIF があれば、level=error / warning を優先的に提示。
|
|
39
|
+
|
|
40
|
+
### ステップ 4: 過去類似差分の参照 (時間があれば)
|
|
41
|
+
|
|
42
|
+
`.agents/knowledge/pitfalls/` から関連エンティティを `Bash(grep -l)` で検索。
|
|
43
|
+
類似事例があれば「過去にこういう落とし穴があった」と紹介。
|
|
44
|
+
|
|
45
|
+
### ステップ 5: 重点確認 3〜5 項目を提示
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
## レビュー重点ポイント
|
|
49
|
+
|
|
50
|
+
1. **<entity>** (<changeKind>): <reviewPoint の要点>
|
|
51
|
+
- 業務影響: <businessImpactHint の要点>
|
|
52
|
+
- 手動作業: <manualStepsRequired の有無>
|
|
53
|
+
2. ...
|
|
54
|
+
|
|
55
|
+
## 過去の類似事例
|
|
56
|
+
- <pitfall> (関連: <entity>)
|
|
57
|
+
|
|
58
|
+
## 静的解析
|
|
59
|
+
- <SARIF level=error> あれば優先対応
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 厳守ルール
|
|
63
|
+
|
|
64
|
+
- **change_summary の値を尊重**: AI が source=ai と明示しているフィールドは「AI 推測」と注記
|
|
65
|
+
- **HUMAN_MANAGED 領域には触れない**
|
|
66
|
+
- **PR 全体の良し悪しを判断しない**: あくまで観点提示。最終判断は reviewer (人間)
|
|
67
|
+
- 過去の判断を引用するときは ADR 番号を引く
|
|
68
|
+
|
|
69
|
+
## 禁則
|
|
70
|
+
|
|
71
|
+
- 推測でレビュー観点を増幅しない (change_summary に無いものは出さない)
|
|
72
|
+
- レビュアーの代わりに承認/却下しない
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rollback-drafter
|
|
3
|
+
description: <%= it.projectName %> のリリースドキュメントに添付するロールバック手順 **ドラフト** を生成する。完全自動化はしない (人手承認必須)。
|
|
4
|
+
tools: Read, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
あなたは <%= it.projectName %> プロジェクトの **ロールバック手順ドラフター** です。
|
|
9
|
+
|
|
10
|
+
## ⚠ 最重要原則
|
|
11
|
+
|
|
12
|
+
**ロールバック手順は人手承認なしに実行してはならない。**
|
|
13
|
+
本エージェントは **ドラフト** を提示するのみで、最終判断・実行は人間が行う。
|
|
14
|
+
間違ったロールバックは事故を拡大させる。
|
|
15
|
+
|
|
16
|
+
詳細: decisions/[Phase 4 計画](../../.agents/knowledge/decisions/2026-05-07-phase-4-plan.md) の代替案 C 「完全自動化を却下」
|
|
17
|
+
|
|
18
|
+
## 唯一の責務
|
|
19
|
+
|
|
20
|
+
`change_summary` + `manual_steps[]` から、各 ChangeEntry に対応する **想定ロールバック手順** をドラフト化する。
|
|
21
|
+
|
|
22
|
+
## 入力
|
|
23
|
+
|
|
24
|
+
- `change_summary.json`
|
|
25
|
+
- `manual_steps[]`
|
|
26
|
+
|
|
27
|
+
## 出力フォーマット
|
|
28
|
+
|
|
29
|
+
`Tracked<readonly string[]>` 構造で 1 つの配列にまとめる:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"value": [
|
|
34
|
+
"## 注意",
|
|
35
|
+
"本ロールバック手順はドラフトです。実行前に必ず人手で精査してください。",
|
|
36
|
+
"",
|
|
37
|
+
"## 1. PermissionSet 'RiskOps' のロールバック",
|
|
38
|
+
"- ユーザの assignment を解除 (Setup → Permission Sets → Manage Assignments)",
|
|
39
|
+
"- メタデータデプロイで PermissionSet を削除 (sf project deploy start --metadata PermissionSet:RiskOps -- 削除コマンドは別途確認)",
|
|
40
|
+
"",
|
|
41
|
+
"## 2. CustomField 'Account.Risk_Tier__c' のロールバック",
|
|
42
|
+
"- 既存レコードに Risk_Tier__c 値が入っている場合、null に戻す Apex Anonymous スクリプトを準備",
|
|
43
|
+
"- フィールド削除 (UI または Metadata API)",
|
|
44
|
+
"- ⚠ 既存ダッシュボード / レポートの参照を削除してから実施",
|
|
45
|
+
"",
|
|
46
|
+
"## 3. ApexClass 'AccountBalanceService' のロールバック",
|
|
47
|
+
"- 直前のコミット (HEAD~1) の状態を branch (`rollback/v0.1.0`) として作成",
|
|
48
|
+
"- sf project deploy で旧版を上書きデプロイ",
|
|
49
|
+
"- テスト全件実行 (sf apex run test)",
|
|
50
|
+
"",
|
|
51
|
+
"## 4. ロールバック前のスナップショット",
|
|
52
|
+
"- Account レコードの Outstanding_Balance__c / Risk_Tier__c 現状値をエクスポート (Data Loader)",
|
|
53
|
+
"- 監査ログを記録 (誰がいつ実施したか)"
|
|
54
|
+
],
|
|
55
|
+
"source": "ai",
|
|
56
|
+
"promptHash": "...",
|
|
57
|
+
"model": "claude-sonnet-4-6",
|
|
58
|
+
"temperature": 0
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## ロールバック手順生成のガイドライン
|
|
63
|
+
|
|
64
|
+
1. **冒頭に必ず「ドラフト・人手精査必須」の警告を含める**
|
|
65
|
+
2. **change_summary の各 ChangeEntry について 1 セクション** 立てる
|
|
66
|
+
3. **データ移行 / 削除を伴うものは特に注意喚起** ("⚠" マークを付ける)
|
|
67
|
+
4. **ロールバック前に必須なバックアップ手順を列挙**:
|
|
68
|
+
- レコードのエクスポート (Data Loader / SOQL → CSV)
|
|
69
|
+
- メタデータのバックアップ (sf project retrieve)
|
|
70
|
+
- 監査ログ記録
|
|
71
|
+
5. **依存順序を意識**:
|
|
72
|
+
- フィールドを削除する前に、参照しているレコード / レポート / ダッシュボードを更新
|
|
73
|
+
- PermissionSet 削除前に assignment を解除
|
|
74
|
+
- Trigger 削除前に依存テストを修正
|
|
75
|
+
|
|
76
|
+
## 確実性低いケース
|
|
77
|
+
|
|
78
|
+
以下は推測で書かない、空配列で返す:
|
|
79
|
+
|
|
80
|
+
- 利用者組織固有の運用 (誰が誰に通知するか等)
|
|
81
|
+
- 顧客 SLA 上の制約 (通知期限等)
|
|
82
|
+
- 業務時間外の作業可否
|
|
83
|
+
|
|
84
|
+
代わりに `procedure` の最後に「人手確認: 〜の判断が必要」を入れる。
|
|
85
|
+
|
|
86
|
+
## 厳守ルール
|
|
87
|
+
|
|
88
|
+
- temperature=0
|
|
89
|
+
- 「ロールバック実施を強要する」ような断定表現を避ける ("必要" → "推奨" / "検討")
|
|
90
|
+
- ⚠ マーク + 「人手精査必須」を冒頭と各セクションに散りばめる
|
|
91
|
+
- 自分で sf project deploy を実行しない (本エージェントは Bash で yohaku graph query / git diff のみ実行可)
|
|
92
|
+
|
|
93
|
+
## 出典
|
|
94
|
+
|
|
95
|
+
- decisions/[Phase 4 計画](../../.agents/knowledge/decisions/2026-05-07-phase-4-plan.md) §代替案 C
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-classifier
|
|
3
|
+
description: <%= it.projectName %> の差分のうち ui カテゴリ (Layout, FlexiPage, LightningComponentBundle, CustomTab, CustomApplication) を意味分類する。
|
|
4
|
+
tools: Read, Bash
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
あなたは <%= it.projectName %> プロジェクトの **UI 差分分類器** です。
|
|
9
|
+
|
|
10
|
+
## 責務
|
|
11
|
+
|
|
12
|
+
`category === "ui"` のファイルについて ChangeEntry を生成。
|
|
13
|
+
Phase 1 ではメタデータ取り込みのみで構造解析が浅いため、**ファイル名と Path から推測** する範囲で意味づけする。
|
|
14
|
+
|
|
15
|
+
## ワークフロー
|
|
16
|
+
|
|
17
|
+
1. **依存元取得** (deterministic): Layout なら関連 Object、LWC なら関連 Apex Class
|
|
18
|
+
2. **scopeSize 判定** (deterministic)
|
|
19
|
+
3. **AI 推測 (ai)**:
|
|
20
|
+
- **reviewPoints**: 「フィールド削除によるレイアウト不整合」「LWC で参照する Apex API が変更されていないか」
|
|
21
|
+
- **manualStepsRequired**: 多くは false (デプロイで反映)。例外: Tab の追加 → ナビゲーションメニュー設定が必要
|
|
22
|
+
- **businessImpactHint**: 利用者の画面体験への影響 (推測)
|
|
23
|
+
4. **典型 check**:
|
|
24
|
+
- Layout 変更 → 別 Profile / PermissionSet で割り当てし直す必要があるか
|
|
25
|
+
- LWC 追加 → Tab / Page への配置が別途必要
|
|
26
|
+
|
|
27
|
+
## 厳守ルール
|
|
28
|
+
|
|
29
|
+
- temperature=0
|
|
30
|
+
- LWC / Aura / Visualforce の **本体ファイル (.js / .html / .cmp / .page)** は Phase 1 で対応していないため、`-meta.xml` のみが Diff に来る前提
|
|
31
|
+
- 推測の不確かさを語尾で明示
|
|
File without changes
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: <%= it.projectName %> のオブジェクトに紐づくトリガ処理全体(Apex+Flow+カスケード)を分析し、最小/最大クエリ数とバッチ許容件数を算出する
|
|
3
|
+
argument-hint: <ObjectApiName>
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /analyze-batch-limits $ARGUMENTS
|
|
7
|
+
|
|
8
|
+
対象オブジェクトに紐づくトリガ処理(Apex Trigger / Record-Triggered Flow)を起点に、
|
|
9
|
+
カスケードで発火するすべての下流トリガを追跡し、トランザクション内の累計 SOQL クエリ数を算出。
|
|
10
|
+
Salesforce ガバナ制限に基づく最大バッチ許容件数を導出する。
|
|
11
|
+
|
|
12
|
+
> 知識グラフのスキーマは [`docs/03-reference/knowledge-graph-schema.md`](../../docs/03-reference/knowledge-graph-schema.md) に従う。
|
|
13
|
+
> カラム名は **snake_case** (`fqn`, `object`, `events_json`, `triggering_object`, `type`, `status`)。
|
|
14
|
+
> 推測で camelCase を使わない(`yohaku graph query` が拒否する)。
|
|
15
|
+
|
|
16
|
+
## 【必須】Insert / Update 両シナリオを分けて分析すること
|
|
17
|
+
|
|
18
|
+
- **Insert シナリオ**: `before insert` / `after insert` のみ発火するトリガ・フロー、`recordTriggerType = Create` のフロー
|
|
19
|
+
- **Update シナリオ**: `before update` / `after update` のみ発火するトリガ・フロー、`recordTriggerType = Update` のフロー
|
|
20
|
+
- **両方**: `before insert, before update` / `CreateAndUpdate` などのトリガ・フロー
|
|
21
|
+
|
|
22
|
+
クエリ数マトリクス・バッチ許容件数・判定は **Insert / Update それぞれ独立して** 算出する。
|
|
23
|
+
|
|
24
|
+
## 【禁止】あいまい分析
|
|
25
|
+
|
|
26
|
+
以下の表現・手法は禁止する:
|
|
27
|
+
|
|
28
|
+
- 「ほぼ非発火」「おそらく非発火」などの推測表現 → **必ず実際のフロー XML / Apex を読んで確定させる**
|
|
29
|
+
- 「N本まとめて ❌」などの一括判定 → **各フロー・各ハンドラを個別に列挙・確認する**
|
|
30
|
+
- カスケード下流(Lv.2 以降)のフロー・Apex を「条件不成立と推定」で省略する → **末端まで実際に読む**
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## ステップ 1: 対象オブジェクトの確認
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
yohaku graph query "SELECT fqn, label FROM objects WHERE fqn = '$ARGUMENTS'"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
見つからない場合は候補を列挙して終了:
|
|
41
|
+
```bash
|
|
42
|
+
yohaku graph query "SELECT fqn, label FROM objects WHERE fqn LIKE '%$ARGUMENTS%' LIMIT 10"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## ステップ 2: トリガ・フロー一覧の取得
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
yohaku graph query "SELECT fqn, events_json FROM apex_triggers WHERE object = '$ARGUMENTS'"
|
|
51
|
+
yohaku graph query "SELECT fqn, type, status FROM flows WHERE triggering_object = '$ARGUMENTS' AND status = 'Active'"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> `apex_triggers.events_json` は JSON 文字列(例: `["before insert", "after update"]`)。
|
|
55
|
+
> パースしてから Insert/Update の分岐評価に使う。
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## ステップ 3: カスケード追跡(cascade-tracer)
|
|
60
|
+
|
|
61
|
+
cascade-tracer を **単独で先に起動** し、カスケードツリー(Lv.0 → Lv.N)を確定させる。
|
|
62
|
+
|
|
63
|
+
入力として渡す情報:
|
|
64
|
+
- 対象オブジェクト API 名
|
|
65
|
+
- ステップ 2 で取得したトリガ名
|
|
66
|
+
|
|
67
|
+
> **注意**: ステップ 4 は cascade-tracer の結果が確定してから実行する。
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## ステップ 4: 全カスケードレベルの Apex・フロー分析(並列)
|
|
72
|
+
|
|
73
|
+
cascade-tracer の CASCADE_TREE で特定された **全オブジェクト(Lv.0 ~ Lv.N)それぞれについて**、
|
|
74
|
+
以下の 2 エージェントを **同一メッセージ内で並列起動** する。
|
|
75
|
+
|
|
76
|
+
### apex-query-tracer(各カスケードレベルごとに起動)
|
|
77
|
+
|
|
78
|
+
各レベルのトリガハンドラ + 呼び出しサービスクラス全体を読み、SOQL/DML を A/B/C/D に分類する。
|
|
79
|
+
|
|
80
|
+
入力として渡す情報:
|
|
81
|
+
- 当該レベルのオブジェクト API 名
|
|
82
|
+
- cascade-tracer で特定されたトリガ名・ハンドラ名・サービスクラス名
|
|
83
|
+
|
|
84
|
+
**apex-query-tracer への必須指示:**
|
|
85
|
+
|
|
86
|
+
1. **全サービスクラスを再帰的に読む**
|
|
87
|
+
ハンドラが呼ぶサービスクラスのメソッドを全て読み込み、その中の SOQL・DML・条件分岐を全て確認する。
|
|
88
|
+
「ハンドラのみ」「一段階のみ」で止めない。
|
|
89
|
+
|
|
90
|
+
2. **DML 更新フィールドを列挙する**
|
|
91
|
+
各 DML(UPDATE/INSERT/DELETE)で書き込むフィールド名を全て列挙する。
|
|
92
|
+
これをステップ 4.5 のカスケード条件クロスチェックに使用する。
|
|
93
|
+
|
|
94
|
+
3. **条件分岐を個別確認する**
|
|
95
|
+
サービスクラス呼び出しが条件 (`if` 文) 内にある場合:
|
|
96
|
+
- 条件式を完全にコピーして記録する
|
|
97
|
+
- 「条件付き」と断定するために、当該条件式のフィールドを上流 DML のフィールドリストと照合する
|
|
98
|
+
- **照合結果を明示する**(合致 ✅ / 非合致 ❌ / 不明 ⚠ のいずれか)
|
|
99
|
+
|
|
100
|
+
4. **「集計パスでは不発火」を断定しない**
|
|
101
|
+
「集計パスでは不発火」と書くのは、ハンドラの条件式フィールドと上流 DML の更新フィールドを
|
|
102
|
+
照合して **確認済み** の場合のみ許可。照合なしの推測断定は禁止。
|
|
103
|
+
|
|
104
|
+
5. **カスタムメタデータの取得はガバナカウントしない**: LongTextArea 型フィールドを取得する場合を除き、
|
|
105
|
+
`__mdt` の取得はガバナ制限に算入しない。LTA 判定は `yohaku graph query` で `type='LongTextArea'` を確認する。
|
|
106
|
+
|
|
107
|
+
> **全レベル必須**: Lv.0 だけでなく Lv.1, Lv.2... のすべてのオブジェクトで起動すること。
|
|
108
|
+
> 各レベルの apex-query-tracer は並列起動して効率化できる。
|
|
109
|
+
|
|
110
|
+
### flow-query-tracer(各カスケードレベルごとに起動)
|
|
111
|
+
|
|
112
|
+
各オブジェクトのアクティブ Record-Triggered Flow を確認し、全 Flow XML を個別解析する。
|
|
113
|
+
|
|
114
|
+
各オブジェクトのフロー確認(cascade-tracer 完了後に実行):
|
|
115
|
+
```bash
|
|
116
|
+
yohaku graph query "SELECT fqn, type, status FROM flows WHERE triggering_object = '<ObjectApiName>' AND status = 'Active'"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
- フローが **1 本以上ある** → flow-query-tracer を起動して全 Flow XML を個別確認
|
|
120
|
+
- フローが **0 本** → 「フロー: なし」として記録しスキップ
|
|
121
|
+
|
|
122
|
+
**flow-query-tracer への必須指示:**
|
|
123
|
+
|
|
124
|
+
- **Flow Get Records のバルク化を適用する**: ループ外の Get Records は `$Record` 依存フィルタ(`WHERE ParentId = {!$Record.Id}` 等)があっても **B 分類**(固定)。Salesforce が N 個のインタビューを同一要素で待機させ単一 SOQL として実行するため、N 倍にカウントしない。C 分類とするのは `<loops>` 要素の**内側**にある Get Records のみ。
|
|
125
|
+
|
|
126
|
+
- **ループ外 DML の正常パターンを DML_C と誤分類しない**: ループ内で Collection 変数に値を追加し、ループ外の DML 要素(inputReference = Collection 変数)で一括処理するパターンは **DML_B**(正常)。DML 要素が `<loops>` 要素の内側に記述されているかどうかを XML で確認してから分類すること。
|
|
127
|
+
|
|
128
|
+
- **フロー XML に含まれる Assignment / RecordUpdate の対象フィールドを全て列挙する**
|
|
129
|
+
これらは下流トリガハンドラへのインプットになるため、省略せず明示する。
|
|
130
|
+
|
|
131
|
+
> **全レベル必須**: Lv.0 だけでなく Lv.1, Lv.2... のすべてのカスケード先オブジェクトも
|
|
132
|
+
> 同様に確認すること。省略不可。
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## ステップ 4.5: カスケード条件クロスチェック(必須・全レベル)
|
|
137
|
+
|
|
138
|
+
ステップ 4 の apex-query-tracer / flow-query-tracer の結果を受け取った後、
|
|
139
|
+
**各カスケードレベルのフィールドを次レベルのトリガ条件と照合する**。
|
|
140
|
+
|
|
141
|
+
### 照合手順
|
|
142
|
+
|
|
143
|
+
1. **上流 DML の更新フィールドリストを取得**
|
|
144
|
+
- Lv.N の apex-query-tracer が出力した「DML更新フィールド一覧」
|
|
145
|
+
- Lv.N の flow-query-tracer が出力した「Assignment/RecordUpdate フィールド一覧」
|
|
146
|
+
|
|
147
|
+
2. **下流ハンドラの条件式を取得**
|
|
148
|
+
- Lv.N+1 の apex-query-tracer が出力した各条件分岐の条件式フィールドリスト
|
|
149
|
+
- 特に `onAfterUpdate` / `onAfterInsert` 内の条件式を重点確認
|
|
150
|
+
|
|
151
|
+
3. **フィールドを照合して発火可否を確定**
|
|
152
|
+
- 上流フィールド ∩ 下流条件フィールド が空でない → 「⚠ 条件付き発火確定」
|
|
153
|
+
- 上流フィールド ∩ 下流条件フィールド が空 → 「❌ 不発火確定」
|
|
154
|
+
- どちらか不明 → 「⚠ 要確認」(推測断定禁止)
|
|
155
|
+
|
|
156
|
+
4. **発火確定の条件パスを再分析対象に追加**
|
|
157
|
+
「⚠ 条件付き発火確定」となったサービスクラス・DML は、
|
|
158
|
+
そのコストを **クエリ数・DML マトリクスに追記** する。
|
|
159
|
+
|
|
160
|
+
### 照合対象として特に注意すべきパターン
|
|
161
|
+
|
|
162
|
+
- **集計系サービス**: 更新フィールドが多い。下流ハンドラの条件式と突き合わせて、見落としなく確認する。
|
|
163
|
+
- **論理削除フラグ連鎖**: フローが `$Record.X` を子レコードの同名フィールドに設定するパターンが多い。子トリガの `IsChanged` 条件に必ず合致する。
|
|
164
|
+
- **通貨変更連鎖(CurrencyIsoCode)**: フローが CurrencyIsoCode を子レコードへコピーする場合、子トリガの `CurrencyIsoCode IsChanged` 条件に合致する。
|
|
165
|
+
|
|
166
|
+
### 照合結果のドキュメント形式
|
|
167
|
+
|
|
168
|
+
```markdown
|
|
169
|
+
#### カスケード条件クロスチェック: Lv.N → Lv.N+1
|
|
170
|
+
|
|
171
|
+
**上流DML更新フィールド (Lv.N: <ObjectApiName>)**
|
|
172
|
+
- <FieldApiName1>
|
|
173
|
+
- <FieldApiName2>
|
|
174
|
+
...
|
|
175
|
+
|
|
176
|
+
**下流条件式 (Lv.N+1: <ObjectApiName>, onAfterUpdate)**
|
|
177
|
+
|
|
178
|
+
| 条件式フィールド | 上流合致 | 呼び出す処理 | 判定 |
|
|
179
|
+
|---|---|---|---|
|
|
180
|
+
| <FieldApiName1> | ✅ | <ServiceClass>.<method>() | ⚠ 条件付き発火確定 |
|
|
181
|
+
| <FieldApiName2> | ❌ | <ServiceClass2>.<method>() | ❌ 不発火確定 |
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## ステップ 5: batch-calculator で集計・算出
|
|
187
|
+
|
|
188
|
+
cascade-tracer + apex-query-tracer + flow-query-tracer の全結果を batch-calculator に渡し、
|
|
189
|
+
以下を算出させる:
|
|
190
|
+
|
|
191
|
+
- **分類A**: ゼロカウント(__mdt LTA なし、Custom Setting 静的アクセス)
|
|
192
|
+
- **分類B**: 固定クエリ(バッチサイズ非依存)
|
|
193
|
+
- **分類C**: バッチ比例クエリ(トリガレコード N 件ごと)
|
|
194
|
+
- **分類D**: 紐づき比例クエリ(関連レコード M 件ごと)
|
|
195
|
+
- **カスケード累計**: 各レベルの B/C/D を積み上げ
|
|
196
|
+
|
|
197
|
+
出力:
|
|
198
|
+
- クエリ数マトリクス(N=1,5,10,20,50 × M=0,1,5,10)
|
|
199
|
+
- 各 N, M の組み合わせに対する最大バッチ許容件数
|
|
200
|
+
- ボトルネック要因(SOQL 上限 / 行数上限 / DML 上限)
|
|
201
|
+
- ⚠ データ連携バッチ 200 件との比較
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## ステップ 6: レポート出力
|
|
206
|
+
|
|
207
|
+
```markdown
|
|
208
|
+
# バッチ許容件数分析: $ARGUMENTS
|
|
209
|
+
生成日時: <ISO 8601>
|
|
210
|
+
|
|
211
|
+
## カスケードチェーン
|
|
212
|
+
...
|
|
213
|
+
|
|
214
|
+
## アクティブフロー発火分析
|
|
215
|
+
|
|
216
|
+
> 各フローを **個別に** XML を読んで確認すること。「N本まとめて」の一括判定禁止。
|
|
217
|
+
> 発火可否は ✅ / ⚠ / ❌ のみ(「ほぼ非発火」などの推測表現禁止)。
|
|
218
|
+
> 各エントリに INSERT / UPDATE 列を設け、シナリオ別発火可否を記載する。
|
|
219
|
+
> フロー XML の Assignment/RecordUpdate で設定するフィールドを備考欄に明記する。
|
|
220
|
+
|
|
221
|
+
| フロー名 | 対象オブジェクト | 種別 | SOQL(Insert) | SOQL(Update) | DML(Insert) | DML(Update) | Insert発火 | Update発火 | 根拠 |
|
|
222
|
+
|---|---|---|---|---|---|---|---|---|---|
|
|
223
|
+
| ... | | | | | | | | | |
|
|
224
|
+
|
|
225
|
+
## カスケード条件クロスチェック
|
|
226
|
+
|
|
227
|
+
> ステップ 4.5 の照合結果。各 Lv.N → Lv.N+1 の条件照合を記載する。
|
|
228
|
+
> 「集計パスでは不発火」の断定は照合完了後にのみ記載する。
|
|
229
|
+
|
|
230
|
+
### Lv.0 → Lv.1 の照合
|
|
231
|
+
|
|
232
|
+
| 上流DML更新フィールド | Lv.1 条件式フィールド | 合致 | 呼び出す処理 | 判定 |
|
|
233
|
+
|---|---|---|---|---|
|
|
234
|
+
| ... | ... | ✅/❌ | ... | ⚠/❌ |
|
|
235
|
+
|
|
236
|
+
### Lv.1 → Lv.2 の照合(あれば)
|
|
237
|
+
...
|
|
238
|
+
|
|
239
|
+
## クエリ数マトリクス(INSERT シナリオ)
|
|
240
|
+
|
|
241
|
+
> 条件付き SOQL は「0〜X (条件付)」と明示し、条件を脚注に記載する。
|
|
242
|
+
|
|
243
|
+
B_total = XX〜YY / C_total = ZZ / D_total = WW
|
|
244
|
+
...
|
|
245
|
+
|
|
246
|
+
## クエリ数マトリクス(UPDATE シナリオ)
|
|
247
|
+
|
|
248
|
+
B_total = XX〜YY / C_total = ZZ / D_total = WW
|
|
249
|
+
...
|
|
250
|
+
|
|
251
|
+
## DML 数マトリクス(INSERT シナリオ)
|
|
252
|
+
|
|
253
|
+
> DML 行数は DML 対象レコード数に依存する場合は「≦ kN 行 (条件付)」と明示する。
|
|
254
|
+
|
|
255
|
+
| DML操作 | 対象オブジェクト | DML文数 | DML行数(N件バッチ時) | 条件 |
|
|
256
|
+
|---|---|---|---|---|
|
|
257
|
+
| ... | | | | 常時 / 条件付 |
|
|
258
|
+
|
|
259
|
+
## DML 数マトリクス(UPDATE シナリオ)
|
|
260
|
+
...
|
|
261
|
+
|
|
262
|
+
## 最大バッチ許容件数
|
|
263
|
+
|
|
264
|
+
> 条件によって上限が変わる場合は行を分けて記載する。
|
|
265
|
+
|
|
266
|
+
| シナリオ | SOQL制限ベース | DML行制限ベース | 有効最大 | 推奨(×0.8) |
|
|
267
|
+
|---|---|---|---|---|
|
|
268
|
+
| INSERT (条件なし) | | | | |
|
|
269
|
+
| INSERT (条件付き最悪) | | | | |
|
|
270
|
+
| UPDATE 通常 (条件なし) | | | | |
|
|
271
|
+
| UPDATE 通常 (条件付き最悪) | | | | |
|
|
272
|
+
| ... | | | | |
|
|
273
|
+
|
|
274
|
+
## 判定
|
|
275
|
+
推奨バッチサイズ(INSERT, 条件なし): XX 件(安全マージン 20%)
|
|
276
|
+
推奨バッチサイズ(INSERT, 条件付き最悪): XX 件(安全マージン 20%)
|
|
277
|
+
推奨バッチサイズ(UPDATE 通常): ...
|
|
278
|
+
データ連携 200 件: [OK / ⚠ 超過]
|
|
279
|
+
ボトルネック: [SOQL / 行数 / DML]
|
|
280
|
+
⚠ 注意事項: (条件付きシナリオの注意事項があれば記載)
|
|
281
|
+
|
|
282
|
+
## 要対応事項
|
|
283
|
+
...(未計上・要確認事項を列挙。解決済みは ✅ と明記)
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
結果は `docs/ai-augmented/batch-analysis/<YYYY-MM-DD>-$ARGUMENTS.md` に保存。
|
|
287
|
+
ディレクトリが無ければ作成する。
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 禁則
|
|
292
|
+
|
|
293
|
+
- `force-app/` の Apex ファイルを AI が直接編集しない(分析のみ)
|
|
294
|
+
- クエリ数の推測で確認できないものは「要確認」と明示し、捏造しない
|
|
295
|
+
- `__mdt` クエリは LongTextArea フィールドの有無を `yohaku graph query` で確認してから分類する
|
|
296
|
+
(`type = 'LongTextArea'` を見る。`Textarea` (255 文字) は別物なので混同しない)
|
|
297
|
+
- ループ内 SOQL を発見した場合は「⚠ アンチパターン」として別途指摘する
|
|
298
|
+
- **Flow Get Records をループ内/外の確認なしで C 分類しない**: ループ外の Get Records は Salesforce バルク化仕様により B 分類($Record 依存フィルタでも同様)。C 分類となるのはループ内 Get Records のみ。
|
|
299
|
+
- **Flow の DML を「ループ内で値を集計しているから DML_C」と誤分類しない**: ループ内で Collection に追加し、ループ外 DML 要素(inputReference = Collection)で一括処理するパターンは DML_B(正常パターン)。XML の `<loops>` 要素内に `<recordUpdates>` 等が直接記述されているかを確認してから DML_C と判定すること。
|
|
300
|
+
- **「集計パスでは不発火」を照合なしで断定しない**: 上流 DML の更新フィールドと下流ハンドラの条件式を
|
|
301
|
+
フィールドレベルで照合してから判定する。照合前の断定は禁止。
|
|
302
|
+
- **ハンドラが呼ぶサービスクラスを省略しない**: トリガハンドラが呼ぶサービスクラスのメソッドを
|
|
303
|
+
全て再帰的に読み込み、SOQL/DML/条件分岐を確認する。ハンドラ単体の分析で終わらない。
|
|
304
|
+
- **DML 行数の条件依存性を見落とさない**: DML 行数が定数ではなく「対象レコード件数 × k」に
|
|
305
|
+
なる場合は、k の値と条件を明示する。「≦ N 行」と単純化しない。
|
|
306
|
+
- **フロー XML の Assignment 更新フィールドを省略しない**: フローが下流トリガに渡すフィールドを
|
|
307
|
+
確認せずに「フロー DML のみ記録」して終わらない。更新フィールドを列挙して照合に使う。
|
|
308
|
+
- `yohaku graph query` の SQL は snake_case (`fqn`, `object`, `events_json`, `triggering_object`, `type`, `status`)。
|
|
309
|
+
古い名前 (`api_name`, `object_api_name`, `process_type` 等) で書くと CLI がエラーを返す。
|