@tailor-platform/erp-kit 0.2.1 → 0.2.2

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 (618) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -23
  3. package/dist/cli.mjs +1613 -0
  4. package/package.json +14 -13
  5. package/schemas/app-compose/story.yml +12 -0
  6. package/schemas/module/command.yml +9 -0
  7. package/schemas/module/module.yml +4 -0
  8. package/schemas/module/query.yml +9 -0
  9. package/skills/erp-kit-app-1-requirements/SKILL.md +4 -4
  10. package/skills/erp-kit-app-2-requirements-review/SKILL.md +102 -0
  11. package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +66 -0
  12. package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +69 -0
  13. package/skills/erp-kit-app-2-requirements-review/references/requirements-report-format.md +25 -0
  14. package/skills/erp-kit-app-3-plan/SKILL.md +157 -0
  15. package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +107 -0
  16. package/skills/erp-kit-app-3-plan/references/screen-extraction.md +74 -0
  17. package/skills/erp-kit-app-3-plan/references/story-extraction.md +86 -0
  18. package/skills/erp-kit-app-4-plan-review/SKILL.md +177 -0
  19. package/skills/erp-kit-app-4-plan-review/references/actor-flow-parity.md +73 -0
  20. package/skills/erp-kit-app-4-plan-review/references/business-flow-story-parity.md +86 -0
  21. package/skills/erp-kit-app-4-plan-review/references/orphan-detection.md +69 -0
  22. package/skills/erp-kit-app-4-plan-review/references/parity-report-format.md +52 -0
  23. package/skills/erp-kit-app-4-plan-review/references/story-resolver-parity.md +83 -0
  24. package/skills/erp-kit-app-4-plan-review/references/story-screen-parity.md +73 -0
  25. package/skills/{erp-kit-app-5-implementation → erp-kit-app-5-impl-backend}/SKILL.md +24 -68
  26. package/skills/erp-kit-app-5-impl-backend/references/app-config.md +38 -0
  27. package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +48 -0
  28. package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +68 -0
  29. package/skills/erp-kit-app-6-impl-frontend/SKILL.md +74 -0
  30. package/skills/{erp-kit-app-5-implementation/references/frontend.md → erp-kit-app-6-impl-frontend/references/pages.md} +8 -90
  31. package/skills/erp-kit-app-7-impl-review/SKILL.md +176 -0
  32. package/skills/erp-kit-app-7-impl-review/references/impl-parity-report-format.md +52 -0
  33. package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +84 -0
  34. package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +86 -0
  35. package/skills/erp-kit-app-7-impl-review/references/screen-doc-code-parity.md +86 -0
  36. package/skills/erp-kit-module-1-requirements/SKILL.md +126 -0
  37. package/skills/erp-kit-module-1-requirements/references/boundary-analysis.md +51 -0
  38. package/skills/erp-kit-module-1-requirements/references/erp-research.md +57 -0
  39. package/skills/erp-kit-module-1-requirements/references/feature-doc.md +61 -0
  40. package/skills/erp-kit-module-2-requirements-review/SKILL.md +112 -0
  41. package/skills/erp-kit-module-2-requirements-review/references/best-practices-check.md +79 -0
  42. package/skills/erp-kit-module-2-requirements-review/references/boundary-consistency-check.md +70 -0
  43. package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +25 -0
  44. package/skills/erp-kit-module-3-plan/SKILL.md +107 -0
  45. package/skills/erp-kit-module-3-plan/references/command-extraction.md +87 -0
  46. package/skills/erp-kit-module-3-plan/references/model-extraction.md +72 -0
  47. package/skills/erp-kit-module-3-plan/references/query-extraction.md +59 -0
  48. package/skills/erp-kit-module-4-plan-review/SKILL.md +158 -0
  49. package/skills/erp-kit-module-4-plan-review/references/command-model-consistency.md +46 -0
  50. package/skills/erp-kit-module-4-plan-review/references/feature-command-parity.md +97 -0
  51. package/skills/erp-kit-module-4-plan-review/references/feature-model-parity.md +47 -0
  52. package/skills/erp-kit-module-4-plan-review/references/feature-query-parity.md +70 -0
  53. package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +52 -0
  54. package/skills/erp-kit-module-5-impl/SKILL.md +118 -0
  55. package/skills/erp-kit-module-5-impl/references/command-impl.md +68 -0
  56. package/skills/erp-kit-module-5-impl/references/exports.md +10 -0
  57. package/skills/erp-kit-module-5-impl/references/model-impl.md +45 -0
  58. package/skills/erp-kit-module-5-impl/references/query-impl.md +53 -0
  59. package/skills/erp-kit-module-6-impl-review/SKILL.md +187 -0
  60. package/skills/erp-kit-module-6-impl-review/references/command-doc-code-parity.md +92 -0
  61. package/skills/erp-kit-module-6-impl-review/references/command-doc-test-parity.md +93 -0
  62. package/skills/erp-kit-module-6-impl-review/references/error-implementation-parity.md +95 -0
  63. package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/errors.md +1 -1
  64. package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +52 -0
  65. package/skills/erp-kit-module-6-impl-review/references/model-doc-code-parity.md +80 -0
  66. package/skills/erp-kit-module-shared/SKILL.md +1 -1
  67. package/skills/erp-kit-module-shared/references/commands.md +1 -1
  68. package/skills/erp-kit-module-shared/references/errors.md +12 -9
  69. package/skills/erp-kit-module-shared/references/queries.md +109 -36
  70. package/skills/erp-kit-module-shared/references/testing.md +10 -0
  71. package/skills/erp-kit-update/SKILL.md +2 -2
  72. package/src/app.ts +1 -1
  73. package/src/commands/check.ts +1 -1
  74. package/src/commands/index.ts +16 -5
  75. package/src/commands/init.test.ts +22 -69
  76. package/src/commands/init.ts +28 -115
  77. package/src/commands/lib/distribute.test.ts +126 -0
  78. package/src/commands/lib/distribute.ts +129 -0
  79. package/src/commands/parse-doc-test-cases.ts +55 -0
  80. package/src/commands/scaffold.test.ts +74 -33
  81. package/src/commands/scaffold.ts +54 -18
  82. package/src/commands/sync-check.test.ts +173 -0
  83. package/src/commands/sync-check.ts +103 -2
  84. package/src/commands/update.test.ts +87 -0
  85. package/src/commands/update.ts +41 -0
  86. package/src/generator/generate-code.test.ts +23 -12
  87. package/src/generator/generate-code.ts +22 -16
  88. package/src/integration.test.ts +1 -1
  89. package/src/module.ts +14 -97
  90. package/src/modules/item-management/README.md +8 -0
  91. package/src/modules/item-management/command/activateItem.generated.ts +1 -1
  92. package/src/modules/item-management/command/activateItem.test.ts +12 -18
  93. package/src/modules/item-management/command/activateItem.ts +9 -5
  94. package/src/modules/item-management/command/assignItemToTaxonomy.generated.ts +1 -1
  95. package/src/modules/item-management/command/assignItemToTaxonomy.test.ts +10 -24
  96. package/src/modules/item-management/command/assignItemToTaxonomy.ts +19 -16
  97. package/src/modules/item-management/command/createItem.generated.ts +1 -1
  98. package/src/modules/item-management/command/createItem.test.ts +11 -11
  99. package/src/modules/item-management/command/createItem.ts +16 -7
  100. package/src/modules/item-management/command/createTaxonomyNode.generated.ts +1 -1
  101. package/src/modules/item-management/command/createTaxonomyNode.test.ts +9 -9
  102. package/src/modules/item-management/command/createTaxonomyNode.ts +33 -14
  103. package/src/modules/item-management/command/deactivateItem.generated.ts +1 -1
  104. package/src/modules/item-management/command/deactivateItem.test.ts +12 -18
  105. package/src/modules/item-management/command/deactivateItem.ts +9 -5
  106. package/src/modules/item-management/command/deleteItem.generated.ts +1 -1
  107. package/src/modules/item-management/command/deleteItem.test.ts +10 -16
  108. package/src/modules/item-management/command/deleteItem.ts +9 -5
  109. package/src/modules/item-management/command/deleteTaxonomyNode.generated.ts +1 -1
  110. package/src/modules/item-management/command/deleteTaxonomyNode.test.ts +10 -16
  111. package/src/modules/item-management/command/deleteTaxonomyNode.ts +22 -12
  112. package/src/modules/item-management/command/moveTaxonomyNode.generated.ts +1 -1
  113. package/src/modules/item-management/command/moveTaxonomyNode.test.ts +10 -10
  114. package/src/modules/item-management/command/moveTaxonomyNode.ts +63 -19
  115. package/src/modules/item-management/command/reactivateItem.generated.ts +1 -1
  116. package/src/modules/item-management/command/reactivateItem.test.ts +12 -18
  117. package/src/modules/item-management/command/reactivateItem.ts +9 -5
  118. package/src/modules/item-management/command/removeItemFromTaxonomy.generated.ts +1 -1
  119. package/src/modules/item-management/command/removeItemFromTaxonomy.test.ts +9 -16
  120. package/src/modules/item-management/command/removeItemFromTaxonomy.ts +11 -6
  121. package/src/modules/item-management/command/updateItem.generated.ts +1 -1
  122. package/src/modules/item-management/command/updateItem.test.ts +16 -16
  123. package/src/modules/item-management/command/updateItem.ts +11 -6
  124. package/src/modules/item-management/command/updateTaxonomyNode.generated.ts +1 -1
  125. package/src/modules/item-management/command/updateTaxonomyNode.test.ts +14 -20
  126. package/src/modules/item-management/command/updateTaxonomyNode.ts +9 -6
  127. package/src/modules/item-management/docs/commands/ActivateItem.md +8 -0
  128. package/src/modules/item-management/docs/commands/AssignItemToTaxonomy.md +7 -0
  129. package/src/modules/item-management/docs/commands/CreateItem.md +10 -0
  130. package/src/modules/item-management/docs/commands/CreateTaxonomyNode.md +9 -0
  131. package/src/modules/item-management/docs/commands/DeactivateItem.md +8 -0
  132. package/src/modules/item-management/docs/commands/DeleteItem.md +7 -0
  133. package/src/modules/item-management/docs/commands/DeleteTaxonomyNode.md +7 -0
  134. package/src/modules/item-management/docs/commands/MoveTaxonomyNode.md +10 -0
  135. package/src/modules/item-management/docs/commands/ReactivateItem.md +8 -0
  136. package/src/modules/item-management/docs/commands/RemoveItemFromTaxonomy.md +5 -0
  137. package/src/modules/item-management/docs/commands/UpdateItem.md +15 -0
  138. package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +9 -0
  139. package/src/modules/item-management/docs/queries/CalculateNodeDepth.md +8 -0
  140. package/src/modules/item-management/docs/queries/CalculateSubtreeDepth.md +7 -0
  141. package/src/modules/item-management/docs/queries/DetectCircularReference.md +9 -0
  142. package/src/modules/item-management/docs/queries/GetItem.md +9 -0
  143. package/src/modules/item-management/docs/queries/GetItemTaxonomyAssignment.md +5 -0
  144. package/src/modules/item-management/docs/queries/GetTaxonomyNode.md +7 -0
  145. package/src/modules/item-management/docs/queries/GetTaxonomyNodeAssignments.md +5 -0
  146. package/src/modules/item-management/docs/queries/GetTaxonomyNodeChildren.md +6 -0
  147. package/src/modules/item-management/index.ts +0 -51
  148. package/src/modules/item-management/lib/errors.generated.ts +24 -24
  149. package/src/modules/item-management/lib/permissions.generated.ts +1 -1
  150. package/src/modules/item-management/lib/types.ts +1 -1
  151. package/src/modules/item-management/module.ts +1 -1
  152. package/src/modules/item-management/query/calculateNodeDepth.generated.ts +1 -1
  153. package/src/modules/item-management/query/calculateNodeDepth.test.ts +21 -6
  154. package/src/modules/item-management/query/calculateNodeDepth.ts +2 -2
  155. package/src/modules/item-management/query/calculateSubtreeDepth.generated.ts +1 -1
  156. package/src/modules/item-management/query/calculateSubtreeDepth.test.ts +17 -5
  157. package/src/modules/item-management/query/calculateSubtreeDepth.ts +2 -2
  158. package/src/modules/item-management/query/detectCircularReference.generated.ts +1 -1
  159. package/src/modules/item-management/query/detectCircularReference.test.ts +25 -7
  160. package/src/modules/item-management/query/detectCircularReference.ts +4 -4
  161. package/src/modules/item-management/query/getItem.generated.ts +1 -1
  162. package/src/modules/item-management/query/getItem.test.ts +25 -7
  163. package/src/modules/item-management/query/getItem.ts +2 -2
  164. package/src/modules/item-management/query/getItemTaxonomyAssignment.generated.ts +1 -1
  165. package/src/modules/item-management/query/getItemTaxonomyAssignment.test.ts +9 -3
  166. package/src/modules/item-management/query/getItemTaxonomyAssignment.ts +2 -2
  167. package/src/modules/item-management/query/getTaxonomyNode.generated.ts +1 -1
  168. package/src/modules/item-management/query/getTaxonomyNode.test.ts +17 -5
  169. package/src/modules/item-management/query/getTaxonomyNode.ts +2 -2
  170. package/src/modules/item-management/query/getTaxonomyNodeAssignments.generated.ts +1 -1
  171. package/src/modules/item-management/query/getTaxonomyNodeAssignments.test.ts +9 -3
  172. package/src/modules/item-management/query/getTaxonomyNodeAssignments.ts +2 -2
  173. package/src/modules/item-management/query/getTaxonomyNodeChildren.generated.ts +1 -1
  174. package/src/modules/item-management/query/getTaxonomyNodeChildren.test.ts +13 -4
  175. package/src/modules/item-management/query/getTaxonomyNodeChildren.ts +2 -2
  176. package/src/modules/item-management/tailor.config.ts +6 -4
  177. package/src/modules/item-management/tailor.d.ts +13 -0
  178. package/src/modules/primitives/README.md +8 -0
  179. package/src/modules/primitives/command/activateCategory.generated.ts +1 -1
  180. package/src/modules/primitives/command/activateCategory.test.ts +8 -18
  181. package/src/modules/primitives/command/activateCategory.ts +9 -5
  182. package/src/modules/primitives/command/activateCurrency.generated.ts +1 -1
  183. package/src/modules/primitives/command/activateCurrency.test.ts +8 -18
  184. package/src/modules/primitives/command/activateCurrency.ts +9 -5
  185. package/src/modules/primitives/command/activateUnit.generated.ts +1 -1
  186. package/src/modules/primitives/command/activateUnit.test.ts +8 -15
  187. package/src/modules/primitives/command/activateUnit.ts +9 -5
  188. package/src/modules/primitives/command/createCategory.generated.ts +1 -1
  189. package/src/modules/primitives/command/createCategory.test.ts +29 -44
  190. package/src/modules/primitives/command/createCategory.ts +9 -5
  191. package/src/modules/primitives/command/createCurrency.generated.ts +1 -1
  192. package/src/modules/primitives/command/createCurrency.test.ts +53 -78
  193. package/src/modules/primitives/command/createCurrency.ts +9 -6
  194. package/src/modules/primitives/command/createExchangeRate.generated.ts +1 -1
  195. package/src/modules/primitives/command/createExchangeRate.test.ts +59 -97
  196. package/src/modules/primitives/command/createExchangeRate.ts +13 -7
  197. package/src/modules/primitives/command/createUnit.generated.ts +1 -1
  198. package/src/modules/primitives/command/createUnit.test.ts +59 -90
  199. package/src/modules/primitives/command/createUnit.ts +9 -6
  200. package/src/modules/primitives/command/deactivateCategory.generated.ts +1 -1
  201. package/src/modules/primitives/command/deactivateCategory.test.ts +15 -33
  202. package/src/modules/primitives/command/deactivateCategory.ts +9 -5
  203. package/src/modules/primitives/command/deactivateCurrency.generated.ts +1 -1
  204. package/src/modules/primitives/command/deactivateCurrency.test.ts +12 -26
  205. package/src/modules/primitives/command/deactivateCurrency.ts +9 -5
  206. package/src/modules/primitives/command/deactivateUnit.generated.ts +1 -1
  207. package/src/modules/primitives/command/deactivateUnit.test.ts +15 -30
  208. package/src/modules/primitives/command/deactivateUnit.ts +14 -7
  209. package/src/modules/primitives/command/setBaseCurrency.generated.ts +1 -1
  210. package/src/modules/primitives/command/setBaseCurrency.test.ts +18 -40
  211. package/src/modules/primitives/command/setBaseCurrency.ts +15 -7
  212. package/src/modules/primitives/command/setReferenceUnit.generated.ts +1 -1
  213. package/src/modules/primitives/command/setReferenceUnit.test.ts +22 -44
  214. package/src/modules/primitives/command/setReferenceUnit.ts +21 -9
  215. package/src/modules/primitives/docs/commands/ActivateCategory.md +6 -0
  216. package/src/modules/primitives/docs/commands/ActivateCurrency.md +6 -0
  217. package/src/modules/primitives/docs/commands/ActivateUnit.md +6 -0
  218. package/src/modules/primitives/docs/commands/CreateCategory.md +6 -0
  219. package/src/modules/primitives/docs/commands/CreateCurrency.md +10 -0
  220. package/src/modules/primitives/docs/commands/CreateExchangeRate.md +11 -0
  221. package/src/modules/primitives/docs/commands/CreateUnit.md +10 -0
  222. package/src/modules/primitives/docs/commands/DeactivateCategory.md +7 -0
  223. package/src/modules/primitives/docs/commands/DeactivateCurrency.md +7 -0
  224. package/src/modules/primitives/docs/commands/DeactivateUnit.md +7 -0
  225. package/src/modules/primitives/docs/commands/SetBaseCurrency.md +7 -0
  226. package/src/modules/primitives/docs/commands/SetReferenceUnit.md +7 -0
  227. package/src/modules/primitives/docs/queries/ConvertAmount.md +14 -0
  228. package/src/modules/primitives/docs/queries/ConvertQuantity.md +13 -0
  229. package/src/modules/primitives/docs/queries/GetBaseCurrency.md +5 -0
  230. package/src/modules/primitives/docs/queries/GetCurrency.md +7 -0
  231. package/src/modules/primitives/docs/queries/GetUnit.md +7 -0
  232. package/src/modules/primitives/docs/queries/GetUoMCategory.md +7 -0
  233. package/src/modules/primitives/docs/queries/ListUnitsByCategory.md +15 -5
  234. package/src/modules/primitives/index.ts +0 -49
  235. package/src/modules/primitives/lib/errors.generated.ts +23 -23
  236. package/src/modules/primitives/lib/permissions.generated.ts +1 -1
  237. package/src/modules/primitives/lib/types.ts +1 -1
  238. package/src/modules/primitives/module.ts +1 -1
  239. package/src/modules/primitives/query/convertAmount.generated.ts +1 -1
  240. package/src/modules/primitives/query/convertAmount.test.ts +110 -77
  241. package/src/modules/primitives/query/convertAmount.ts +61 -47
  242. package/src/modules/primitives/query/convertQuantity.generated.ts +1 -1
  243. package/src/modules/primitives/query/convertQuantity.test.ts +99 -69
  244. package/src/modules/primitives/query/convertQuantity.ts +12 -10
  245. package/src/modules/primitives/query/getBaseCurrency.generated.ts +1 -1
  246. package/src/modules/primitives/query/getBaseCurrency.test.ts +10 -4
  247. package/src/modules/primitives/query/getBaseCurrency.ts +2 -2
  248. package/src/modules/primitives/query/getCurrency.generated.ts +1 -1
  249. package/src/modules/primitives/query/getCurrency.test.ts +17 -5
  250. package/src/modules/primitives/query/getCurrency.ts +2 -2
  251. package/src/modules/primitives/query/getUnit.generated.ts +1 -1
  252. package/src/modules/primitives/query/getUnit.test.ts +17 -5
  253. package/src/modules/primitives/query/getUnit.ts +2 -2
  254. package/src/modules/primitives/query/getUoMCategory.generated.ts +1 -1
  255. package/src/modules/primitives/query/getUoMCategory.test.ts +17 -5
  256. package/src/modules/primitives/query/getUoMCategory.ts +2 -2
  257. package/src/modules/primitives/query/listUnitsByCategory.generated.ts +1 -1
  258. package/src/modules/primitives/query/listUnitsByCategory.test.ts +80 -0
  259. package/src/modules/primitives/query/listUnitsByCategory.ts +19 -3
  260. package/src/modules/primitives/tailor.config.ts +6 -4
  261. package/src/modules/primitives/tailor.d.ts +13 -0
  262. package/src/modules/product-management/README.md +52 -0
  263. package/src/modules/product-management/command/activateProduct.generated.ts +6 -0
  264. package/src/modules/product-management/command/activateProduct.test.ts +40 -0
  265. package/src/modules/product-management/command/activateProduct.ts +42 -0
  266. package/src/modules/product-management/command/assignProductToCategory.generated.ts +6 -0
  267. package/src/modules/product-management/command/assignProductToCategory.test.ts +90 -0
  268. package/src/modules/product-management/command/assignProductToCategory.ts +62 -0
  269. package/src/modules/product-management/command/createProduct.generated.ts +6 -0
  270. package/src/modules/product-management/command/createProduct.test.ts +149 -0
  271. package/src/modules/product-management/command/createProduct.ts +73 -0
  272. package/src/modules/product-management/command/createProductAttribute.generated.ts +6 -0
  273. package/src/modules/product-management/command/createProductAttribute.test.ts +70 -0
  274. package/src/modules/product-management/command/createProductAttribute.ts +53 -0
  275. package/src/modules/product-management/command/createProductAttributeValue.generated.ts +6 -0
  276. package/src/modules/product-management/command/createProductAttributeValue.test.ts +68 -0
  277. package/src/modules/product-management/command/createProductAttributeValue.ts +63 -0
  278. package/src/modules/product-management/command/createProductCategory.generated.ts +6 -0
  279. package/src/modules/product-management/command/createProductCategory.test.ts +135 -0
  280. package/src/modules/product-management/command/createProductCategory.ts +82 -0
  281. package/src/modules/product-management/command/deactivateProduct.generated.ts +6 -0
  282. package/src/modules/product-management/command/deactivateProduct.test.ts +40 -0
  283. package/src/modules/product-management/command/deactivateProduct.ts +42 -0
  284. package/src/modules/product-management/command/deleteProduct.generated.ts +6 -0
  285. package/src/modules/product-management/command/deleteProduct.test.ts +42 -0
  286. package/src/modules/product-management/command/deleteProduct.ts +42 -0
  287. package/src/modules/product-management/command/deleteProductAttribute.generated.ts +6 -0
  288. package/src/modules/product-management/command/deleteProductAttribute.test.ts +49 -0
  289. package/src/modules/product-management/command/deleteProductAttribute.ts +45 -0
  290. package/src/modules/product-management/command/deleteProductAttributeValue.generated.ts +6 -0
  291. package/src/modules/product-management/command/deleteProductAttributeValue.test.ts +71 -0
  292. package/src/modules/product-management/command/deleteProductAttributeValue.ts +68 -0
  293. package/src/modules/product-management/command/deleteProductCategory.generated.ts +6 -0
  294. package/src/modules/product-management/command/deleteProductCategory.test.ts +74 -0
  295. package/src/modules/product-management/command/deleteProductCategory.ts +53 -0
  296. package/src/modules/product-management/command/generateVariants.generated.ts +6 -0
  297. package/src/modules/product-management/command/generateVariants.test.ts +365 -0
  298. package/src/modules/product-management/command/generateVariants.ts +168 -0
  299. package/src/modules/product-management/command/moveProductCategory.generated.ts +6 -0
  300. package/src/modules/product-management/command/moveProductCategory.test.ts +170 -0
  301. package/src/modules/product-management/command/moveProductCategory.ts +124 -0
  302. package/src/modules/product-management/command/reactivateProduct.generated.ts +6 -0
  303. package/src/modules/product-management/command/reactivateProduct.test.ts +40 -0
  304. package/src/modules/product-management/command/reactivateProduct.ts +42 -0
  305. package/src/modules/product-management/command/removeProductFromCategory.generated.ts +6 -0
  306. package/src/modules/product-management/command/removeProductFromCategory.test.ts +42 -0
  307. package/src/modules/product-management/command/removeProductFromCategory.ts +32 -0
  308. package/src/modules/product-management/command/setProductAttributeAssignment.generated.ts +6 -0
  309. package/src/modules/product-management/command/setProductAttributeAssignment.test.ts +206 -0
  310. package/src/modules/product-management/command/setProductAttributeAssignment.ts +102 -0
  311. package/src/modules/product-management/command/updateProduct.generated.ts +6 -0
  312. package/src/modules/product-management/command/updateProduct.test.ts +168 -0
  313. package/src/modules/product-management/command/updateProduct.ts +95 -0
  314. package/src/modules/product-management/command/updateProductAttribute.generated.ts +6 -0
  315. package/src/modules/product-management/command/updateProductAttribute.test.ts +101 -0
  316. package/src/modules/product-management/command/updateProductAttribute.ts +68 -0
  317. package/src/modules/product-management/command/updateProductAttributeValue.generated.ts +6 -0
  318. package/src/modules/product-management/command/updateProductAttributeValue.test.ts +80 -0
  319. package/src/modules/product-management/command/updateProductAttributeValue.ts +58 -0
  320. package/src/modules/product-management/command/updateProductCategory.generated.ts +6 -0
  321. package/src/modules/product-management/command/updateProductCategory.test.ts +80 -0
  322. package/src/modules/product-management/command/updateProductCategory.ts +66 -0
  323. package/src/modules/product-management/db/product.ts +47 -0
  324. package/src/modules/product-management/db/productAttribute.ts +26 -0
  325. package/src/modules/product-management/db/productAttributeAssignment.ts +58 -0
  326. package/src/modules/product-management/db/productAttributeValue.ts +39 -0
  327. package/src/modules/product-management/db/productCategory.ts +34 -0
  328. package/src/modules/product-management/db/productCategoryAssignment.ts +49 -0
  329. package/src/modules/product-management/db/productVariant.ts +52 -0
  330. package/src/modules/product-management/docs/commands/ActivateProduct.md +39 -0
  331. package/src/modules/product-management/docs/commands/AssignProductToCategory.md +43 -0
  332. package/src/modules/product-management/docs/commands/CreateProduct.md +48 -0
  333. package/src/modules/product-management/docs/commands/CreateProductAttribute.md +39 -0
  334. package/src/modules/product-management/docs/commands/CreateProductAttributeValue.md +42 -0
  335. package/src/modules/product-management/docs/commands/CreateProductCategory.md +54 -0
  336. package/src/modules/product-management/docs/commands/DeactivateProduct.md +39 -0
  337. package/src/modules/product-management/docs/commands/DeleteProduct.md +42 -0
  338. package/src/modules/product-management/docs/commands/DeleteProductAttribute.md +39 -0
  339. package/src/modules/product-management/docs/commands/DeleteProductAttributeValue.md +42 -0
  340. package/src/modules/product-management/docs/commands/DeleteProductCategory.md +43 -0
  341. package/src/modules/product-management/docs/commands/GenerateVariants.md +68 -0
  342. package/src/modules/product-management/docs/commands/MoveProductCategory.md +54 -0
  343. package/src/modules/product-management/docs/commands/ReactivateProduct.md +38 -0
  344. package/src/modules/product-management/docs/commands/RemoveProductFromCategory.md +34 -0
  345. package/src/modules/product-management/docs/commands/SetProductAttributeAssignment.md +62 -0
  346. package/src/modules/product-management/docs/commands/UpdateProduct.md +61 -0
  347. package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +46 -0
  348. package/src/modules/product-management/docs/commands/UpdateProductAttributeValue.md +47 -0
  349. package/src/modules/product-management/docs/commands/UpdateProductCategory.md +46 -0
  350. package/src/modules/product-management/docs/features/attribute-management.md +48 -0
  351. package/src/modules/product-management/docs/features/product-category.md +71 -0
  352. package/src/modules/product-management/docs/features/product-lifecycle.md +66 -0
  353. package/src/modules/product-management/docs/features/variant-generation.md +77 -0
  354. package/src/modules/product-management/docs/models/Product.md +58 -0
  355. package/src/modules/product-management/docs/models/ProductAttribute.md +37 -0
  356. package/src/modules/product-management/docs/models/ProductAttributeAssignment.md +41 -0
  357. package/src/modules/product-management/docs/models/ProductAttributeValue.md +40 -0
  358. package/src/modules/product-management/docs/models/ProductCategory.md +46 -0
  359. package/src/modules/product-management/docs/models/ProductCategoryAssignment.md +37 -0
  360. package/src/modules/product-management/docs/models/ProductVariant.md +41 -0
  361. package/src/modules/product-management/docs/queries/CalculateCategoryDepth.md +47 -0
  362. package/src/modules/product-management/docs/queries/DetectCategoryCircularReference.md +51 -0
  363. package/src/modules/product-management/docs/queries/GetProduct.md +42 -0
  364. package/src/modules/product-management/docs/queries/GetProductAttribute.md +42 -0
  365. package/src/modules/product-management/docs/queries/GetProductAttributeAssignment.md +34 -0
  366. package/src/modules/product-management/docs/queries/GetProductAttributeValue.md +40 -0
  367. package/src/modules/product-management/docs/queries/GetProductCategory.md +42 -0
  368. package/src/modules/product-management/docs/queries/GetProductCategoryAssignment.md +34 -0
  369. package/src/modules/product-management/docs/queries/GetProductVariant.md +41 -0
  370. package/src/modules/product-management/docs/queries/ListAttributeAssignmentsByAttribute.md +34 -0
  371. package/src/modules/product-management/docs/queries/ListCategoryAssignmentsByProduct.md +35 -0
  372. package/src/modules/product-management/docs/queries/ListProductAttributeAssignments.md +34 -0
  373. package/src/modules/product-management/docs/queries/ListProductAttributeValues.md +36 -0
  374. package/src/modules/product-management/docs/queries/ListProductCategoryAssignments.md +34 -0
  375. package/src/modules/product-management/docs/queries/ListProductCategoryChildren.md +34 -0
  376. package/src/modules/product-management/docs/queries/ListProductVariants.md +34 -0
  377. package/src/modules/product-management/generated/enums.ts +9 -0
  378. package/src/modules/product-management/generated/kysely-tailordb.ts +100 -0
  379. package/src/modules/product-management/index.ts +2 -0
  380. package/src/modules/product-management/lib/_db_deps.ts +17 -0
  381. package/src/modules/product-management/lib/errors.generated.ts +152 -0
  382. package/src/modules/product-management/lib/permissions.generated.ts +25 -0
  383. package/src/modules/product-management/lib/types.ts +51 -0
  384. package/src/modules/product-management/module.ts +201 -0
  385. package/src/modules/product-management/query/calculateCategoryDepth.generated.ts +5 -0
  386. package/src/modules/product-management/query/calculateCategoryDepth.test.ts +72 -0
  387. package/src/modules/product-management/query/calculateCategoryDepth.ts +37 -0
  388. package/src/modules/product-management/query/detectCategoryCircularReference.generated.ts +5 -0
  389. package/src/modules/product-management/query/detectCategoryCircularReference.test.ts +72 -0
  390. package/src/modules/product-management/query/detectCategoryCircularReference.ts +44 -0
  391. package/src/modules/product-management/query/getProduct.generated.ts +5 -0
  392. package/src/modules/product-management/query/getProduct.test.ts +59 -0
  393. package/src/modules/product-management/query/getProduct.ts +18 -0
  394. package/src/modules/product-management/query/getProductAttribute.generated.ts +5 -0
  395. package/src/modules/product-management/query/getProductAttribute.test.ts +59 -0
  396. package/src/modules/product-management/query/getProductAttribute.ts +18 -0
  397. package/src/modules/product-management/query/getProductAttributeAssignment.generated.ts +5 -0
  398. package/src/modules/product-management/query/getProductAttributeAssignment.test.ts +37 -0
  399. package/src/modules/product-management/query/getProductAttributeAssignment.ts +18 -0
  400. package/src/modules/product-management/query/getProductAttributeValue.generated.ts +5 -0
  401. package/src/modules/product-management/query/getProductAttributeValue.test.ts +31 -0
  402. package/src/modules/product-management/query/getProductAttributeValue.ts +16 -0
  403. package/src/modules/product-management/query/getProductCategory.generated.ts +5 -0
  404. package/src/modules/product-management/query/getProductCategory.test.ts +59 -0
  405. package/src/modules/product-management/query/getProductCategory.ts +18 -0
  406. package/src/modules/product-management/query/getProductCategoryAssignment.generated.ts +5 -0
  407. package/src/modules/product-management/query/getProductCategoryAssignment.test.ts +37 -0
  408. package/src/modules/product-management/query/getProductCategoryAssignment.ts +18 -0
  409. package/src/modules/product-management/query/getProductVariant.generated.ts +5 -0
  410. package/src/modules/product-management/query/getProductVariant.test.ts +43 -0
  411. package/src/modules/product-management/query/getProductVariant.ts +20 -0
  412. package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.generated.ts +5 -0
  413. package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.test.ts +31 -0
  414. package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.ts +16 -0
  415. package/src/modules/product-management/query/listCategoryAssignmentsByProduct.generated.ts +5 -0
  416. package/src/modules/product-management/query/listCategoryAssignmentsByProduct.test.ts +31 -0
  417. package/src/modules/product-management/query/listCategoryAssignmentsByProduct.ts +16 -0
  418. package/src/modules/product-management/query/listProductAttributeAssignments.generated.ts +5 -0
  419. package/src/modules/product-management/query/listProductAttributeAssignments.test.ts +31 -0
  420. package/src/modules/product-management/query/listProductAttributeAssignments.ts +16 -0
  421. package/src/modules/product-management/query/listProductAttributeValues.generated.ts +5 -0
  422. package/src/modules/product-management/query/listProductAttributeValues.test.ts +31 -0
  423. package/src/modules/product-management/query/listProductAttributeValues.ts +17 -0
  424. package/src/modules/product-management/query/listProductCategoryAssignments.generated.ts +5 -0
  425. package/src/modules/product-management/query/listProductCategoryAssignments.test.ts +31 -0
  426. package/src/modules/product-management/query/listProductCategoryAssignments.ts +16 -0
  427. package/src/modules/product-management/query/listProductCategoryChildren.generated.ts +5 -0
  428. package/src/modules/product-management/query/listProductCategoryChildren.test.ts +31 -0
  429. package/src/modules/product-management/query/listProductCategoryChildren.ts +16 -0
  430. package/src/modules/product-management/query/listProductVariants.generated.ts +5 -0
  431. package/src/modules/product-management/query/listProductVariants.test.ts +31 -0
  432. package/src/modules/product-management/query/listProductVariants.ts +16 -0
  433. package/src/modules/product-management/tailor.config.ts +13 -0
  434. package/src/modules/product-management/tailor.d.ts +13 -0
  435. package/src/modules/product-management/testing/fixtures.ts +151 -0
  436. package/src/modules/user-management/README.md +9 -3
  437. package/src/modules/user-management/command/activateUser.generated.ts +1 -1
  438. package/src/modules/user-management/command/activateUser.test.ts +12 -65
  439. package/src/modules/user-management/command/activateUser.ts +5 -20
  440. package/src/modules/user-management/command/assignPermissionToRole.generated.ts +1 -1
  441. package/src/modules/user-management/command/assignPermissionToRole.test.ts +25 -60
  442. package/src/modules/user-management/command/assignPermissionToRole.ts +5 -24
  443. package/src/modules/user-management/command/assignRoleToUser.generated.ts +1 -1
  444. package/src/modules/user-management/command/assignRoleToUser.test.ts +35 -87
  445. package/src/modules/user-management/command/assignRoleToUser.ts +5 -24
  446. package/src/modules/user-management/command/createPermission.generated.ts +1 -1
  447. package/src/modules/user-management/command/createPermission.test.ts +23 -33
  448. package/src/modules/user-management/command/createPermission.ts +4 -5
  449. package/src/modules/user-management/command/createRole.generated.ts +1 -1
  450. package/src/modules/user-management/command/createRole.test.ts +17 -27
  451. package/src/modules/user-management/command/createRole.ts +4 -5
  452. package/src/modules/user-management/command/createUser.generated.ts +1 -1
  453. package/src/modules/user-management/command/createUser.test.ts +31 -118
  454. package/src/modules/user-management/command/createUser.ts +7 -25
  455. package/src/modules/user-management/command/deactivateUser.generated.ts +1 -1
  456. package/src/modules/user-management/command/deactivateUser.test.ts +12 -65
  457. package/src/modules/user-management/command/deactivateUser.ts +6 -21
  458. package/src/modules/user-management/command/reactivateUser.generated.ts +1 -1
  459. package/src/modules/user-management/command/reactivateUser.test.ts +13 -66
  460. package/src/modules/user-management/command/reactivateUser.ts +5 -20
  461. package/src/modules/user-management/command/revokePermissionFromRole.generated.ts +1 -1
  462. package/src/modules/user-management/command/revokePermissionFromRole.test.ts +24 -62
  463. package/src/modules/user-management/command/revokePermissionFromRole.ts +5 -24
  464. package/src/modules/user-management/command/revokeRoleFromUser.generated.ts +1 -1
  465. package/src/modules/user-management/command/revokeRoleFromUser.test.ts +24 -60
  466. package/src/modules/user-management/command/revokeRoleFromUser.ts +5 -24
  467. package/src/modules/user-management/docs/commands/ActivateUser.md +7 -0
  468. package/src/modules/user-management/docs/commands/AssignPermissionToRole.md +7 -0
  469. package/src/modules/user-management/docs/commands/AssignRoleToUser.md +9 -0
  470. package/src/modules/user-management/docs/commands/CreatePermission.md +12 -0
  471. package/src/modules/user-management/docs/commands/CreateRole.md +9 -0
  472. package/src/modules/user-management/docs/commands/CreateUser.md +11 -0
  473. package/src/modules/user-management/docs/commands/DeactivateUser.md +7 -0
  474. package/src/modules/user-management/docs/commands/ReactivateUser.md +7 -0
  475. package/src/modules/user-management/docs/commands/RevokePermissionFromRole.md +7 -0
  476. package/src/modules/user-management/docs/commands/RevokeRoleFromUser.md +7 -0
  477. package/src/modules/user-management/index.ts +0 -30
  478. package/src/modules/user-management/lib/errors.generated.ts +14 -14
  479. package/src/modules/user-management/lib/permissions.generated.ts +1 -2
  480. package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -3
  481. package/src/modules/user-management/lib/types.ts +1 -1
  482. package/src/modules/user-management/module.ts +2 -7
  483. package/src/modules/user-management/tailor.config.ts +6 -4
  484. package/src/modules/user-management/tailor.d.ts +13 -0
  485. package/src/modules/user-management/testing/fixtures.ts +1 -20
  486. package/src/schemas.ts +1 -1
  487. package/src/{modules/shared → shared}/defineCommand.test.ts +23 -7
  488. package/src/{modules/shared → shared}/defineCommand.ts +19 -10
  489. package/src/{modules/shared/internal.ts → shared/index.ts} +9 -1
  490. package/src/shared/pagination.test.ts +43 -0
  491. package/src/shared/pagination.ts +22 -0
  492. package/src/{modules/shared → shared}/types.ts +13 -0
  493. package/src/{modules/testing → testing}/index.ts +14 -7
  494. package/src/testing.ts +1 -1
  495. package/src/util.ts +8 -0
  496. package/templates/config/license.config.json +4 -0
  497. package/templates/scaffold/app/backend/.env.example +1 -0
  498. package/templates/scaffold/app/backend/__dot__gitignore +4 -0
  499. package/templates/scaffold/app/backend/eslint.config.js +32 -0
  500. package/templates/scaffold/app/backend/package.json +31 -0
  501. package/templates/scaffold/app/backend/seed/data/AuditEvent.jsonl +0 -0
  502. package/templates/scaffold/app/backend/seed/data/Permission.jsonl +0 -0
  503. package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +20 -0
  504. package/templates/scaffold/app/backend/seed/data/Role.jsonl +0 -0
  505. package/templates/scaffold/app/backend/seed/data/Role.schema.ts +20 -0
  506. package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +0 -0
  507. package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +24 -0
  508. package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -0
  509. package/templates/scaffold/app/backend/seed/data/User.schema.ts +20 -0
  510. package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +0 -0
  511. package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +24 -0
  512. package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -0
  513. package/templates/scaffold/app/backend/seed/data/_User.schema.ts +30 -0
  514. package/templates/scaffold/app/backend/seed/exec.mjs +659 -0
  515. package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +3 -0
  516. package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +3 -0
  517. package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +83 -0
  518. package/templates/scaffold/app/backend/src/modules.ts +9 -0
  519. package/templates/scaffold/app/backend/src/resolvers/createUser.ts +46 -0
  520. package/templates/scaffold/app/backend/tailor.config.ts +68 -0
  521. package/templates/scaffold/app/backend/tailor.d.ts +15 -0
  522. package/templates/scaffold/app/backend/tsconfig.json +19 -0
  523. package/templates/scaffold/app/docs/actors/.gitkeep +0 -0
  524. package/templates/scaffold/app/docs/business-flow/.gitkeep +0 -0
  525. package/templates/scaffold/app/docs/resolver/.gitkeep +0 -0
  526. package/templates/scaffold/app/docs/screen/.gitkeep +0 -0
  527. package/templates/scaffold/app/frontend/.env.example +2 -0
  528. package/templates/scaffold/app/frontend/__dot__gitignore +3 -0
  529. package/templates/scaffold/app/frontend/components.json +23 -0
  530. package/templates/scaffold/app/frontend/eslint.config.js +48 -0
  531. package/templates/scaffold/app/frontend/index.html +13 -0
  532. package/templates/scaffold/app/frontend/package.json +53 -0
  533. package/templates/scaffold/app/frontend/scripts/generate-graphql.mjs +6 -0
  534. package/templates/scaffold/app/frontend/src/App.tsx +58 -0
  535. package/templates/scaffold/app/frontend/src/components/composed/empty-state.tsx +26 -0
  536. package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +28 -0
  537. package/templates/scaffold/app/frontend/src/components/composed/loading.tsx +13 -0
  538. package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +39 -0
  539. package/templates/scaffold/app/frontend/src/components/ui/button.tsx +60 -0
  540. package/templates/scaffold/app/frontend/src/components/ui/card.tsx +75 -0
  541. package/templates/scaffold/app/frontend/src/components/ui/form.tsx +152 -0
  542. package/templates/scaffold/app/frontend/src/components/ui/input.tsx +21 -0
  543. package/templates/scaffold/app/frontend/src/components/ui/label.tsx +21 -0
  544. package/templates/scaffold/app/frontend/src/components/ui/spinner.tsx +16 -0
  545. package/templates/scaffold/app/frontend/src/components/ui/table.tsx +90 -0
  546. package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +103 -0
  547. package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1235 -0
  548. package/templates/scaffold/app/frontend/src/graphql/index.ts +15 -0
  549. package/templates/scaffold/app/frontend/src/index.css +5 -0
  550. package/templates/scaffold/app/frontend/src/lib/auth-client.ts +17 -0
  551. package/templates/scaffold/app/frontend/src/lib/utils.ts +6 -0
  552. package/templates/scaffold/app/frontend/src/main.tsx +10 -0
  553. package/templates/scaffold/app/frontend/src/pages/page.tsx +20 -0
  554. package/templates/scaffold/app/frontend/src/pages/user-management/page.tsx +19 -0
  555. package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +97 -0
  556. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +58 -0
  557. package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +51 -0
  558. package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +101 -0
  559. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +99 -0
  560. package/templates/scaffold/app/frontend/src/pages/user-management/user/create/page.tsx +19 -0
  561. package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +61 -0
  562. package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +21 -0
  563. package/templates/scaffold/app/frontend/tsconfig.app.json +35 -0
  564. package/templates/scaffold/app/frontend/tsconfig.json +16 -0
  565. package/templates/scaffold/app/frontend/tsconfig.node.json +23 -0
  566. package/templates/scaffold/app/frontend/vite.config.ts +23 -0
  567. package/templates/scaffold/module/command/.gitkeep +0 -0
  568. package/templates/scaffold/module/db/.gitkeep +0 -0
  569. package/templates/scaffold/module/executor/.gitkeep +0 -0
  570. package/templates/scaffold/module/generated/.gitkeep +0 -0
  571. package/templates/scaffold/module/index.ts +2 -0
  572. package/templates/scaffold/module/lib/errors.ts +1 -0
  573. package/templates/scaffold/module/lib/types.ts +4 -0
  574. package/templates/scaffold/module/module.ts +7 -0
  575. package/templates/scaffold/module/permissions.ts +3 -0
  576. package/templates/scaffold/module/query/.gitkeep +0 -0
  577. package/templates/scaffold/module/tailor.config.ts +13 -0
  578. package/templates/scaffold/module/testing/fixtures.ts +1 -0
  579. package/templates/workflows/erp-kit-check.yml +37 -0
  580. package/dist/cli.js +0 -1654
  581. package/skills/erp-kit-app-2-breakdown/SKILL.md +0 -88
  582. package/skills/erp-kit-app-3-doc-review/SKILL.md +0 -112
  583. package/skills/erp-kit-app-4-impl-spec/SKILL.md +0 -116
  584. package/skills/erp-kit-app-5-implementation/references/backend.md +0 -232
  585. package/skills/erp-kit-module-1-docs/SKILL.md +0 -111
  586. package/skills/erp-kit-module-2-feature-breakdown/SKILL.md +0 -76
  587. package/skills/erp-kit-module-3-doc-review/SKILL.md +0 -294
  588. package/skills/erp-kit-module-4-tdd/SKILL.md +0 -94
  589. package/skills/erp-kit-module-4-tdd/references/exports.md +0 -8
  590. package/skills/erp-kit-module-5-impl-review/SKILL.md +0 -410
  591. package/src/commands/scaffold-templates.ts +0 -65
  592. package/src/modules/shared/index.ts +0 -1
  593. package/src/modules/user-management/command/logAuditEvent.generated.ts +0 -6
  594. package/src/modules/user-management/command/logAuditEvent.test.ts +0 -187
  595. package/src/modules/user-management/command/logAuditEvent.ts +0 -56
  596. package/src/modules/user-management/db/auditEvent.ts +0 -47
  597. package/src/modules/user-management/docs/commands/LogAuditEvent.md +0 -37
  598. package/src/modules/user-management/docs/features/audit-trail.md +0 -80
  599. package/src/modules/user-management/docs/models/AuditEvent.md +0 -36
  600. /package/skills/{erp-kit-module-2-feature-breakdown → erp-kit-module-3-plan}/references/naming.md +0 -0
  601. /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/cross-module-dependency.md +0 -0
  602. /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/db-relations.md +0 -0
  603. /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/generated-code.md +0 -0
  604. /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/models.md +0 -0
  605. /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/commands.md +0 -0
  606. /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/testing.md +0 -0
  607. /package/src/modules/{product-management → audit}/.gitkeep +0 -0
  608. /package/src/{modules/shared → shared}/createContext.test.ts +0 -0
  609. /package/src/{modules/shared → shared}/createContext.ts +0 -0
  610. /package/src/{modules/shared → shared}/definePermissions.test.ts +0 -0
  611. /package/src/{modules/shared → shared}/definePermissions.ts +0 -0
  612. /package/src/{modules/shared → shared}/defineQuery.test.ts +0 -0
  613. /package/src/{modules/shared → shared}/defineQuery.ts +0 -0
  614. /package/src/{modules/shared → shared}/entityTypes.ts +0 -0
  615. /package/src/{modules/shared → shared}/errors.ts +0 -0
  616. /package/src/{modules/shared → shared}/requirePermission.test.ts +0 -0
  617. /package/src/{modules/shared → shared}/requirePermission.ts +0 -0
  618. /package/src/{modules/shared → shared}/result.ts +0 -0
@@ -0,0 +1,107 @@
1
+ # Resolver Extraction
2
+
3
+ ## Context
4
+
5
+ App: {{APP_NAME}}
6
+ Actor docs: {{ACTOR_DOCS}}
7
+ Business flow docs: {{BUSINESS_FLOW_DOCS}}
8
+
9
+ ## Instructions
10
+
11
+ 1. Read ALL actor docs at the paths above
12
+ 2. Read ALL business flow docs at the paths above
13
+ 3. Identify GraphQL resolvers needed for each business flow
14
+ 4. Return results as a structured markdown report
15
+
16
+ ## Extraction Rules
17
+
18
+ ### Resolver Identification
19
+
20
+ For each business flow step that modifies data:
21
+
22
+ 1. Identify the operation type (create, update, delete, approve, etc.)
23
+ 2. Map to a resolver name using camelCase action-verb convention
24
+ 3. Identify the module command the resolver will call
25
+ 4. Extract inputs, outputs, and error scenarios
26
+
27
+ ### Operation → Resolver Mapping
28
+
29
+ | Flow Operation | Resolver Type | Naming Pattern |
30
+ | -------------------- | ------------- | ---------------------- |
31
+ | Create/Add entity | Mutation | `create<Entity>` |
32
+ | Update/Modify entity | Mutation | `update<Entity>` |
33
+ | Delete/Remove entity | Mutation | `delete<Entity>` |
34
+ | Activate entity | Mutation | `activate<Entity>` |
35
+ | Deactivate entity | Mutation | `deactivate<Entity>` |
36
+ | Assign X to Y | Mutation | `assign<X>To<Y>` |
37
+ | Submit/Approve | Mutation | `submit<Entity>` etc. |
38
+ | View/List/Get | Query | Built-in (no resolver) |
39
+
40
+ ### Built-in vs Custom
41
+
42
+ | Category | Description | Implementation |
43
+ | -------------------- | ---------------------------------------- | -------------------- |
44
+ | **Custom resolvers** | Mutations that call module commands | Write resolver files |
45
+ | **Built-in queries** | List and get operations for reading data | Automatic, no code |
46
+
47
+ Prefer built-in queries over custom resolvers for list/get operations.
48
+
49
+ ### Module Command Mapping
50
+
51
+ For each resolver, identify which erp-kit module provides the command:
52
+
53
+ | Resolver Operation | Typical Module |
54
+ | ------------------ | --------------------- |
55
+ | User invite/roles | `user-management` |
56
+ | Supplier CRUD | `supplier-management` |
57
+ | Document handling | `document-management` |
58
+ | Task workflows | `task-management` |
59
+ | Item CRUD | `item-management` |
60
+ | Unit/currency | `primitives` |
61
+
62
+ ### Resolver Content
63
+
64
+ For each resolver, extract:
65
+
66
+ - **Name**: camelCase action-verb (e.g., `createSupplierInvitation`)
67
+ - **Type**: Mutation or Query
68
+ - **Module**: which erp-kit module provides the command
69
+ - **Command**: which module command it calls
70
+ - **Inputs**: parameters from the flow step
71
+ - **Outputs**: expected return data
72
+ - **Error scenarios**: what can go wrong
73
+
74
+ ## Naming Convention
75
+
76
+ - Resolver filename: camelCase matching the operation name
77
+ - Action-focused: `createSupplierInvitation.md`, `updateItem.md`
78
+
79
+ ## Output Format
80
+
81
+ Return your findings as a structured markdown report:
82
+
83
+ ### Resolvers
84
+
85
+ For each resolver:
86
+
87
+ - **Resolver:** `<resolverName>`
88
+ - **Type:** Mutation / Query
89
+ - **Module:** module name
90
+ - **Command:** command name
91
+ - **Flow steps:** which flow steps this resolver supports
92
+ - **Inputs:** bulleted list of input fields
93
+ - **Error scenarios:** bulleted list of error cases
94
+
95
+ ### Built-in Queries
96
+
97
+ List entities that only need built-in list/get queries (no custom resolver needed).
98
+
99
+ ### Module Dependencies
100
+
101
+ Table with columns: Module, Required Commands, Status (exists/missing)
102
+
103
+ ### Summary
104
+
105
+ - Total custom resolvers
106
+ - Total built-in queries
107
+ - Resolvers per module (table)
@@ -0,0 +1,74 @@
1
+ # Screen Extraction
2
+
3
+ ## Context
4
+
5
+ App: {{APP_NAME}}
6
+ Actor docs: {{ACTOR_DOCS}}
7
+ Business flow docs: {{BUSINESS_FLOW_DOCS}}
8
+
9
+ ## Instructions
10
+
11
+ 1. Read ALL actor docs at the paths above
12
+ 2. Read ALL business flow docs at the paths above
13
+ 3. Identify screens needed for each business flow
14
+ 4. Return results as a structured markdown report
15
+
16
+ ## Extraction Rules
17
+
18
+ ### Screen Identification
19
+
20
+ For each business flow step that involves UI:
21
+
22
+ 1. Identify what the user sees or interacts with
23
+ 2. Classify the screen type
24
+ 3. Extract fields, columns, and actions
25
+
26
+ ### Screen Types
27
+
28
+ | Screen Type | When to Use |
29
+ | ------------- | ---------------------------------------------------- |
30
+ | ListView | User browses a list of entities (table with columns) |
31
+ | Form (create) | User fills in fields to create a new entity |
32
+ | Form (edit) | User modifies fields of an existing entity |
33
+ | DetailView | User views details of a single entity with actions |
34
+
35
+ ### Screen Content
36
+
37
+ For each screen, extract:
38
+
39
+ - **Name**: kebab-case, noun-focused (e.g., `supplier-list`, `supplier-detail`, `supplier-form`)
40
+ - **Type**: ListView / Form / DetailView
41
+ - **Fields/Columns**: what data is displayed or edited
42
+ - **Actions**: navigation actions (create, edit, back) and mutation actions (save, delete, activate)
43
+ - **Stories**: which stories reference this screen
44
+
45
+ ### Deduplication
46
+
47
+ - Screens can be shared across multiple stories and flows
48
+ - If two flows need the same entity list view, create one screen doc referenced by both
49
+ - Create/edit forms for the same entity are separate screens (different field requirements)
50
+
51
+ ## Naming Convention
52
+
53
+ - Screen filename: kebab-case, noun-focused
54
+ - Pattern: `<entity>-list.md`, `<entity>-detail.md`, `<entity>-create-form.md`, `<entity>-edit-form.md`
55
+
56
+ ## Output Format
57
+
58
+ Return your findings as a structured markdown report:
59
+
60
+ ### Screens
61
+
62
+ For each screen:
63
+
64
+ - **Screen:** `<screen-name>`
65
+ - **Type:** ListView / Form / DetailView
66
+ - **Fields/Columns:** bulleted list of fields with types
67
+ - **Actions:** bulleted list of actions
68
+ - **Referenced by stories:** which stories use this screen
69
+ - **Referenced by flows:** which business flows need this screen
70
+
71
+ ### Summary
72
+
73
+ - Total screens extracted
74
+ - Screens by type (table: ListView, Form, DetailView counts)
@@ -0,0 +1,86 @@
1
+ # Story Extraction
2
+
3
+ ## Context
4
+
5
+ App: {{APP_NAME}}
6
+ Actor docs: {{ACTOR_DOCS}}
7
+ Business flow docs: {{BUSINESS_FLOW_DOCS}}
8
+
9
+ ## Instructions
10
+
11
+ 1. Read ALL actor docs at the paths above
12
+ 2. Read ALL business flow docs at the paths above
13
+ 3. For each business flow, decompose into user stories
14
+ 4. Return results as a structured markdown report
15
+
16
+ ## Extraction Rules
17
+
18
+ ### Flow Step → Story Mapping
19
+
20
+ For each business flow:
21
+
22
+ 1. Identify each numbered step or substep that represents a user action
23
+ 2. Map each step to the responsible actor (from "Actors Involved" or sequence diagram)
24
+ 3. Group related steps into stories (a story = a cohesive user action completable in one session)
25
+
26
+ | Flow Element | Maps To |
27
+ | ---------------- | ----------- |
28
+ | User action step | Story |
29
+ | UI requirement | Screen ref |
30
+ | Actor in flow | Story actor |
31
+
32
+ ### Story Granularity
33
+
34
+ - Aim for 3-8 stories per business flow
35
+ - Each story should be completable in a single user session
36
+ - If a flow step is too large (multiple UI interactions), split into separate stories
37
+ - If a flow step is too small (a single click), merge with related steps
38
+
39
+ ### Story Content
40
+
41
+ For each story, extract:
42
+
43
+ - **Actor**: which actor performs this action (from filename convention `<actor>--<name>.md`)
44
+ - **Scenario patterns**: concrete usage scenarios ("Admin creates a new supplier invitation")
45
+ - **Preconditions**: what must be true before this story
46
+ - **Postconditions**: what changes after this story completes
47
+ - **Screen references**: which screens the user interacts with
48
+ - **Resolver needs**: whether this story needs mutations (non-read-only) or is read-only
49
+
50
+ ### Resolver Classification
51
+
52
+ For each story, determine:
53
+
54
+ - **Needs resolvers**: Story involves create/update/delete operations → mark as `- TBD` for resolvers
55
+ - **Read-only**: Story only views/lists data → mark as `None` for resolvers
56
+
57
+ ## Naming Convention
58
+
59
+ - Story filename: `<actor>--<story-name>.md` (double-dash separator between actor and story)
60
+ - Story heading: Title Case of the story name portion
61
+ - Actor slug: kebab-case of actor name
62
+
63
+ ## Output Format
64
+
65
+ Return your findings as a structured markdown report:
66
+
67
+ ### Stories by Business Flow
68
+
69
+ For each business flow:
70
+
71
+ #### <flow-name>
72
+
73
+ For each story:
74
+
75
+ - **Story:** `<actor>--<story-name>`
76
+ - **Actor:** actor name
77
+ - **Flow steps covered:** which steps this story implements
78
+ - **Scenario patterns:** bulleted list of scenarios
79
+ - **Screen references:** which screens are needed
80
+ - **Resolvers:** `TBD` (needs mutations) or `None` (read-only)
81
+
82
+ ### Summary
83
+
84
+ - Total stories extracted
85
+ - Stories per flow (table)
86
+ - Stories per actor (table)
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: erp-kit-app-4-plan-review
3
+ description: Review parity between Tier 2 (business flows, actors) and Tier 3-4 (stories, screens, resolvers). Use after creating plan documentation with erp-kit-app-3-plan to validate completeness.
4
+ ---
5
+
6
+ # Documentation Parity Review
7
+
8
+ Review **documentation consistency** across Tier 2, 3, and 4 documentation.
9
+
10
+ ## When to Use
11
+
12
+ - After writing Tier 3-4 documentation, check for gaps
13
+ - Before proceeding to implementation (step 5)
14
+ - Quality check during documentation review
15
+
16
+ ## Step 1: Setup
17
+
18
+ Define shared context for all agents:
19
+
20
+ - `APP_ROOT`: from argument or current working directory. Must contain a `docs/` directory.
21
+ - `APP_NAME`: basename of APP_ROOT
22
+ - `BUSINESS_FLOW_DOCS`: glob `<APP_ROOT>/docs/business-flow/*/README.md`
23
+ - `STORY_DOCS`: glob `<APP_ROOT>/docs/business-flow/*/story/*.md`
24
+ - `SCREEN_DOCS`: glob `<APP_ROOT>/docs/screen/*.md`
25
+ - `ACTOR_DOCS`: glob `<APP_ROOT>/docs/actors/*.md`
26
+ - `RESOLVER_DOCS`: glob `<APP_ROOT>/docs/resolver/*.md`
27
+
28
+ Verify at least `BUSINESS_FLOW_DOCS` is non-empty. If no business flow docs exist, stop with: "No business flow docs found under <APP_ROOT>/docs/."
29
+
30
+ ## Step 2: Dispatch Agents (parallelize if possible)
31
+
32
+ Launch 5 Agent tool calls in parallel — one per parity check.
33
+ Each agent receives: APP_NAME, relevant doc file paths.
34
+ Each agent returns: structured JSON per [references/parity-report-format.md](references/parity-report-format.md).
35
+ If a doc directory is empty, the agent reports "no docs found" and skips.
36
+
37
+ | Agent | Prompt Template | Inputs |
38
+ | ----- | ------------------------------------------------------------------------------------ | ------------------------------ |
39
+ | 1 | [references/business-flow-story-parity.md](references/business-flow-story-parity.md) | BUSINESS_FLOW_DOCS, STORY_DOCS |
40
+ | 2 | [references/actor-flow-parity.md](references/actor-flow-parity.md) | ACTOR_DOCS, BUSINESS_FLOW_DOCS |
41
+ | 3 | [references/story-screen-parity.md](references/story-screen-parity.md) | STORY_DOCS, SCREEN_DOCS |
42
+ | 4 | [references/story-resolver-parity.md](references/story-resolver-parity.md) | STORY_DOCS, RESOLVER_DOCS |
43
+ | 5 | [references/orphan-detection.md](references/orphan-detection.md) | ALL doc paths |
44
+
45
+ For each agent:
46
+
47
+ 1. Read the prompt template file
48
+ 2. Replace `{{APP_NAME}}` with the resolved app name
49
+ 3. Replace doc path placeholders with the actual file paths
50
+ 4. Dispatch the agent with the filled prompt
51
+
52
+ ## Step 3: Aggregate Results
53
+
54
+ After ALL agents return:
55
+
56
+ 1. Collect the JSON results from each agent
57
+ 2. Merge all `gaps[]` arrays into a single list
58
+ 3. Merge all `inconsistencies[]` arrays into a single list
59
+ 4. Deduplicate: if two gaps share the same `source + target + check`, keep only one
60
+ 5. Calculate totals across all summaries
61
+ 6. Render the final report below
62
+
63
+ ## Report Format
64
+
65
+ Render the aggregated results as markdown:
66
+
67
+ ### Documentation Parity Review Report
68
+
69
+ **Application:** <APP_NAME>
70
+
71
+ ---
72
+
73
+ ### 1. Business Flow → Story Coverage
74
+
75
+ | Business Flow | Flow Steps | Required Stories | Documented Stories | Gap |
76
+ | ------------- | ---------- | ---------------- | ------------------ | --- |
77
+
78
+ (Populated from agent 1 gaps where check is `story_existence`)
79
+
80
+ ---
81
+
82
+ ### 2. Actor Coverage in Stories
83
+
84
+ | Business Flow | Actor | Referenced in Stories | Status |
85
+ | ------------- | ----- | --------------------- | ------ |
86
+
87
+ (Populated from agent 1 gaps where check is `actor_coverage`)
88
+
89
+ ---
90
+
91
+ ### 3. Actor → Business Flow Coverage
92
+
93
+ | Actor | Authorized Flows | Documented Flows | Gap |
94
+ | ----- | ---------------- | ---------------- | --- |
95
+
96
+ (Populated from agent 2 gaps where check is `flow_existence`)
97
+
98
+ ---
99
+
100
+ ### 4. Story → Screen Coverage
101
+
102
+ | Story | Referenced Screens | Documented Screens | Gap |
103
+ | ----- | ------------------ | ------------------ | --- |
104
+
105
+ (Populated from agent 3 gaps where check is `screen_existence`)
106
+
107
+ ---
108
+
109
+ ### 5. Story → Resolver Coverage
110
+
111
+ | Story | Resolver Status | Required Resolvers | Documented Resolvers | Gap |
112
+ | ----- | --------------- | ------------------ | -------------------- | --- |
113
+
114
+ (Populated from agent 4 gaps where check is `resolver_existence`)
115
+
116
+ ---
117
+
118
+ ### 6. Orphan Detection
119
+
120
+ | Type | File | Issue |
121
+ | ---- | ---- | ----- |
122
+
123
+ (Populated from agent 5 gaps)
124
+
125
+ ---
126
+
127
+ ### 7. Link Validity
128
+
129
+ | Source | Target | Status |
130
+ | ------ | ------ | ------ |
131
+
132
+ (Populated from all agents' gaps where check is `link_validity`)
133
+
134
+ ---
135
+
136
+ ### 8. Inconsistencies
137
+
138
+ | Type | Location | Issue |
139
+ | ---- | -------- | ----- |
140
+
141
+ (Populated from all agents' `inconsistencies[]`)
142
+
143
+ ---
144
+
145
+ ### 9. Summary
146
+
147
+ | Aspect | Status | Details |
148
+ | --------------------- | ------ | ----------------- |
149
+ | Business Flow → Story | | X/Y checks passed |
150
+ | Actor → Flow | | X/Y checks passed |
151
+ | Story → Screen | | X/Y checks passed |
152
+ | Story → Resolver | | X/Y checks passed |
153
+ | Orphan Detection | | X/Y checks passed |
154
+
155
+ ### 10. Recommendations
156
+
157
+ Numbered list of actionable fixes, grouped by priority:
158
+
159
+ 1. Create missing docs (highest priority)
160
+ 2. Fix broken links
161
+ 3. Remove or link orphans
162
+
163
+ ## Link Format Reference
164
+
165
+ | From | To | Format |
166
+ | ------------- | ------------- | ----------------------------------- |
167
+ | Business Flow | Story | `./story/<actor>--<name>.md` |
168
+ | Business Flow | Actor | `../../actors/<actor>.md` |
169
+ | Actor | Business Flow | `../business-flow/<flow>/README.md` |
170
+ | Story | Screen | `../../../screen/<screen>.md` |
171
+ | Story | Resolver | `../../../resolver/<name>.md` |
172
+
173
+ ## References
174
+
175
+ - [Parity report format](references/parity-report-format.md)
176
+ - For plan creation, see erp-kit-app-3-plan
177
+ - For implementation, see erp-kit-app-5-impl-backend
@@ -0,0 +1,73 @@
1
+ # Actor → Business Flow Parity Check
2
+
3
+ ## Context
4
+
5
+ App: {{APP_NAME}}
6
+ Actor docs: {{ACTOR_DOCS}}
7
+ Business flow docs: {{BUSINESS_FLOW_DOCS}}
8
+
9
+ ## Instructions
10
+
11
+ 1. Read ALL actor docs at the paths above
12
+ 2. Read ALL business flow docs at the paths above
13
+ 3. For each actor, extract the list of authorized/referenced business flows
14
+ 4. Run every parity check below against each actor
15
+ 5. Return results as JSON per the Output Format section
16
+
17
+ ## Extraction: Actor Docs
18
+
19
+ From each actor doc, extract:
20
+
21
+ - Actor name
22
+ - List of authorized or referenced business flows
23
+ - Flow links (format: `../business-flow/<flow>/README.md`)
24
+
25
+ ## Extraction: Business Flow Docs
26
+
27
+ From each business flow README.md, extract:
28
+
29
+ - Flow name (from directory name or heading)
30
+ - Actors involved in the flow
31
+
32
+ ## Parity Checks
33
+
34
+ For each actor's referenced flows:
35
+
36
+ | Check ID | Question |
37
+ | -------------- | ------------------------------------------------------------ |
38
+ | flow_existence | Do all flows listed in the actor's "Authorized Flows" exist? |
39
+ | link_validity | Do flow links in the actor doc resolve to real files? |
40
+
41
+ ### How to Check
42
+
43
+ 1. List all flows referenced by each actor doc
44
+ 2. Verify a corresponding business flow README exists for each
45
+ 3. Validate that all `../business-flow/<flow>/README.md` links resolve to actual files in BUSINESS_FLOW_DOCS
46
+
47
+ ## Link Format Reference
48
+
49
+ | From | To | Format |
50
+ | ----- | ------------- | ----------------------------------- |
51
+ | Actor | Business Flow | `../business-flow/<flow>/README.md` |
52
+
53
+ ## Common Gap Patterns
54
+
55
+ - **Missing flow docs**: Actor references a flow that has no README.md
56
+ - **Broken flow links**: Actor doc links to a flow directory that does not exist
57
+ - **Unlinked actor**: Actor doc exists but references no flows
58
+
59
+ ## Output Format
60
+
61
+ Return a JSON object:
62
+
63
+ ```json
64
+ {
65
+ "check_type": "actor-flow-parity",
66
+ "app": "{{APP_NAME}}",
67
+ "gaps": [...],
68
+ "inconsistencies": [...],
69
+ "summary": { "total_checks": N, "passed": N, "failed": N, "skipped": N }
70
+ }
71
+ ```
72
+
73
+ See [parity-report-format.md](parity-report-format.md) for field definitions.
@@ -0,0 +1,86 @@
1
+ # Business Flow → Story Parity Check
2
+
3
+ ## Context
4
+
5
+ App: {{APP_NAME}}
6
+ Business flow docs: {{BUSINESS_FLOW_DOCS}}
7
+ Story docs: {{STORY_DOCS}}
8
+
9
+ ## Instructions
10
+
11
+ 1. Read ALL business flow docs at the paths above
12
+ 2. Read ALL story docs at the paths above
13
+ 3. For each business flow, extract flow steps and referenced actors
14
+ 4. For each story, extract the actor and the flow step it covers
15
+ 5. Run every parity check below against each business flow
16
+ 6. Return results as JSON per the Output Format section
17
+
18
+ ## Extraction: Business Flow Docs
19
+
20
+ From each business flow README.md, extract:
21
+
22
+ ### Flow Steps
23
+
24
+ - Each numbered step or substep in the flow
25
+ - The actor responsible for each step
26
+ - Any story links referenced (format: `./story/<actor>--<name>.md`)
27
+
28
+ ### Actors
29
+
30
+ - All actors mentioned in the flow
31
+ - Actor doc links (format: `../../actors/<actor>.md`)
32
+
33
+ ## Extraction: Story Docs
34
+
35
+ From each story doc, extract:
36
+
37
+ - The actor (from filename pattern `<actor>--<name>.md` or from content)
38
+ - The scenario patterns and user actions described
39
+ - Screen references (format: `../../../screen/<screen>.md`)
40
+
41
+ ## Parity Checks
42
+
43
+ For each business flow's steps and actors:
44
+
45
+ | Check ID | Question |
46
+ | --------------- | -------------------------------------------------------- |
47
+ | story_existence | Does each flow step have a corresponding story? |
48
+ | actor_coverage | Are all actors in the flow represented in stories? |
49
+ | link_validity | Do story links in the flow README resolve to real files? |
50
+
51
+ ### How to Check
52
+
53
+ 1. List all flow steps from each business flow README
54
+ 2. For each step, verify a story doc exists that covers it
55
+ 3. Verify all actors mentioned in the flow appear as story actors
56
+ 4. Validate that all `./story/<actor>--<name>.md` links resolve to actual files in STORY_DOCS
57
+
58
+ ## Link Format Reference
59
+
60
+ | From | To | Format |
61
+ | ------------- | ----- | ---------------------------- |
62
+ | Business Flow | Story | `./story/<actor>--<name>.md` |
63
+ | Business Flow | Actor | `../../actors/<actor>.md` |
64
+
65
+ ## Common Gap Patterns
66
+
67
+ - **Missing stories**: Flow step describes an action but no story doc exists for it
68
+ - **Actor mismatch**: Flow mentions an actor not represented in any story
69
+ - **Broken story links**: Flow README links to a story file that does not exist
70
+ - **Incomplete coverage**: Some flow steps have stories but others are skipped
71
+
72
+ ## Output Format
73
+
74
+ Return a JSON object:
75
+
76
+ ```json
77
+ {
78
+ "check_type": "business-flow-story-parity",
79
+ "app": "{{APP_NAME}}",
80
+ "gaps": [...],
81
+ "inconsistencies": [...],
82
+ "summary": { "total_checks": N, "passed": N, "failed": N, "skipped": N }
83
+ }
84
+ ```
85
+
86
+ See [parity-report-format.md](parity-report-format.md) for field definitions.
@@ -0,0 +1,69 @@
1
+ # Orphan Detection Check
2
+
3
+ ## Context
4
+
5
+ App: {{APP_NAME}}
6
+ Business flow docs: {{BUSINESS_FLOW_DOCS}}
7
+ Story docs: {{STORY_DOCS}}
8
+ Screen docs: {{SCREEN_DOCS}}
9
+ Actor docs: {{ACTOR_DOCS}}
10
+ Resolver docs: {{RESOLVER_DOCS}}
11
+
12
+ ## Instructions
13
+
14
+ 1. Read ALL docs at the paths above
15
+ 2. Build a reference graph: which docs link to which other docs
16
+ 3. Run every parity check below to find orphaned documents
17
+ 4. Return results as JSON per the Output Format section
18
+
19
+ ## Building the Reference Graph
20
+
21
+ Scan all docs for outgoing links using these patterns:
22
+
23
+ | From | To | Link Pattern |
24
+ | ------------- | ------------- | ----------------------------------- |
25
+ | Business Flow | Story | `./story/<actor>--<name>.md` |
26
+ | Business Flow | Actor | `../../actors/<actor>.md` |
27
+ | Actor | Business Flow | `../business-flow/<flow>/README.md` |
28
+ | Story | Screen | `../../../screen/<screen>.md` |
29
+ | Story | Resolver | `../../../resolver/<name>.md` |
30
+
31
+ For each doc, record all outgoing link targets (resolved to actual file paths).
32
+
33
+ ## Parity Checks
34
+
35
+ | Check ID | Question |
36
+ | ---------------- | ---------------------------------------------------- |
37
+ | orphan_stories | Are there stories not linked from any business flow? |
38
+ | orphan_screens | Are there screens not referenced by any story? |
39
+ | orphan_actors | Are there actors not participating in any flow? |
40
+ | orphan_resolvers | Are there resolvers not referenced by any story? |
41
+
42
+ ### How to Check
43
+
44
+ 1. **Orphan stories**: For each file in STORY_DOCS, check if any business flow README links to it. If no flow references it, it is an orphan.
45
+ 2. **Orphan screens**: For each file in SCREEN_DOCS, check if any story doc links to it. If no story references it, it is an orphan.
46
+ 3. **Orphan actors**: For each file in ACTOR_DOCS, check if any business flow README links to it AND the actor doc links to at least one flow. If neither condition is met, it is an orphan.
47
+ 4. **Orphan resolvers**: For each file in RESOLVER_DOCS, check if any story doc links to it. If no story references it, it is an orphan.
48
+
49
+ ## Common Gap Patterns
50
+
51
+ - **Renamed files**: A doc was renamed but links were not updated, leaving the old target as an orphan
52
+ - **Leftover drafts**: Docs created during planning but never linked into the flow
53
+ - **Incomplete cleanup**: A flow was removed but its stories/screens/resolvers were not deleted
54
+
55
+ ## Output Format
56
+
57
+ Return a JSON object:
58
+
59
+ ```json
60
+ {
61
+ "check_type": "orphan-detection",
62
+ "app": "{{APP_NAME}}",
63
+ "gaps": [...],
64
+ "inconsistencies": [...],
65
+ "summary": { "total_checks": N, "passed": N, "failed": N, "skipped": N }
66
+ }
67
+ ```
68
+
69
+ See [parity-report-format.md](parity-report-format.md) for field definitions.