@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.
- package/CHANGELOG.md +6 -0
- package/README.md +1 -23
- package/dist/cli.mjs +1613 -0
- package/package.json +14 -13
- package/schemas/app-compose/story.yml +12 -0
- package/schemas/module/command.yml +9 -0
- package/schemas/module/module.yml +4 -0
- package/schemas/module/query.yml +9 -0
- package/skills/erp-kit-app-1-requirements/SKILL.md +4 -4
- package/skills/erp-kit-app-2-requirements-review/SKILL.md +102 -0
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +66 -0
- package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +69 -0
- package/skills/erp-kit-app-2-requirements-review/references/requirements-report-format.md +25 -0
- package/skills/erp-kit-app-3-plan/SKILL.md +157 -0
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +107 -0
- package/skills/erp-kit-app-3-plan/references/screen-extraction.md +74 -0
- package/skills/erp-kit-app-3-plan/references/story-extraction.md +86 -0
- package/skills/erp-kit-app-4-plan-review/SKILL.md +177 -0
- package/skills/erp-kit-app-4-plan-review/references/actor-flow-parity.md +73 -0
- package/skills/erp-kit-app-4-plan-review/references/business-flow-story-parity.md +86 -0
- package/skills/erp-kit-app-4-plan-review/references/orphan-detection.md +69 -0
- package/skills/erp-kit-app-4-plan-review/references/parity-report-format.md +52 -0
- package/skills/erp-kit-app-4-plan-review/references/story-resolver-parity.md +83 -0
- package/skills/erp-kit-app-4-plan-review/references/story-screen-parity.md +73 -0
- package/skills/{erp-kit-app-5-implementation → erp-kit-app-5-impl-backend}/SKILL.md +24 -68
- package/skills/erp-kit-app-5-impl-backend/references/app-config.md +38 -0
- package/skills/erp-kit-app-5-impl-backend/references/module-wiring.md +48 -0
- package/skills/erp-kit-app-5-impl-backend/references/resolver-patterns.md +68 -0
- package/skills/erp-kit-app-6-impl-frontend/SKILL.md +74 -0
- package/skills/{erp-kit-app-5-implementation/references/frontend.md → erp-kit-app-6-impl-frontend/references/pages.md} +8 -90
- package/skills/erp-kit-app-7-impl-review/SKILL.md +176 -0
- package/skills/erp-kit-app-7-impl-review/references/impl-parity-report-format.md +52 -0
- package/skills/erp-kit-app-7-impl-review/references/module-wiring-parity.md +84 -0
- package/skills/erp-kit-app-7-impl-review/references/resolver-doc-code-parity.md +86 -0
- package/skills/erp-kit-app-7-impl-review/references/screen-doc-code-parity.md +86 -0
- package/skills/erp-kit-module-1-requirements/SKILL.md +126 -0
- package/skills/erp-kit-module-1-requirements/references/boundary-analysis.md +51 -0
- package/skills/erp-kit-module-1-requirements/references/erp-research.md +57 -0
- package/skills/erp-kit-module-1-requirements/references/feature-doc.md +61 -0
- package/skills/erp-kit-module-2-requirements-review/SKILL.md +112 -0
- package/skills/erp-kit-module-2-requirements-review/references/best-practices-check.md +79 -0
- package/skills/erp-kit-module-2-requirements-review/references/boundary-consistency-check.md +70 -0
- package/skills/erp-kit-module-2-requirements-review/references/requirements-report-format.md +25 -0
- package/skills/erp-kit-module-3-plan/SKILL.md +107 -0
- package/skills/erp-kit-module-3-plan/references/command-extraction.md +87 -0
- package/skills/erp-kit-module-3-plan/references/model-extraction.md +72 -0
- package/skills/erp-kit-module-3-plan/references/query-extraction.md +59 -0
- package/skills/erp-kit-module-4-plan-review/SKILL.md +158 -0
- package/skills/erp-kit-module-4-plan-review/references/command-model-consistency.md +46 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-command-parity.md +97 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-model-parity.md +47 -0
- package/skills/erp-kit-module-4-plan-review/references/feature-query-parity.md +70 -0
- package/skills/erp-kit-module-4-plan-review/references/parity-report-format.md +52 -0
- package/skills/erp-kit-module-5-impl/SKILL.md +118 -0
- package/skills/erp-kit-module-5-impl/references/command-impl.md +68 -0
- package/skills/erp-kit-module-5-impl/references/exports.md +10 -0
- package/skills/erp-kit-module-5-impl/references/model-impl.md +45 -0
- package/skills/erp-kit-module-5-impl/references/query-impl.md +53 -0
- package/skills/erp-kit-module-6-impl-review/SKILL.md +187 -0
- package/skills/erp-kit-module-6-impl-review/references/command-doc-code-parity.md +92 -0
- package/skills/erp-kit-module-6-impl-review/references/command-doc-test-parity.md +93 -0
- package/skills/erp-kit-module-6-impl-review/references/error-implementation-parity.md +95 -0
- package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/errors.md +1 -1
- package/skills/erp-kit-module-6-impl-review/references/impl-parity-report-format.md +52 -0
- package/skills/erp-kit-module-6-impl-review/references/model-doc-code-parity.md +80 -0
- package/skills/erp-kit-module-shared/SKILL.md +1 -1
- package/skills/erp-kit-module-shared/references/commands.md +1 -1
- package/skills/erp-kit-module-shared/references/errors.md +12 -9
- package/skills/erp-kit-module-shared/references/queries.md +109 -36
- package/skills/erp-kit-module-shared/references/testing.md +10 -0
- package/skills/erp-kit-update/SKILL.md +2 -2
- package/src/app.ts +1 -1
- package/src/commands/check.ts +1 -1
- package/src/commands/index.ts +16 -5
- package/src/commands/init.test.ts +22 -69
- package/src/commands/init.ts +28 -115
- package/src/commands/lib/distribute.test.ts +126 -0
- package/src/commands/lib/distribute.ts +129 -0
- package/src/commands/parse-doc-test-cases.ts +55 -0
- package/src/commands/scaffold.test.ts +74 -33
- package/src/commands/scaffold.ts +54 -18
- package/src/commands/sync-check.test.ts +173 -0
- package/src/commands/sync-check.ts +103 -2
- package/src/commands/update.test.ts +87 -0
- package/src/commands/update.ts +41 -0
- package/src/generator/generate-code.test.ts +23 -12
- package/src/generator/generate-code.ts +22 -16
- package/src/integration.test.ts +1 -1
- package/src/module.ts +14 -97
- package/src/modules/item-management/README.md +8 -0
- package/src/modules/item-management/command/activateItem.generated.ts +1 -1
- package/src/modules/item-management/command/activateItem.test.ts +12 -18
- package/src/modules/item-management/command/activateItem.ts +9 -5
- package/src/modules/item-management/command/assignItemToTaxonomy.generated.ts +1 -1
- package/src/modules/item-management/command/assignItemToTaxonomy.test.ts +10 -24
- package/src/modules/item-management/command/assignItemToTaxonomy.ts +19 -16
- package/src/modules/item-management/command/createItem.generated.ts +1 -1
- package/src/modules/item-management/command/createItem.test.ts +11 -11
- package/src/modules/item-management/command/createItem.ts +16 -7
- package/src/modules/item-management/command/createTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/createTaxonomyNode.test.ts +9 -9
- package/src/modules/item-management/command/createTaxonomyNode.ts +33 -14
- package/src/modules/item-management/command/deactivateItem.generated.ts +1 -1
- package/src/modules/item-management/command/deactivateItem.test.ts +12 -18
- package/src/modules/item-management/command/deactivateItem.ts +9 -5
- package/src/modules/item-management/command/deleteItem.generated.ts +1 -1
- package/src/modules/item-management/command/deleteItem.test.ts +10 -16
- package/src/modules/item-management/command/deleteItem.ts +9 -5
- package/src/modules/item-management/command/deleteTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/deleteTaxonomyNode.test.ts +10 -16
- package/src/modules/item-management/command/deleteTaxonomyNode.ts +22 -12
- package/src/modules/item-management/command/moveTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/moveTaxonomyNode.test.ts +10 -10
- package/src/modules/item-management/command/moveTaxonomyNode.ts +63 -19
- package/src/modules/item-management/command/reactivateItem.generated.ts +1 -1
- package/src/modules/item-management/command/reactivateItem.test.ts +12 -18
- package/src/modules/item-management/command/reactivateItem.ts +9 -5
- package/src/modules/item-management/command/removeItemFromTaxonomy.generated.ts +1 -1
- package/src/modules/item-management/command/removeItemFromTaxonomy.test.ts +9 -16
- package/src/modules/item-management/command/removeItemFromTaxonomy.ts +11 -6
- package/src/modules/item-management/command/updateItem.generated.ts +1 -1
- package/src/modules/item-management/command/updateItem.test.ts +16 -16
- package/src/modules/item-management/command/updateItem.ts +11 -6
- package/src/modules/item-management/command/updateTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/command/updateTaxonomyNode.test.ts +14 -20
- package/src/modules/item-management/command/updateTaxonomyNode.ts +9 -6
- package/src/modules/item-management/docs/commands/ActivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/AssignItemToTaxonomy.md +7 -0
- package/src/modules/item-management/docs/commands/CreateItem.md +10 -0
- package/src/modules/item-management/docs/commands/CreateTaxonomyNode.md +9 -0
- package/src/modules/item-management/docs/commands/DeactivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/DeleteItem.md +7 -0
- package/src/modules/item-management/docs/commands/DeleteTaxonomyNode.md +7 -0
- package/src/modules/item-management/docs/commands/MoveTaxonomyNode.md +10 -0
- package/src/modules/item-management/docs/commands/ReactivateItem.md +8 -0
- package/src/modules/item-management/docs/commands/RemoveItemFromTaxonomy.md +5 -0
- package/src/modules/item-management/docs/commands/UpdateItem.md +15 -0
- package/src/modules/item-management/docs/commands/UpdateTaxonomyNode.md +9 -0
- package/src/modules/item-management/docs/queries/CalculateNodeDepth.md +8 -0
- package/src/modules/item-management/docs/queries/CalculateSubtreeDepth.md +7 -0
- package/src/modules/item-management/docs/queries/DetectCircularReference.md +9 -0
- package/src/modules/item-management/docs/queries/GetItem.md +9 -0
- package/src/modules/item-management/docs/queries/GetItemTaxonomyAssignment.md +5 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNode.md +7 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNodeAssignments.md +5 -0
- package/src/modules/item-management/docs/queries/GetTaxonomyNodeChildren.md +6 -0
- package/src/modules/item-management/index.ts +0 -51
- package/src/modules/item-management/lib/errors.generated.ts +24 -24
- package/src/modules/item-management/lib/permissions.generated.ts +1 -1
- package/src/modules/item-management/lib/types.ts +1 -1
- package/src/modules/item-management/module.ts +1 -1
- package/src/modules/item-management/query/calculateNodeDepth.generated.ts +1 -1
- package/src/modules/item-management/query/calculateNodeDepth.test.ts +21 -6
- package/src/modules/item-management/query/calculateNodeDepth.ts +2 -2
- package/src/modules/item-management/query/calculateSubtreeDepth.generated.ts +1 -1
- package/src/modules/item-management/query/calculateSubtreeDepth.test.ts +17 -5
- package/src/modules/item-management/query/calculateSubtreeDepth.ts +2 -2
- package/src/modules/item-management/query/detectCircularReference.generated.ts +1 -1
- package/src/modules/item-management/query/detectCircularReference.test.ts +25 -7
- package/src/modules/item-management/query/detectCircularReference.ts +4 -4
- package/src/modules/item-management/query/getItem.generated.ts +1 -1
- package/src/modules/item-management/query/getItem.test.ts +25 -7
- package/src/modules/item-management/query/getItem.ts +2 -2
- package/src/modules/item-management/query/getItemTaxonomyAssignment.generated.ts +1 -1
- package/src/modules/item-management/query/getItemTaxonomyAssignment.test.ts +9 -3
- package/src/modules/item-management/query/getItemTaxonomyAssignment.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNode.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNode.test.ts +17 -5
- package/src/modules/item-management/query/getTaxonomyNode.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.test.ts +9 -3
- package/src/modules/item-management/query/getTaxonomyNodeAssignments.ts +2 -2
- package/src/modules/item-management/query/getTaxonomyNodeChildren.generated.ts +1 -1
- package/src/modules/item-management/query/getTaxonomyNodeChildren.test.ts +13 -4
- package/src/modules/item-management/query/getTaxonomyNodeChildren.ts +2 -2
- package/src/modules/item-management/tailor.config.ts +6 -4
- package/src/modules/item-management/tailor.d.ts +13 -0
- package/src/modules/primitives/README.md +8 -0
- package/src/modules/primitives/command/activateCategory.generated.ts +1 -1
- package/src/modules/primitives/command/activateCategory.test.ts +8 -18
- package/src/modules/primitives/command/activateCategory.ts +9 -5
- package/src/modules/primitives/command/activateCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/activateCurrency.test.ts +8 -18
- package/src/modules/primitives/command/activateCurrency.ts +9 -5
- package/src/modules/primitives/command/activateUnit.generated.ts +1 -1
- package/src/modules/primitives/command/activateUnit.test.ts +8 -15
- package/src/modules/primitives/command/activateUnit.ts +9 -5
- package/src/modules/primitives/command/createCategory.generated.ts +1 -1
- package/src/modules/primitives/command/createCategory.test.ts +29 -44
- package/src/modules/primitives/command/createCategory.ts +9 -5
- package/src/modules/primitives/command/createCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/createCurrency.test.ts +53 -78
- package/src/modules/primitives/command/createCurrency.ts +9 -6
- package/src/modules/primitives/command/createExchangeRate.generated.ts +1 -1
- package/src/modules/primitives/command/createExchangeRate.test.ts +59 -97
- package/src/modules/primitives/command/createExchangeRate.ts +13 -7
- package/src/modules/primitives/command/createUnit.generated.ts +1 -1
- package/src/modules/primitives/command/createUnit.test.ts +59 -90
- package/src/modules/primitives/command/createUnit.ts +9 -6
- package/src/modules/primitives/command/deactivateCategory.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateCategory.test.ts +15 -33
- package/src/modules/primitives/command/deactivateCategory.ts +9 -5
- package/src/modules/primitives/command/deactivateCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateCurrency.test.ts +12 -26
- package/src/modules/primitives/command/deactivateCurrency.ts +9 -5
- package/src/modules/primitives/command/deactivateUnit.generated.ts +1 -1
- package/src/modules/primitives/command/deactivateUnit.test.ts +15 -30
- package/src/modules/primitives/command/deactivateUnit.ts +14 -7
- package/src/modules/primitives/command/setBaseCurrency.generated.ts +1 -1
- package/src/modules/primitives/command/setBaseCurrency.test.ts +18 -40
- package/src/modules/primitives/command/setBaseCurrency.ts +15 -7
- package/src/modules/primitives/command/setReferenceUnit.generated.ts +1 -1
- package/src/modules/primitives/command/setReferenceUnit.test.ts +22 -44
- package/src/modules/primitives/command/setReferenceUnit.ts +21 -9
- package/src/modules/primitives/docs/commands/ActivateCategory.md +6 -0
- package/src/modules/primitives/docs/commands/ActivateCurrency.md +6 -0
- package/src/modules/primitives/docs/commands/ActivateUnit.md +6 -0
- package/src/modules/primitives/docs/commands/CreateCategory.md +6 -0
- package/src/modules/primitives/docs/commands/CreateCurrency.md +10 -0
- package/src/modules/primitives/docs/commands/CreateExchangeRate.md +11 -0
- package/src/modules/primitives/docs/commands/CreateUnit.md +10 -0
- package/src/modules/primitives/docs/commands/DeactivateCategory.md +7 -0
- package/src/modules/primitives/docs/commands/DeactivateCurrency.md +7 -0
- package/src/modules/primitives/docs/commands/DeactivateUnit.md +7 -0
- package/src/modules/primitives/docs/commands/SetBaseCurrency.md +7 -0
- package/src/modules/primitives/docs/commands/SetReferenceUnit.md +7 -0
- package/src/modules/primitives/docs/queries/ConvertAmount.md +14 -0
- package/src/modules/primitives/docs/queries/ConvertQuantity.md +13 -0
- package/src/modules/primitives/docs/queries/GetBaseCurrency.md +5 -0
- package/src/modules/primitives/docs/queries/GetCurrency.md +7 -0
- package/src/modules/primitives/docs/queries/GetUnit.md +7 -0
- package/src/modules/primitives/docs/queries/GetUoMCategory.md +7 -0
- package/src/modules/primitives/docs/queries/ListUnitsByCategory.md +15 -5
- package/src/modules/primitives/index.ts +0 -49
- package/src/modules/primitives/lib/errors.generated.ts +23 -23
- package/src/modules/primitives/lib/permissions.generated.ts +1 -1
- package/src/modules/primitives/lib/types.ts +1 -1
- package/src/modules/primitives/module.ts +1 -1
- package/src/modules/primitives/query/convertAmount.generated.ts +1 -1
- package/src/modules/primitives/query/convertAmount.test.ts +110 -77
- package/src/modules/primitives/query/convertAmount.ts +61 -47
- package/src/modules/primitives/query/convertQuantity.generated.ts +1 -1
- package/src/modules/primitives/query/convertQuantity.test.ts +99 -69
- package/src/modules/primitives/query/convertQuantity.ts +12 -10
- package/src/modules/primitives/query/getBaseCurrency.generated.ts +1 -1
- package/src/modules/primitives/query/getBaseCurrency.test.ts +10 -4
- package/src/modules/primitives/query/getBaseCurrency.ts +2 -2
- package/src/modules/primitives/query/getCurrency.generated.ts +1 -1
- package/src/modules/primitives/query/getCurrency.test.ts +17 -5
- package/src/modules/primitives/query/getCurrency.ts +2 -2
- package/src/modules/primitives/query/getUnit.generated.ts +1 -1
- package/src/modules/primitives/query/getUnit.test.ts +17 -5
- package/src/modules/primitives/query/getUnit.ts +2 -2
- package/src/modules/primitives/query/getUoMCategory.generated.ts +1 -1
- package/src/modules/primitives/query/getUoMCategory.test.ts +17 -5
- package/src/modules/primitives/query/getUoMCategory.ts +2 -2
- package/src/modules/primitives/query/listUnitsByCategory.generated.ts +1 -1
- package/src/modules/primitives/query/listUnitsByCategory.test.ts +80 -0
- package/src/modules/primitives/query/listUnitsByCategory.ts +19 -3
- package/src/modules/primitives/tailor.config.ts +6 -4
- package/src/modules/primitives/tailor.d.ts +13 -0
- package/src/modules/product-management/README.md +52 -0
- package/src/modules/product-management/command/activateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/activateProduct.test.ts +40 -0
- package/src/modules/product-management/command/activateProduct.ts +42 -0
- package/src/modules/product-management/command/assignProductToCategory.generated.ts +6 -0
- package/src/modules/product-management/command/assignProductToCategory.test.ts +90 -0
- package/src/modules/product-management/command/assignProductToCategory.ts +62 -0
- package/src/modules/product-management/command/createProduct.generated.ts +6 -0
- package/src/modules/product-management/command/createProduct.test.ts +149 -0
- package/src/modules/product-management/command/createProduct.ts +73 -0
- package/src/modules/product-management/command/createProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/createProductAttribute.test.ts +70 -0
- package/src/modules/product-management/command/createProductAttribute.ts +53 -0
- package/src/modules/product-management/command/createProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/createProductAttributeValue.test.ts +68 -0
- package/src/modules/product-management/command/createProductAttributeValue.ts +63 -0
- package/src/modules/product-management/command/createProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/createProductCategory.test.ts +135 -0
- package/src/modules/product-management/command/createProductCategory.ts +82 -0
- package/src/modules/product-management/command/deactivateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/deactivateProduct.test.ts +40 -0
- package/src/modules/product-management/command/deactivateProduct.ts +42 -0
- package/src/modules/product-management/command/deleteProduct.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProduct.test.ts +42 -0
- package/src/modules/product-management/command/deleteProduct.ts +42 -0
- package/src/modules/product-management/command/deleteProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductAttribute.test.ts +49 -0
- package/src/modules/product-management/command/deleteProductAttribute.ts +45 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.test.ts +71 -0
- package/src/modules/product-management/command/deleteProductAttributeValue.ts +68 -0
- package/src/modules/product-management/command/deleteProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/deleteProductCategory.test.ts +74 -0
- package/src/modules/product-management/command/deleteProductCategory.ts +53 -0
- package/src/modules/product-management/command/generateVariants.generated.ts +6 -0
- package/src/modules/product-management/command/generateVariants.test.ts +365 -0
- package/src/modules/product-management/command/generateVariants.ts +168 -0
- package/src/modules/product-management/command/moveProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/moveProductCategory.test.ts +170 -0
- package/src/modules/product-management/command/moveProductCategory.ts +124 -0
- package/src/modules/product-management/command/reactivateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/reactivateProduct.test.ts +40 -0
- package/src/modules/product-management/command/reactivateProduct.ts +42 -0
- package/src/modules/product-management/command/removeProductFromCategory.generated.ts +6 -0
- package/src/modules/product-management/command/removeProductFromCategory.test.ts +42 -0
- package/src/modules/product-management/command/removeProductFromCategory.ts +32 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.generated.ts +6 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.test.ts +206 -0
- package/src/modules/product-management/command/setProductAttributeAssignment.ts +102 -0
- package/src/modules/product-management/command/updateProduct.generated.ts +6 -0
- package/src/modules/product-management/command/updateProduct.test.ts +168 -0
- package/src/modules/product-management/command/updateProduct.ts +95 -0
- package/src/modules/product-management/command/updateProductAttribute.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductAttribute.test.ts +101 -0
- package/src/modules/product-management/command/updateProductAttribute.ts +68 -0
- package/src/modules/product-management/command/updateProductAttributeValue.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductAttributeValue.test.ts +80 -0
- package/src/modules/product-management/command/updateProductAttributeValue.ts +58 -0
- package/src/modules/product-management/command/updateProductCategory.generated.ts +6 -0
- package/src/modules/product-management/command/updateProductCategory.test.ts +80 -0
- package/src/modules/product-management/command/updateProductCategory.ts +66 -0
- package/src/modules/product-management/db/product.ts +47 -0
- package/src/modules/product-management/db/productAttribute.ts +26 -0
- package/src/modules/product-management/db/productAttributeAssignment.ts +58 -0
- package/src/modules/product-management/db/productAttributeValue.ts +39 -0
- package/src/modules/product-management/db/productCategory.ts +34 -0
- package/src/modules/product-management/db/productCategoryAssignment.ts +49 -0
- package/src/modules/product-management/db/productVariant.ts +52 -0
- package/src/modules/product-management/docs/commands/ActivateProduct.md +39 -0
- package/src/modules/product-management/docs/commands/AssignProductToCategory.md +43 -0
- package/src/modules/product-management/docs/commands/CreateProduct.md +48 -0
- package/src/modules/product-management/docs/commands/CreateProductAttribute.md +39 -0
- package/src/modules/product-management/docs/commands/CreateProductAttributeValue.md +42 -0
- package/src/modules/product-management/docs/commands/CreateProductCategory.md +54 -0
- package/src/modules/product-management/docs/commands/DeactivateProduct.md +39 -0
- package/src/modules/product-management/docs/commands/DeleteProduct.md +42 -0
- package/src/modules/product-management/docs/commands/DeleteProductAttribute.md +39 -0
- package/src/modules/product-management/docs/commands/DeleteProductAttributeValue.md +42 -0
- package/src/modules/product-management/docs/commands/DeleteProductCategory.md +43 -0
- package/src/modules/product-management/docs/commands/GenerateVariants.md +68 -0
- package/src/modules/product-management/docs/commands/MoveProductCategory.md +54 -0
- package/src/modules/product-management/docs/commands/ReactivateProduct.md +38 -0
- package/src/modules/product-management/docs/commands/RemoveProductFromCategory.md +34 -0
- package/src/modules/product-management/docs/commands/SetProductAttributeAssignment.md +62 -0
- package/src/modules/product-management/docs/commands/UpdateProduct.md +61 -0
- package/src/modules/product-management/docs/commands/UpdateProductAttribute.md +46 -0
- package/src/modules/product-management/docs/commands/UpdateProductAttributeValue.md +47 -0
- package/src/modules/product-management/docs/commands/UpdateProductCategory.md +46 -0
- package/src/modules/product-management/docs/features/attribute-management.md +48 -0
- package/src/modules/product-management/docs/features/product-category.md +71 -0
- package/src/modules/product-management/docs/features/product-lifecycle.md +66 -0
- package/src/modules/product-management/docs/features/variant-generation.md +77 -0
- package/src/modules/product-management/docs/models/Product.md +58 -0
- package/src/modules/product-management/docs/models/ProductAttribute.md +37 -0
- package/src/modules/product-management/docs/models/ProductAttributeAssignment.md +41 -0
- package/src/modules/product-management/docs/models/ProductAttributeValue.md +40 -0
- package/src/modules/product-management/docs/models/ProductCategory.md +46 -0
- package/src/modules/product-management/docs/models/ProductCategoryAssignment.md +37 -0
- package/src/modules/product-management/docs/models/ProductVariant.md +41 -0
- package/src/modules/product-management/docs/queries/CalculateCategoryDepth.md +47 -0
- package/src/modules/product-management/docs/queries/DetectCategoryCircularReference.md +51 -0
- package/src/modules/product-management/docs/queries/GetProduct.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductAttribute.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductAttributeAssignment.md +34 -0
- package/src/modules/product-management/docs/queries/GetProductAttributeValue.md +40 -0
- package/src/modules/product-management/docs/queries/GetProductCategory.md +42 -0
- package/src/modules/product-management/docs/queries/GetProductCategoryAssignment.md +34 -0
- package/src/modules/product-management/docs/queries/GetProductVariant.md +41 -0
- package/src/modules/product-management/docs/queries/ListAttributeAssignmentsByAttribute.md +34 -0
- package/src/modules/product-management/docs/queries/ListCategoryAssignmentsByProduct.md +35 -0
- package/src/modules/product-management/docs/queries/ListProductAttributeAssignments.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductAttributeValues.md +36 -0
- package/src/modules/product-management/docs/queries/ListProductCategoryAssignments.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductCategoryChildren.md +34 -0
- package/src/modules/product-management/docs/queries/ListProductVariants.md +34 -0
- package/src/modules/product-management/generated/enums.ts +9 -0
- package/src/modules/product-management/generated/kysely-tailordb.ts +100 -0
- package/src/modules/product-management/index.ts +2 -0
- package/src/modules/product-management/lib/_db_deps.ts +17 -0
- package/src/modules/product-management/lib/errors.generated.ts +152 -0
- package/src/modules/product-management/lib/permissions.generated.ts +25 -0
- package/src/modules/product-management/lib/types.ts +51 -0
- package/src/modules/product-management/module.ts +201 -0
- package/src/modules/product-management/query/calculateCategoryDepth.generated.ts +5 -0
- package/src/modules/product-management/query/calculateCategoryDepth.test.ts +72 -0
- package/src/modules/product-management/query/calculateCategoryDepth.ts +37 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.generated.ts +5 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.test.ts +72 -0
- package/src/modules/product-management/query/detectCategoryCircularReference.ts +44 -0
- package/src/modules/product-management/query/getProduct.generated.ts +5 -0
- package/src/modules/product-management/query/getProduct.test.ts +59 -0
- package/src/modules/product-management/query/getProduct.ts +18 -0
- package/src/modules/product-management/query/getProductAttribute.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttribute.test.ts +59 -0
- package/src/modules/product-management/query/getProductAttribute.ts +18 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.test.ts +37 -0
- package/src/modules/product-management/query/getProductAttributeAssignment.ts +18 -0
- package/src/modules/product-management/query/getProductAttributeValue.generated.ts +5 -0
- package/src/modules/product-management/query/getProductAttributeValue.test.ts +31 -0
- package/src/modules/product-management/query/getProductAttributeValue.ts +16 -0
- package/src/modules/product-management/query/getProductCategory.generated.ts +5 -0
- package/src/modules/product-management/query/getProductCategory.test.ts +59 -0
- package/src/modules/product-management/query/getProductCategory.ts +18 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.generated.ts +5 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.test.ts +37 -0
- package/src/modules/product-management/query/getProductCategoryAssignment.ts +18 -0
- package/src/modules/product-management/query/getProductVariant.generated.ts +5 -0
- package/src/modules/product-management/query/getProductVariant.test.ts +43 -0
- package/src/modules/product-management/query/getProductVariant.ts +20 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.generated.ts +5 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.test.ts +31 -0
- package/src/modules/product-management/query/listAttributeAssignmentsByAttribute.ts +16 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.generated.ts +5 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.test.ts +31 -0
- package/src/modules/product-management/query/listCategoryAssignmentsByProduct.ts +16 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.generated.ts +5 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.test.ts +31 -0
- package/src/modules/product-management/query/listProductAttributeAssignments.ts +16 -0
- package/src/modules/product-management/query/listProductAttributeValues.generated.ts +5 -0
- package/src/modules/product-management/query/listProductAttributeValues.test.ts +31 -0
- package/src/modules/product-management/query/listProductAttributeValues.ts +17 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.generated.ts +5 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.test.ts +31 -0
- package/src/modules/product-management/query/listProductCategoryAssignments.ts +16 -0
- package/src/modules/product-management/query/listProductCategoryChildren.generated.ts +5 -0
- package/src/modules/product-management/query/listProductCategoryChildren.test.ts +31 -0
- package/src/modules/product-management/query/listProductCategoryChildren.ts +16 -0
- package/src/modules/product-management/query/listProductVariants.generated.ts +5 -0
- package/src/modules/product-management/query/listProductVariants.test.ts +31 -0
- package/src/modules/product-management/query/listProductVariants.ts +16 -0
- package/src/modules/product-management/tailor.config.ts +13 -0
- package/src/modules/product-management/tailor.d.ts +13 -0
- package/src/modules/product-management/testing/fixtures.ts +151 -0
- package/src/modules/user-management/README.md +9 -3
- package/src/modules/user-management/command/activateUser.generated.ts +1 -1
- package/src/modules/user-management/command/activateUser.test.ts +12 -65
- package/src/modules/user-management/command/activateUser.ts +5 -20
- package/src/modules/user-management/command/assignPermissionToRole.generated.ts +1 -1
- package/src/modules/user-management/command/assignPermissionToRole.test.ts +25 -60
- package/src/modules/user-management/command/assignPermissionToRole.ts +5 -24
- package/src/modules/user-management/command/assignRoleToUser.generated.ts +1 -1
- package/src/modules/user-management/command/assignRoleToUser.test.ts +35 -87
- package/src/modules/user-management/command/assignRoleToUser.ts +5 -24
- package/src/modules/user-management/command/createPermission.generated.ts +1 -1
- package/src/modules/user-management/command/createPermission.test.ts +23 -33
- package/src/modules/user-management/command/createPermission.ts +4 -5
- package/src/modules/user-management/command/createRole.generated.ts +1 -1
- package/src/modules/user-management/command/createRole.test.ts +17 -27
- package/src/modules/user-management/command/createRole.ts +4 -5
- package/src/modules/user-management/command/createUser.generated.ts +1 -1
- package/src/modules/user-management/command/createUser.test.ts +31 -118
- package/src/modules/user-management/command/createUser.ts +7 -25
- package/src/modules/user-management/command/deactivateUser.generated.ts +1 -1
- package/src/modules/user-management/command/deactivateUser.test.ts +12 -65
- package/src/modules/user-management/command/deactivateUser.ts +6 -21
- package/src/modules/user-management/command/reactivateUser.generated.ts +1 -1
- package/src/modules/user-management/command/reactivateUser.test.ts +13 -66
- package/src/modules/user-management/command/reactivateUser.ts +5 -20
- package/src/modules/user-management/command/revokePermissionFromRole.generated.ts +1 -1
- package/src/modules/user-management/command/revokePermissionFromRole.test.ts +24 -62
- package/src/modules/user-management/command/revokePermissionFromRole.ts +5 -24
- package/src/modules/user-management/command/revokeRoleFromUser.generated.ts +1 -1
- package/src/modules/user-management/command/revokeRoleFromUser.test.ts +24 -60
- package/src/modules/user-management/command/revokeRoleFromUser.ts +5 -24
- package/src/modules/user-management/docs/commands/ActivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/AssignPermissionToRole.md +7 -0
- package/src/modules/user-management/docs/commands/AssignRoleToUser.md +9 -0
- package/src/modules/user-management/docs/commands/CreatePermission.md +12 -0
- package/src/modules/user-management/docs/commands/CreateRole.md +9 -0
- package/src/modules/user-management/docs/commands/CreateUser.md +11 -0
- package/src/modules/user-management/docs/commands/DeactivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/ReactivateUser.md +7 -0
- package/src/modules/user-management/docs/commands/RevokePermissionFromRole.md +7 -0
- package/src/modules/user-management/docs/commands/RevokeRoleFromUser.md +7 -0
- package/src/modules/user-management/index.ts +0 -30
- package/src/modules/user-management/lib/errors.generated.ts +14 -14
- package/src/modules/user-management/lib/permissions.generated.ts +1 -2
- package/src/modules/user-management/lib/recomputeUserPermissions.ts +4 -3
- package/src/modules/user-management/lib/types.ts +1 -1
- package/src/modules/user-management/module.ts +2 -7
- package/src/modules/user-management/tailor.config.ts +6 -4
- package/src/modules/user-management/tailor.d.ts +13 -0
- package/src/modules/user-management/testing/fixtures.ts +1 -20
- package/src/schemas.ts +1 -1
- package/src/{modules/shared → shared}/defineCommand.test.ts +23 -7
- package/src/{modules/shared → shared}/defineCommand.ts +19 -10
- package/src/{modules/shared/internal.ts → shared/index.ts} +9 -1
- package/src/shared/pagination.test.ts +43 -0
- package/src/shared/pagination.ts +22 -0
- package/src/{modules/shared → shared}/types.ts +13 -0
- package/src/{modules/testing → testing}/index.ts +14 -7
- package/src/testing.ts +1 -1
- package/src/util.ts +8 -0
- package/templates/config/license.config.json +4 -0
- package/templates/scaffold/app/backend/.env.example +1 -0
- package/templates/scaffold/app/backend/__dot__gitignore +4 -0
- package/templates/scaffold/app/backend/eslint.config.js +32 -0
- package/templates/scaffold/app/backend/package.json +31 -0
- package/templates/scaffold/app/backend/seed/data/AuditEvent.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Permission.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Permission.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/Role.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/Role.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/RolePermission.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/RolePermission.schema.ts +24 -0
- package/templates/scaffold/app/backend/seed/data/User.jsonl +1 -0
- package/templates/scaffold/app/backend/seed/data/User.schema.ts +20 -0
- package/templates/scaffold/app/backend/seed/data/UserRole.jsonl +0 -0
- package/templates/scaffold/app/backend/seed/data/UserRole.schema.ts +24 -0
- package/templates/scaffold/app/backend/seed/data/_User.jsonl +1 -0
- package/templates/scaffold/app/backend/seed/data/_User.schema.ts +30 -0
- package/templates/scaffold/app/backend/seed/exec.mjs +659 -0
- package/templates/scaffold/app/backend/src/executors/permissionCreated.ts +3 -0
- package/templates/scaffold/app/backend/src/executors/permissionDeleted.ts +3 -0
- package/templates/scaffold/app/backend/src/generated/kysely-tailordb.ts +83 -0
- package/templates/scaffold/app/backend/src/modules.ts +9 -0
- package/templates/scaffold/app/backend/src/resolvers/createUser.ts +46 -0
- package/templates/scaffold/app/backend/tailor.config.ts +68 -0
- package/templates/scaffold/app/backend/tailor.d.ts +15 -0
- package/templates/scaffold/app/backend/tsconfig.json +19 -0
- package/templates/scaffold/app/docs/actors/.gitkeep +0 -0
- package/templates/scaffold/app/docs/business-flow/.gitkeep +0 -0
- package/templates/scaffold/app/docs/resolver/.gitkeep +0 -0
- package/templates/scaffold/app/docs/screen/.gitkeep +0 -0
- package/templates/scaffold/app/frontend/.env.example +2 -0
- package/templates/scaffold/app/frontend/__dot__gitignore +3 -0
- package/templates/scaffold/app/frontend/components.json +23 -0
- package/templates/scaffold/app/frontend/eslint.config.js +48 -0
- package/templates/scaffold/app/frontend/index.html +13 -0
- package/templates/scaffold/app/frontend/package.json +53 -0
- package/templates/scaffold/app/frontend/scripts/generate-graphql.mjs +6 -0
- package/templates/scaffold/app/frontend/src/App.tsx +58 -0
- package/templates/scaffold/app/frontend/src/components/composed/empty-state.tsx +26 -0
- package/templates/scaffold/app/frontend/src/components/composed/error-fallback.tsx +28 -0
- package/templates/scaffold/app/frontend/src/components/composed/loading.tsx +13 -0
- package/templates/scaffold/app/frontend/src/components/ui/badge.tsx +39 -0
- package/templates/scaffold/app/frontend/src/components/ui/button.tsx +60 -0
- package/templates/scaffold/app/frontend/src/components/ui/card.tsx +75 -0
- package/templates/scaffold/app/frontend/src/components/ui/form.tsx +152 -0
- package/templates/scaffold/app/frontend/src/components/ui/input.tsx +21 -0
- package/templates/scaffold/app/frontend/src/components/ui/label.tsx +21 -0
- package/templates/scaffold/app/frontend/src/components/ui/spinner.tsx +16 -0
- package/templates/scaffold/app/frontend/src/components/ui/table.tsx +90 -0
- package/templates/scaffold/app/frontend/src/graphql/generated/graphql-env.d.ts +103 -0
- package/templates/scaffold/app/frontend/src/graphql/generated/schema.graphql +1235 -0
- package/templates/scaffold/app/frontend/src/graphql/index.ts +15 -0
- package/templates/scaffold/app/frontend/src/index.css +5 -0
- package/templates/scaffold/app/frontend/src/lib/auth-client.ts +17 -0
- package/templates/scaffold/app/frontend/src/lib/utils.ts +6 -0
- package/templates/scaffold/app/frontend/src/main.tsx +10 -0
- package/templates/scaffold/app/frontend/src/pages/page.tsx +20 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/page.tsx +19 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/profile/page.tsx +97 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/components/user-detail.tsx +58 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/[id]/page.tsx +51 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/components/users-table.tsx +101 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/components/create-user-form.tsx +99 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/create/page.tsx +19 -0
- package/templates/scaffold/app/frontend/src/pages/user-management/user/page.tsx +61 -0
- package/templates/scaffold/app/frontend/src/providers/graphql-provider.tsx +21 -0
- package/templates/scaffold/app/frontend/tsconfig.app.json +35 -0
- package/templates/scaffold/app/frontend/tsconfig.json +16 -0
- package/templates/scaffold/app/frontend/tsconfig.node.json +23 -0
- package/templates/scaffold/app/frontend/vite.config.ts +23 -0
- package/templates/scaffold/module/command/.gitkeep +0 -0
- package/templates/scaffold/module/db/.gitkeep +0 -0
- package/templates/scaffold/module/executor/.gitkeep +0 -0
- package/templates/scaffold/module/generated/.gitkeep +0 -0
- package/templates/scaffold/module/index.ts +2 -0
- package/templates/scaffold/module/lib/errors.ts +1 -0
- package/templates/scaffold/module/lib/types.ts +4 -0
- package/templates/scaffold/module/module.ts +7 -0
- package/templates/scaffold/module/permissions.ts +3 -0
- package/templates/scaffold/module/query/.gitkeep +0 -0
- package/templates/scaffold/module/tailor.config.ts +13 -0
- package/templates/scaffold/module/testing/fixtures.ts +1 -0
- package/templates/workflows/erp-kit-check.yml +37 -0
- package/dist/cli.js +0 -1654
- package/skills/erp-kit-app-2-breakdown/SKILL.md +0 -88
- package/skills/erp-kit-app-3-doc-review/SKILL.md +0 -112
- package/skills/erp-kit-app-4-impl-spec/SKILL.md +0 -116
- package/skills/erp-kit-app-5-implementation/references/backend.md +0 -232
- package/skills/erp-kit-module-1-docs/SKILL.md +0 -111
- package/skills/erp-kit-module-2-feature-breakdown/SKILL.md +0 -76
- package/skills/erp-kit-module-3-doc-review/SKILL.md +0 -294
- package/skills/erp-kit-module-4-tdd/SKILL.md +0 -94
- package/skills/erp-kit-module-4-tdd/references/exports.md +0 -8
- package/skills/erp-kit-module-5-impl-review/SKILL.md +0 -410
- package/src/commands/scaffold-templates.ts +0 -65
- package/src/modules/shared/index.ts +0 -1
- package/src/modules/user-management/command/logAuditEvent.generated.ts +0 -6
- package/src/modules/user-management/command/logAuditEvent.test.ts +0 -187
- package/src/modules/user-management/command/logAuditEvent.ts +0 -56
- package/src/modules/user-management/db/auditEvent.ts +0 -47
- package/src/modules/user-management/docs/commands/LogAuditEvent.md +0 -37
- package/src/modules/user-management/docs/features/audit-trail.md +0 -80
- package/src/modules/user-management/docs/models/AuditEvent.md +0 -36
- /package/skills/{erp-kit-module-2-feature-breakdown → erp-kit-module-3-plan}/references/naming.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/cross-module-dependency.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/db-relations.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/generated-code.md +0 -0
- /package/skills/{erp-kit-module-4-tdd → erp-kit-module-5-impl}/references/models.md +0 -0
- /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/commands.md +0 -0
- /package/skills/{erp-kit-module-5-impl-review → erp-kit-module-6-impl-review}/references/testing.md +0 -0
- /package/src/modules/{product-management → audit}/.gitkeep +0 -0
- /package/src/{modules/shared → shared}/createContext.test.ts +0 -0
- /package/src/{modules/shared → shared}/createContext.ts +0 -0
- /package/src/{modules/shared → shared}/definePermissions.test.ts +0 -0
- /package/src/{modules/shared → shared}/definePermissions.ts +0 -0
- /package/src/{modules/shared → shared}/defineQuery.test.ts +0 -0
- /package/src/{modules/shared → shared}/defineQuery.ts +0 -0
- /package/src/{modules/shared → shared}/entityTypes.ts +0 -0
- /package/src/{modules/shared → shared}/errors.ts +0 -0
- /package/src/{modules/shared → shared}/requirePermission.test.ts +0 -0
- /package/src/{modules/shared → shared}/requirePermission.ts +0 -0
- /package/src/{modules/shared → shared}/result.ts +0 -0
package/package.json
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailor-platform/erp-kit",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Opinionated ERP toolkit for building business applications on Tailor Platform",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"bin": {
|
|
7
|
-
"erp-kit": "./dist/cli.
|
|
7
|
+
"erp-kit": "./dist/cli.mjs"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"CHANGELOG.md",
|
|
11
|
-
"dist",
|
|
12
11
|
"LICENSE",
|
|
12
|
+
"dist",
|
|
13
13
|
"schemas",
|
|
14
14
|
"skills",
|
|
15
|
-
"src"
|
|
15
|
+
"src",
|
|
16
|
+
"templates"
|
|
16
17
|
],
|
|
17
18
|
"type": "module",
|
|
18
19
|
"exports": {
|
|
@@ -34,12 +35,12 @@
|
|
|
34
35
|
"devDependencies": {
|
|
35
36
|
"@tailor-platform/function-kysely-tailordb": "0.1.3",
|
|
36
37
|
"@tailor-platform/function-types": "0.8.2",
|
|
37
|
-
"@tailor-platform/sdk": "1.
|
|
38
|
+
"@tailor-platform/sdk": "1.25.1",
|
|
38
39
|
"@types/mdast": "^4.0.4",
|
|
39
40
|
"@types/node": "^25.1.0",
|
|
40
|
-
"eslint": "
|
|
41
|
-
"kysely": "0.28.
|
|
42
|
-
"
|
|
41
|
+
"eslint": "10.0.3",
|
|
42
|
+
"kysely": "0.28.11",
|
|
43
|
+
"tsdown": "0.21.2",
|
|
43
44
|
"typescript": "^5.7.3",
|
|
44
45
|
"vitest": "^4.0.0",
|
|
45
46
|
"@tailor-platform/eslint-config": "0.0.1"
|
|
@@ -47,14 +48,14 @@
|
|
|
47
48
|
"peerDependencies": {
|
|
48
49
|
"@tailor-platform/function-kysely-tailordb": "0.1.3",
|
|
49
50
|
"@tailor-platform/function-types": "0.8.2",
|
|
50
|
-
"@tailor-platform/sdk": "1.
|
|
51
|
-
"kysely": "0.28.
|
|
51
|
+
"@tailor-platform/sdk": "1.25.1",
|
|
52
|
+
"kysely": "0.28.11"
|
|
52
53
|
},
|
|
53
54
|
"engines": {
|
|
54
55
|
"node": ">=24"
|
|
55
56
|
},
|
|
56
57
|
"scripts": {
|
|
57
|
-
"build": "
|
|
58
|
+
"build": "tsdown",
|
|
58
59
|
"generate": "for dir in src/modules/*/; do [ -f \"$dir/tailor.config.ts\" ] && (cd \"$dir\" && echo \"Generating $dir...\" && tailor-sdk generate); done",
|
|
59
60
|
"lint": "eslint --cache .",
|
|
60
61
|
"lint:fix": "eslint --cache --fix .",
|
|
@@ -64,8 +65,8 @@
|
|
|
64
65
|
"test:primitives": "vitest run src/modules/primitives/",
|
|
65
66
|
"test:user-management": "vitest run src/modules/user-management/",
|
|
66
67
|
"test:shared": "vitest run src/modules/shared/",
|
|
67
|
-
"mock:start": "node dist/cli.
|
|
68
|
-
"mock:validate": "node dist/cli.
|
|
68
|
+
"mock:start": "node dist/cli.mjs mock start",
|
|
69
|
+
"mock:validate": "node dist/cli.mjs mock validate",
|
|
69
70
|
"doc:gen": "POLITTY_DOCS_UPDATE=true vitest run src/cli.doc.test.ts",
|
|
70
71
|
"doc:check": "vitest run src/cli.doc.test.ts"
|
|
71
72
|
}
|
|
@@ -55,6 +55,18 @@ structure:
|
|
|
55
55
|
type: unordered
|
|
56
56
|
min_items: 1
|
|
57
57
|
|
|
58
|
+
# Resolvers that implement this story's backend operations - OPTIONAL
|
|
59
|
+
# Enables M:N relationship between stories and resolvers
|
|
60
|
+
# Stories that only read data (browse, view, list) may not need resolvers
|
|
61
|
+
- heading: "## Resolvers"
|
|
62
|
+
description: |
|
|
63
|
+
Link to resolver docs that implement this story's backend operations.
|
|
64
|
+
Write "None" if this story does not require any resolvers.
|
|
65
|
+
lists:
|
|
66
|
+
- min: 0
|
|
67
|
+
type: unordered
|
|
68
|
+
min_items: 1
|
|
69
|
+
|
|
58
70
|
# Link validation
|
|
59
71
|
links:
|
|
60
72
|
validate_internal: true
|
|
@@ -41,6 +41,15 @@ structure:
|
|
|
41
41
|
type: unordered
|
|
42
42
|
min_items: 1
|
|
43
43
|
|
|
44
|
+
# Test cases - REQUIRED
|
|
45
|
+
# Each item corresponds to an it() block in the test file
|
|
46
|
+
- heading: "## Test Cases"
|
|
47
|
+
description: "List test case descriptions that correspond to it() blocks in the test file.\ne.g. `- returns error when code is empty`"
|
|
48
|
+
lists:
|
|
49
|
+
- min: 1
|
|
50
|
+
type: unordered
|
|
51
|
+
min_items: 1
|
|
52
|
+
|
|
44
53
|
# Link validation
|
|
45
54
|
links:
|
|
46
55
|
validate_internal: true
|
|
@@ -30,6 +30,10 @@ structure:
|
|
|
30
30
|
- min: 1
|
|
31
31
|
type: unordered
|
|
32
32
|
min_items: 1
|
|
33
|
+
- heading: "### Scope Decision Rationale"
|
|
34
|
+
description: "Explain why capabilities are in-scope or out-of-scope — domain alignment, separation of concerns, etc."
|
|
35
|
+
paragraphs:
|
|
36
|
+
min: 1
|
|
33
37
|
|
|
34
38
|
# Module dependencies - REQUIRED
|
|
35
39
|
- heading: "## Module Dependencies"
|
package/schemas/module/query.yml
CHANGED
|
@@ -41,6 +41,15 @@ structure:
|
|
|
41
41
|
type: unordered
|
|
42
42
|
min_items: 1
|
|
43
43
|
|
|
44
|
+
# Test cases - REQUIRED
|
|
45
|
+
# Each item corresponds to an it() block in the test file
|
|
46
|
+
- heading: "## Test Cases"
|
|
47
|
+
description: "List test case descriptions that correspond to it() blocks in the test file.\ne.g. `- returns product when found by id`"
|
|
48
|
+
lists:
|
|
49
|
+
- min: 1
|
|
50
|
+
type: unordered
|
|
51
|
+
min_items: 1
|
|
52
|
+
|
|
44
53
|
# Link validation
|
|
45
54
|
links:
|
|
46
55
|
validate_internal: true
|
|
@@ -43,8 +43,8 @@ Ask 3-4 questions at a time using multiSelect where appropriate.
|
|
|
43
43
|
Generate documentation using `erp-kit` CLI:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
# Tier 1: Requirements
|
|
47
|
-
erp-kit app scaffold
|
|
46
|
+
# Tier 1: Requirements + project structure
|
|
47
|
+
erp-kit app scaffold app <app-name> --root examples
|
|
48
48
|
|
|
49
49
|
# Tier 2: Actors
|
|
50
50
|
erp-kit app scaffold actors <app-name> <actor-name> --root examples
|
|
@@ -62,7 +62,7 @@ erp-kit app scaffold business-flow <app-name> <flow-name> --root examples
|
|
|
62
62
|
|
|
63
63
|
**Business flow `## Stories` section:**
|
|
64
64
|
|
|
65
|
-
At Tier 2, story files do not exist yet. Use `- TBD` as a placeholder to avoid broken link violations. Replace with actual story links in `/erp-kit-app-
|
|
65
|
+
At Tier 2, story files do not exist yet. Use `- TBD` as a placeholder to avoid broken link violations. Replace with actual story links in `/erp-kit-app-3-plan`.
|
|
66
66
|
|
|
67
67
|
### Phase 4: Validate
|
|
68
68
|
|
|
@@ -80,4 +80,4 @@ pnpm run app:doc:check
|
|
|
80
80
|
|
|
81
81
|
## Next Step
|
|
82
82
|
|
|
83
|
-
After completing Tier 1-2, use `/erp-kit-app-2-
|
|
83
|
+
After completing Tier 1-2, use `/erp-kit-app-2-requirements-review` to review documentation quality.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: erp-kit-app-2-requirements-review
|
|
3
|
+
description: Review requirements quality and documentation consistency for app-compose applications. Use after creating Tier 1-2 documentation (requirements, actors, business-flow) with erp-kit-app-1-requirements.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Requirements Review
|
|
7
|
+
|
|
8
|
+
Review **requirements quality** and **documentation consistency** for an app-compose application's Tier 1-2 documentation.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- After writing application requirements and business flows (step 1)
|
|
13
|
+
- When validating that actors, flows, and sequences follow best practices
|
|
14
|
+
- When checking for gaps or inconsistencies in Tier 1-2 documentation
|
|
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
|
+
- `APP_README`: `<APP_ROOT>/README.md`
|
|
23
|
+
- `BUSINESS_FLOW_DOCS`: glob `<APP_ROOT>/docs/business-flow/*/README.md`
|
|
24
|
+
- `ACTOR_DOCS`: glob `<APP_ROOT>/docs/actors/*.md`
|
|
25
|
+
|
|
26
|
+
Verify at least `APP_README` exists. If not, stop with: "No application README found at <APP_ROOT>. Run erp-kit-app-1-requirements first."
|
|
27
|
+
|
|
28
|
+
## Step 2: Dispatch Agents (parallelize if possible)
|
|
29
|
+
|
|
30
|
+
Launch 2 Agent tool calls in parallel — one per review concern.
|
|
31
|
+
Each agent receives: APP_NAME, relevant doc file paths.
|
|
32
|
+
Each agent returns: structured markdown per [references/requirements-report-format.md](references/requirements-report-format.md).
|
|
33
|
+
|
|
34
|
+
| Agent | Prompt Template | Inputs |
|
|
35
|
+
| ----- | ------------------------------------------------------------------------------------ | ------------------------------------------ |
|
|
36
|
+
| 1 | [references/best-practices-check.md](references/best-practices-check.md) | APP_README, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
|
|
37
|
+
| 2 | [references/boundary-consistency-check.md](references/boundary-consistency-check.md) | APP_README, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
|
|
38
|
+
|
|
39
|
+
For each agent:
|
|
40
|
+
|
|
41
|
+
1. Read the prompt template file
|
|
42
|
+
2. Replace `{{APP_NAME}}` with the resolved app name
|
|
43
|
+
3. Replace `{{APP_README}}`, `{{ACTOR_DOCS}}`, `{{BUSINESS_FLOW_DOCS}}` with the actual file paths
|
|
44
|
+
4. Dispatch the agent with the filled prompt
|
|
45
|
+
|
|
46
|
+
## Step 3: Aggregate Results
|
|
47
|
+
|
|
48
|
+
After ALL agents return:
|
|
49
|
+
|
|
50
|
+
1. Collect the markdown results from each agent
|
|
51
|
+
2. Merge all `issues[]` arrays into a single list
|
|
52
|
+
3. Merge all `recommendations[]` arrays into a single list
|
|
53
|
+
4. Calculate totals across all summaries
|
|
54
|
+
5. Render the final report below
|
|
55
|
+
|
|
56
|
+
## Report Format
|
|
57
|
+
|
|
58
|
+
Render the aggregated results as markdown:
|
|
59
|
+
|
|
60
|
+
### Requirements Review Report
|
|
61
|
+
|
|
62
|
+
**Application:** <APP_NAME>
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### 1. Best Practices
|
|
67
|
+
|
|
68
|
+
| Check | Scope | Status | Detail |
|
|
69
|
+
| ----- | ----- | ------ | ------ |
|
|
70
|
+
|
|
71
|
+
(Populated from agent 1 issues)
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
### 2. Documentation Consistency
|
|
76
|
+
|
|
77
|
+
| Actor/Flow | Check | Status | Detail |
|
|
78
|
+
| ---------- | ----- | ------ | ------ |
|
|
79
|
+
|
|
80
|
+
(Populated from agent 2 issues)
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### 3. Summary
|
|
85
|
+
|
|
86
|
+
| Aspect | Status | Details |
|
|
87
|
+
| ------------------------- | ------ | ----------------- |
|
|
88
|
+
| Best Practices | | X/Y checks passed |
|
|
89
|
+
| Documentation Consistency | | X/Y checks passed |
|
|
90
|
+
|
|
91
|
+
### 4. Recommendations
|
|
92
|
+
|
|
93
|
+
Numbered list of actionable fixes, grouped by priority:
|
|
94
|
+
|
|
95
|
+
1. Critical documentation gaps (highest priority)
|
|
96
|
+
2. Best practice violations
|
|
97
|
+
3. Improvement suggestions
|
|
98
|
+
|
|
99
|
+
## References
|
|
100
|
+
|
|
101
|
+
- [Requirements report format](references/requirements-report-format.md)
|
|
102
|
+
- For requirements creation, see erp-kit-app-1-requirements
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Application Best Practices Check
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
App: {{APP_NAME}}
|
|
6
|
+
App README: {{APP_README}}
|
|
7
|
+
Actor docs: {{ACTOR_DOCS}}
|
|
8
|
+
Business flow docs: {{BUSINESS_FLOW_DOCS}}
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
1. Read the application README at the path above
|
|
13
|
+
2. Read ALL actor docs and business flow docs at the paths above
|
|
14
|
+
3. **Web search** app-compose and ERP application best practices (actor modeling, business flow design, user journey patterns)
|
|
15
|
+
4. Evaluate whether the Tier 1-2 documentation follows best practices
|
|
16
|
+
5. Return results as markdown per the Output Format section
|
|
17
|
+
|
|
18
|
+
## Application Design Checks
|
|
19
|
+
|
|
20
|
+
For each actor and business flow, evaluate:
|
|
21
|
+
|
|
22
|
+
| Check ID | Question |
|
|
23
|
+
| ------------------------ | -------------------------------------------------------------------------------------------- |
|
|
24
|
+
| actor_completeness | Does each actor have a clear role description, permissions scope, and linked business flows? |
|
|
25
|
+
| actor_separation | Are actor responsibilities well-separated? No single actor doing everything? |
|
|
26
|
+
| flow_coherence | Does each business flow have a clear trigger, logical step sequence, and defined outcome? |
|
|
27
|
+
| sequence_diagram_quality | Do sequence diagrams accurately represent actor interactions and system responses? |
|
|
28
|
+
| requirement_coverage | Do business flows collectively cover the requirements stated in README? |
|
|
29
|
+
| missing_flows | Are there obvious workflows missing based on the stated requirements? |
|
|
30
|
+
| flow_granularity | Are flows at the right level of granularity? (not too coarse, not too fine) |
|
|
31
|
+
| error_path_coverage | Do flows account for error paths and edge cases, not just happy paths? |
|
|
32
|
+
|
|
33
|
+
## Common Application Design Issues
|
|
34
|
+
|
|
35
|
+
- **Overloaded actors**: A single actor responsible for too many unrelated flows
|
|
36
|
+
- **Missing system actor**: Automated/system-triggered flows not represented as an actor
|
|
37
|
+
- **Disconnected flows**: Flows that don't link to each other when they should (e.g., an approval flow that doesn't connect to the submission flow)
|
|
38
|
+
- **Missing error flows**: Only happy-path documented, no handling of rejections, cancellations, or failures
|
|
39
|
+
- **Vague requirements**: README states features that no business flow implements
|
|
40
|
+
- **Inconsistent granularity**: Some flows are very detailed while others are hand-wavy
|
|
41
|
+
|
|
42
|
+
## Output Format
|
|
43
|
+
|
|
44
|
+
Return your findings as a structured markdown report:
|
|
45
|
+
|
|
46
|
+
### Check Results
|
|
47
|
+
|
|
48
|
+
For each finding:
|
|
49
|
+
|
|
50
|
+
- **Scope:** actor name, flow name, or "application-level"
|
|
51
|
+
- **Check:** check ID
|
|
52
|
+
- **Status:** pass / fail / warn
|
|
53
|
+
- **Detail:** what was found and why it matters
|
|
54
|
+
|
|
55
|
+
### Recommendations
|
|
56
|
+
|
|
57
|
+
Numbered list grouped by priority (critical → high → medium → low). Each item should explain the issue and the recommended fix.
|
|
58
|
+
|
|
59
|
+
### Summary
|
|
60
|
+
|
|
61
|
+
Table with columns: Metric, Count
|
|
62
|
+
|
|
63
|
+
- Total checks
|
|
64
|
+
- Passed
|
|
65
|
+
- Failed
|
|
66
|
+
- Warned
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Documentation Consistency Check
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
App: {{APP_NAME}}
|
|
6
|
+
App README: {{APP_README}}
|
|
7
|
+
Actor docs: {{ACTOR_DOCS}}
|
|
8
|
+
Business flow docs: {{BUSINESS_FLOW_DOCS}}
|
|
9
|
+
|
|
10
|
+
## Instructions
|
|
11
|
+
|
|
12
|
+
1. Read the application README at the path above
|
|
13
|
+
2. Read ALL actor docs and business flow docs at the paths above
|
|
14
|
+
3. Cross-reference actors, flows, and requirements for internal consistency
|
|
15
|
+
4. Return results as markdown per the Output Format section
|
|
16
|
+
|
|
17
|
+
## Consistency Checks
|
|
18
|
+
|
|
19
|
+
| Check ID | Question |
|
|
20
|
+
| ---------------------- | -------------------------------------------------------------------------------- |
|
|
21
|
+
| actor_flow_cross_ref | Is every actor referenced in at least one business flow? |
|
|
22
|
+
| flow_actor_cross_ref | Does every business flow reference only actors that have actor docs? |
|
|
23
|
+
| actor_link_validity | Do actor docs link to business flows that exist? |
|
|
24
|
+
| flow_link_validity | Do business flow docs link to actor docs that exist? |
|
|
25
|
+
| readme_flow_coverage | Does every requirement/feature in README have a corresponding business flow? |
|
|
26
|
+
| naming_consistency | Are actor and flow names consistent across all documents? (no typos, no aliases) |
|
|
27
|
+
| diagram_actor_match | Do sequence diagram participants match the "Actors Involved" section? |
|
|
28
|
+
| flow_step_completeness | Does every flow step identify a responsible actor? |
|
|
29
|
+
|
|
30
|
+
### How to Check
|
|
31
|
+
|
|
32
|
+
1. Extract all actor names from actor docs (filename slugs and H1 headings)
|
|
33
|
+
2. Extract all flow names from business flow docs (directory names and H1 headings)
|
|
34
|
+
3. For each actor doc, check "Authorized Flows" links resolve to existing flows
|
|
35
|
+
4. For each flow doc, check "Actors Involved" references match existing actor docs
|
|
36
|
+
5. For each sequence diagram, verify participants match the actors listed in "Actors Involved"
|
|
37
|
+
6. Compare README features/requirements against business flow coverage
|
|
38
|
+
|
|
39
|
+
## Common Consistency Issues
|
|
40
|
+
|
|
41
|
+
- **Phantom actors**: Flow references an actor with no actor doc
|
|
42
|
+
- **Orphaned actors**: Actor doc exists but no flow references them
|
|
43
|
+
- **Broken links**: Actor→flow or flow→actor links point to non-existent files
|
|
44
|
+
- **Name drift**: Actor called "Admin" in one doc and "Administrator" in another
|
|
45
|
+
- **Diagram mismatch**: Sequence diagram uses different participant names than "Actors Involved"
|
|
46
|
+
- **Uncovered requirements**: README lists a feature but no business flow implements it
|
|
47
|
+
|
|
48
|
+
## Output Format
|
|
49
|
+
|
|
50
|
+
Return your findings as a structured markdown report:
|
|
51
|
+
|
|
52
|
+
### Check Results
|
|
53
|
+
|
|
54
|
+
Table with columns: Actor/Flow, Check, Status (pass/fail/warn), Detail
|
|
55
|
+
|
|
56
|
+
One row per check performed.
|
|
57
|
+
|
|
58
|
+
### Recommendations
|
|
59
|
+
|
|
60
|
+
Numbered list grouped by priority (critical → high → medium → low). Each item is an actionable recommendation.
|
|
61
|
+
|
|
62
|
+
### Summary
|
|
63
|
+
|
|
64
|
+
Table with columns: Metric, Count
|
|
65
|
+
|
|
66
|
+
- Total checks
|
|
67
|
+
- Passed
|
|
68
|
+
- Failed
|
|
69
|
+
- Warned
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Requirements Report Format
|
|
2
|
+
|
|
3
|
+
All requirements review agents return results as structured markdown.
|
|
4
|
+
|
|
5
|
+
## Expected Sections
|
|
6
|
+
|
|
7
|
+
### Check Results
|
|
8
|
+
|
|
9
|
+
A table with one row per check performed. Columns vary by agent type but always include:
|
|
10
|
+
|
|
11
|
+
- **Status**: `pass` (no issues), `fail` (significant issue), or `warn` (minor concern)
|
|
12
|
+
- **Detail**: Human-readable description of the finding
|
|
13
|
+
|
|
14
|
+
### Recommendations
|
|
15
|
+
|
|
16
|
+
A numbered list of actionable suggestions, grouped by priority:
|
|
17
|
+
|
|
18
|
+
- **critical**: must fix before proceeding to planning
|
|
19
|
+
- **high**: should fix, may cause issues downstream
|
|
20
|
+
- **medium**: recommended improvement
|
|
21
|
+
- **low**: nice to have
|
|
22
|
+
|
|
23
|
+
### Summary
|
|
24
|
+
|
|
25
|
+
A summary table with aggregate counts: total checks, passed, failed, warned.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: erp-kit-app-3-plan
|
|
3
|
+
description: Create Tier 3-4 documentation (stories, screens, resolvers) by breaking down business flows. Use after completing requirements review with erp-kit-app-2-requirements-review.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Business Flow Breakdown to Stories, Screens, and Resolvers
|
|
7
|
+
|
|
8
|
+
Convert Tier 2 business flows into Tier 3 (stories, screens) and Tier 4 (resolvers) documentation using parallel extraction agents.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- User has Tier 1-2 documentation and wants to plan Tier 3-4
|
|
13
|
+
- User asks to create story, screen, or resolver documentation
|
|
14
|
+
- User wants to break down business flows into actionable specs
|
|
15
|
+
|
|
16
|
+
## Prerequisites
|
|
17
|
+
|
|
18
|
+
Tier 1-2 documentation must exist:
|
|
19
|
+
|
|
20
|
+
- `README.md` (requirements)
|
|
21
|
+
- `docs/actors/*.md` (actor definitions)
|
|
22
|
+
- `docs/business-flow/*/README.md` (business workflows)
|
|
23
|
+
|
|
24
|
+
## Step 1: Setup
|
|
25
|
+
|
|
26
|
+
Define shared context for all agents:
|
|
27
|
+
|
|
28
|
+
- `APP_ROOT`: from argument or current working directory. Must contain a `docs/` directory.
|
|
29
|
+
- `APP_NAME`: basename of APP_ROOT
|
|
30
|
+
- `BUSINESS_FLOW_DOCS`: glob `<APP_ROOT>/docs/business-flow/*/README.md`
|
|
31
|
+
- `ACTOR_DOCS`: glob `<APP_ROOT>/docs/actors/*.md`
|
|
32
|
+
|
|
33
|
+
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/. Run erp-kit-app-1-requirements first."
|
|
34
|
+
|
|
35
|
+
## Step 2: Dispatch Agents (parallelize if possible)
|
|
36
|
+
|
|
37
|
+
Launch 3 Agent tool calls in parallel — one per extraction concern.
|
|
38
|
+
Each agent receives: APP_NAME, relevant doc file paths.
|
|
39
|
+
|
|
40
|
+
| Agent | Prompt Template | Inputs |
|
|
41
|
+
| ----- | ---------------------------------------------------------------------- | ---------------------------------------- |
|
|
42
|
+
| 1 | [references/story-extraction.md](references/story-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
|
|
43
|
+
| 2 | [references/screen-extraction.md](references/screen-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
|
|
44
|
+
| 3 | [references/resolver-extraction.md](references/resolver-extraction.md) | APP_NAME, ACTOR_DOCS, BUSINESS_FLOW_DOCS |
|
|
45
|
+
|
|
46
|
+
For each agent:
|
|
47
|
+
|
|
48
|
+
1. Read the prompt template file
|
|
49
|
+
2. Replace `{{APP_NAME}}` with the resolved app name
|
|
50
|
+
3. Replace `{{ACTOR_DOCS}}`, `{{BUSINESS_FLOW_DOCS}}` with the actual file paths
|
|
51
|
+
4. Dispatch the agent with the filled prompt
|
|
52
|
+
|
|
53
|
+
## Step 3: Aggregate & Present Plan
|
|
54
|
+
|
|
55
|
+
After ALL agents return:
|
|
56
|
+
|
|
57
|
+
1. Collect extraction results from each agent
|
|
58
|
+
2. Present consolidated plan to user:
|
|
59
|
+
- Stories to create (with actor, flow, scenario patterns)
|
|
60
|
+
- Screens to create (with type, fields, actions)
|
|
61
|
+
- Resolvers to create (with operation type, module mapping)
|
|
62
|
+
3. Wait for user approval
|
|
63
|
+
|
|
64
|
+
## Step 4: Check Module Dependencies
|
|
65
|
+
|
|
66
|
+
Before creating resolver docs, verify required modules exist:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
ls packages/erp-kit/src/modules/
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
For each resolver that references a module command, check the module and command exist:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
ls packages/erp-kit/src/modules/<module-name>/docs/commands/
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**If modules don't exist:**
|
|
79
|
+
|
|
80
|
+
1. Identify needed modules — group resolver operations by domain
|
|
81
|
+
2. Create module docs first — use `erp-kit-module-1-requirements` skill
|
|
82
|
+
3. Return to this step after modules have documented commands
|
|
83
|
+
|
|
84
|
+
**Only reference existing module commands** in resolver documentation.
|
|
85
|
+
|
|
86
|
+
## Step 5: Scaffold & Populate
|
|
87
|
+
|
|
88
|
+
After approval, scaffold using `erp-kit` CLI:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Tier 3: Stories
|
|
92
|
+
erp-kit app scaffold story <app> <flow>/<actor>--<story> --root examples
|
|
93
|
+
|
|
94
|
+
# Tier 3: Screens
|
|
95
|
+
erp-kit app scaffold screen <app> <screen-name> --root examples
|
|
96
|
+
|
|
97
|
+
# Tier 4: Resolvers
|
|
98
|
+
erp-kit scaffold --app-root examples resolver <app> <resolver-name>
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Fill scaffolded docs with details from agent extraction results.
|
|
102
|
+
|
|
103
|
+
**After creating stories**, replace `- TBD` placeholders in the `## Stories` section of each business flow README with actual links:
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
- [Story Title](./story/<actor>--<story-name>.md)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**After creating resolvers**, replace `- TBD` placeholders in the `## Resolvers` section of each story with actual links:
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
- [resolverName](../../../resolver/resolverName.md)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Read-only stories should have `None` under `## Resolvers`.
|
|
116
|
+
|
|
117
|
+
## Step 6: Validate
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pnpm run app:doc:check
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Naming Conventions
|
|
124
|
+
|
|
125
|
+
- Story filename: `<actor>--<story-name>.md` (double-dash separator)
|
|
126
|
+
- Story heading: Title Case of story name (after `--`)
|
|
127
|
+
- Screen filename: kebab-case, noun-focused (e.g., `supplier-list.md`)
|
|
128
|
+
- Resolver filename: camelCase action-verb (e.g., `createSupplierInvitation.md`)
|
|
129
|
+
|
|
130
|
+
## Schema Reference
|
|
131
|
+
|
|
132
|
+
| Schema | Tier | Output Path |
|
|
133
|
+
| -------------- | ---- | ---------------------------------------------------- |
|
|
134
|
+
| `story.yml` | 3 | `docs/business-flow/<flow>/story/<actor>--<name>.md` |
|
|
135
|
+
| `screen.yml` | 3 | `docs/screen/<name>.md` |
|
|
136
|
+
| `resolver.yml` | 4 | `docs/resolver/<name>.md` |
|
|
137
|
+
|
|
138
|
+
## Common Patterns
|
|
139
|
+
|
|
140
|
+
| Flow Element | Documentation Type |
|
|
141
|
+
| -------------------- | ---------------------------- |
|
|
142
|
+
| User action step | Story |
|
|
143
|
+
| UI requirement | Screen |
|
|
144
|
+
| Actor in flow | Story actor |
|
|
145
|
+
| Create/Update/Delete | Resolver (Mutation) |
|
|
146
|
+
| View/List/Search | Resolver (Query) or built-in |
|
|
147
|
+
|
|
148
|
+
## Tips
|
|
149
|
+
|
|
150
|
+
- One business flow typically produces 3-8 stories
|
|
151
|
+
- Stories should be completable in a single user session
|
|
152
|
+
- Screens can be shared across multiple stories
|
|
153
|
+
- Prefer built-in queries over custom resolvers for simple list/get operations
|
|
154
|
+
|
|
155
|
+
## Next Step
|
|
156
|
+
|
|
157
|
+
After completing Tier 3-4, use `/erp-kit-app-4-plan-review` to validate documentation parity.
|