@shanyucoder/flowgrid 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (779) hide show
  1. package/README.md +194 -0
  2. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/IntegrationContext.cs +56 -0
  3. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/IntegrationGen.csproj +16 -0
  4. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/NameUtil.cs +18 -0
  5. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Program.cs +265 -0
  6. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/application_service.cs.scriban +27 -0
  7. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/handoff.md.scriban +15 -0
  8. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/infrastructure_mock.cs.scriban +20 -0
  9. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/presenter.cs.scriban +41 -0
  10. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/Templates/service_test.cs.scriban +17 -0
  11. package/adapters/dotnet-integration/codegen/runners/IntegrationGen/YamlMap.cs +49 -0
  12. package/adapters/dotnet-integration/registries/dotnet-integration.codegen.registry.json +8 -0
  13. package/adapters/dotnet-line/codegen/runners/LineGen/LineContext.cs +43 -0
  14. package/adapters/dotnet-line/codegen/runners/LineGen/LineGen.csproj +16 -0
  15. package/adapters/dotnet-line/codegen/runners/LineGen/NameUtil.cs +12 -0
  16. package/adapters/dotnet-line/codegen/runners/LineGen/Program.cs +201 -0
  17. package/adapters/dotnet-line/codegen/runners/LineGen/TemplateRenderer.cs +22 -0
  18. package/adapters/dotnet-line/codegen/runners/LineGen/Templates/handoff.md.scriban +15 -0
  19. package/adapters/dotnet-line/codegen/runners/LineGen/Templates/service.cs.scriban +21 -0
  20. package/adapters/dotnet-line/codegen/runners/LineGen/Templates/service_interface.cs.scriban +20 -0
  21. package/adapters/dotnet-line/codegen/runners/LineGen/Templates/view_model.cs.scriban +28 -0
  22. package/adapters/dotnet-line/codegen/runners/LineGen/Templates/view_model_test.cs.scriban +22 -0
  23. package/adapters/dotnet-line/codegen/runners/LineGen/YamlMap.cs +49 -0
  24. package/adapters/dotnet-line/registries/dotnet-line.codegen.registry.json +8 -0
  25. package/adapters/fastapi/codegen/runners/fast_gen/__init__.py +1 -0
  26. package/adapters/fastapi/codegen/runners/fast_gen/__main__.py +3 -0
  27. package/adapters/fastapi/codegen/runners/fast_gen/cli.py +175 -0
  28. package/adapters/fastapi/codegen/runners/fast_gen/plan.py +285 -0
  29. package/adapters/fastapi/codegen/runners/fast_gen/read_spec.py +34 -0
  30. package/adapters/fastapi/codegen/runners/fast_gen/registry.py +9 -0
  31. package/adapters/fastapi/codegen/runners/fast_gen/wire.py +28 -0
  32. package/adapters/fastapi/codegen/runners/fast_gen/write_files.py +232 -0
  33. package/adapters/fastapi/codegen/runners/generate +5 -0
  34. package/adapters/fastapi/codegen/runners/validate-registry.mjs +54 -0
  35. package/adapters/fastapi/codegen/templates/presenter.py.j2 +11 -0
  36. package/adapters/fastapi/codegen/templates/router.py.j2 +69 -0
  37. package/adapters/fastapi/codegen/templates/schemas_request.py.j2 +26 -0
  38. package/adapters/fastapi/codegen/templates/schemas_response.py.j2 +7 -0
  39. package/adapters/fastapi/codegen/templates/service_create.py.j2 +10 -0
  40. package/adapters/fastapi/codegen/templates/service_delete.py.j2 +10 -0
  41. package/adapters/fastapi/codegen/templates/service_search.py.j2 +9 -0
  42. package/adapters/fastapi/codegen/templates/service_update.py.j2 +11 -0
  43. package/adapters/fastapi/codegen/templates/store.py.j2 +1 -0
  44. package/adapters/fastapi/codegen/templates/test_router.py.j2 +13 -0
  45. package/adapters/fastapi/registries/codegen.registry.json +47 -0
  46. package/adapters/fastapi/registries/common.registry.json +23 -0
  47. package/adapters/fastapi/registries/unit-test.registry.json +12 -0
  48. package/adapters/fastapi/unitgen/runners/fast_unit_gen/__init__.py +1 -0
  49. package/adapters/fastapi/unitgen/runners/fast_unit_gen/cli.py +188 -0
  50. package/adapters/fastapi/unitgen/runners/generate +5 -0
  51. package/adapters/fastapi/unitgen/runners/validate-registry.mjs +48 -0
  52. package/adapters/fastapi/unitgen/templates/test_service.py.j2 +12 -0
  53. package/adapters/laravel/codegen/runners/README.md +45 -0
  54. package/adapters/laravel/codegen/runners/generate.mjs +296 -0
  55. package/adapters/laravel/codegen/runners/lib/codegen-registry.mjs +60 -0
  56. package/adapters/laravel/codegen/runners/lib/detect-existing.mjs +84 -0
  57. package/adapters/laravel/codegen/runners/lib/exec-artisan.mjs +86 -0
  58. package/adapters/laravel/codegen/runners/lib/parse-tags.mjs +49 -0
  59. package/adapters/laravel/codegen/runners/lib/plan.mjs +122 -0
  60. package/adapters/laravel/codegen/runners/lib/read-spec.mjs +30 -0
  61. package/adapters/laravel/codegen/runners/lib/resolve-commands.mjs +234 -0
  62. package/adapters/laravel/codegen/runners/lib/stub-services.mjs +91 -0
  63. package/adapters/laravel/codegen/runners/lib/tag-plan.mjs +155 -0
  64. package/adapters/laravel/codegen/runners/lib/validate.mjs +77 -0
  65. package/adapters/laravel/codegen/runners/lib/workspace-analysis.mjs +202 -0
  66. package/adapters/laravel/codegen/runners/lib/write-handoff.mjs +149 -0
  67. package/adapters/laravel/codegen/runners/lib/write-manifest.mjs +81 -0
  68. package/adapters/laravel/codegen/runners/validate-registry.mjs +52 -0
  69. package/adapters/laravel/php/README.md +26 -0
  70. package/adapters/laravel/php/bin/unit-gen.php +307 -0
  71. package/adapters/laravel/php/bin/validate-registry.php +61 -0
  72. package/adapters/laravel/php/composer.json +16 -0
  73. package/adapters/laravel/php/src/ArtisanRunner.php +56 -0
  74. package/adapters/laravel/php/src/Autoload.php +15 -0
  75. package/adapters/laravel/php/src/CodegenManifest.php +28 -0
  76. package/adapters/laravel/php/src/ParseTags.php +62 -0
  77. package/adapters/laravel/php/src/ProjectResolver.php +100 -0
  78. package/adapters/laravel/php/src/SpecExtract.php +193 -0
  79. package/adapters/laravel/php/src/SpecReader.php +57 -0
  80. package/adapters/laravel/php/src/TemplateRenderer.php +134 -0
  81. package/adapters/laravel/php/src/UnitPlanner.php +396 -0
  82. package/adapters/laravel/php/src/UnitRegistry.php +100 -0
  83. package/adapters/laravel/php/src/WhenEval.php +111 -0
  84. package/adapters/laravel/php/src/WorkspaceInspector.php +240 -0
  85. package/adapters/laravel/php/src/WriteFiles.php +194 -0
  86. package/adapters/laravel/php/templates/actions/relationship-sync.behavior.test.php.stub +50 -0
  87. package/adapters/laravel/php/templates/controllers/controller-invoke.test.php.stub +34 -0
  88. package/adapters/laravel/php/templates/queries/chain-scope.behavior.test.php.stub +34 -0
  89. package/adapters/laravel/php/templates/requests/default-per-page.behavior.test.php.stub +19 -0
  90. package/adapters/laravel/php/templates/requests/request-enriched.test.php.stub +66 -0
  91. package/adapters/laravel/php/templates/requests/rules-keys.behavior.test.php.stub +19 -0
  92. package/adapters/laravel/php/templates/resources/nested-relations.behavior.test.php.stub +25 -0
  93. package/adapters/laravel/php/templates/resources/openapi-shape.behavior.test.php.stub +28 -0
  94. package/adapters/laravel/php/templates/support/ModuleTestSupport.php.stub +32 -0
  95. package/adapters/laravel/registries/codegen.registry.json +190 -0
  96. package/adapters/laravel/registries/unit-test.registry.json +179 -0
  97. package/adapters/laravel/shared/project.mjs +62 -0
  98. package/adapters/nestjs/README.md +16 -0
  99. package/adapters/nestjs/nest-unitgen/runners/README.md +17 -0
  100. package/adapters/nestjs/nest-unitgen/runners/generate.mjs +113 -0
  101. package/adapters/nestjs/nest-unitgen/runners/lib/render.mjs +14 -0
  102. package/adapters/nestjs/nest-unitgen/runners/lib/write-files.mjs +40 -0
  103. package/adapters/nestjs/nest-unitgen/runners/validate-registry.mjs +35 -0
  104. package/adapters/nestjs/nest-unitgen/templates/commands/create.handler.spec.ts.hbs +32 -0
  105. package/adapters/nestjs/nest-unitgen/templates/commands/delete.handler.spec.ts.hbs +32 -0
  106. package/adapters/nestjs/nest-unitgen/templates/commands/update.handler.spec.ts.hbs +32 -0
  107. package/adapters/nestjs/nest-unitgen/templates/handlers/search.handler.spec.ts.hbs +33 -0
  108. package/adapters/nestjs/nest-unitgen/templates/resource/entity.resource.spec.ts.hbs +22 -0
  109. package/adapters/nestjs/nestgen/runners/README.md +30 -0
  110. package/adapters/nestjs/nestgen/runners/generate.mjs +87 -0
  111. package/adapters/nestjs/nestgen/runners/lib/orm-fields.mjs +253 -0
  112. package/adapters/nestjs/nestgen/runners/lib/plan.mjs +124 -0
  113. package/adapters/nestjs/nestgen/runners/lib/read-spec.mjs +52 -0
  114. package/adapters/nestjs/nestgen/runners/lib/render.mjs +52 -0
  115. package/adapters/nestjs/nestgen/runners/lib/workspace-analysis.mjs +80 -0
  116. package/adapters/nestjs/nestgen/runners/lib/write-files.mjs +49 -0
  117. package/adapters/nestjs/nestgen/runners/validate-registry.mjs +36 -0
  118. package/adapters/nestjs/nestgen/templates/commands/create.command.ts.hbs +3 -0
  119. package/adapters/nestjs/nestgen/templates/commands/create.handler.ts.hbs +34 -0
  120. package/adapters/nestjs/nestgen/templates/commands/delete.command.ts.hbs +3 -0
  121. package/adapters/nestjs/nestgen/templates/commands/delete.handler.ts.hbs +33 -0
  122. package/adapters/nestjs/nestgen/templates/commands/update.command.ts.hbs +6 -0
  123. package/adapters/nestjs/nestgen/templates/commands/update.handler.ts.hbs +34 -0
  124. package/adapters/nestjs/nestgen/templates/entity.controller.ts.hbs +51 -0
  125. package/adapters/nestjs/nestgen/templates/entity.resource.ts.hbs +45 -0
  126. package/adapters/nestjs/nestgen/templates/module.module.ts.hbs +38 -0
  127. package/adapters/nestjs/nestgen/templates/orm/prisma.entity.ts.hbs +10 -0
  128. package/adapters/nestjs/nestgen/templates/orm/prisma.model.prisma.hbs +9 -0
  129. package/adapters/nestjs/nestgen/templates/orm/typeorm.entity.ts.hbs +20 -0
  130. package/adapters/nestjs/nestgen/templates/queries/search.handler.ts.hbs +36 -0
  131. package/adapters/nestjs/nestgen/templates/queries/search.query.ts.hbs +3 -0
  132. package/adapters/nestjs/registries/nest-codegen.registry.json +41 -0
  133. package/adapters/nestjs/registries/nest-unit-test.registry.json +31 -0
  134. package/adapters/nextjs/codegen/runners/README.md +68 -0
  135. package/adapters/nextjs/codegen/runners/generate.mjs +236 -0
  136. package/adapters/nextjs/codegen/runners/lib/component-resolve.mjs +79 -0
  137. package/adapters/nextjs/codegen/runners/lib/design-registry.mjs +333 -0
  138. package/adapters/nextjs/codegen/runners/lib/naming.mjs +236 -0
  139. package/adapters/nextjs/codegen/runners/lib/page-lifecycle.mjs +258 -0
  140. package/adapters/nextjs/codegen/runners/lib/plan.mjs +399 -0
  141. package/adapters/nextjs/codegen/runners/lib/read-spec.mjs +7 -0
  142. package/adapters/nextjs/codegen/runners/lib/render.mjs +47 -0
  143. package/adapters/nextjs/codegen/runners/lib/resolve-hub-id.mjs +288 -0
  144. package/adapters/nextjs/codegen/runners/lib/slots.mjs +121 -0
  145. package/adapters/nextjs/codegen/runners/lib/web-paths.mjs +64 -0
  146. package/adapters/nextjs/codegen/runners/lib/write-files.mjs +106 -0
  147. package/adapters/nextjs/codegen/runners/validate-registry.mjs +99 -0
  148. package/adapters/nextjs/codegen/templates/common/confirm-dialog.hbs +81 -0
  149. package/adapters/nextjs/codegen/templates/common/delete-flow.hbs +106 -0
  150. package/adapters/nextjs/codegen/templates/create/form.tsx.hbs +45 -0
  151. package/adapters/nextjs/codegen/templates/create/mock.ts.hbs +15 -0
  152. package/adapters/nextjs/codegen/templates/create/page.tsx.hbs +12 -0
  153. package/adapters/nextjs/codegen/templates/create/service.ts.hbs +25 -0
  154. package/adapters/nextjs/codegen/templates/create/useForm.ts.hbs +59 -0
  155. package/adapters/nextjs/codegen/templates/create/validation.ts.hbs +16 -0
  156. package/adapters/nextjs/codegen/templates/list/mock.ts.hbs +25 -0
  157. package/adapters/nextjs/codegen/templates/list/page.custom.tsx.hbs +65 -0
  158. package/adapters/nextjs/codegen/templates/list/page.tsx.hbs +37 -0
  159. package/adapters/nextjs/codegen/templates/list/service.ts.hbs +37 -0
  160. package/adapters/nextjs/codegen/templates/list/useList.ts.hbs +93 -0
  161. package/adapters/nextjs/codegen/templates/list/useListColumns.ts.hbs +27 -0
  162. package/adapters/nextjs/codegen/templates/list/useListExport.ts.hbs +31 -0
  163. package/adapters/nextjs/codegen/templates/list/useListFilters.ts.hbs +50 -0
  164. package/adapters/nextjs/codegen/templates/store/store.ts.hbs +28 -0
  165. package/adapters/nextjs/contractgen/runners/README.md +47 -0
  166. package/adapters/nextjs/contractgen/runners/generate.mjs +108 -0
  167. package/adapters/nextjs/contractgen/runners/lib/field-zod.mjs +83 -0
  168. package/adapters/nextjs/contractgen/runners/lib/naming.mjs +46 -0
  169. package/adapters/nextjs/contractgen/runners/lib/plan.mjs +147 -0
  170. package/adapters/nextjs/contractgen/runners/lib/render.mjs +57 -0
  171. package/adapters/nextjs/contractgen/runners/lib/write-files.mjs +54 -0
  172. package/adapters/nextjs/contractgen/runners/validate-registry.mjs +54 -0
  173. package/adapters/nextjs/contractgen/templates/index.ts.hbs +8 -0
  174. package/adapters/nextjs/contractgen/templates/read.schema.ts.hbs +22 -0
  175. package/adapters/nextjs/contractgen/templates/relationships.meta.ts.hbs +23 -0
  176. package/adapters/nextjs/contractgen/templates/types.ts.hbs +15 -0
  177. package/adapters/nextjs/contractgen/templates/write.schema.ts.hbs +11 -0
  178. package/adapters/nextjs/registries/contract-field.registry.json +22 -0
  179. package/adapters/nextjs/unitgen/runners/README.md +12 -0
  180. package/adapters/nextjs/unitgen/runners/generate.mjs +201 -0
  181. package/adapters/nextjs/unitgen/runners/lib/parse-tags.mjs +67 -0
  182. package/adapters/nextjs/unitgen/runners/lib/plan.mjs +563 -0
  183. package/adapters/nextjs/unitgen/runners/lib/read-codegen.mjs +42 -0
  184. package/adapters/nextjs/unitgen/runners/lib/render.mjs +32 -0
  185. package/adapters/nextjs/unitgen/runners/lib/resolve-model.mjs +28 -0
  186. package/adapters/nextjs/unitgen/runners/lib/unit-registry.mjs +52 -0
  187. package/adapters/nextjs/unitgen/runners/lib/write-files.mjs +103 -0
  188. package/adapters/nextjs/unitgen/runners/lib/write-spec-tags.mjs +37 -0
  189. package/adapters/nextjs/unitgen/runners/validate-registry.mjs +74 -0
  190. package/adapters/nextjs/unitgen/templates/hooks/use-form.test.ts.hbs +51 -0
  191. package/adapters/nextjs/unitgen/templates/hooks/use-list.test.ts.hbs +63 -0
  192. package/adapters/nextjs/unitgen/templates/models/schema.test.ts.hbs +24 -0
  193. package/adapters/nextjs/unitgen/templates/services/service.create.test.ts.hbs +28 -0
  194. package/adapters/nextjs/unitgen/templates/services/service.export.test.ts.hbs +20 -0
  195. package/adapters/nextjs/unitgen/templates/services/service.search.test.ts.hbs +25 -0
  196. package/adapters/nextjs/unitgen/templates/services/service.wire.test.ts.hbs +37 -0
  197. package/adapters/nextjs/unitgen/templates/validations/schemas.test.ts.hbs +19 -0
  198. package/adapters/nuxt4/codegen/runners/README.md +83 -0
  199. package/adapters/nuxt4/codegen/runners/generate.mjs +236 -0
  200. package/adapters/nuxt4/codegen/runners/lib/component-resolve.mjs +66 -0
  201. package/adapters/nuxt4/codegen/runners/lib/design-registry.mjs +332 -0
  202. package/adapters/nuxt4/codegen/runners/lib/naming.mjs +246 -0
  203. package/adapters/nuxt4/codegen/runners/lib/page-lifecycle.mjs +254 -0
  204. package/adapters/nuxt4/codegen/runners/lib/plan.mjs +370 -0
  205. package/adapters/nuxt4/codegen/runners/lib/read-spec.mjs +7 -0
  206. package/adapters/nuxt4/codegen/runners/lib/render.mjs +47 -0
  207. package/adapters/nuxt4/codegen/runners/lib/resolve-hub-id.mjs +288 -0
  208. package/adapters/nuxt4/codegen/runners/lib/slots.mjs +121 -0
  209. package/adapters/nuxt4/codegen/runners/lib/write-files.mjs +106 -0
  210. package/adapters/nuxt4/codegen/runners/validate-registry.mjs +121 -0
  211. package/adapters/nuxt4/codegen/templates/create/form.vue.hbs +26 -0
  212. package/adapters/nuxt4/codegen/templates/create/mock.ts.hbs +11 -0
  213. package/adapters/nuxt4/codegen/templates/create/model.schema.ts.hbs +14 -0
  214. package/adapters/nuxt4/codegen/templates/create/model.types.ts.hbs +9 -0
  215. package/adapters/nuxt4/codegen/templates/create/page.vue.hbs +11 -0
  216. package/adapters/nuxt4/codegen/templates/create/service.ts.hbs +25 -0
  217. package/adapters/nuxt4/codegen/templates/create/useForm.ts.hbs +29 -0
  218. package/adapters/nuxt4/codegen/templates/create/validation.ts.hbs +12 -0
  219. package/adapters/nuxt4/codegen/templates/list/mock.ts.hbs +27 -0
  220. package/adapters/nuxt4/codegen/templates/list/model.index.ts.hbs +2 -0
  221. package/adapters/nuxt4/codegen/templates/list/model.schema.ts.hbs +16 -0
  222. package/adapters/nuxt4/codegen/templates/list/model.types.ts.hbs +9 -0
  223. package/adapters/nuxt4/codegen/templates/list/page.custom.vue.hbs +105 -0
  224. package/adapters/nuxt4/codegen/templates/list/page.vue.hbs +55 -0
  225. package/adapters/nuxt4/codegen/templates/list/service.ts.hbs +37 -0
  226. package/adapters/nuxt4/codegen/templates/list/useList.ts.hbs +82 -0
  227. package/adapters/nuxt4/codegen/templates/list/useListColumns.ts.hbs +21 -0
  228. package/adapters/nuxt4/codegen/templates/list/useListExport.ts.hbs +26 -0
  229. package/adapters/nuxt4/codegen/templates/list/useListFilters.ts.hbs +45 -0
  230. package/adapters/nuxt4/codegen/templates/partials/component-stub.vue.hbs +44 -0
  231. package/adapters/nuxt4/codegen/templates/store/store.ts.hbs +30 -0
  232. package/adapters/nuxt4/unitgen/runners/README.md +12 -0
  233. package/adapters/nuxt4/unitgen/runners/generate.mjs +201 -0
  234. package/adapters/nuxt4/unitgen/runners/lib/parse-tags.mjs +49 -0
  235. package/adapters/nuxt4/unitgen/runners/lib/plan.mjs +567 -0
  236. package/adapters/nuxt4/unitgen/runners/lib/read-codegen.mjs +42 -0
  237. package/adapters/nuxt4/unitgen/runners/lib/render.mjs +32 -0
  238. package/adapters/nuxt4/unitgen/runners/lib/unit-registry.mjs +52 -0
  239. package/adapters/nuxt4/unitgen/runners/lib/write-files.mjs +103 -0
  240. package/adapters/nuxt4/unitgen/runners/lib/write-spec-tags.mjs +37 -0
  241. package/adapters/nuxt4/unitgen/runners/validate-registry.mjs +74 -0
  242. package/adapters/nuxt4/unitgen/templates/composables/use-form.test.ts.hbs +56 -0
  243. package/adapters/nuxt4/unitgen/templates/composables/use-list.test.ts.hbs +59 -0
  244. package/adapters/nuxt4/unitgen/templates/models/schema.test.ts.hbs +24 -0
  245. package/adapters/nuxt4/unitgen/templates/services/service.create.test.ts.hbs +28 -0
  246. package/adapters/nuxt4/unitgen/templates/services/service.export.test.ts.hbs +20 -0
  247. package/adapters/nuxt4/unitgen/templates/services/service.search.test.ts.hbs +25 -0
  248. package/adapters/nuxt4/unitgen/templates/services/service.wire.test.ts.hbs +37 -0
  249. package/adapters/nuxt4/unitgen/templates/validations/schemas.test.ts.hbs +19 -0
  250. package/adapters/shared/common-gen.mjs +599 -0
  251. package/adapters/shared/common-ui.catalog.json +224 -0
  252. package/adapters/shared/css-adapters/shadcn.mjs +56 -0
  253. package/adapters/shared/css-adapters/winforms.mjs +46 -0
  254. package/adapters/shared/css-gen.mjs +87 -0
  255. package/adapters/shared/fe-layout-profiles.mjs +74 -0
  256. package/adapters/shared/fe-ui-inventory.mjs +62 -0
  257. package/adapters/shared/i18n-merge.mjs +56 -0
  258. package/adapters/shared/read-fe-ir.mjs +64 -0
  259. package/adapters/shared/resolve-cli.mjs +16 -0
  260. package/adapters/shared/resolve-hub-id.mjs +381 -0
  261. package/adapters/shared/surface-common.mjs +41 -0
  262. package/bin/flowgrid-mcp.mjs +29 -0
  263. package/bin/flowgrid.mjs +915 -0
  264. package/bin/lib/agent-mcp.mjs +70 -0
  265. package/bin/lib/agent-profiles.mjs +127 -0
  266. package/bin/lib/audit-run.mjs +96 -0
  267. package/bin/lib/cli-update.mjs +254 -0
  268. package/bin/lib/doctor.mjs +163 -0
  269. package/bin/lib/harness-overlay.mjs +80 -0
  270. package/bin/lib/harness-sync.mjs +427 -0
  271. package/bin/lib/init-scaffold.mjs +158 -0
  272. package/bin/lib/npm-registry.mjs +45 -0
  273. package/bin/lib/project-gitignore.mjs +39 -0
  274. package/dist/codegen/adapters/run-be.d.ts +13 -0
  275. package/dist/codegen/adapters/run-be.js +190 -0
  276. package/dist/codegen/adapters/run-be.js.map +1 -0
  277. package/dist/codegen/adapters/run.d.ts +44 -0
  278. package/dist/codegen/adapters/run.js +146 -0
  279. package/dist/codegen/adapters/run.js.map +1 -0
  280. package/dist/codegen/config/project-root.d.ts +13 -0
  281. package/dist/codegen/config/project-root.js +64 -0
  282. package/dist/codegen/config/project-root.js.map +1 -0
  283. package/dist/codegen/mcp/tools.d.ts +2 -0
  284. package/dist/codegen/mcp/tools.js +138 -0
  285. package/dist/codegen/mcp/tools.js.map +1 -0
  286. package/dist/codegen/registries/common.d.ts +28 -0
  287. package/dist/codegen/registries/common.js +54 -0
  288. package/dist/codegen/registries/common.js.map +1 -0
  289. package/dist/dna/config/project-root.d.ts +12 -0
  290. package/dist/dna/config/project-root.js +41 -0
  291. package/dist/dna/config/project-root.js.map +1 -0
  292. package/dist/dna/profile/detect.d.ts +14 -0
  293. package/dist/dna/profile/detect.js +159 -0
  294. package/dist/dna/profile/detect.js.map +1 -0
  295. package/dist/dna/profile/manifest.d.ts +17 -0
  296. package/dist/dna/profile/manifest.js +10 -0
  297. package/dist/dna/profile/manifest.js.map +1 -0
  298. package/dist/docs/cli/engines.d.ts +13 -0
  299. package/dist/docs/cli/engines.js +53 -0
  300. package/dist/docs/cli/engines.js.map +1 -0
  301. package/dist/docs/config/docs-root.d.ts +8 -0
  302. package/dist/docs/config/docs-root.js +66 -0
  303. package/dist/docs/config/docs-root.js.map +1 -0
  304. package/dist/docs/mcp/tools.d.ts +2 -0
  305. package/dist/docs/mcp/tools.js +351 -0
  306. package/dist/docs/mcp/tools.js.map +1 -0
  307. package/dist/docs/scan/ids.d.ts +29 -0
  308. package/dist/docs/scan/ids.js +237 -0
  309. package/dist/docs/scan/ids.js.map +1 -0
  310. package/dist/docs/scan/links.d.ts +10 -0
  311. package/dist/docs/scan/links.js +98 -0
  312. package/dist/docs/scan/links.js.map +1 -0
  313. package/dist/docs/scan/route.d.ts +8 -0
  314. package/dist/docs/scan/route.js +114 -0
  315. package/dist/docs/scan/route.js.map +1 -0
  316. package/dist/graph/analyze/analyze-bullets.d.ts +17 -0
  317. package/dist/graph/analyze/analyze-bullets.js +137 -0
  318. package/dist/graph/analyze/analyze-bullets.js.map +1 -0
  319. package/dist/graph/analyze/analyze-spec.d.ts +12 -0
  320. package/dist/graph/analyze/analyze-spec.js +249 -0
  321. package/dist/graph/analyze/analyze-spec.js.map +1 -0
  322. package/dist/graph/analyze/api-routes.d.ts +66 -0
  323. package/dist/graph/analyze/api-routes.js +370 -0
  324. package/dist/graph/analyze/api-routes.js.map +1 -0
  325. package/dist/graph/analyze/context-orphan.d.ts +12 -0
  326. package/dist/graph/analyze/context-orphan.js +229 -0
  327. package/dist/graph/analyze/context-orphan.js.map +1 -0
  328. package/dist/graph/analyze/grill-check.d.ts +31 -0
  329. package/dist/graph/analyze/grill-check.js +92 -0
  330. package/dist/graph/analyze/grill-check.js.map +1 -0
  331. package/dist/graph/analyze/parity-check.d.ts +25 -0
  332. package/dist/graph/analyze/parity-check.js +406 -0
  333. package/dist/graph/analyze/parity-check.js.map +1 -0
  334. package/dist/graph/analyze/product-paths.d.ts +13 -0
  335. package/dist/graph/analyze/product-paths.js +29 -0
  336. package/dist/graph/analyze/product-paths.js.map +1 -0
  337. package/dist/graph/analyze/surface-paths.d.ts +13 -0
  338. package/dist/graph/analyze/surface-paths.js +29 -0
  339. package/dist/graph/analyze/surface-paths.js.map +1 -0
  340. package/dist/graph/config/load-config.d.ts +30 -0
  341. package/dist/graph/config/load-config.js +112 -0
  342. package/dist/graph/config/load-config.js.map +1 -0
  343. package/dist/graph/config/platform-repos.d.ts +36 -0
  344. package/dist/graph/config/platform-repos.js +124 -0
  345. package/dist/graph/config/platform-repos.js.map +1 -0
  346. package/dist/graph/config/resolve-paths.d.ts +45 -0
  347. package/dist/graph/config/resolve-paths.js +121 -0
  348. package/dist/graph/config/resolve-paths.js.map +1 -0
  349. package/dist/graph/db/index-store.d.ts +67 -0
  350. package/dist/graph/db/index-store.js +179 -0
  351. package/dist/graph/db/index-store.js.map +1 -0
  352. package/dist/graph/gen/run-command.d.ts +40 -0
  353. package/dist/graph/gen/run-command.js +110 -0
  354. package/dist/graph/gen/run-command.js.map +1 -0
  355. package/dist/graph/lexicon/infer-lane.d.ts +11 -0
  356. package/dist/graph/lexicon/infer-lane.js +28 -0
  357. package/dist/graph/lexicon/infer-lane.js.map +1 -0
  358. package/dist/graph/lexicon/load-lexicon.d.ts +60 -0
  359. package/dist/graph/lexicon/load-lexicon.js +492 -0
  360. package/dist/graph/lexicon/load-lexicon.js.map +1 -0
  361. package/dist/graph/mcp/tools.d.ts +9 -0
  362. package/dist/graph/mcp/tools.js +326 -0
  363. package/dist/graph/mcp/tools.js.map +1 -0
  364. package/dist/graph/registry/load-registries.d.ts +27 -0
  365. package/dist/graph/registry/load-registries.js +111 -0
  366. package/dist/graph/registry/load-registries.js.map +1 -0
  367. package/dist/graph/types.d.ts +208 -0
  368. package/dist/graph/types.js +11 -0
  369. package/dist/graph/types.js.map +1 -0
  370. package/dist/test/config/project-root.d.ts +5 -0
  371. package/dist/test/config/project-root.js +29 -0
  372. package/dist/test/config/project-root.js.map +1 -0
  373. package/dist/test/engines/run.d.ts +10 -0
  374. package/dist/test/engines/run.js +16 -0
  375. package/dist/test/engines/run.js.map +1 -0
  376. package/dist/test/mcp/tools.d.ts +2 -0
  377. package/dist/test/mcp/tools.js +43 -0
  378. package/dist/test/mcp/tools.js.map +1 -0
  379. package/dist/test/optional/fallback-evidence.d.ts +34 -0
  380. package/dist/test/optional/fallback-evidence.js +103 -0
  381. package/dist/test/optional/fallback-evidence.js.map +1 -0
  382. package/engines/cases/README.md +12 -0
  383. package/engines/cases/check-coverage.mjs +103 -0
  384. package/engines/cases/check-plans.mjs +31 -0
  385. package/engines/cases/gate.mjs +215 -0
  386. package/engines/cases/lib/audit-tc-traceability.mjs +139 -0
  387. package/engines/cases/lib/list-case-yaml.mjs +27 -0
  388. package/engines/cases/lib/parse-bundle-traceability.mjs +77 -0
  389. package/engines/cases/lib/render-github-catalog.mjs +141 -0
  390. package/engines/cases/lib/resolve-bundle-from-screen.mjs +73 -0
  391. package/engines/cases/lib/screen-facet-coverage.mjs +42 -0
  392. package/engines/cases/lib/validate-tc-schema.mjs +61 -0
  393. package/engines/cases/publish.mjs +4 -0
  394. package/engines/cases/render-cases.mjs +182 -0
  395. package/engines/cases/vitepress/config.ts +171 -0
  396. package/engines/cases/vitepress/theme/custom.css +418 -0
  397. package/engines/cases/vitepress/theme/index.ts +46 -0
  398. package/engines/codegen/adapters/shadcn.mjs +58 -0
  399. package/engines/codegen/adapters/winforms.mjs +46 -0
  400. package/engines/codegen/tokens.mjs +64 -0
  401. package/engines/docs/lib/load-dev-base-url.mjs +38 -0
  402. package/engines/docs/lib/markdown-table.mjs +65 -0
  403. package/engines/docs/lib/render-bundle-markdown.mjs +95 -0
  404. package/engines/docs/lib/render-design-tables.mjs +695 -0
  405. package/engines/docs/lib/render-github-catalog.mjs +194 -0
  406. package/engines/docs/lib/render-qa-list.mjs +57 -0
  407. package/engines/docs/lib/render-spec-markdown.mjs +19 -0
  408. package/engines/docs/lib/render-template.mjs +76 -0
  409. package/engines/docs/lib/route-page-probe.mjs +54 -0
  410. package/engines/docs/publish.mjs +4 -0
  411. package/engines/docs/render-docs.mjs +195 -0
  412. package/engines/docs/vitepress/config.ts +442 -0
  413. package/engines/docs/vitepress/surfaces-nav.mjs +171 -0
  414. package/engines/docs/vitepress/theme/custom.css +418 -0
  415. package/engines/docs/vitepress/theme/index.ts +46 -0
  416. package/engines/openapi/build-openapi-ui.mjs +72 -0
  417. package/engines/openapi/build-swagger-ui.mjs +72 -0
  418. package/engines/openapi/check-backend-spec.mjs +66 -0
  419. package/engines/openapi/gen-openapi.mjs +337 -0
  420. package/engines/openapi/render-backend-spec.mjs +170 -0
  421. package/engines/openapi/render-openapi.mjs +155 -0
  422. package/engines/shared/flowgrid-tests-docs.mjs +32 -0
  423. package/engines/spec/extract-i18n.mjs +74 -0
  424. package/engines/spec/legacy-dynamics-validate.mjs +67 -0
  425. package/engines/spec/lib/audit-api-gaps.mjs +198 -0
  426. package/engines/spec/lib/audit-bundle-gaps.mjs +582 -0
  427. package/engines/spec/lib/audit-e2e-coverage.mjs +381 -0
  428. package/engines/spec/lib/audit-fe-be-alignment.mjs +183 -0
  429. package/engines/spec/lib/audit-flow-gaps.mjs +151 -0
  430. package/engines/spec/lib/audit-legacy-gaps.mjs +73 -0
  431. package/engines/spec/lib/audit-scenario-coverage.mjs +175 -0
  432. package/engines/spec/lib/audit-testcase-bundle-cross.mjs +145 -0
  433. package/engines/spec/lib/audit-testcase-gaps.mjs +79 -0
  434. package/engines/spec/lib/audit-testcase-plan-gaps.mjs +131 -0
  435. package/engines/spec/lib/audit-testcase-tc.mjs +182 -0
  436. package/engines/spec/lib/audit-ux-affordance.mjs +269 -0
  437. package/engines/spec/lib/bundle-ir.mjs +360 -0
  438. package/engines/spec/lib/bundle-schema.mjs +199 -0
  439. package/engines/spec/lib/collect-screen-api-intents.mjs +69 -0
  440. package/engines/spec/lib/hydrate-design-api.mjs +58 -0
  441. package/engines/spec/lib/open-qa.mjs +66 -0
  442. package/engines/spec/lib/project-business-layout.mjs +214 -0
  443. package/engines/spec/lib/testcase-matrix-facets.mjs +9 -0
  444. package/engines/spec/merge-bundle.mjs +27 -0
  445. package/engines/spec/normalize-bundle-gen.mjs +69 -0
  446. package/engines/spec/split-all.mjs +78 -0
  447. package/engines/spec/split-bundle.mjs +45 -0
  448. package/engines/template-builder/runner.mjs +96 -0
  449. package/engines/template-builder/scanner.mjs +138 -0
  450. package/engines/testcase/_staging-from-portal/README-STAGING.md +13 -0
  451. package/engines/testcase/_staging-from-portal/runners/README.md +15 -0
  452. package/engines/testcase/_staging-from-portal/runners/generate.mjs +123 -0
  453. package/engines/testcase/_staging-from-portal/runners/lib/e2e-registry.mjs +77 -0
  454. package/engines/testcase/_staging-from-portal/runners/lib/plan.mjs +97 -0
  455. package/engines/testcase/_staging-from-portal/runners/lib/read-testcase.mjs +166 -0
  456. package/engines/testcase/_staging-from-portal/runners/lib/render.mjs +18 -0
  457. package/engines/testcase/_staging-from-portal/runners/lib/semantic-plan.mjs +178 -0
  458. package/engines/testcase/_staging-from-portal/runners/lib/write-files.mjs +42 -0
  459. package/engines/testcase/_staging-from-portal/runners/validate-registry.mjs +75 -0
  460. package/engines/testcase/_staging-from-portal/templates/page.ts.hbs +52 -0
  461. package/engines/testcase/_staging-from-portal/templates/partials/README.md +5 -0
  462. package/engines/testcase/_staging-from-portal/templates/spec.ts.hbs +214 -0
  463. package/engines/testcase/runners/README.md +27 -0
  464. package/engines/testcase/runners/generate-api.mjs +121 -0
  465. package/engines/testcase/runners/generate.mjs +161 -0
  466. package/engines/testcase/runners/lib/api-plan.mjs +64 -0
  467. package/engines/testcase/runners/lib/e2e-registry.mjs +77 -0
  468. package/engines/testcase/runners/lib/plan.mjs +123 -0
  469. package/engines/testcase/runners/lib/read-spec.mjs +37 -0
  470. package/engines/testcase/runners/lib/read-testcase.mjs +179 -0
  471. package/engines/testcase/runners/lib/render.mjs +18 -0
  472. package/engines/testcase/runners/lib/resolve-hub-id.mjs +324 -0
  473. package/engines/testcase/runners/lib/semantic-plan.mjs +178 -0
  474. package/engines/testcase/runners/lib/write-files.mjs +145 -0
  475. package/engines/testcase/runners/validate-registry.mjs +75 -0
  476. package/engines/testcase/templates/api.spec.ts.hbs +40 -0
  477. package/engines/testcase/templates/page.ts.hbs +69 -0
  478. package/engines/testcase/templates/partials/README.md +5 -0
  479. package/engines/testcase/templates/spec.ts.hbs +231 -0
  480. package/harness/agents/claude/rules/claude-flowgrid.mdc +9 -0
  481. package/harness/agents/cursor/rules/cursor-flowgrid.mdc +9 -0
  482. package/harness/agents/gemini_antigravity/rules/antigravity-mcp.mdc +10 -0
  483. package/harness/agents/kiro/rules/kiro-flowgrid.mdc +9 -0
  484. package/harness/be/adapters/dotnet-integration/skills/framework-rules-be/SKILL.md +21 -0
  485. package/harness/be/adapters/fastapi/skills/framework-rules-be/SKILL.md +27 -0
  486. package/harness/be/adapters/laravel/skills/framework-rules-be/SKILL.md +27 -0
  487. package/harness/be/extracts/artifactgraph-hooks-be.md +21 -0
  488. package/harness/be/extracts/risk-classes.md +69 -0
  489. package/harness/be/skills/api/SKILL.md +116 -0
  490. package/harness/be/skills/api-unit/SKILL.md +76 -0
  491. package/harness/be/skills/grill-api/SKILL.md +69 -0
  492. package/harness/be/skills/grill-api-unit/SKILL.md +57 -0
  493. package/harness/common/extracts/artifact-graph.md +23 -0
  494. package/harness/common/extracts/artifactgraph-hooks-core.md +17 -0
  495. package/harness/common/extracts/artifactgraph-phase-hooks.md +106 -0
  496. package/harness/common/extracts/core/agent-discipline.md +8 -0
  497. package/harness/common/extracts/docs-mark-detect.md +48 -0
  498. package/harness/common/extracts/docs-mark.md +62 -0
  499. package/harness/common/extracts/extract-registry.json +29 -0
  500. package/harness/common/extracts/ux-common-patterns.md +172 -0
  501. package/harness/common/rules/artifactgraph.mdc +26 -0
  502. package/harness/common/rules/cross-repo-index.mdc +47 -0
  503. package/harness/common/rules/flowgrid-ux-common.mdc +39 -0
  504. package/harness/common/rules/platform-code-size.mdc +24 -0
  505. package/harness/common/rules/team-flow-harness-state.mdc +12 -0
  506. package/harness/common/skills/business-impact-review/SKILL.md +106 -0
  507. package/harness/common/skills/configure-repo-maps/SKILL.md +58 -0
  508. package/harness/common/skills/docs-mark/SKILL.md +67 -0
  509. package/harness/common/skills/legacy/SKILL.md +29 -0
  510. package/harness/common/skills/ui-proposal/SKILL.md +28 -0
  511. package/harness/docs/extracts/agent-execution-protocol.md +31 -0
  512. package/harness/docs/extracts/architecture-core.md +71 -0
  513. package/harness/docs/extracts/artifactgraph-hooks-docs.md +15 -0
  514. package/harness/docs/extracts/artifactgraph-parity.md +10 -0
  515. package/harness/docs/extracts/business-process-trace.md +66 -0
  516. package/harness/docs/extracts/codegen/readiness.md +8 -0
  517. package/harness/docs/extracts/common-scope.md +65 -0
  518. package/harness/docs/extracts/docs-phase-hooks.md +22 -0
  519. package/harness/docs/extracts/extract-registry.docs.json +45 -0
  520. package/harness/docs/extracts/extract-registry.flowgrid-process.json +12 -0
  521. package/harness/docs/extracts/grill/validation.md +9 -0
  522. package/harness/docs/extracts/grill-docs-reconcile.md +5 -0
  523. package/harness/docs/extracts/qa-inbox.md +36 -0
  524. package/harness/docs/extracts/risk-classes.md +69 -0
  525. package/harness/docs/extracts/spec-core.md +5 -0
  526. package/harness/docs/extracts/spec-requirement.md +5 -0
  527. package/harness/docs/extracts/tpl-adr.md +23 -0
  528. package/harness/docs/extracts/tpl-arc42-chapter.md +29 -0
  529. package/harness/docs/extracts/tpl-cross-cutting.md +24 -0
  530. package/harness/docs/extracts/tpl-deployment.md +23 -0
  531. package/harness/docs/extracts/tpl-module.md +33 -0
  532. package/harness/docs/extracts/update-spec-delta.md +5 -0
  533. package/harness/docs/rules/agent-compliance.mdc +26 -0
  534. package/harness/docs/rules/docs-hub.mdc +54 -0
  535. package/harness/docs/rules/flowgrid-process.mdc +25 -0
  536. package/harness/docs/rules/team-flow-grill.mdc +31 -0
  537. package/harness/docs/rules/team-flow-harness-state.mdc +16 -0
  538. package/harness/docs/rules/team-flow-spec.mdc +36 -0
  539. package/harness/docs/schemas/flowgrid-docs/backend-api.schema.json +175 -0
  540. package/harness/docs/schemas/flowgrid-docs/missing-optional-event.schema.json +39 -0
  541. package/harness/docs/schemas/flowgrid-docs/spec.schema.json +643 -0
  542. package/harness/docs/schemas/flowgrid-docs/testcase.schema.json +29 -0
  543. package/harness/docs/schemas/flowgrid-process/missing-optional-event.schema.json +39 -0
  544. package/harness/docs/skills/adopt/SKILL.md +140 -0
  545. package/harness/docs/skills/api/SKILL.md +40 -0
  546. package/harness/docs/skills/api-integration/SKILL.md +110 -0
  547. package/harness/docs/skills/api-spec/SKILL.md +136 -0
  548. package/harness/docs/skills/api-update/SKILL.md +82 -0
  549. package/harness/docs/skills/architecture/SKILL.md +57 -0
  550. package/harness/docs/skills/architecture-grill/SKILL.md +29 -0
  551. package/harness/docs/skills/background-logic/SKILL.md +100 -0
  552. package/harness/docs/skills/build-templates/SKILL.md +47 -0
  553. package/harness/docs/skills/business-process/SKILL.md +109 -0
  554. package/harness/docs/skills/call-external/SKILL.md +32 -0
  555. package/harness/docs/skills/common/SKILL.md +46 -0
  556. package/harness/docs/skills/common-spec/SKILL.md +55 -0
  557. package/harness/docs/skills/cross-cutting/SKILL.md +33 -0
  558. package/harness/docs/skills/cross-entity-service/SKILL.md +32 -0
  559. package/harness/docs/skills/cross-service/SKILL.md +37 -0
  560. package/harness/docs/skills/db-erd/SKILL.md +29 -0
  561. package/harness/docs/skills/decision/SKILL.md +30 -0
  562. package/harness/docs/skills/deployment/SKILL.md +34 -0
  563. package/harness/docs/skills/docs-hub/SKILL.md +65 -0
  564. package/harness/docs/skills/grill/SKILL.md +46 -0
  565. package/harness/docs/skills/grill-api/SKILL.md +26 -0
  566. package/harness/docs/skills/grill-api-spec/SKILL.md +57 -0
  567. package/harness/docs/skills/grill-bqa/SKILL.md +119 -0
  568. package/harness/docs/skills/grill-common-spec/SKILL.md +43 -0
  569. package/harness/docs/skills/grill-dev/SKILL.md +172 -0
  570. package/harness/docs/skills/grill-docs/SKILL.md +79 -0
  571. package/harness/docs/skills/grill-integration-spec/SKILL.md +51 -0
  572. package/harness/docs/skills/module/SKILL.md +58 -0
  573. package/harness/docs/skills/openapi/SKILL.md +37 -0
  574. package/harness/docs/skills/overview/SKILL.md +42 -0
  575. package/harness/docs/skills/qa-resolve/SKILL.md +91 -0
  576. package/harness/docs/skills/spec/SKILL.md +240 -0
  577. package/harness/docs/skills/surfaces/SKILL.md +52 -0
  578. package/harness/docs/skills/update-spec/SKILL.md +83 -0
  579. package/harness/fe/adapters/dotnet-line/skills/framework-rules/SKILL.md +27 -0
  580. package/harness/fe/adapters/nextjs/skills/framework-rules/SKILL.md +29 -0
  581. package/harness/fe/adapters/nuxt4/skills/framework-rules/SKILL.md +33 -0
  582. package/harness/fe/extracts/artifactgraph-hooks-fe.md +15 -0
  583. package/harness/fe/extracts/risk-classes.md +69 -0
  584. package/harness/fe/rules/cross-repo-index-routing.mdc +24 -0
  585. package/harness/fe/rules/flowgrid-test-optional-accelerators.mdc +21 -0
  586. package/harness/fe/rules/platform-code-size.mdc +43 -0
  587. package/harness/fe/rules/platform-design-vocabulary.mdc +33 -0
  588. package/harness/fe/rules/team-flow-prototype.mdc +32 -0
  589. package/harness/fe/rules/team-flow-unit.mdc +27 -0
  590. package/harness/fe/skills/build-template-code/SKILL.md +42 -0
  591. package/harness/fe/skills/gen-common/SKILL.md +93 -0
  592. package/harness/fe/skills/grill-prototype/SKILL.md +41 -0
  593. package/harness/fe/skills/grill-test/SKILL.md +32 -0
  594. package/harness/fe/skills/grill-unit/SKILL.md +31 -0
  595. package/harness/fe/skills/model/SKILL.md +48 -0
  596. package/harness/fe/skills/prototype/SKILL.md +100 -0
  597. package/harness/fe/skills/test/SKILL.md +37 -0
  598. package/harness/fe/skills/unit/SKILL.md +55 -0
  599. package/harness/fe/skills/wire/SKILL.md +60 -0
  600. package/harness/shared/AGENTS.md +169 -0
  601. package/harness/shared/SSOT_AGENT_PROTOCOL.md +167 -0
  602. package/harness/shared/rules/flowgrid-code-optional-integrations.mdc +53 -0
  603. package/harness/shared/schemas/flowgrid-code/missing-optional-event.schema.json +62 -0
  604. package/harness/tests/extracts/artifactgraph-hooks-test.md +13 -0
  605. package/harness/tests/extracts/plans/readiness.md +14 -0
  606. package/harness/tests/rules/cross-repo-index-routing.mdc +24 -0
  607. package/harness/tests/rules/flowgrid-test-optional-accelerators.mdc +21 -0
  608. package/harness/tests/rules/plans-docs-first.mdc +13 -0
  609. package/harness/tests/skills/grill-testcase/SKILL.md +55 -0
  610. package/harness/tests/skills/scenario/SKILL.md +64 -0
  611. package/harness/tests/skills/test-api/SKILL.md +65 -0
  612. package/harness/tests/skills/testcase/SKILL.md +98 -0
  613. package/harness/tests/templates/SC.example.md +86 -0
  614. package/harness/tests/templates/TC.example-api.yaml +45 -0
  615. package/harness/tests/templates/TC.example.yaml +127 -0
  616. package/lexicon/registry-tags.en.txt +173 -0
  617. package/lexicon/testcase-taxonomy.en.txt +117 -0
  618. package/package.json +98 -0
  619. package/schemas/missing-optional-event.schema.json +37 -0
  620. package/schemas/testcase.schema.json +239 -0
  621. package/scripts/prepare-install.mjs +25 -0
  622. package/stacks/docs.json +21 -0
  623. package/stacks/dotnet-integration.json +66 -0
  624. package/stacks/dotnet-line.json +64 -0
  625. package/stacks/fastapi.json +98 -0
  626. package/stacks/generic.json +11 -0
  627. package/stacks/laravel.json +92 -0
  628. package/stacks/nextjs-nest.json +93 -0
  629. package/stacks/nextjs.json +132 -0
  630. package/stacks/nuxt4-nest.json +123 -0
  631. package/stacks/nuxt4.json +148 -0
  632. package/templates/project-skeleton/architecture/01-introduction/index.md +33 -0
  633. package/templates/project-skeleton/architecture/02-constraints/index.md +34 -0
  634. package/templates/project-skeleton/architecture/03-business-process/FLOW-login.md +101 -0
  635. package/templates/project-skeleton/architecture/03-business-process/FLOW-template.md +149 -0
  636. package/templates/project-skeleton/architecture/04-solution-strategy/index.md +26 -0
  637. package/templates/project-skeleton/architecture/07-deployment/index.md +26 -0
  638. package/templates/project-skeleton/architecture/08-cross-cutting/configuration.md +18 -0
  639. package/templates/project-skeleton/architecture/08-cross-cutting/index.md +27 -0
  640. package/templates/project-skeleton/architecture/08-cross-cutting/observability.md +18 -0
  641. package/templates/project-skeleton/architecture/08-cross-cutting/security.md +18 -0
  642. package/templates/project-skeleton/architecture/09-decisions/ADR-001-arc42-toc.md +31 -0
  643. package/templates/project-skeleton/architecture/09-decisions/index.md +13 -0
  644. package/templates/project-skeleton/architecture/10-quality/index.md +27 -0
  645. package/templates/project-skeleton/architecture/11-risks/index.md +25 -0
  646. package/templates/project-skeleton/architecture/12-glossary/index.md +31 -0
  647. package/templates/project-skeleton/architecture/index.md +1 -0
  648. package/templates/project-skeleton/architecture/model/workspace.dsl +71 -0
  649. package/templates/project-skeleton/index.md +2 -0
  650. package/templates/project-skeleton/overview/.gitkeep +1 -0
  651. package/templates/project-skeleton/overview/index.md +2 -0
  652. package/templates/project-skeleton/qa/README.md +11 -0
  653. package/templates/project-skeleton/qa/open/.gitkeep +0 -0
  654. package/templates/project-skeleton/surfaces/common/code/API-CMN-HEALTH-001/health.api.yaml +12 -0
  655. package/templates/project-skeleton/surfaces/common/code/API-CMN-HEALTH-001/index.md +12 -0
  656. package/templates/project-skeleton/surfaces/common/code/UI-CMN-EMPTY-001/empty.ui.yaml +14 -0
  657. package/templates/project-skeleton/surfaces/common/code/UI-CMN-EMPTY-001/index.md +11 -0
  658. package/templates/project-skeleton/surfaces/common/data-model/derived-data.md +26 -0
  659. package/templates/project-skeleton/surfaces/common/data-model/index.md +16 -0
  660. package/templates/project-skeleton/surfaces/common/index.md +32 -0
  661. package/templates/project-skeleton/surfaces/common/md/breadcrumb-flow/common-breadcrumb-flow.md +72 -0
  662. package/templates/project-skeleton/surfaces/common/md/buttons/common-buttons.md +160 -0
  663. package/templates/project-skeleton/surfaces/common/md/confirm-dialog/common-confirm-dialog.md +98 -0
  664. package/templates/project-skeleton/surfaces/common/md/data-table/common-data-table.md +91 -0
  665. package/templates/project-skeleton/surfaces/common/md/delete-flow/common-delete-flow.md +68 -0
  666. package/templates/project-skeleton/surfaces/common/md/feedback/common-feedback.md +140 -0
  667. package/templates/project-skeleton/surfaces/common/md/flat-design/common-flat-design.md +78 -0
  668. package/templates/project-skeleton/surfaces/common/md/form-validation/common-form-validation.md +74 -0
  669. package/templates/project-skeleton/surfaces/common/md/import-csv/common-import-csv.md +89 -0
  670. package/templates/project-skeleton/surfaces/common/md/list-page/common-list-page.md +102 -0
  671. package/templates/project-skeleton/surfaces/common/md/list-toolbar/common-list-toolbar.md +81 -0
  672. package/templates/project-skeleton/surfaces/common/md/navigation/common-navigation.md +70 -0
  673. package/templates/project-skeleton/surfaces/common/md/pagination/common-pagination.md +86 -0
  674. package/templates/project-skeleton/surfaces/common/md/search-filter/common-search-filter.md +96 -0
  675. package/templates/project-skeleton/surfaces/common/md/status-chip/common-status-chip.md +93 -0
  676. package/templates/project-skeleton/surfaces/common/md/table-action-column/common-table-action-column.md +90 -0
  677. package/templates/project-skeleton/surfaces/common/patterns/breadcrumb-flow.md +83 -0
  678. package/templates/project-skeleton/surfaces/common/patterns/delete-flow.md +30 -0
  679. package/templates/project-skeleton/surfaces/common/patterns/ui-spec.md +15 -0
  680. package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/common-breadcrumb-flow.bundle.yaml +60 -0
  681. package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/design.yaml +13 -0
  682. package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/legacy.yaml +11 -0
  683. package/templates/project-skeleton/surfaces/common/yaml/breadcrumb-flow/ir/spec.yaml +31 -0
  684. package/templates/project-skeleton/surfaces/common/yaml/buttons/common-buttons.bundle.yaml +147 -0
  685. package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/design.yaml +13 -0
  686. package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/legacy.yaml +11 -0
  687. package/templates/project-skeleton/surfaces/common/yaml/buttons/ir/spec.yaml +118 -0
  688. package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/common-confirm-dialog.bundle.yaml +89 -0
  689. package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/design.yaml +13 -0
  690. package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/legacy.yaml +11 -0
  691. package/templates/project-skeleton/surfaces/common/yaml/confirm-dialog/ir/spec.yaml +60 -0
  692. package/templates/project-skeleton/surfaces/common/yaml/data-table/common-data-table.bundle.yaml +85 -0
  693. package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/design.yaml +13 -0
  694. package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/legacy.yaml +11 -0
  695. package/templates/project-skeleton/surfaces/common/yaml/data-table/ir/spec.yaml +56 -0
  696. package/templates/project-skeleton/surfaces/common/yaml/delete-flow/common-delete-flow.bundle.yaml +59 -0
  697. package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/design.yaml +13 -0
  698. package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/legacy.yaml +11 -0
  699. package/templates/project-skeleton/surfaces/common/yaml/delete-flow/ir/spec.yaml +30 -0
  700. package/templates/project-skeleton/surfaces/common/yaml/design-system.bundle.yaml +29 -0
  701. package/templates/project-skeleton/surfaces/common/yaml/feedback/common-feedback.bundle.yaml +126 -0
  702. package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/design.yaml +13 -0
  703. package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/legacy.yaml +11 -0
  704. package/templates/project-skeleton/surfaces/common/yaml/feedback/ir/spec.yaml +97 -0
  705. package/templates/project-skeleton/surfaces/common/yaml/flat-design/common-flat-design.bundle.yaml +77 -0
  706. package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/design.yaml +13 -0
  707. package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/legacy.yaml +11 -0
  708. package/templates/project-skeleton/surfaces/common/yaml/flat-design/ir/spec.yaml +48 -0
  709. package/templates/project-skeleton/surfaces/common/yaml/form-validation/common-form-validation.bundle.yaml +66 -0
  710. package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/design.yaml +13 -0
  711. package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/legacy.yaml +11 -0
  712. package/templates/project-skeleton/surfaces/common/yaml/form-validation/ir/spec.yaml +37 -0
  713. package/templates/project-skeleton/surfaces/common/yaml/import-csv/common-import-csv.bundle.yaml +74 -0
  714. package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/design.yaml +13 -0
  715. package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/legacy.yaml +11 -0
  716. package/templates/project-skeleton/surfaces/common/yaml/import-csv/ir/spec.yaml +45 -0
  717. package/templates/project-skeleton/surfaces/common/yaml/list-page/common-list-page.bundle.yaml +90 -0
  718. package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/design.yaml +13 -0
  719. package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/legacy.yaml +14 -0
  720. package/templates/project-skeleton/surfaces/common/yaml/list-page/ir/spec.yaml +58 -0
  721. package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/common-list-toolbar.bundle.yaml +86 -0
  722. package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/design.yaml +13 -0
  723. package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/legacy.yaml +12 -0
  724. package/templates/project-skeleton/surfaces/common/yaml/list-toolbar/ir/spec.yaml +56 -0
  725. package/templates/project-skeleton/surfaces/common/yaml/navigation/common-navigation.bundle.yaml +68 -0
  726. package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/design.yaml +13 -0
  727. package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/legacy.yaml +11 -0
  728. package/templates/project-skeleton/surfaces/common/yaml/navigation/ir/spec.yaml +39 -0
  729. package/templates/project-skeleton/surfaces/common/yaml/pagination/common-pagination.bundle.yaml +84 -0
  730. package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/design.yaml +13 -0
  731. package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/legacy.yaml +13 -0
  732. package/templates/project-skeleton/surfaces/common/yaml/pagination/ir/spec.yaml +53 -0
  733. package/templates/project-skeleton/surfaces/common/yaml/search-filter/common-search-filter.bundle.yaml +88 -0
  734. package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/design.yaml +13 -0
  735. package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/legacy.yaml +11 -0
  736. package/templates/project-skeleton/surfaces/common/yaml/search-filter/ir/spec.yaml +59 -0
  737. package/templates/project-skeleton/surfaces/common/yaml/status-chip/common-status-chip.bundle.yaml +89 -0
  738. package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/design.yaml +13 -0
  739. package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/legacy.yaml +11 -0
  740. package/templates/project-skeleton/surfaces/common/yaml/status-chip/ir/spec.yaml +60 -0
  741. package/templates/project-skeleton/surfaces/common/yaml/table-action-column/common-table-action-column.bundle.yaml +81 -0
  742. package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/design.yaml +13 -0
  743. package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/legacy.yaml +11 -0
  744. package/templates/project-skeleton/surfaces/common/yaml/table-action-column/ir/spec.yaml +52 -0
  745. package/templates/project-skeleton/surfaces/index.md +1 -0
  746. package/templates/schemas/backend-api.schema.json +174 -0
  747. package/templates/schemas/legacy-repos.schema.json +24 -0
  748. package/templates/schemas/platform-repos.schema.json +29 -0
  749. package/templates/schemas/spec.schema.json +718 -0
  750. package/templates/schemas/testcase.schema.json +28 -0
  751. package/templates/shared/AUTHORING-COMMON.md +109 -0
  752. package/templates/shared/api-contract-test.yaml +33 -0
  753. package/templates/shared/backend-api-integration.yaml +152 -0
  754. package/templates/shared/backend-api.bundle.yaml +177 -0
  755. package/templates/shared/backend-api.yaml +188 -0
  756. package/templates/shared/breadcrumb-flow.ejs +45 -0
  757. package/templates/shared/bundle-authoring.md +288 -0
  758. package/templates/shared/clients-line.yaml +18 -0
  759. package/templates/shared/default-layout.ejs +234 -0
  760. package/templates/shared/design-spec.yaml +85 -0
  761. package/templates/shared/entity-delta.example.yaml +45 -0
  762. package/templates/shared/feature.bundle.yaml +575 -0
  763. package/templates/shared/integration-adapter.bundle.yaml +77 -0
  764. package/templates/shared/integration-spec.yaml +37 -0
  765. package/templates/shared/ir-design.yaml +34 -0
  766. package/templates/shared/ir-legacy.yaml +12 -0
  767. package/templates/shared/ir-spec.yaml +18 -0
  768. package/templates/shared/line-client.bundle.yaml +65 -0
  769. package/templates/shared/mock-data.yaml +22 -0
  770. package/templates/shared/openapi.yaml +144 -0
  771. package/templates/shared/patterns/.gitkeep +0 -0
  772. package/templates/shared/patterns/admin-crud.pattern.yaml +37 -0
  773. package/templates/shared/qa-item.yaml +15 -0
  774. package/templates/shared/spec.yaml +162 -0
  775. package/templates/shared/testcase.yaml +2 -0
  776. package/templates/tests-skeleton/cases/README.md +5 -0
  777. package/templates/tests-skeleton/catalog/locale.yaml +7 -0
  778. package/templates/tests-skeleton/index.md +7 -0
  779. package/templates/tests-skeleton/scenarios/README.md +3 -0
@@ -0,0 +1,62 @@
1
+ # Docs-mark — member annotation
2
+
3
+ > Skill: `/docs-mark` · Registries: `registries/common.registry.json` + `registries/design.registry.json`
4
+
5
+ ## When to use
6
+
7
+ Member (or agent after grill prompt) marks **spec** and/or **code** — **not** during round-1 `/spec` or bulk `/dev-grill-docs`.
8
+
9
+ Grill lanes ask first; member confirms → apply mark in same session.
10
+
11
+ ## Mark kinds — logic (`registries/common.registry.json`)
12
+
13
+ | kind | Tag | Spec block |
14
+ |------|-----|------------|
15
+ | common | `#common:{id}` | `marks[]` + optional `commonRefs[]` on routes/endpoints |
16
+ | needs-common | `#needs-common:{id}` | `marks[]` — registry `status: planned` |
17
+ | call-external | `#call-external` | `technicalMarks[]` + `externalCalls[]` |
18
+ | cross-entity-service | `#cross-entity-service` | `technicalMarks[]` + `services[]` |
19
+ | cross-service | `#cross-service` | `technicalMarks[]` + `services[]` (alias for cross-entity-service) |
20
+ | derived-data | `#derived-data` | `technicalMarks[]` + `derivedData` |
21
+ | reuse-api | `#reuse-api` | `tags:` — signals route reuse from common/sibling; suppresses DUPLICATE_API_ROUTE |
22
+
23
+ ## Mark kinds — UI (`registries/design.registry.json`)
24
+
25
+ | kind | Tag | Spec / gen |
26
+ |------|-----|------------|
27
+ | needs-component | `#needs-component: {slot}:MoXxx[:prop]` | `tags:` — bộ code HANDOFF until Mo* exists |
28
+ | needs-ui | `#needs-ui: {Widget}` | `tags:` — widget `planned` in design registry |
29
+ | common-ui | Mo* in design registry `implemented` | promote after `/prototype`; re-run flowgrid gen |
30
+
31
+ ## Spec block — `marks[]` (`ir/spec.yaml`)
32
+
33
+ ```yaml
34
+ marks:
35
+ - id: MK-STATUS-CHIP-001
36
+ kind: needs-component
37
+ tag: "#needs-component: cell-status:MoStatusChip:label"
38
+ registryId: MoStatusChip
39
+ reason: "Cột status render custom"
40
+ source: docs-mark
41
+ ```
42
+
43
+ ## Registry — common / design
44
+
45
+ - `status`: `planned` | `implemented`
46
+ - Validate via bộ code FE / product registry scripts (not docs-hub shell)
47
+
48
+ ## Workflow (each `/docs-mark` session)
49
+
50
+ 1. Resolve scope: function id `W-*`/`API-*` under `surfaces/.../CMP-*/<slug>/code/` (legacy `.../modules/CMP-*/` also accepted), `ir/spec.yaml`, optional code paths. Tag business gaps `#missing_info` — do not invent fills.
51
+ 2. Read `tags:`, `marks[]`, `technicalMarks[]`, both registries
52
+ 3. Apply member intent — one concern per mark
53
+ 4. Update spec YAML (`tags:` and/or `marks[]`)
54
+ 5. Upsert correct registry entry
55
+ 6. If `planned` → HANDOFF / `openQuestions`
56
+ 7. Optional: `artifactgraph_remember` after confirm B
57
+
58
+ ## Do not
59
+
60
+ - Rewrite full contract like `/spec`
61
+ - Auto-mark without member confirmation
62
+ - Treat `artifactgraph_gen` as required
@@ -0,0 +1,29 @@
1
+ {
2
+ "version": 1,
3
+ "bundles": {
4
+ "core": [
5
+ ".cursor/extracts/core/agent-discipline.md"
6
+ ],
7
+ "platform-ai": [
8
+ ".cursor/extracts/artifact-graph.md",
9
+ ".cursor/extracts/extract-registry.json"
10
+ ],
11
+ "platform-mark": [
12
+ ".cursor/extracts/core/agent-discipline.md",
13
+ ".cursor/extracts/platform-mark.md",
14
+ ".cursor/extracts/platform-mark-detect.md"
15
+ ],
16
+ "artifactgraph": [
17
+ ".cursor/extracts/core/agent-discipline.md",
18
+ ".cursor/extracts/artifactgraph-hooks-core.md"
19
+ ],
20
+ "docs-mark": [
21
+ ".cursor/extracts/core/agent-discipline.md",
22
+ ".cursor/extracts/docs-mark.md",
23
+ ".cursor/extracts/docs-mark-detect.md"
24
+ ],
25
+ "ux-common": [
26
+ ".cursor/extracts/ux-common-patterns.md"
27
+ ]
28
+ }
29
+ }
@@ -0,0 +1,172 @@
1
+ # UX gap checklists (extract only — policy in `flowgrid-ux-common.mdc`)
2
+
3
+ ## 1. Flat design (shadcn admin)
4
+
5
+ **Recognize:** Flat portal chrome — borders, muted surfaces, clear typography.
6
+
7
+ **Propose when missing or off-pattern:**
8
+
9
+ - [ ] No heavy gradients/shadows on buttons, cards, table chrome.
10
+ - [ ] One clear primary per section; destructive only for dangerous actions.
11
+ - [ ] No stacked modals — prefer page, step, or inline over dialog stacks.
12
+ - [ ] Semantic colors; inline state near context instead of alert dialogs for read-only hints.
13
+
14
+ ---
15
+
16
+ ## 2. List page & toolbar
17
+
18
+ **Recognize:** Title + primary (create) + secondary; bulk/export on list.
19
+
20
+ **Propose when missing:**
21
+
22
+ - [ ] List shell: title + main action; bulk actions on toolbar, not scattered per row.
23
+ - [ ] One primary intent; outline/ghost for secondary.
24
+
25
+ ---
26
+
27
+ ## 3. Breadcrumb
28
+
29
+ **Recognize:** `A > B > C`, or list → detail/edit hierarchy even if not labeled “breadcrumb”.
30
+
31
+ **Propose when missing:**
32
+
33
+ - [ ] Trail or back + title reflecting module/record.
34
+ - [ ] Multiple entry paths (deep links) — vague Back alone is insufficient.
35
+ - [ ] Breadcrumb shell slot unwired → `#needs-ui:breadcrumb` or registry update.
36
+
37
+ ---
38
+
39
+ ## 4. Search & filter
40
+
41
+ **Recognize:** Search box, filter dropdowns, active filter chips, reset.
42
+
43
+ **Propose when missing or unmapped:**
44
+
45
+ - [ ] Large lists or server pagination → search and/or filters (name fields).
46
+ - [ ] State: URL query **or** store — state choice in proposal.
47
+ - [ ] “No results” empty state distinct from empty list.
48
+ - [ ] If `#split-hook: filters` exists in design → use DSL; no duplicate filter YAML.
49
+
50
+ ---
51
+
52
+ ## 5. Pagination
53
+
54
+ **Recognize:** Prev/next, page numbers, server total count.
55
+
56
+ **Propose when missing:**
57
+
58
+ - [ ] Standard paginator (no infinite scroll unless member explicitly chose it).
59
+ - [ ] Stay in sync with search/filter when present.
60
+
61
+ ---
62
+
63
+ ## 6. Data table
64
+
65
+ **Recognize:** Column grid, sort, selection, action column — often covered by list shell DSL.
66
+
67
+ **Propose when under-specified:**
68
+
69
+ - [ ] Horizontal scroll; compact density; muted header.
70
+ - [ ] Status column → chip; action column → fixed width, nowrap; numbers → right-align.
71
+ - [ ] Long text: truncate + tooltip (default).
72
+
73
+ ---
74
+
75
+ ## 7. Table action column & disabled affordance
76
+
77
+ **Recognize:** Per-row icons/buttons; disabled by status, RBAC, or business rules.
78
+
79
+ **Propose when missing (common gap):**
80
+
81
+ - [ ] Row actions **icon-only** in table; outside table use icon + text when discoverability matters.
82
+ - [ ] Non-obvious disabled → **badge/chip/tooltip** with reason (“Locked”, “No permission”, …).
83
+ - [ ] Document `disabledReason` / preconditions in handoff.
84
+
85
+ ---
86
+
87
+ ## 8. Buttons
88
+
89
+ **Recognize:** Primary/destructive/outline on forms, dialogs, toolbars.
90
+
91
+ **Propose when missing:**
92
+
93
+ - [ ] Submit/delete: `disabledReason` when blocked — not bare `disabled`.
94
+ - [ ] Confirm dialogs: correct primary/secondary/destructive roles.
95
+
96
+ ---
97
+
98
+ ## 9. Status chip (lifecycle)
99
+
100
+ **Recognize:** Status column, detail tags, post-job badges.
101
+
102
+ **Propose when missing:**
103
+
104
+ - [ ] Text label + semantic color; consistent tone map (pending/warning, failed/danger, …).
105
+ - [ ] No plain text for states that need quick scanning.
106
+
107
+ ---
108
+
109
+ ## 10. Confirm dialog (non-delete)
110
+
111
+ **Recognize:** Destructive actions, overwrite, cancel with side effects.
112
+
113
+ **Propose when missing:**
114
+
115
+ - [ ] Centered modal; never use confirm for form validation (use inline field errors).
116
+
117
+ ---
118
+
119
+ ## 11. Delete flow
120
+
121
+ **Recognize:** Row delete, bulk delete, soft-delete with confirm.
122
+
123
+ **Propose when DSL/handler missing or under-specified:**
124
+
125
+ - [ ] Blocking **confirm** (AlertDialog) before delete — clear cancel/confirm.
126
+ - [ ] After API: **result dialog** for success/error — user must acknowledge; **no** toast-only delete.
127
+ - [ ] Bulk: copy includes **count**; batch/endpoint explicit.
128
+ - [ ] API not ready → `#wire-only` / handoff — no fake success UI.
129
+
130
+ ---
131
+
132
+ ## 12. Feedback (inline / toast / dialog)
133
+
134
+ **Recognize:** After save, delete, import, async jobs.
135
+
136
+ **Propose when missing:**
137
+
138
+ - [ ] Inline alert under title when still visible on light scroll.
139
+ - [ ] Toast ~5s for non-blocking notices — **does not** replace delete result dialog.
140
+ - [ ] One primary channel per action (inline OR dialog OR toast).
141
+
142
+ ---
143
+
144
+ ## 13. Form validation
145
+
146
+ **Recognize:** Create/edit, wizards, modal forms.
147
+
148
+ **Propose when missing:**
149
+
150
+ - [ ] Field-level inline errors; block submit while invalid.
151
+ - [ ] Submit/delete preconditions in handoff.
152
+
153
+ ---
154
+
155
+ ## 14. Navigation (menu / sidebar)
156
+
157
+ **Recognize:** Module menu, active route, nested nav.
158
+
159
+ **Propose when missing:**
160
+
161
+ - [ ] Clear active state; no duplicate entries without routes.
162
+
163
+ ---
164
+
165
+ ## 15. Import CSV
166
+
167
+ **Recognize:** Upload, column mapping, preview, import result.
168
+
169
+ **Propose when missing:**
170
+
171
+ - [ ] Flow: pick file → validate → confirm → result (row errors downloadable).
172
+ - [ ] No silent failure; feedback per section 12.
@@ -0,0 +1,26 @@
1
+ ---
2
+ description: ArtifactGraph local-first MCP protocol
3
+ alwaysApply: false
4
+ ---
5
+
6
+ # ArtifactGraph
7
+
8
+ - Product registries, templates, lexicons, and config are repository-local SSOT.
9
+ - Use local analyze/grill/parity/suggest before requesting cloud work.
10
+ - Never dump full registries or lexicons into `cloudPromptSlice`.
11
+ - Run only generation keys allowlisted by the current repo.
12
+ - Promote reviewed artifacts in the product repo, then rebuild the local index.
13
+ - Do not depend on `platform-repos.json`, `base-docs`, or `base-tests`.
14
+
15
+ ## Cross-repo routing
16
+
17
+ - Architecture ID / C4 → bộ docs (`FLOWGRID_DOCS_ROOT`), not CodeGraph and not
18
+ ArtifactGraph.
19
+ - IR / registry / generation → bộ code / bộ test pointers
20
+ (`FLOWGRID_DOCS_ROOT`, `FLOWGRID_DOCS_ROOT`, `FLOWGRID_TESTS_DOC`).
21
+ - Symbol / call-graph of repo X → `codegraph-<key>` MCP for checkout X.
22
+ - ArtifactGraph is local-only: never follow those pointers, never read repo
23
+ maps, never scan a workspace parent, never wire CodeGraph MCP itself.
24
+ - Platform DNA owns map-based CodeGraph auto-wire and missing-index hints.
25
+
26
+ Hooks: `.cursor/extracts/artifactgraph-hooks-core.md`
@@ -0,0 +1,47 @@
1
+ ---
2
+ description: Cross-repo index routing — call the correct per-repo index, never one giant workspace graph.
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Cross-repo index routing (SSOT)
7
+
8
+ Do not merge every repository into a single workspace graph (the parent folder
9
+ must never be indexed). "Cross-repo" means a skill/rule knows how to reach the
10
+ **correct per-repo index**, one repository at a time.
11
+
12
+ **Owner:** Platform DNA. FlowGrid harness rules (bộ docs, bộ process, …) install this same
13
+ filename only when DNA is absent, so a destination never carries duplicate
14
+ `alwaysApply` routing rules under different names.
15
+
16
+ Route by intent:
17
+
18
+ - Need an architecture ID or C4 path -> bộ docs MCP (`FLOWGRID_DOCS_ROOT`). Never
19
+ CodeGraph for architecture Markdown.
20
+ - Need IR / registry / generation -> the pointer kit
21
+ (`FLOWGRID_DOCS_ROOT`, `FLOWGRID_DOCS_ROOT`, `FLOWGRID_TESTS_DOC`).
22
+ - Need a symbol or call-graph for repo `X` -> the CodeGraph MCP server for repo
23
+ `X` (`codegraph-<key>`, whose `--project-root` is `X`'s checkout). Do not use
24
+ the index of the repository currently open.
25
+
26
+ Checkout maps (machine-local only):
27
+
28
+ | System id / intent | Map |
29
+ |--------------------|-----|
30
+ | Prefix `legacy-` or clear legacy archaeology | `legacy-repos.local.json` |
31
+ | Platform skills / step `[system]` without `legacy-` | `platform-repos.local.json` |
32
+
33
+ Rules:
34
+
35
+ - One `.codegraph/` per repository, created locally with `codegraph init` inside
36
+ that repo. Never run `codegraph init` in a workspace parent.
37
+ - A repo without an index is reported, not auto-indexed; run the printed
38
+ `cd <root> && codegraph init` first.
39
+ - ArtifactGraph stays local-only; it is never a shared index for FE, tests, or
40
+ legacy repositories.
41
+ - Ambiguous keys → ask or Gaps; never invent sibling paths.
42
+ - Missing / empty `.local.json` or missing key → Gaps + `/configure-repo-maps`
43
+ (NL); do not hand-edit JSON or guess absolute paths.
44
+ - Platform DNA wires `codegraph-<key>` from both machine-local maps. Re-run
45
+ `platform-dna codegraph:wire` to refresh; never commit machine paths. Key
46
+ collision: **platform map wins**; prefer `legacy-*` keys for legacy-only
47
+ checkouts.
@@ -0,0 +1,39 @@
1
+ ---
2
+ description: UX gap analysis and proposals after DSL/spec policy (always-on)
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # UX proposals (global)
7
+
8
+ **DSL and bundle SSOT:** `/spec`, `/update-spec`, `design.registry.json`, `gen-common`. Do not replace spec authoring with the checklist extract.
9
+
10
+ ## When this applies
11
+
12
+ Prompt analysis, UI proposals, affordance review. **Primary:** `/spec` per-zone pipeline (DSL → `#needs-component` / `#needs-ui` → checklist gaps → `AskQuestion`). Also `/grill-bqa` Step B. Explicit: `/ui-proposal`.
13
+
14
+ ## Flow
15
+
16
+ 1. Map DSL/registry first (`#shell:`, `#pattern:`, `#ui:`, `#widget:`, generated CMN).
17
+ 2. On match → codegen/wire only; no redundant YAML/spec.
18
+ 3. Unmapped, missing DSL, or UI not recognized as a pattern → read **`.cursor/extracts/ux-common-patterns.md`**; apply matching **Recognize** / **Propose** sections.
19
+ 4. **`flowgrid audit spec`** — patch `UX_*` gaps in bundle; `CONFIRM_UX_*` → `AskQuestion` using audit `(Recommended)` options.
20
+ 5. Stable cross-project pattern → `gen-common`; never hand-duplicate common IR.
21
+
22
+ | Situation | Action |
23
+ |-----------|--------|
24
+ | Already in DSL/registry | Skip matching checklist section |
25
+ | Looks like list/table/breadcrumb/delete but untagged | Recognize → propose tag or CMN |
26
+ | Thin spec/code (silent disabled, toast-only delete, …) | Propose affordance |
27
+
28
+ ## Proposal output (required format)
29
+
30
+ ```text
31
+ DSL: [mapped | unmapped] — registry id / #tag
32
+ Gap: [pattern-id or checklist section] — [1–2 sentences]
33
+ Propose: [#needs-ui:… | tag | handoff field]
34
+ Avoid: [redundant YAML/spec when DSL is sufficient]
35
+ ```
36
+
37
+ ## CMN pattern IDs (after DSL gap confirmed)
38
+
39
+ `common-flat-design`, `common-list-page`, `common-list-toolbar`, `common-breadcrumb-flow`, `common-search-filter`, `common-pagination`, `common-data-table`, `common-table-action-column`, `common-buttons`, `common-status-chip`, `common-confirm-dialog`, `common-delete-flow`, `common-feedback`, `common-form-validation`, `common-navigation`, `common-import-csv`.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Platform — ~200 lines/file, ~20 lines/function; split when exceeded
3
+ globs: "{pages,components,composables,services,stores,models,validations,tests}/**/*.{vue,ts}"
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Code Size
8
+
9
+ Soft limits — split in the same PR when exceeded.
10
+
11
+ | Vượt ~200 dòng/file | Tách | Gợi ý Tag DSL (`/docs-mark`) |
12
+ |---------------------|------|------------------------------|
13
+ | Page `.vue` | Composable + sub-component | `#needs-component: sub-{name}:MoXxx` hoặc `#common-ui` |
14
+ | Composable | `useXxxForm`, `useXxxList`, … | `#common-ui` / `#needs-ui` |
15
+ | Service / store | File theo aggregate; action phức tạp → service | `#cross-service` / `#cross-entity-service` / `#needs-service` |
16
+ | E2E spec | Page Object + helper | `#e2e-test` bundle split |
17
+
18
+ | Vượt ~20 dòng/function | Tách | Gợi ý Tag DSL (`/docs-mark`) |
19
+ |------------------------|------|------------------------------|
20
+ | Submit handler | `buildPayload`, `validateBeforeSubmit`, `handleApiError` | `#needs-service` / local helper |
21
+ | Map/transform | Pure helpers / computed | `#derived-data` |
22
+
23
+ No padding files with blank lines. Component split: `platform-component-split.mdc`.
24
+ Khi file/function chạm ngưỡng vượt giới hạn, AI Agent cần chủ động đề xuất gán tag tương ứng (thông qua `/docs-mark`) và cập nhật registry (`registries/design.registry.json` hoặc `registries/common.registry.json`) để tái sử dụng sau này.
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Harness state files — progress handoff between sessions
3
+ globs: .harness/**/*
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Harness State
8
+
9
+ - `feature_list.json` — scope, không tự đánh done khi chưa verify
10
+ - `progress.md` — handoff session tiếp theo
11
+ - `registries/page-lifecycle.registry.json` + `base-docs/platform/toolchain/PAGE-LIFECYCLE.md` — stage cao nhất từng route; `portal:gen` / `portal:remove` / `portal:lifecycle sync` tự cập nhật
12
+ - Khi command public cập nhật phase, ghi rõ: command, file đã đổi, verify đã chạy/chưa chạy, blocker còn lại.
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: business-impact-review
3
+ description: Comprehensive blast-radius evaluation across repositories (Cross-repo) and functional surfaces (Cross-surface).
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # /business-impact-review
8
+
9
+ Read-only analysis by default. Do not implement fixes unless explicitly asked.
10
+
11
+ **Owner:** Common Hub (Cross-Boundary Inspector). Optional rule: `flowgrid-process.mdc`.
12
+
13
+ ## Checkout resolution
14
+
15
+ Cross-repo callers/callees:
16
+
17
+ | System id | Map |
18
+ |-----------|-----|
19
+ | `legacy-*` | `legacy-repos.local.json` |
20
+ | Otherwise | `platform-repos.local.json` |
21
+
22
+ Missing/empty map or missing key → **Gaps** + **`/configure-repo-maps`**; never
23
+ guess paths. Then remind `platform-dna codegraph:wire` if needed. Ambiguous
24
+ matches → ask or Gaps.
25
+
26
+ ## Context - Action - Constraint Model (CAC)
27
+
28
+ ### Context
29
+ Execution triggered by `/business-impact-review` against uncommitted diffs, PR branches, or specified modified files/routes spanning cross-repo (FE ↔ BE) or cross-surface boundaries.
30
+
31
+ ### Action (2-Stage Phased Protocol)
32
+
33
+ #### Stage 1: Candidate Indexing & Blast-Radius Manifest
34
+ 1. **Symbol & Route Scoping:** Extract all modified public/protected methods, API routes, Jobs, Events, Listeners, Commands, and DB schemas from diff.
35
+ 2. **Candidate Index Generation:** Perform targeted symbol/caller indexing (using `codegraph-<key>` or caller search across repos listed in `platform-repos.local.json`/`legacy-repos.local.json`).
36
+ 3. **Compile Candidate Manifest:** Produce an indexed list of potential blast-radius targets categorized into:
37
+ - Callers (FE/Mobile consumers, cross-repo API clients)
38
+ - Vertical process paths (Controller → Service → Repository → DB)
39
+ - Cross-surface listeners (Shared Events, Queue consumers, DB triggers)
40
+ 4. **Workload Threshold Interlock (Law 2):**
41
+ - **If total candidates ≤ 5:** Execute Stage 2 deep inspection directly in the current session.
42
+ - **If total candidates > 5 (or spanning > 1 repository):**
43
+ - **[MANDATORY HARD STOP IN CHAT]**
44
+ - Author an implementation plan / Plan Mode document (brain dir / `plan.md`).
45
+ - Partition candidate inspection into sequential **Phases** (each phase capped at 3–5 candidate call-sites/paths).
46
+ - **Phase Boundary Context Pruning:** At the end of each phase, persist analysis findings into the output report on disk. For each subsequent phase, load fresh state from disk instead of maintaining full AST/diff context in conversational RAM.
47
+
48
+ #### Stage 2: Phased Deep-Dive Inspection
49
+ Inspect each candidate path sequentially across the vertical stack:
50
+ ```text
51
+ Client/FE or Scheduler/Webhook
52
+ → route/command/job
53
+ → auth/middleware/context rewrite
54
+ → controller/handler
55
+ → service/domain
56
+ → repository/model/database
57
+ → event/listener/job/external API
58
+ → response/error/status mapping
59
+ → FE/consumer/next async hop
60
+ ```
61
+ Apply `risk-classes.md`: authZ/IDOR, request bag, trust boundary, over-broad parse, null/empty, error collapsing, hardcode/magic, async context/idempotency, business rules, transactions, and contract compatibility.
62
+
63
+ ### Constraints
64
+ - **[STRICTLY FORBIDDEN]** to rely solely on naive single-pass grep scripts that produce false negatives when member code is non-compliant or uses dynamic routing.
65
+ - **[STRICTLY FORBIDDEN]** to dump > 5 candidate analyses in a single chat turn.
66
+ - **[MANDATORY]** Write analysis findings directly to disk at each phase boundary.
67
+ - **[MANDATORY]** Maintain read-only analysis; do not generate or modify application code unless explicitly requested.
68
+
69
+ ## Required Report
70
+
71
+ ```text
72
+ Summary / ship recommendation
73
+ Changed symbols & Candidate Index
74
+ Horizontal callers
75
+ Vertical process paths
76
+ Cross-Boundary Impact (FE/BE & Surfaces) <-- MANDATORY EXPLICIT SECTION
77
+ Findings: severity · class · evidence · impact · verify
78
+ Unsearched repos / residual risks
79
+ Targeted test plan
80
+ ```
81
+
82
+ ## Accelerators (optional)
83
+
84
+ Route per intent (rule `cross-repo-index.mdc`): never one merged
85
+ workspace graph — always the correct per-repo index.
86
+
87
+ ```text
88
+ if CodeGraph available: changed symbols + callers + call graph — for repo X use
89
+ its own server `codegraph-<key>` (--project-root = X's checkout), never the
90
+ open repo's index; unindexed repo → report `cd <root> && codegraph init`
91
+ else: targeted repository search/read
92
+
93
+ if bộ docs available: map process steps to CMP/CTR/FLOW docs via FLOWGRID_DOCS_ROOT
94
+ (never CodeGraph for architecture Markdown)
95
+ else: repository conventions/search
96
+
97
+ IR / registry / generation questions → pointer kits
98
+ (FLOWGRID_DOCS_ROOT, FLOWGRID_DOCS_ROOT, FLOWGRID_TESTS_DOC)
99
+
100
+ if ArtifactGraph available: affected tags/registries/parity
101
+ (local-only — never a shared index for other repos)
102
+ else: model review from scoped evidence
103
+ ```
104
+
105
+ Missing accelerators never block the review. Assign one stable `runId` at run
106
+ start. Report only actual `fileReads` and `contextBytes`, never invented token claims.
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: configure-repo-maps
3
+ description: /configure-repo-maps — Merge NL checkout paths into platform-repos.local.json / legacy-repos.local.json (no git clone).
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ <!-- platform-dna:configure-repo-maps-ssot -->
8
+
9
+ # /configure-repo-maps
10
+
11
+ **Purpose:** Populate local checkout directory paths into machine-local mapping files — do not clone repositories, do not alter portable catalogs.
12
+
13
+ ## Hard Rules
14
+
15
+ 1. **[MANDATORY]** Write ONLY to `platform-repos.local.json` and/or `legacy-repos.local.json` (merge-by-key).
16
+ 2. **[STRICTLY FORBIDDEN]** Do NOT execute `git clone` / `git fetch` / connect remotes / download source archives.
17
+ 3. **[STRICTLY FORBIDDEN]** Do NOT edit `platform-repos.json` / `legacy-repos.json` (portable catalogs where `root` remains `"."`).
18
+ 4. **[STRICTLY FORBIDDEN]** Do NOT hand-edit entire JSON files on behalf of the member by pasting full files — accept natural language (NL) input and prompt for missing keys or paths.
19
+ 5. **[MANDATORY]** Normalize absolute paths (including `~` or Windows drives) and write to `projects.<key>.root`.
20
+
21
+ ## Routing
22
+
23
+ | Intent | File |
24
+ |--------|------|
25
+ | Current platform / hub (docs, portal, api, tests, …) | `platform-repos.local.json` |
26
+ | Prefix / concept `legacy-*`, legacy archaeology | `legacy-repos.local.json` |
27
+
28
+ ## Example Prompts (NL input from user)
29
+
30
+ **Platform-only**
31
+
32
+ ```text
33
+ docs = base-docs at ~/ws/base-docs, portal admin at ~/ws/portal, api core at ~/ws/api
34
+ ```
35
+
36
+ → Merge `base-docs`, `portal`, `api` into `platform-repos.local.json` (prompt if keys or roles are ambiguous).
37
+
38
+ **Multi portal / API**
39
+
40
+ ```text
41
+ 2 portals: admin at ~/ws/portal, line at ~/ws/line; 2 APIs: core at ~/ws/api-core,
42
+ scenario at ~/ws/api-scenario; docs = ~/ws/base-docs; tests = ~/ws/base-tests
43
+ ```
44
+
45
+ → Map one key per checkout; prompt for any missing paths.
46
+
47
+ **Legacy**
48
+
49
+ ```text
50
+ legacy ERP at D:\legacy\erp, key legacy-erp
51
+ ```
52
+
53
+ → Target strictly `legacy-repos.local.json`.
54
+
55
+ ## After Write
56
+
57
+ 1. Run `platform-dna codegraph:wire` (when utilizing Cursor + CodeGraph).
58
+ 2. For checkouts lacking `.codegraph/`: `cd <root> && codegraph init`.
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: docs-mark
3
+ extractBundle: docs-mark
4
+ description: /docs-mark — member marks tags/registries after grill confirm.
5
+ disable-model-invocation: true
6
+ ---
7
+
8
+ # /docs-mark
9
+
10
+ **Owner:** ArtifactGraph (common harness)
11
+ Member annotation following grill A/B/C confirmation — NOT for bulk `/spec` / `/dev-grill-docs`.
12
+
13
+ Hub policy (docs hub): `platform/toolchain/PLATFORM-MARK.md` (alias: docs-mark).
14
+ Technical marks SSOT on the docs hub: `surfaces/common/integrations/*`,
15
+ `surfaces/common/data-model/derived-data.md`.
16
+
17
+ ## Accelerators (optional)
18
+
19
+ When ArtifactGraph tools are available: `artifactgraph_analyze`,
20
+ `artifactgraph_suggest_tags`, `artifactgraph_remember`,
21
+ `artifactgraph_allowlist_check`, `artifactgraph_recommend_command`,
22
+ `artifactgraph_api_reuse_check` (confirm route reuse before applying `#reuse-api`),
23
+ `artifactgraph_grill_check` (re-scan for `duplicate-api-route` / missing tags after mark).
24
+ Missing AG tools → continue with local registry/spec edits; do not invent shell
25
+ fallbacks.
26
+
27
+ ## Registries (on the product / FE repo)
28
+
29
+ | Layer | File | Tags |
30
+ |-------|------|------|
31
+ | UI | `registries/design.registry.json` | `#needs-component:` `#needs-ui:` `#shell:` |
32
+ | Logic | `registries/common.registry.json` | `#common:*` `#needs-common:*` |
33
+
34
+ Executable registry validation is **bộ code FE** (or product scripts on the
35
+ FE checkout). On docs hub:
36
+
37
+ ```text
38
+ if ArtifactGraph available:
39
+ artifactgraph_allowlist_check(registryValidate|commonRegistry)
40
+ artifactgraph_recommend_command → hand off to bộ code FE
41
+ else:
42
+ note pending FE registry validate; do not invent local shell fallbacks
43
+ ```
44
+
45
+ ## Workflow
46
+
47
+ 1. Feature `ir/spec.yaml` + registries (optional `artifactgraph_analyze`)
48
+ 2. One mark / concern; member already confirmed at grill
49
+ 3. Upsert registry · planned → HANDOFF · implemented → promote path
50
+ 4. `artifactgraph_remember` subject after confirm B
51
+
52
+ ## Do not
53
+
54
+ - Auto-tag without asking the member
55
+ - Put Mo* into `common.registry` (design registry only)
56
+ - Full contract rewrite
57
+ - Treat `artifactgraph_gen` as required (deprecated shim)
58
+
59
+ ## Handoff
60
+
61
+ bộ code FE / product: `flowgrid gen:dry` (or repo shim) after marks change,
62
+ when that lane is available. Missing bộ code is a pending handoff, not a
63
+ docs failure.
64
+
65
+ ## Compatibility
66
+
67
+ `/platform-mark` is a deprecated alias for this skill (one compatibility cycle).