@tailor-platform/erp-kit 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +154 -80
- package/dist/cli.mjs +1742 -0
- package/package.json +16 -14
- 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 +22 -11
- package/skills/erp-kit-app-2-requirements-review/SKILL.md +103 -0
- package/skills/erp-kit-app-2-requirements-review/references/best-practices-check.md +71 -0
- package/skills/erp-kit-app-2-requirements-review/references/boundary-consistency-check.md +74 -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 +154 -0
- package/skills/erp-kit-app-3-plan/references/resolver-extraction.md +89 -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 +168 -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-impl-backend/SKILL.md +98 -0
- 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-app-shared/SKILL.md +15 -0
- package/skills/erp-kit-app-shared/references/link-format-reference.md +13 -0
- package/skills/erp-kit-app-shared/references/naming-conventions.md +21 -0
- package/skills/erp-kit-app-shared/references/resolver-classification.md +23 -0
- package/skills/erp-kit-app-shared/references/schema-constraints.md +25 -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-2-feature-breakdown → erp-kit-module-3-plan}/references/naming.md +15 -1
- 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 +120 -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-4-tdd → erp-kit-module-5-impl}/references/generated-code.md +2 -2
- 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 +2 -2
- 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 +13 -10
- package/skills/erp-kit-module-shared/references/queries.md +110 -37
- package/skills/erp-kit-module-shared/references/structure.md +1 -1
- package/skills/erp-kit-module-shared/references/testing.md +10 -0
- package/skills/erp-kit-update/SKILL.md +4 -4
- package/src/app.ts +1 -1
- package/src/commands/app/index.ts +57 -24
- package/src/commands/check.ts +1 -1
- package/src/commands/generate-doc.test.ts +63 -0
- package/src/commands/generate-doc.ts +98 -0
- package/src/commands/index.ts +16 -5
- package/src/commands/init-module.test.ts +43 -0
- package/src/commands/init-module.ts +74 -0
- 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/module/generate.ts +33 -13
- package/src/commands/module/index.ts +18 -28
- package/src/commands/parse-doc-test-cases.ts +55 -0
- 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-boilerplate.test.ts +142 -0
- package/src/generator/generate-code.test.ts +47 -12
- package/src/generator/generate-code.ts +123 -20
- package/src/integration.test.ts +3 -3
- 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/SKILL.md +0 -149
- 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/commands/scaffold.test.ts +0 -171
- package/src/commands/scaffold.ts +0 -140
- 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-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/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
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
See [erp-kit-app-shared/references/resolver-classification.md](../../erp-kit-app-shared/references/resolver-classification.md) for the full operation → resolver mapping table and custom vs built-in classification.
|
|
30
|
+
|
|
31
|
+
### Module Command Mapping
|
|
32
|
+
|
|
33
|
+
For each resolver, identify which erp-kit module provides the command:
|
|
34
|
+
|
|
35
|
+
| Resolver Operation | Typical Module |
|
|
36
|
+
| ------------------ | --------------------- |
|
|
37
|
+
| User invite/roles | `user-management` |
|
|
38
|
+
| Supplier CRUD | `supplier-management` |
|
|
39
|
+
| Document handling | `document-management` |
|
|
40
|
+
| Task workflows | `task-management` |
|
|
41
|
+
| Item CRUD | `item-management` |
|
|
42
|
+
| Unit/currency | `primitives` |
|
|
43
|
+
|
|
44
|
+
### Resolver Content
|
|
45
|
+
|
|
46
|
+
For each resolver, extract:
|
|
47
|
+
|
|
48
|
+
- **Name**: camelCase action-verb (e.g., `createSupplierInvitation`)
|
|
49
|
+
- **Type**: Mutation or Query
|
|
50
|
+
- **Module**: which erp-kit module provides the command
|
|
51
|
+
- **Command**: which module command it calls
|
|
52
|
+
- **Inputs**: parameters from the flow step
|
|
53
|
+
- **Outputs**: expected return data
|
|
54
|
+
- **Error scenarios**: what can go wrong
|
|
55
|
+
|
|
56
|
+
## Naming Convention
|
|
57
|
+
|
|
58
|
+
- Resolver filename: camelCase matching the operation name
|
|
59
|
+
- Action-focused: `createSupplierInvitation.md`, `updateItem.md`
|
|
60
|
+
|
|
61
|
+
## Output Format
|
|
62
|
+
|
|
63
|
+
Return your findings as a structured markdown report:
|
|
64
|
+
|
|
65
|
+
### Resolvers
|
|
66
|
+
|
|
67
|
+
For each resolver:
|
|
68
|
+
|
|
69
|
+
- **Resolver:** `<resolverName>`
|
|
70
|
+
- **Type:** Mutation / Query
|
|
71
|
+
- **Module:** module name
|
|
72
|
+
- **Command:** command name
|
|
73
|
+
- **Flow steps:** which flow steps this resolver supports
|
|
74
|
+
- **Inputs:** bulleted list of input fields
|
|
75
|
+
- **Error scenarios:** bulleted list of error cases
|
|
76
|
+
|
|
77
|
+
### Built-in Queries
|
|
78
|
+
|
|
79
|
+
List entities that only need built-in list/get queries (no custom resolver needed).
|
|
80
|
+
|
|
81
|
+
### Module Dependencies
|
|
82
|
+
|
|
83
|
+
Table with columns: Module, Required Commands, Status (exists/missing)
|
|
84
|
+
|
|
85
|
+
### Summary
|
|
86
|
+
|
|
87
|
+
- Total custom resolvers
|
|
88
|
+
- Total built-in queries
|
|
89
|
+
- 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,168 @@
|
|
|
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
|
+
## References
|
|
164
|
+
|
|
165
|
+
- [Link format reference](../erp-kit-app-shared/references/link-format-reference.md)
|
|
166
|
+
- [Parity report format](references/parity-report-format.md)
|
|
167
|
+
- For plan creation, see erp-kit-app-3-plan
|
|
168
|
+
- 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.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Parity Report Format
|
|
2
|
+
|
|
3
|
+
All parity check agents return results in this JSON structure.
|
|
4
|
+
|
|
5
|
+
## Schema
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"check_type": "<one of: business-flow-story-parity, actor-flow-parity, story-screen-parity, story-resolver-parity, orphan-detection>",
|
|
10
|
+
"app": "<app-name>",
|
|
11
|
+
"gaps": [
|
|
12
|
+
{
|
|
13
|
+
"source": "<source doc path>",
|
|
14
|
+
"target": "<target doc path or 'missing'>",
|
|
15
|
+
"check": "<check_id from the agent's parity checks table>",
|
|
16
|
+
"status": "pass | fail | skip",
|
|
17
|
+
"detail": "<human-readable description of the finding>"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"inconsistencies": [
|
|
21
|
+
{
|
|
22
|
+
"type": "<inconsistency type, e.g. link_mismatch>",
|
|
23
|
+
"location": "<source vs target description>",
|
|
24
|
+
"detail": "<human-readable description>"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"summary": {
|
|
28
|
+
"total_checks": 0,
|
|
29
|
+
"passed": 0,
|
|
30
|
+
"failed": 0,
|
|
31
|
+
"skipped": 0
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Field Reference
|
|
37
|
+
|
|
38
|
+
### gaps[]
|
|
39
|
+
|
|
40
|
+
One entry per parity check performed. `status` is:
|
|
41
|
+
|
|
42
|
+
- `pass`: source and target are consistent
|
|
43
|
+
- `fail`: gap or mismatch found
|
|
44
|
+
- `skip`: target docs missing or empty, check could not run
|
|
45
|
+
|
|
46
|
+
### inconsistencies[]
|
|
47
|
+
|
|
48
|
+
Cross-cutting issues found during the check that don't fit a single gap entry (e.g., link format violations, naming mismatches across multiple docs).
|
|
49
|
+
|
|
50
|
+
### summary
|
|
51
|
+
|
|
52
|
+
Aggregate counts. `total_checks = passed + failed + skipped`.
|