@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,37 @@
1
+ ---
2
+ name: test
3
+ description: /test — Playwright E2E from tests-hub plan YAML (FE only).
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # /test
8
+
9
+ **Owner:** bộ test (`--type=fe`)
10
+
11
+ ```bash
12
+ flowgrid testcase:gen:dry --tests-docs=/path/to/tests-hub --docs-root=/path/to/docs-hub -- --id TC-…
13
+ flowgrid testcase:gen --tests-docs=/path/to/tests-hub --docs-root=/path/to/docs-hub -- --id TC-…
14
+ ```
15
+
16
+ Use `FLOWGRID_TESTS_DOC` (or `--tests-docs`) when the tests hub is not local.
17
+ Use `FLOWGRID_DOCS_ROOT` for docs evidence. Route Functions/W-* evidence through
18
+ bộ docs, and symbols or call graphs for repo X through the Platform DNA-wired
19
+ `codegraph-<repo-key>` server for checkout X. Never use a workspace-parent
20
+ graph or ask the member to hand-edit MCP configuration.
21
+
22
+ ## Accelerators (optional)
23
+
24
+ ```text
25
+ if local ArtifactGraph available: recommend/check generation allowlist (this repo)
26
+ else: local deterministic search, then run flowgrid testcase:gen directly
27
+ ```
28
+
29
+ ArtifactGraph never follows `FLOWGRID_DOCS_ROOT` / `FLOWGRID_TESTS_DOC`; plan
30
+ YAML and docs evidence flow only through those bộ test pointers.
31
+
32
+ Assign one stable `runId` at run start. If ArtifactGraph is missing, complete
33
+ the local fallback, count successful file reads and exact raw bytes read into
34
+ context, then emit exactly one `flowgrid.missing-optional` JSON event for the
35
+ `runId` + `artifactgraph` pair. Deduplicate retries. Validate against
36
+ `.cursor/schemas/flowgrid-test/missing-optional-event.schema.json`; report only actual
37
+ `fileReads` and `contextBytes`, never estimated token or savings claims.
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: unit
3
+ description: /unit — unit test generation from codegen manifests via bộ code.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # /unit
8
+
9
+ **Owner:** bộ code (`--type=fe`)
10
+
11
+ ```bash
12
+ npm run codegen:unit:dry -- --id W-AD-AUTH-001
13
+ npm run codegen:unit -- --id W-AD-AUTH-001
14
+
15
+ # Fallback direct CLI if wrappers missing:
16
+ flowgrid unit-gen:dry --adapter=nuxt4 --docs-root=/path/to/docs-hub -- --id W-AD-AUTH-001
17
+ flowgrid unit-gen --adapter=nuxt4 --docs-root=/path/to/docs-hub -- --id W-AD-AUTH-001
18
+ flowgrid unit-registry --adapter=nuxt4
19
+ ```
20
+
21
+ You MUST run the codegen script (`npm run codegen:unit` or `flowgrid unit-gen`) FIRST to generate the skeleton and basic implementation from IR, before attempting to fill in any gaps, implement logic, or add missing tests manually.
22
+
23
+ Requires a prior codegen manifest under the docs hub `generated/` folder (when applicable).
24
+ `--docs-root` / `FLOWGRID_DOCS_ROOT` is the canonical registry/IR pointer;
25
+ local ArtifactGraph never replaces it.
26
+
27
+ ## Docs Root Resolution
28
+
29
+ 1. If `FLOWGRID_DOCS_ROOT` is set (non-empty), use it as the canonical
30
+ registry/IR pointer for locating codegen manifests.
31
+ 2. If `FLOWGRID_DOCS_ROOT` is **not** set, fall back to Platform DNA
32
+ configuration (`platform-dna`) to resolve the docs hub path.
33
+ Platform DNA discovery is slower and more error-prone, so always prefer
34
+ an explicit `FLOWGRID_DOCS_ROOT` when available.
35
+
36
+ ## Route
37
+
38
+ Architecture/C4 → bộ docs (`FLOWGRID_DOCS_ROOT`); IR/registry/gen →
39
+ `FLOWGRID_DOCS_ROOT`; symbols/call-graph for repo X → Platform DNA-wired
40
+ `codegraph-<repo-key>`. Never workspace-parent graphs or member-edited MCP.
41
+ Local ArtifactGraph is allowlist/tag hints for this repo only.
42
+
43
+ `dotnet-line` is not supported by these separate unit commands: its primary
44
+ `gen` pass already bundles generated test source.
45
+
46
+ ## Accelerators (optional)
47
+
48
+ ```text
49
+ if local ArtifactGraph available: recommend/check the FE repo's unit-gen allowlist
50
+ else: run flowgrid unit-gen directly
51
+ ```
52
+
53
+ Missing ArtifactGraph never blocks unit generation. Complete the direct,
54
+ deterministic bộ code fallback first, then follow
55
+ `.cursor/rules/flowgrid-code-optional-integrations.mdc` for once-per-run telemetry.
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: wire
3
+ description: /wire — replace prototype mocks with real API wiring (bộ code FE lane).
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # /wire
8
+
9
+ **Owner:** bộ code (`--type=fe`)
10
+
11
+ Use after `/prototype` when tags/handoff mark `#wire-only` or real API integration is required.
12
+ Keep generation through bộ code adapters; resolve canonical docs evidence
13
+ through `FLOWGRID_DOCS_ROOT` and do not invent sibling layout.
14
+
15
+ ## Docs Root Resolution
16
+
17
+ 1. If `FLOWGRID_DOCS_ROOT` is set (non-empty), use it as the canonical
18
+ pointer for resolving IR/handoff evidence.
19
+ 2. If `FLOWGRID_DOCS_ROOT` is **not** set, fall back to Platform DNA
20
+ configuration (`platform-dna`) to resolve the docs hub path.
21
+ Platform DNA discovery is slower and more error-prone, so always prefer
22
+ an explicit `FLOWGRID_DOCS_ROOT` when available.
23
+
24
+ ## Route
25
+
26
+ IR/handoff via `FLOWGRID_DOCS_ROOT`; architecture IDs via bộ docs
27
+ (`FLOWGRID_DOCS_ROOT`); BE/FE symbols via per-repo `codegraph-<key>`; ArtifactGraph
28
+ local tags only. Never workspace-parent graphs or member-edited MCP.
29
+
30
+ ## Accelerators (optional)
31
+
32
+ ```text
33
+ if local ArtifactGraph available: local FE tags/allowlist slice for wire readiness
34
+ else: model review from scoped HANDOFF + registry evidence
35
+ ```
36
+
37
+ Missing ArtifactGraph never blocks wiring. Complete the scoped model fallback
38
+ first, then follow `.cursor/rules/flowgrid-code-optional-integrations.mdc` for
39
+ once-per-run telemetry with observed metrics only.
40
+
41
+ ## Pre-wire (tests hub)
42
+
43
+ - **[MANDATORY]** Resolve **tests-docs** (`FLOWGRID_TESTS_DOC`) and **e2e-root** (FE `tests/e2e` or project convention).
44
+ - **[MANDATORY]** `flowgrid cases:gate --strict` on TC YAML for the screen being wired (when gate is enabled for the team).
45
+
46
+ ## Post-wire (audit đầu ra)
47
+
48
+ - **[MANDATORY]** After mocks are removed and real API is connected, run:
49
+
50
+ ```bash
51
+ flowgrid audit e2e --e2e-root <playwright-dir> --tests-docs "$FLOWGRID_TESTS_DOC" --screen <W-*>
52
+ ```
53
+
54
+ Optional: pass explicit `cases/**/TC-*.yaml` paths instead of `--tests-docs`.
55
+
56
+ - Parse JSON: `missingInPlaywright`, `matrixRowsUncovered`, `orphanTestCases`, `orphanSpecs`, `gaps[]`.
57
+ - **[MANDATORY]** Fix or defer every `critical` / `warning` gap before marking wire done; log deferrals in `qa/open` if team policy allows.
58
+ - **[RECOMMENDED]** `flowgrid audit fe-be <bundle.yaml>` when integration exposed contract drift.
59
+
60
+ Ref: `docs/references/skills/wire.md` · engine `engines/spec/lib/audit-e2e-coverage.mjs`.
@@ -0,0 +1,169 @@
1
+ # {{FLOWGRID_AGENT_LABEL}} Workspace Rules — bộ docs Physical Interlocks
2
+
3
+ > [!CRITICAL]
4
+ > These are **PHYSICAL INTERLOCKS**, not casual checklist reminders.
5
+ > Generated at `flowgrid init` for agent `{{FLOWGRID_AGENT_ID}}` → `{{FLOWGRID_AGENT_DIR}}/{{FLOWGRID_OVERLAY_FILE}}`.
6
+ > Synchronized with `SSOT_AGENT_PROTOCOL.md`.
7
+ > Any violation of these laws → run **FAILED**. Chat-only "done" = **STRICTLY REJECTED**.
8
+ >
9
+ > **[STRICTLY FORBIDDEN]** Do NOT use the list below as a static Verification Checklist in place of dynamic workflow steps derived from `SKILL.md`.
10
+ > The checklist **MUST** be derived from the active skill's **Workflow + Accelerators** — never static or copy-pasted.
11
+
12
+ **Path SSOT:** `surfaces/<surface>/CMP-*/<slug>/` (NO `modules/` segment)
13
+ **Task tracking:** Checklist in chat thread (≤5 items) or implementation plan artifact / Plan Mode (large tasks). **DO NOT** create physical `TODO.md` files in the repository.
14
+ **Skill root:** `{{FLOWGRID_AGENT_DIR}}/skills/<name>/SKILL.md`
15
+ **Tools:** read=`{{FLOWGRID_READ_TOOL}}` · write=`{{FLOWGRID_WRITE_TOOL}}`
16
+
17
+ ---
18
+
19
+ ## LAW 1 — CRITICAL RULE FOR PRE-FLIGHT CHECK
20
+
21
+ In any thread (new or continuing), whenever a user requests to run a skill or feature, the **MANDATORY FIRST ACTION** is to invoke `{{FLOWGRID_READ_TOOL}}` directly on the target `SKILL.md` to load the current standards.
22
+
23
+ **STRICTLY FORBIDDEN** to rely on speculative memory or context from prior turns.
24
+
25
+ Without first invoking `{{FLOWGRID_READ_TOOL}}` on `SKILL.md` → **FORBIDDEN** to generate plans, YAML files, or any product artifacts.
26
+
27
+ ---
28
+
29
+ ## LAW 2 — CRITICAL RULE FOR TASK TRACKING & SESSION TOKEN HORIZON (Anti Flat-Check & Compaction Protection)
30
+
31
+ **Objective:** Prevent incomplete delivery, superficial checking, and session max-length token overflow (auto-compaction/truncation).
32
+
33
+ Immediately after Pre-flight, the agent **MUST** evaluate the total workload (including gaps from audit scripts, user questions, and action items) against the **Session Max-Length Horizon**:
34
+
35
+ ### Workload & Token Safeguard Gate (The 5 / 10 Threshold Rule)
36
+ 1. **Small Scope (≤5 items, single screen/API):**
37
+ - Accumulates < 30k trajectory tokens — well within safe single-session limits.
38
+ - List dynamic checklist (`- [ ]`) directly in the **chat thread**.
39
+ - Check off items (`[x]`) with concrete file/diff evidence as each completes.
40
+ - Execute wizard questions one at a time directly in the chat thread.
41
+ 2. **Buffer Scope (6–9 items):**
42
+ - Permitted in chat ONLY if items are isolated, single-turn scalar string/label fills without deep file re-reading.
43
+ - If items involve structural changes or multi-file dependencies → MUST escalate to an implementation plan.
44
+ 3. **Large Scope (≥10 items, multi-screen/cross-repo, OR audit script outputs extensive gaps):**
45
+ - **MANDATORY HARD STOP IN CHAT:** Strictly forbidden from dumping all items into the active chat session, which guarantees single-turn truncation and session auto-compaction.
46
+ - **Environment Plan Gate:** Author a structured implementation plan using the host environment's plan mechanism:
47
+ - **Antigravity:** `implementation_plan.md` in `<appDataDir>/brain/<conversation-id>/`.
48
+ - **Cursor:** Plan Mode / Plan document / `plan.md`.
49
+ - **Claude Code / Windsurf / Others:** Structured plan artifact or scratchpad (`plan.md` / `implementation_plan.md`).
50
+ - **Repository Cleanliness:** Regardless of host agent, **NEVER** commit temporary plan scratchpads into the production codebase repo.
51
+ - **Phase Slicing:** Partition workload into discrete **Phases** (each phase capped at 3–5 items).
52
+ - **Phase Boundary & Context Offloading:** At the completion of each phase, immediately write persistent physical files to disk. For the next phase, load fresh state from disk instead of accumulating verbose conversation history, insulating the workflow against context loss.
53
+
54
+ **Question Protocol (mandatory in both chat thread and implementation plan):**
55
+
56
+ - Every question **MUST** be explicitly numbered (`Question 1`, `Question 2`, etc.).
57
+ - Every question **MUST** provide **≥3 options**: (1) Concrete choice labeled `(Recommended)`, (2) `Other` (free text input), and (3) `Log as Tech Debt (Pending)`.
58
+ - **Chat Wizards (Small Scope):** Render one question at a time, awaiting user response before proceeding.
59
+ - **Implementation Plans (Large Scope):** Consolidate numbered questions within their respective phases in the plan document.
60
+
61
+ **CRITICAL — Physical File Policy:**
62
+
63
+ - **STRICTLY FORBIDDEN** to create a physical `TODO.md` file inside the target repository.
64
+ - **STRICTLY FORBIDDEN** to merely copy the static "Verification Checklist" from the end of `SKILL.md`.
65
+ - Each Workflow step = one checklist item. Each Accelerator branch = one `if available / else fallback` entry.
66
+ - **STRICTLY FORBIDDEN** to combine steps, batch check-off items, or output static generic checklists.
67
+
68
+ The verification checklist at the bottom of a skill serves only to audit evidence against derived steps — never as the checklist source itself.
69
+
70
+ ---
71
+
72
+ ## LAW 3 — CRITICAL RULE FOR EXECUTION (Plan Before Write)
73
+
74
+ **STRICTLY FORBIDDEN** to batch actions together without planning. **STRICTLY FORBIDDEN** to create redundant standalone plan files (`*-plan.md`).
75
+
76
+ ---
77
+
78
+ ## LAW 4 — CRITICAL RULE — PHYSICAL OUTPUT IMMEDIATELY (No RAM Caching)
79
+
80
+ Whenever the agent generates a persistent result, it **MUST NOT** retain it solely in RAM or chat context.
81
+
82
+ **MANDATORY TO USE TOOL `{{FLOWGRID_WRITE_TOOL}}` TO WRITE PHYSICAL FILES IMMEDIATELY.**
83
+
84
+ Physical output of step N = Physical input of step N+1.
85
+
86
+ **Exception:** Unconfirmed Grill proposals remain on the **Chat Thread**. After member confirmation → update product SSOT and **Artifact Registry** directly.
87
+
88
+ ---
89
+
90
+ ## LAW 5 — CRITICAL RULE FOR DATA ORIGIN (Zero Business Hallucination)
91
+
92
+ The agent is permitted to populate specifications from strictly **2 sources**:
93
+
94
+ 1. User prompt
95
+ 2. History / evidence in ArtifactGraph Registry
96
+
97
+ **STRICTLY FORBIDDEN** to invent fields, validations, database columns, flows, or domain tags.
98
+
99
+ Any missing detail **MUST** remain empty or be tagged `#missing_info` and deferred to `/grill`.
100
+
101
+ ---
102
+
103
+ ## LAW 6 — CRITICAL RULE FOR GRILL PROCESS (Hard Confirmation Gate)
104
+
105
+ When inspecting `#missing_info` or gaps, Grill **MUST** follow 4 steps:
106
+
107
+ 1. **Re-check ArtifactGraph** (if available) — other members may have committed updates.
108
+ 2. **Micro-scoping:** Isolate strictly the missing block/field. Do not alter settled sections.
109
+ 3. **Proposal:** Present via **wizard form** in the **Chat Thread** — one question at a time with ≥3 options (Recommended, Other, Tech Debt). Never create physical proposal files.
110
+ 4. **Hard Confirmation Gate:** The agent is **STRICTLY FORBIDDEN** from overwriting product files unilaterally. The agent **MUST** pause and await member confirmation. Only after explicit confirmation is the agent permitted to write to SSOT.
111
+
112
+ ---
113
+
114
+ ## LAW 7 — CRITICAL RULE FOR DSL REGISTRY (Human-Dictated)
115
+
116
+ Human leads are the **exclusive authority** for establishing and updating DSL/Common standards.
117
+
118
+ The agent has **NO AUTHORITY** to unilaterally decide what constitutes "Common".
119
+
120
+ The agent acts strictly as a clerk, permitted to register or update DSL/Common in only **3** passive cases:
121
+
122
+ 1. User explicitly invokes `/common` or `/common-spec`.
123
+ 2. User explicitly invokes `/docs-mark` to record rules or tags.
124
+ 3. User explicitly confirms a `/grill` proposal.
125
+
126
+ In standard `/spec` runs, the sole duty is to **consume existing common definitions**.
127
+
128
+ **STRICTLY FORBIDDEN** to invent or overwrite common/DSL definitions without authorization.
129
+
130
+ ---
131
+
132
+ ## LAW 8 — CRITICAL RULE FOR ARTIFACTGRAPH MCP & CROSS-REPO ROUTING
133
+
134
+ **1. Boundaries & Ownership:**
135
+ - ArtifactGraph manages solely `artifactgraph.json`, `registries/*.json`, `templates`, and `lexicon/` within the current repository.
136
+ - It does **NOT** manage Architecture Markdown (owned by bộ docs), Code Generators (owned by bộ code/bộ test), or Symbol Indexes (owned by CodeGraph).
137
+
138
+ **2. Cross-Repo Routing:**
139
+ - **STRICTLY FORBIDDEN** to use ArtifactGraph for broad cross-repo scanning or entire workspace graphs. Route by ownership:
140
+ - Architecture ID / C4 path → Delegate to **bộ docs** (`FLOWGRID_DOCS_ROOT`).
141
+ - IR / registry / generation → Delegate to **Owning Kit** (`FLOWGRID_DOCS_ROOT`, `FLOWGRID_DOCS_ROOT`, `FLOWGRID_TESTS_DOC`).
142
+ - Symbol / Call-graph lookups for repo X → Use **CodeGraph MCP** for repo X (`codegraph-<key>`).
143
+
144
+ **3. Protocol for MCP Usage:**
145
+ - **Status & Rebuild:** Use `artifactgraph_status`. If stale, call `artifactgraph_rebuild`.
146
+ - **Analyze:** Prioritize `artifactgraph_analyze`, `artifactgraph_grill_check`, or `artifactgraph_parity_check`.
147
+ - **Remember:** Only use `artifactgraph_remember` AFTER member confirms options during Grill.
148
+ - **Handoff:** Use `artifactgraph_allowlist_check` + `artifactgraph_recommend_command` to retrieve permitted commands; hand off to corresponding kit/script. Never run `artifactgraph_gen`.
149
+ - **Cloud Prompt:** Send `cloudPromptSlice` only for unresolved work items.
150
+ - **Setup:** If indices are missing, direct member to run `artifactgraph init` with the appropriate `--type=`.
151
+
152
+ ---
153
+
154
+ ## Mandatory Lock Sequence
155
+
156
+ ```text
157
+ {{FLOWGRID_READ_TOOL}} SKILL.md
158
+ → For every persistent result: {{FLOWGRID_WRITE_TOOL}} IMMEDIATELY (No RAM)
159
+ → Data source: User | ArtifactGraph only; tag gaps with #missing_info
160
+ → Grill: 4-step protocol + STOP for Confirmation before writing SSOT
161
+ → Common/DSL: only via /common|/common-spec|/docs-mark|Confirm
162
+ ```
163
+
164
+ ## Isolation & Fake Reports Policy
165
+
166
+ - **MANDATORY** to execute **strictly one** skill as requested by the user. **STRICTLY FORBIDDEN** to merge sibling skills.
167
+ - **STRICTLY FORBIDDEN** to generate fake Markdown reports when the skill requires YAML/bundle output.
168
+
169
+ Full wording: `SSOT_AGENT_PROTOCOL.md` (located in `{{FLOWGRID_AGENT_DIR}}/`).
@@ -0,0 +1,167 @@
1
+ # SSOT Agent Protocol — Physical Interlocks (bộ docs)
2
+
3
+ > [!CRITICAL]
4
+ > These are **PHYSICAL INTERLOCKS**, not casual reminders.
5
+ > Any violation of these laws → run **FAILED**. Chat-only "done" = **STRICTLY REJECTED**.
6
+ >
7
+ > Path SSOT: `surfaces/<surface>/CMP-*/<slug>/` (NO `modules/` segment).
8
+
9
+ ---
10
+
11
+ ## LAW 1 — CRITICAL RULE FOR PRE-FLIGHT CHECK
12
+
13
+ **Objective:** Eliminate refusal to read original specification files.
14
+
15
+ In any thread (new or continuing), whenever a user requests to run a skill or feature, the **MANDATORY FIRST ACTION** is to invoke `{{FLOWGRID_READ_TOOL}}` (or equivalent read tool) directly on the target `SKILL.md` to load the current standards.
16
+
17
+ **STRICTLY FORBIDDEN** to rely on speculative memory or context from prior turns.
18
+
19
+ Without first invoking `{{FLOWGRID_READ_TOOL}}` on `SKILL.md` → **FORBIDDEN** to generate plans, YAML files, or any product artifacts.
20
+
21
+ ---
22
+
23
+ ## LAW 2 — CRITICAL RULE FOR TASK TRACKING & SESSION TOKEN HORIZON (Anti Flat-Check & Compaction Protection)
24
+
25
+ **Objective:** Prevent incomplete delivery, superficial checking, and session max-length token overflow (auto-compaction/truncation).
26
+
27
+ Immediately after Pre-flight, the agent **MUST** evaluate the total workload (including gaps from audit scripts, user questions, and action items) against the **Session Max-Length Horizon**:
28
+
29
+ ### Workload & Token Safeguard Gate (The 5 / 10 Threshold Rule)
30
+ 1. **Small Scope (≤5 items, single screen/API):**
31
+ - Accumulates < 30k trajectory tokens — well within safe single-session limits.
32
+ - List dynamic checklist (`- [ ]`) directly in the **chat thread**.
33
+ - Check off items (`[x]`) with concrete file/diff evidence as each completes.
34
+ - Execute wizard questions one at a time directly in the chat thread.
35
+ 2. **Buffer Scope (6–9 items):**
36
+ - Permitted in chat ONLY if items are isolated, single-turn scalar string/label fills without deep file re-reading.
37
+ - If items involve structural changes or multi-file dependencies → MUST escalate to an implementation plan.
38
+ 3. **Large Scope (≥10 items, multi-screen/cross-repo, OR audit script outputs extensive gaps):**
39
+ - **MANDATORY HARD STOP IN CHAT:** Strictly forbidden from dumping all items into the active chat session, which guarantees single-turn truncation and session auto-compaction.
40
+ - **Environment Plan Gate:** Author a structured implementation plan using the host environment's plan mechanism:
41
+ - **Antigravity:** `implementation_plan.md` in `<appDataDir>/brain/<conversation-id>/`.
42
+ - **Cursor:** Plan Mode / Plan document / `plan.md`.
43
+ - **Claude Code / Windsurf / Others:** Structured plan artifact or scratchpad (`plan.md` / `implementation_plan.md`).
44
+ - **Repository Cleanliness:** Regardless of host agent, **NEVER** commit temporary plan scratchpads into the production codebase repo.
45
+ - **Phase Slicing:** Partition workload into discrete **Phases** (each phase capped at 3–5 items).
46
+ - **Phase Boundary & Context Offloading:** At the completion of each phase, immediately write persistent physical files to disk. For the next phase, load fresh state from disk instead of accumulating verbose conversation history, insulating the workflow against context loss.
47
+
48
+ **Question Protocol (mandatory in both chat thread and implementation plan):**
49
+
50
+ - Every question **MUST** be explicitly numbered (`Question 1`, `Question 2`, etc.).
51
+ - Every question **MUST** provide **≥3 options**: (1) Concrete choice labeled `(Recommended)`, (2) `Other` (free text input), and (3) `Log as Tech Debt (Pending)`.
52
+ - **Chat Wizards (Small Scope):** Render one question at a time, awaiting user response before proceeding.
53
+ - **Implementation Plans (Large Scope):** Consolidate numbered questions within their respective phases in the plan document.
54
+
55
+ **CRITICAL — Physical File Policy:**
56
+
57
+ - **STRICTLY FORBIDDEN** to create a physical `TODO.md` file inside the target repository.
58
+ - **STRICTLY FORBIDDEN** to merely copy the static "Verification Checklist" from the end of `SKILL.md`.
59
+ - Each Workflow step = one checklist item. Each Accelerator branch = one `if available / else fallback` entry.
60
+ - **STRICTLY FORBIDDEN** to combine steps, batch check-off items, or output static generic checklists.
61
+
62
+ The verification checklist at the bottom of a skill serves only to audit evidence against derived steps — never as the checklist source itself.
63
+
64
+ ---
65
+
66
+ ## LAW 3 — CRITICAL RULE FOR EXECUTION (Plan Before Write)
67
+
68
+ **Objective:** Prevent raw unvalidated generation directly in RAM.
69
+
70
+ **STRICTLY FORBIDDEN** to batch actions together without planning. **STRICTLY FORBIDDEN** to create redundant standalone plan files (`*-plan.md`).
71
+
72
+ ---
73
+
74
+ ## LAW 4 — CRITICAL RULE — PHYSICAL OUTPUT IMMEDIATELY (No RAM Caching)
75
+
76
+ **Objective:** Eliminate context truncation and loss of state.
77
+
78
+ Whenever the agent generates a persistent result (plan, proposal, bundle, step summary), it **MUST NOT** retain it solely in RAM or chat context.
79
+
80
+ **MANDATORY** to write physical files immediately using the appropriate tool.
81
+
82
+ Physical output of step N = Physical input of step N+1 (read from disk, do not rely on memory).
83
+
84
+ ---
85
+
86
+ ## LAW 5 — CRITICAL RULE FOR DATA ORIGIN (Zero Business Hallucination)
87
+
88
+ **Objective:** Forbid inventing business logic when prompt information is missing.
89
+
90
+ The agent is permitted to populate specifications from strictly **2 sources**:
91
+
92
+ 1. User prompt
93
+ 2. Evidence from ArtifactGraph Registry (when MCP is available)
94
+
95
+ **STRICTLY FORBIDDEN** to invent fields, validations, database columns, flows, or domain tags.
96
+
97
+ Any missing detail **MUST** remain empty or be tagged `#missing_info` and deferred to `/grill`.
98
+
99
+ ---
100
+
101
+ ## LAW 6 — CRITICAL RULE FOR GRILL PROCESS (Hard Confirmation Gate)
102
+
103
+ **Objective:** Restrict grilling to localized analysis; prevent unapproved scope creep.
104
+
105
+ When inspecting `#missing_info` or gaps, Grill **MUST** follow 4 steps:
106
+
107
+ 1. **Re-check ArtifactGraph** (if available) — other members may have committed updates.
108
+ 2. **Micro-scoping:** Isolate strictly the missing block/field. Do not alter settled sections.
109
+ 3. **Proposal:** Present via **wizard form** in the **Chat Thread** — one question at a time with ≥3 options (Recommended, Other, Tech Debt).
110
+ 4. **Hard Confirmation Gate:** Wait for member confirmation in chat. Only after explicit confirmation is the agent permitted to update product SSOT (`.bundle.yaml`) and Artifact Registry.
111
+
112
+ ---
113
+
114
+ ## LAW 7 — CRITICAL RULE FOR DSL REGISTRY (Human-Dictated)
115
+
116
+ **Objective:** Prevent unauthorized modifications to Common and DSL assets.
117
+
118
+ Human leads are the **exclusive authority** for establishing and updating DSL/Common standards.
119
+
120
+ The agent has **NO AUTHORITY** to unilaterally decide what constitutes "Common".
121
+
122
+ The agent acts strictly as a clerk, permitted to register or update DSL/Common in only **3** passive cases:
123
+
124
+ 1. User explicitly invokes `/common` or `/common-spec`.
125
+ 2. User explicitly invokes `/docs-mark` to record rules or tags.
126
+ 3. User explicitly confirms a `/grill` proposal.
127
+
128
+ In standard `/spec` runs, the sole duty is to **consume existing common definitions**.
129
+
130
+ **STRICTLY FORBIDDEN** to invent or overwrite common/DSL definitions without authorization.
131
+
132
+ ---
133
+
134
+ ## LAW 8 — CRITICAL RULE FOR ARTIFACTGRAPH MCP & CROSS-REPO ROUTING
135
+
136
+ **1. Boundaries & Ownership:**
137
+ - ArtifactGraph manages solely `artifactgraph.json`, `registries/*.json`, `templates`, and `lexicon/` within the current repository.
138
+ - It does **NOT** manage Architecture Markdown (owned by bộ docs), Code Generators (owned by bộ code/bộ test), or Symbol Indexes (owned by CodeGraph).
139
+
140
+ **2. Cross-Repo Routing:**
141
+ - **STRICTLY FORBIDDEN** to use ArtifactGraph for broad cross-repo scanning or entire workspace graphs. Route by ownership:
142
+ - Architecture ID / C4 path → Delegate to **bộ docs** (`FLOWGRID_DOCS_ROOT`).
143
+ - IR / registry / generation → Delegate to **Owning Kit** (`FLOWGRID_DOCS_ROOT`, `FLOWGRID_DOCS_ROOT`, `FLOWGRID_TESTS_DOC`).
144
+ - Symbol / Call-graph lookups for repo X → Use **CodeGraph MCP** for repo X (`codegraph-<key>`).
145
+
146
+ **3. Protocol for MCP Usage:**
147
+ - **Status & Rebuild:** Use `artifactgraph_status`. If stale, call `artifactgraph_rebuild`.
148
+ - **Analyze:** Prioritize `artifactgraph_analyze`, `artifactgraph_grill_check`, or `artifactgraph_parity_check`.
149
+ - **Remember:** Only use `artifactgraph_remember` AFTER member confirms options during Grill.
150
+ - **Handoff:** Use `artifactgraph_allowlist_check` + `artifactgraph_recommend_command` to retrieve permitted commands; hand off to corresponding kit/script. Never run `artifactgraph_gen`.
151
+ - **Cloud Prompt:** Send `cloudPromptSlice` only for unresolved work items.
152
+ - **Setup:** If indices are missing, direct member to run `artifactgraph init` with the appropriate `--type=`.
153
+
154
+ ---
155
+
156
+ ## Mandatory Lock Sequence for Each Skill Run
157
+
158
+ ```text
159
+ 1) {{FLOWGRID_READ_TOOL}} SKILL.md → Law 1
160
+ 2) Derive dynamic checklist → Law 2
161
+ 3) Write immediately upon producing durable results (No RAM) → Law 4
162
+ 4) Sourced exclusively from User | ArtifactGraph; tag gaps → Law 5
163
+ 5) Grill: 4-step protocol + STOP for Confirmation → Law 6
164
+ 6) Common/DSL: only via /common|/common-spec|/docs-mark|Confirm → Law 7
165
+ ```
166
+
167
+ Host overlay Antigravity: see `AGENTS.md` (synchronized Laws 1–8).
@@ -0,0 +1,53 @@
1
+ ---
2
+ description: bộ code-owned fallback and telemetry for optional integrations
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # bộ code optional integrations
7
+
8
+ ArtifactGraph and CodeGraph are optional accelerators. Their absence or
9
+ unavailability must never abort a bộ code-owned generation, dry-run,
10
+ validation, or review.
11
+
12
+ Full cross-repo routing (architecture → bộ docs, IR → pointer roots, symbols →
13
+ per-repo `codegraph-<key>`) lives in `cross-repo-index-routing.mdc`.
14
+
15
+ ## Docs registry hub
16
+
17
+ - FE reads canonical IR/registries from the member-selected docs repo through
18
+ `FLOWGRID_DOCS_ROOT` (written from `--docs-root` at init). Never infer a
19
+ sibling checkout.
20
+ - ArtifactGraph in an FE/BE repo indexes that repo only; it does **not** follow
21
+ `FLOWGRID_DOCS_ROOT` and must not be used as the bridge to docs.
22
+ - Use ArtifactGraph only for local allowlist/tag hints. Missing local
23
+ ArtifactGraph never changes where bộ code reads canonical docs input.
24
+ - bộ docs, when installed as a consumer, uses its separate `FLOWGRID_DOCS_ROOT`
25
+ pointer for architecture ID/path queries — never CodeGraph for C4.
26
+ - CodeGraph, when used, must be the Platform DNA-wired `codegraph-<repo-key>`
27
+ for that checkout. bộ code never writes those MCP entries itself. Missing
28
+ or unindexed checkouts fall back and emit telemetry; never invent a graph or
29
+ `codegraph init` a workspace parent.
30
+
31
+ For each optional integration that cannot be used:
32
+
33
+ 1. Continue the owned workflow with its documented deterministic validation or
34
+ direct adapter fallback. Where judgment is required, use the documented
35
+ model fallback; where repository evidence is required, use targeted local
36
+ search and file reads.
37
+ 2. Complete the fallback before emitting telemetry. Do not emit an absence
38
+ event before or instead of the fallback.
39
+ 3. Emit exactly one event for each `(runId, optional)` pair, including across
40
+ retries. Deduplicate repeated discovery or connection failures in the same
41
+ run.
42
+ 4. Validate the event against
43
+ `.cursor/schemas/flowgrid-code/missing-optional-event.schema.json`.
44
+ 5. Set `event` to `flowgrid.missing-optional`, `package` to
45
+ `@platform/flowgrid-code`, and name the unavailable optional as `ArtifactGraph`
46
+ or `CodeGraph`.
47
+ 6. Report the fallback actually completed and the actual failure reason.
48
+ `metrics.fileReads` is the number of successful fallback file reads and
49
+ `metrics.contextBytes` is the total UTF-8 bytes those reads added to
50
+ context. Start both counters at zero, increment from observed operations,
51
+ and never estimate, predict, or copy planned values.
52
+
53
+ Use one stable, non-empty `runId` for the entire owned command or agent run.
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://platform.local/schemas/flowgrid-code/missing-optional-event.schema.json",
4
+ "title": "FlowGrid bộ code missing optional dependency event",
5
+ "description": "Emitted once per FlowGrid bộ code run and missing optional dependency, after the owned fallback completes.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "event",
10
+ "package",
11
+ "runId",
12
+ "optional",
13
+ "reason",
14
+ "fallback",
15
+ "metrics"
16
+ ],
17
+ "properties": {
18
+ "event": {
19
+ "const": "flowgrid.missing-optional"
20
+ },
21
+ "package": {
22
+ "const": "@platform/flowgrid-code"
23
+ },
24
+ "runId": {
25
+ "type": "string",
26
+ "minLength": 1
27
+ },
28
+ "optional": {
29
+ "type": "string",
30
+ "enum": [
31
+ "ArtifactGraph",
32
+ "CodeGraph"
33
+ ]
34
+ },
35
+ "reason": {
36
+ "type": "string",
37
+ "minLength": 1
38
+ },
39
+ "fallback": {
40
+ "type": "string",
41
+ "minLength": 1
42
+ },
43
+ "metrics": {
44
+ "type": "object",
45
+ "additionalProperties": false,
46
+ "required": [
47
+ "fileReads",
48
+ "contextBytes"
49
+ ],
50
+ "properties": {
51
+ "fileReads": {
52
+ "type": "integer",
53
+ "minimum": 0
54
+ },
55
+ "contextBytes": {
56
+ "type": "integer",
57
+ "minimum": 0
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,13 @@
1
+ # ArtifactGraph — test hooks
2
+
3
+ - Use the installed testcase taxonomy for scenario, coverage, and dimension
4
+ suggestions on the current tests repo's own plans only.
5
+ - Resolve known E2E bundles from the current product index (local).
6
+ - Full product registry/IR remains in docs. bộ test reads cross-repo evidence
7
+ through `FLOWGRID_DOCS_ROOT` / `FLOWGRID_TESTS_DOC`; ArtifactGraph does not
8
+ follow those pointers.
9
+ - Architecture ID / C4 lookups go to bộ docs (`FLOWGRID_DOCS_ROOT`). Symbol /
10
+ call-graph lookups go to the target repo's `codegraph-<key>` MCP — Platform
11
+ DNA owns that auto-wire, not ArtifactGraph.
12
+ - Run testcase generation only when the current repo allowlists it.
13
+ - Keep `/testcase` and `/grill-testcase` phase skills owned by the test repo.
@@ -0,0 +1,14 @@
1
+ # Tests hub plans readiness
2
+
3
+ **Who:** `/testcase`, `/grill-testcase`
4
+ **Not:** FE `/test` Playwright gen
5
+
6
+ ## Gate
7
+
8
+ 1. [ ] Design `W-*` / rules / acceptance tồn tại trên **docs hub** (SSOT)
9
+ 2. [ ] `surface` → `CMP-*` (module) → `SC-*` (GWT + examples + coverage_plan)
10
+ 3. [ ] Mỗi `TC-*` dùng `coverage[]` (không `type`); refs + bridge FE đủ gen
11
+ 4. [ ] `registries/tests-index.json` cập nhật
12
+ 5. [ ] `flowgrid cases:gate --strict --docs-root $FLOWGRID_DOCS_ROOT` (schema + audit + bundle trace + SC coverage) · `pnpm cases:render` (MD member VI)
13
+ 6. [ ] Grill: không còn `spec_hole` mở; coverage_gap đã xử lý hoặc backlog có chủ
14
+ 7. [ ] Handoff FE chỉ sau grill-testcase OK
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Route cross-repo evidence to the owning per-repo index
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Cross-repo index routing
7
+
8
+ - Architecture IDs and Functions/W-* paths belong to bộ docs through `FLOWGRID_DOCS_ROOT`.
9
+ Never use CodeGraph as the architecture index.
10
+ - Test plans use `FLOWGRID_TESTS_DOC`; docs evidence uses
11
+ `FLOWGRID_DOCS_ROOT`; IR/registry/generation follows its owning pointer such as
12
+ `FLOWGRID_DOCS_ROOT`.
13
+ - For symbols or call graphs in repo X, call the Platform DNA-wired
14
+ `codegraph-<repo-key>` MCP whose `--project-root` is checkout X. Never query
15
+ the index of the currently open repo for another repo.
16
+ - Cross-index MCP entries come from Platform DNA using
17
+ `platform-repos.local.json` / `legacy-repos.local.json`. Do not ask members to
18
+ hand-edit `.cursor/mcp.json`, and never commit machine-local roots.
19
+ - Only use a checkout-specific CodeGraph server when that checkout exists and
20
+ already has `.codegraph/`. If it is not indexed, report:
21
+ `cd <root> && codegraph init`.
22
+ - Never initialize or scan a workspace parent. Keep one CodeGraph index per
23
+ repo. ArtifactGraph remains local to the current repo and is never a shared
24
+ docs or cross-repo index.