@givolt/i3-composer-agent 3.1.0 → 4.0.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 (677) hide show
  1. package/.agents/plugins/marketplace.json +1 -1
  2. package/.claude/commands/i3-build.md +1 -0
  3. package/.claude/commands/i3-code-simplify.md +1 -0
  4. package/.claude/commands/i3-constraints.md +1 -0
  5. package/.claude/commands/i3-plan.md +1 -0
  6. package/.claude/commands/i3-review.md +1 -0
  7. package/.claude/commands/i3-ship.md +1 -0
  8. package/.claude/commands/i3-sop.md +3 -3
  9. package/.claude/commands/i3-spec.md +1 -0
  10. package/.claude/commands/i3-test.md +1 -0
  11. package/.claude/commands/i3-webperf.md +1 -0
  12. package/.claude-plugin/marketplace.json +1 -1
  13. package/.claude-plugin/plugin.json +1 -1
  14. package/.codex-plugin/plugin.json +2 -2
  15. package/.gemini/commands/i3-sop.toml +3 -3
  16. package/README.md +44 -43
  17. package/bin/i3-composer-agent.cjs +4 -59
  18. package/bin/install.cjs +6 -14
  19. package/bin/native-layout.cjs +11 -2
  20. package/bin/native-migration.cjs +68 -28
  21. package/bin/retired-custom-fingerprints.json +1597 -0
  22. package/bin/wizard.cjs +2 -13
  23. package/commands/i3-sop.toml +3 -3
  24. package/docs/antigravity-setup.md +3 -1
  25. package/docs/codebuddy-setup.md +19 -76
  26. package/docs/codex-setup.md +10 -4
  27. package/docs/comparison.md +1 -1
  28. package/docs/copilot-cli-setup.md +4 -4
  29. package/docs/cursor-setup.md +1 -1
  30. package/docs/gemini-cli-setup.md +1 -1
  31. package/docs/other-hosts.md +2 -2
  32. package/docs/windsurf-setup.md +2 -2
  33. package/docs/workbuddy-setup.md +9 -16
  34. package/evals/README.md +10 -0
  35. package/evals/cases/i3-code-simplification.json +8 -0
  36. package/evals/cases/i3-documentation-and-adrs.json +4 -0
  37. package/evals/cases/i3-enterprise-sop.json +70 -32
  38. package/evals/cases/i3-frontend-ui-engineering.json +1 -1
  39. package/evals/cases/i3-security-and-hardening.json +4 -0
  40. package/evals/cases/i3-ui-demo.json +2 -2
  41. package/evals/cases/i3-using-agent-skills.json +5 -5
  42. package/evals/plugin/simplify-fires-on-pasted-function/graders/behavior-kept-and-explained.md +7 -0
  43. package/evals/plugin/simplify-fires-on-pasted-function/graders/skill-fired.md +5 -0
  44. package/evals/plugin/simplify-fires-on-pasted-function/prompt.md +30 -0
  45. package/evals/plugin/simplify-stays-quiet-on-make-it-fast/graders/not-fired.md +8 -0
  46. package/evals/plugin/simplify-stays-quiet-on-make-it-fast/prompt.md +20 -0
  47. package/evals/zh-CN/cases/i3-code-simplification.json +8 -0
  48. package/evals/zh-CN/cases/i3-documentation-and-adrs.json +4 -0
  49. package/evals/zh-CN/cases/i3-enterprise-sop.json +77 -31
  50. package/evals/zh-CN/cases/i3-frontend-ui-engineering.json +2 -2
  51. package/evals/zh-CN/cases/i3-security-and-hardening.json +4 -0
  52. package/evals/zh-CN/cases/i3-ui-demo.json +2 -2
  53. package/evals/zh-CN/cases/i3-using-agent-skills.json +6 -6
  54. package/hooks/SDD-CACHE.md +1 -1
  55. package/package.json +13 -102
  56. package/plugin.json +15 -2
  57. package/references/accessibility-checklist.md +4 -4
  58. package/references/performance-checklist.md +5 -4
  59. package/references/testing-patterns.md +2 -1
  60. package/scripts/floor-guard-reference-test.js +32 -0
  61. package/scripts/lib/execution-status.js +44 -0
  62. package/scripts/run-evals-test.js +157 -7
  63. package/scripts/run-evals.js +59 -12
  64. package/scripts/ui-demo-test.js +2 -2
  65. package/scripts/validate-artifact-paths-test.js +14 -0
  66. package/scripts/validate-artifact-paths.js +4 -2
  67. package/skills/i3-api-and-interface-design/SKILL.md +3 -1
  68. package/skills/i3-ci-cd-and-automation/SKILL.md +7 -4
  69. package/skills/i3-code-simplification/SKILL.md +3 -3
  70. package/skills/i3-constraint-driven-development/SKILL.md +4 -4
  71. package/skills/i3-constraint-driven-development/references/floor-guard.md +2 -2
  72. package/skills/i3-context-engineering/SKILL.md +1 -1
  73. package/skills/i3-debugging-and-error-recovery/SKILL.md +1 -1
  74. package/skills/i3-deprecation-and-migration/SKILL.md +6 -1
  75. package/skills/i3-documentation-and-adrs/SKILL.md +3 -2
  76. package/skills/i3-enterprise-sop/SKILL.md +121 -94
  77. package/skills/i3-enterprise-sop/references/engineering-skeleton/directory-standard.md +31 -17
  78. package/skills/i3-enterprise-sop/references/handoff.py +235 -135
  79. package/skills/i3-enterprise-sop/references/read_text.py +60 -0
  80. package/skills/i3-enterprise-sop/references/technical-baseline/baselines/enterprise-application-technical-baseline-v0-0-4.md +47 -47
  81. package/skills/i3-enterprise-sop/references/technical-baseline/readme.md +9 -118
  82. package/skills/i3-enterprise-sop/references/technical-baseline/templates/technical-baseline.md +8 -8
  83. package/skills/i3-enterprise-sop/references/{ad/templates → templates}/ad.md +57 -50
  84. package/skills/i3-enterprise-sop/references/{brd/templates → templates}/brd.md +23 -12
  85. package/skills/i3-enterprise-sop/references/{prd/templates → templates}/prd.md +84 -51
  86. package/skills/i3-enterprise-sop/references/{testcase/templates → templates}/testcase.md +49 -39
  87. package/skills/i3-frontend-ui-engineering/SKILL.md +6 -10
  88. package/skills/i3-idea-refine/SKILL.md +4 -2
  89. package/skills/i3-incremental-implementation/SKILL.md +0 -4
  90. package/skills/i3-performance-optimization/SKILL.md +2 -2
  91. package/skills/i3-security-and-hardening/references/hardening-patterns.md +5 -0
  92. package/skills/i3-source-driven-development/SKILL.md +3 -2
  93. package/skills/i3-spec-driven-development/SKILL.md +1 -1
  94. package/skills/i3-ui-demo/SKILL.md +3 -1
  95. package/skills/i3-ui-demo/references/dependencies.md +1 -1
  96. package/skills/i3-ui-demo/references/resources.md +1 -1
  97. package/skills/i3-ui-demo/scripts/dependencies.cjs +0 -3
  98. package/skills/i3-using-agent-skills/SKILL.md +2 -2
  99. package/.claude/commands/i3-prototype.md +0 -23
  100. package/.gemini/commands/i3-prototype.toml +0 -23
  101. package/commands/i3-prototype.toml +0 -23
  102. package/docs/upstream-repository/AGENTS.md +0 -92
  103. package/docs/upstream-repository/CLAUDE.md +0 -60
  104. package/docs/upstream-repository/CONTRIBUTING.md +0 -137
  105. package/docs/upstream-repository/README.md +0 -8
  106. package/docs/upstream-repository/gitattributes.txt +0 -1
  107. package/docs/upstream-repository/gitignore.txt +0 -10
  108. package/docs/upstream-repository/manifest.json +0 -71
  109. package/docs/upstream-repository/opencode-skills.link +0 -1
  110. package/docs/upstream-repository/skill-gap.yml +0 -80
  111. package/docs/upstream-repository/skills-contributing.md +0 -15
  112. package/docs/upstream-repository/test-plugin-install.yml +0 -167
  113. package/evals/cases/i3-ui-prototype.json +0 -158
  114. package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.css +0 -3
  115. package/evals/fixtures/i3-ui-prototype/admin-list/assets/reference.js +0 -8
  116. package/evals/fixtures/i3-ui-prototype/admin-list/capability-definition.json +0 -67
  117. package/evals/fixtures/i3-ui-prototype/admin-list/index.html +0 -89
  118. package/evals/fixtures/i3-ui-prototype/admin-list/readme.md +0 -52
  119. package/evals/fixtures/i3-ui-prototype/admin-list/template.json +0 -8
  120. package/evals/fixtures/i3-ui-prototype/business-brief.md +0 -7
  121. package/evals/zh-CN/cases/i3-ui-prototype.json +0 -165
  122. package/hooks/PROTOTYPE.md +0 -31
  123. package/hooks/codebuddy-upstream.cjs +0 -93
  124. package/hooks/i3-prototype.cjs +0 -7
  125. package/hooks/manage.cjs +0 -169
  126. package/scripts/design-provider-discovery-test.js +0 -190
  127. package/scripts/design-provider-test.js +0 -75
  128. package/scripts/enterprise-template-test.js +0 -205
  129. package/scripts/lib/prototype-fixture.cjs +0 -17
  130. package/scripts/prototype-cache-test.js +0 -55
  131. package/scripts/prototype-generation-entry-test.js +0 -6
  132. package/scripts/prototype-generation-evidence-test.js +0 -10
  133. package/scripts/prototype-generation-native-test.js +0 -78
  134. package/scripts/prototype-generation-test.js +0 -99
  135. package/scripts/prototype-inventory-test.js +0 -43
  136. package/scripts/prototype-locations-test.js +0 -79
  137. package/scripts/prototype-project-test.js +0 -183
  138. package/scripts/template-adapter-test.js +0 -155
  139. package/scripts/ui-prototype-binding-recovery-test.js +0 -84
  140. package/scripts/ui-prototype-buddy-lifecycle-test.js +0 -102
  141. package/scripts/ui-prototype-codebuddy-hook-test.js +0 -112
  142. package/scripts/ui-prototype-content-test.js +0 -123
  143. package/scripts/ui-prototype-dependencies-test.js +0 -226
  144. package/scripts/ui-prototype-devtools-test.js +0 -53
  145. package/scripts/ui-prototype-execution-evidence-test.js +0 -62
  146. package/scripts/ui-prototype-execution-gates-test.js +0 -91
  147. package/scripts/ui-prototype-execution-policy-test.js +0 -53
  148. package/scripts/ui-prototype-execution-runtime-test.js +0 -27
  149. package/scripts/ui-prototype-ide-source-test.js +0 -73
  150. package/scripts/ui-prototype-native-test.js +0 -526
  151. package/scripts/ui-prototype-recovery-test.js +0 -81
  152. package/scripts/ui-prototype-registration-test.js +0 -53
  153. package/scripts/ui-prototype-template-test.js +0 -261
  154. package/scripts/ui-prototype-test.js +0 -124
  155. package/scripts/ui-prototype-transcript-auto-test.js +0 -67
  156. package/skills/i3-enterprise-sop/references/ad/assets-manifest.json +0 -86
  157. package/skills/i3-enterprise-sop/references/ad/prompts/01-generate.md +0 -58
  158. package/skills/i3-enterprise-sop/references/ad/prompts/02-review.md +0 -54
  159. package/skills/i3-enterprise-sop/references/ad/prompts/03-revise.md +0 -54
  160. package/skills/i3-enterprise-sop/references/ad/prompts/04-recheck.md +0 -54
  161. package/skills/i3-enterprise-sop/references/ad/readme.md +0 -70
  162. package/skills/i3-enterprise-sop/references/assets-manifest.json +0 -230
  163. package/skills/i3-enterprise-sop/references/brd/assets-manifest.json +0 -83
  164. package/skills/i3-enterprise-sop/references/brd/prompts/01-generate.md +0 -51
  165. package/skills/i3-enterprise-sop/references/brd/prompts/02-review.md +0 -47
  166. package/skills/i3-enterprise-sop/references/brd/prompts/03-revise.md +0 -47
  167. package/skills/i3-enterprise-sop/references/brd/prompts/04-recheck.md +0 -47
  168. package/skills/i3-enterprise-sop/references/brd/readme.md +0 -50
  169. package/skills/i3-enterprise-sop/references/codebuddy-project-guide.md +0 -34
  170. package/skills/i3-enterprise-sop/references/controlled-handoff.md +0 -41
  171. package/skills/i3-enterprise-sop/references/controlled_handoff.py +0 -379
  172. package/skills/i3-enterprise-sop/references/engineering-skeleton/adoption.md +0 -200
  173. package/skills/i3-enterprise-sop/references/engineering-skeleton/catalog.json +0 -17
  174. package/skills/i3-enterprise-sop/references/engineering-skeleton/readme.md +0 -52
  175. package/skills/i3-enterprise-sop/references/handoff-contract.md +0 -196
  176. package/skills/i3-enterprise-sop/references/lifecycle-contract.md +0 -91
  177. package/skills/i3-enterprise-sop/references/plan-handoff.md +0 -73
  178. package/skills/i3-enterprise-sop/references/prd/assets-manifest.json +0 -109
  179. package/skills/i3-enterprise-sop/references/prd/prompts/01-generate.md +0 -64
  180. package/skills/i3-enterprise-sop/references/prd/prompts/02-review.md +0 -49
  181. package/skills/i3-enterprise-sop/references/prd/prompts/03-revise.md +0 -48
  182. package/skills/i3-enterprise-sop/references/prd/prompts/04-recheck.md +0 -47
  183. package/skills/i3-enterprise-sop/references/prd/readme.md +0 -137
  184. package/skills/i3-enterprise-sop/references/prd/template-contracts.md +0 -39
  185. package/skills/i3-enterprise-sop/references/prd/templates/ad.md +0 -17
  186. package/skills/i3-enterprise-sop/references/readme.md +0 -167
  187. package/skills/i3-enterprise-sop/references/recovery-contract.md +0 -65
  188. package/skills/i3-enterprise-sop/references/review-handoff.md +0 -105
  189. package/skills/i3-enterprise-sop/references/selection-handoff.md +0 -55
  190. package/skills/i3-enterprise-sop/references/selection_handoff.py +0 -225
  191. package/skills/i3-enterprise-sop/references/stages.json +0 -271
  192. package/skills/i3-enterprise-sop/references/technical-baseline/assets-manifest.json +0 -84
  193. package/skills/i3-enterprise-sop/references/template-contracts.md +0 -142
  194. package/skills/i3-enterprise-sop/references/testcase/assets-manifest.json +0 -91
  195. package/skills/i3-enterprise-sop/references/testcase/prompts/01-generate.md +0 -53
  196. package/skills/i3-enterprise-sop/references/testcase/prompts/02-review.md +0 -51
  197. package/skills/i3-enterprise-sop/references/testcase/prompts/03-revise.md +0 -49
  198. package/skills/i3-enterprise-sop/references/testcase/prompts/04-recheck.md +0 -51
  199. package/skills/i3-enterprise-sop/references/testcase/readme.md +0 -61
  200. package/skills/i3-enterprise-sop/references/verification/check_execution.py +0 -185
  201. package/skills/i3-enterprise-sop/references/verification/check_native_execution.py +0 -282
  202. package/skills/i3-enterprise-sop/references/verification/check_reads.py +0 -348
  203. package/skills/i3-enterprise-sop/references/verification/readme.md +0 -149
  204. package/skills/i3-enterprise-sop/references/verification/review-output.schema.json +0 -155
  205. package/skills/i3-enterprise-sop/references/verification/review_handoff.py +0 -329
  206. package/skills/i3-ui-prototype/SKILL.md +0 -256
  207. package/skills/i3-ui-prototype/assets/capabilities/generation.json +0 -833
  208. package/skills/i3-ui-prototype/assets/capabilities/management.json +0 -294
  209. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/acceptance.json +0 -51
  210. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/component-map.json +0 -13
  211. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/generation-component-map.json +0 -300
  212. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/index.html +0 -11
  213. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package-lock.json +0 -2298
  214. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/package.json +0 -22
  215. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/public/prototype-config.json +0 -6
  216. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/App.vue +0 -136
  217. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/components/DeviceEditor.vue +0 -111
  218. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/config.ts +0 -19
  219. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/content.ts +0 -28
  220. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/devices.ts +0 -50
  221. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/domain/theme.ts +0 -25
  222. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/main.ts +0 -18
  223. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/style.css +0 -50
  224. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/src/useDevices.ts +0 -66
  225. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/devices.test.ts +0 -44
  226. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tests/theme.test.ts +0 -26
  227. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/tsconfig.json +0 -15
  228. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/legacy-starter/vite.config.ts +0 -4
  229. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/profile.json +0 -174
  230. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/readme.md +0 -61
  231. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/index.html +0 -11
  232. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package-lock.json +0 -2298
  233. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/package.json +0 -22
  234. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/public/prototype-config.json +0 -21
  235. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/App.vue +0 -62
  236. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/PrototypeShell.vue +0 -59
  237. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/config.ts +0 -23
  238. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/presentation.ts +0 -29
  239. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/domain/theme.ts +0 -25
  240. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/main.ts +0 -18
  241. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/src/style.css +0 -26
  242. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/presentation.test.ts +0 -23
  243. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tests/theme.test.ts +0 -26
  244. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/tsconfig.json +0 -15
  245. package/skills/i3-ui-prototype/assets/frameworks/vue-antdv-next/starter/vite.config.ts +0 -4
  246. package/skills/i3-ui-prototype/assets/hosts/codebuddy/profile.json +0 -17
  247. package/skills/i3-ui-prototype/assets/optional-skills/host-targets.json +0 -739
  248. package/skills/i3-ui-prototype/assets/optional-skills/sources.json +0 -27
  249. package/skills/i3-ui-prototype/assets/templates/catalog.js +0 -149
  250. package/skills/i3-ui-prototype/assets/templates/catalog.json +0 -149
  251. package/skills/i3-ui-prototype/assets/templates/classic-admin/manifest.json +0 -9
  252. package/skills/i3-ui-prototype/assets/templates/classic-admin/preset.json +0 -6
  253. package/skills/i3-ui-prototype/assets/templates/common/app/app.mjs +0 -89
  254. package/skills/i3-ui-prototype/assets/templates/common/app/config.json +0 -1
  255. package/skills/i3-ui-prototype/assets/templates/common/app/domain.mjs +0 -20
  256. package/skills/i3-ui-prototype/assets/templates/common/app/index.html +0 -17
  257. package/skills/i3-ui-prototype/assets/templates/common/app/serve.cjs +0 -16
  258. package/skills/i3-ui-prototype/assets/templates/common/app/styles.css +0 -670
  259. package/skills/i3-ui-prototype/assets/templates/common/app/tokens.css +0 -19
  260. package/skills/i3-ui-prototype/assets/templates/common/design-system/master.md +0 -20
  261. package/skills/i3-ui-prototype/assets/templates/common/gallery.html +0 -2
  262. package/skills/i3-ui-prototype/assets/templates/common/mocks/applications.json +0 -5
  263. package/skills/i3-ui-prototype/assets/templates/common/requirements-map.json +0 -8
  264. package/skills/i3-ui-prototype/assets/templates/common/serve-gallery.cjs +0 -16
  265. package/skills/i3-ui-prototype/assets/templates/credits.md +0 -17
  266. package/skills/i3-ui-prototype/assets/templates/data-operations/manifest.json +0 -9
  267. package/skills/i3-ui-prototype/assets/templates/data-operations/preset.json +0 -6
  268. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/capability-definition.json +0 -294
  269. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/component-inventory.json +0 -707
  270. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/design-system.md +0 -32
  271. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/generation.json +0 -49
  272. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/index.html +0 -534
  273. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/manifest.json +0 -9
  274. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline-build.json +0 -265
  275. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/offline.js +0 -8888
  276. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/origin.json +0 -344
  277. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/preset.json +0 -928
  278. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/app.js +0 -22
  279. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/empty.svg +0 -1
  280. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/reference-styles.json +0 -1
  281. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-403.svg +0 -1
  282. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-404.svg +0 -1
  283. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets-manifest.json +0 -334
  284. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/baseline.json +0 -173
  285. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/conversion.md +0 -30
  286. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/credits.md +0 -17
  287. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/design-tokens.json +0 -881
  288. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/index.html +0 -28
  289. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/@qin-ui-antdv-next-pro.txt +0 -9
  290. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/ant-design-icons.txt +0 -22
  291. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/antdv-next.txt +0 -21
  292. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/package.json +0 -12
  293. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/browser-routes.json +0 -298
  294. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/coverage.json +0 -180
  295. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/integrity.json +0 -13
  296. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/keyboard.json +0 -11
  297. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/responsive.json +0 -125
  298. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/review.md +0 -51
  299. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/rules.log +0 -150
  300. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-html.png +0 -0
  301. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-original.png +0 -0
  302. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-html.png +0 -0
  303. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-original.png +0 -0
  304. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-html.png +0 -0
  305. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-original.png +0 -0
  306. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-html.png +0 -0
  307. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-original.png +0 -0
  308. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/selection.json +0 -9
  309. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/visual-comparison.json +0 -342
  310. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/readme.md +0 -73
  311. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/reference.md +0 -59
  312. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/routes.json +0 -178
  313. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/controls.js +0 -99
  314. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dialogs.js +0 -54
  315. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dom.js +0 -264
  316. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/forms.js +0 -47
  317. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/icons.js +0 -41
  318. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/layout.js +0 -47
  319. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/router.js +0 -63
  320. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/state.js +0 -90
  321. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/table.js +0 -41
  322. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/widgets.js +0 -8
  323. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.html +0 -3
  324. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.js +0 -36
  325. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.html +0 -2
  326. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.js +0 -51
  327. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.html +0 -3
  328. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.js +0 -48
  329. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.html +0 -2
  330. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.js +0 -6
  331. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.html +0 -2
  332. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.js +0 -13
  333. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/data.js +0 -24
  334. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/domain.js +0 -32
  335. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/registry.js +0 -25
  336. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/store.js +0 -85
  337. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.html +0 -2
  338. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.js +0 -17
  339. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.html +0 -2
  340. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.js +0 -66
  341. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.html +0 -3
  342. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.js +0 -38
  343. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.html +0 -2
  344. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.js +0 -66
  345. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.html +0 -2
  346. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.js +0 -5
  347. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.html +0 -2
  348. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.js +0 -12
  349. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.html +0 -2
  350. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.js +0 -11
  351. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.html +0 -2
  352. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.js +0 -116
  353. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.html +0 -2
  354. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.js +0 -32
  355. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.html +0 -2
  356. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.js +0 -49
  357. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.html +0 -2
  358. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.js +0 -10
  359. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.html +0 -2
  360. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.js +0 -77
  361. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/data.js +0 -60
  362. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/domain.js +0 -105
  363. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/store.js +0 -212
  364. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.html +0 -2
  365. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.js +0 -18
  366. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.html +0 -2
  367. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.js +0 -23
  368. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.html +0 -2
  369. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.js +0 -78
  370. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.html +0 -2
  371. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.js +0 -55
  372. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.html +0 -2
  373. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.js +0 -26
  374. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.html +0 -2
  375. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.js +0 -38
  376. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.html +0 -2
  377. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.js +0 -7
  378. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.html +0 -2
  379. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.js +0 -72
  380. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.html +0 -2
  381. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.js +0 -46
  382. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.html +0 -2
  383. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.js +0 -52
  384. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.html +0 -2
  385. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.js +0 -19
  386. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.html +0 -2
  387. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.js +0 -30
  388. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/data.js +0 -48
  389. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/domain.js +0 -39
  390. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/store.js +0 -129
  391. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.html +0 -4
  392. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.js +0 -21
  393. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.html +0 -2
  394. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.js +0 -8
  395. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.html +0 -2
  396. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.js +0 -37
  397. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.html +0 -2
  398. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.js +0 -10
  399. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.html +0 -2
  400. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.js +0 -37
  401. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.html +0 -2
  402. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.js +0 -49
  403. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.html +0 -4
  404. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.js +0 -22
  405. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.html +0 -2
  406. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.js +0 -9
  407. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/commands.js +0 -82
  408. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/examples.js +0 -47
  409. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/model.js +0 -61
  410. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/repair.js +0 -68
  411. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/store.js +0 -55
  412. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/types.js +0 -1
  413. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/workbench.js +0 -18
  414. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.html +0 -3
  415. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.js +0 -28
  416. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.html +0 -2
  417. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.js +0 -18
  418. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.html +0 -2
  419. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.js +0 -31
  420. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.html +0 -2
  421. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.js +0 -27
  422. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.html +0 -2
  423. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.js +0 -16
  424. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.html +0 -2
  425. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.js +0 -43
  426. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.html +0 -4
  427. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.js +0 -34
  428. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.html +0 -2
  429. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.js +0 -30
  430. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.html +0 -3
  431. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.js +0 -67
  432. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.html +0 -2
  433. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.js +0 -41
  434. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.html +0 -2
  435. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.js +0 -31
  436. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.html +0 -2
  437. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.js +0 -26
  438. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.html +0 -2
  439. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.js +0 -70
  440. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/data.js +0 -8
  441. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/domain.js +0 -62
  442. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/management.js +0 -36
  443. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/managementStore.js +0 -49
  444. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/store.js +0 -132
  445. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.html +0 -2
  446. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.js +0 -38
  447. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.html +0 -2
  448. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.js +0 -11
  449. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.html +0 -2
  450. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.js +0 -45
  451. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.html +0 -2
  452. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.js +0 -54
  453. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.html +0 -3
  454. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.js +0 -27
  455. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.html +0 -2
  456. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.js +0 -12
  457. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.html +0 -2
  458. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.js +0 -45
  459. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.html +0 -3
  460. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.js +0 -38
  461. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/domain.js +0 -61
  462. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/state.js +0 -51
  463. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/store.js +0 -116
  464. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.html +0 -2
  465. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.js +0 -45
  466. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.html +0 -4
  467. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.js +0 -30
  468. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.html +0 -2
  469. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.js +0 -67
  470. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.html +0 -2
  471. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.js +0 -5
  472. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.html +0 -4
  473. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.js +0 -60
  474. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/commands.js +0 -157
  475. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/model.js +0 -136
  476. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/store.js +0 -76
  477. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.html +0 -3
  478. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.js +0 -26
  479. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.html +0 -2
  480. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.js +0 -14
  481. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.html +0 -2
  482. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.js +0 -113
  483. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.html +0 -3
  484. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.js +0 -62
  485. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/commands.js +0 -97
  486. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/model.js +0 -147
  487. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/store.js +0 -13
  488. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.html +0 -2
  489. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.js +0 -9
  490. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.html +0 -2
  491. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.js +0 -8
  492. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.html +0 -2
  493. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.js +0 -37
  494. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.html +0 -2
  495. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.js +0 -8
  496. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.html +0 -2
  497. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.js +0 -17
  498. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/columns.js +0 -32
  499. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryGuide.js +0 -49
  500. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryView.js +0 -12
  501. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listBatch.js +0 -15
  502. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listSelection.js +0 -37
  503. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/policy.js +0 -68
  504. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/session.js +0 -44
  505. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.html +0 -2
  506. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.js +0 -25
  507. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.html +0 -2
  508. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.js +0 -53
  509. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.html +0 -10
  510. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.js +0 -30
  511. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.html +0 -2
  512. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.js +0 -10
  513. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.html +0 -2
  514. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.js +0 -9
  515. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/confirmation.js +0 -3
  516. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/navigation.js +0 -19
  517. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.html +0 -2
  518. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.js +0 -8
  519. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.html +0 -2
  520. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.js +0 -32
  521. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.html +0 -2
  522. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.js +0 -15
  523. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.html +0 -2
  524. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.js +0 -11
  525. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.html +0 -2
  526. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.js +0 -57
  527. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.html +0 -2
  528. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.js +0 -37
  529. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/data.js +0 -20
  530. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/domain.js +0 -55
  531. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/store.js +0 -151
  532. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.html +0 -3
  533. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.js +0 -18
  534. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.html +0 -2
  535. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.js +0 -40
  536. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.html +0 -2
  537. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.js +0 -51
  538. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.html +0 -2
  539. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.js +0 -9
  540. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.html +0 -5
  541. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.js +0 -48
  542. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/domain.js +0 -204
  543. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/exampleSource.js +0 -22
  544. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/registry.js +0 -135
  545. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/store.js +0 -137
  546. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.html +0 -3
  547. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.js +0 -36
  548. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/model.js +0 -56
  549. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/store.js +0 -15
  550. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.html +0 -2
  551. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.js +0 -27
  552. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.html +0 -4
  553. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.js +0 -31
  554. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.html +0 -2
  555. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.js +0 -68
  556. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.html +0 -5
  557. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.js +0 -55
  558. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/data.js +0 -16
  559. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/domain.js +0 -83
  560. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/registry.js +0 -18
  561. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/store.js +0 -61
  562. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/admin.css +0 -60
  563. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/agents.css +0 -46
  564. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/antdv.css +0 -295
  565. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/app.css +0 -102
  566. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/delivery.css +0 -4
  567. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/intents.css +0 -37
  568. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/native.css +0 -22
  569. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/operations.css +0 -2
  570. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pbc.css +0 -3
  571. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/permissions.css +0 -22
  572. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pro.css +0 -1
  573. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/releases.css +0 -4
  574. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reset.css +0 -246
  575. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reviews.css +0 -8
  576. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tasks.css +0 -6
  577. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tokens.css +0 -15
  578. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workbench.css +0 -61
  579. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workflows.css +0 -1
  580. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/admin-rules.test.js +0 -96
  581. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/agents.test.js +0 -14
  582. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/intent-state.test.js +0 -37
  583. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/list-batch.test.js +0 -44
  584. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-fixtures.js +0 -19
  585. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-repair.test.js +0 -14
  586. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operations.test.js +0 -25
  587. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-management.test.js +0 -17
  588. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-state.test.js +0 -24
  589. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permission-config.test.js +0 -23
  590. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permissions.test.js +0 -24
  591. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/releases.test.js +0 -50
  592. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/reviews.test.js +0 -36
  593. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-forms-router.test.js +0 -28
  594. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-state.test.js +0 -42
  595. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-stores.test.js +0 -16
  596. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/spec-state.test.js +0 -11
  597. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/tasks.test.js +0 -27
  598. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workbench.test.js +0 -34
  599. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workflows.test.js +0 -16
  600. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/convert.mjs +0 -168
  601. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/serve.mjs +0 -7
  602. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/styles.mjs +0 -11
  603. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/verify.mjs +0 -24
  604. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/serve.cjs +0 -16
  605. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template-inventory.json +0 -28791
  606. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/template.json +0 -9
  607. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/usability.css +0 -44
  608. package/skills/i3-ui-prototype/assets/templates/gallery/index.html +0 -40
  609. package/skills/i3-ui-prototype/assets/templates/generation-options.js +0 -42
  610. package/skills/i3-ui-prototype/assets/templates/index.html +0 -3
  611. package/skills/i3-ui-prototype/assets/templates/modern-workspace/manifest.json +0 -9
  612. package/skills/i3-ui-prototype/assets/templates/modern-workspace/preset.json +0 -6
  613. package/skills/i3-ui-prototype/assets/templates/presentation.html +0 -17
  614. package/skills/i3-ui-prototype/assets/templates/serve-gallery.cjs +0 -23
  615. package/skills/i3-ui-prototype/references/artifact-contract.md +0 -66
  616. package/skills/i3-ui-prototype/references/content-template.md +0 -81
  617. package/skills/i3-ui-prototype/references/enterprise-admin.md +0 -44
  618. package/skills/i3-ui-prototype/references/entry-contract.md +0 -71
  619. package/skills/i3-ui-prototype/references/execution-evidence.md +0 -51
  620. package/skills/i3-ui-prototype/references/expert-adapter.md +0 -76
  621. package/skills/i3-ui-prototype/references/framework-contract.md +0 -76
  622. package/skills/i3-ui-prototype/references/generation-contract.md +0 -122
  623. package/skills/i3-ui-prototype/references/interaction-acceptance.md +0 -169
  624. package/skills/i3-ui-prototype/references/legacy-native.md +0 -58
  625. package/skills/i3-ui-prototype/references/optional-skills.md +0 -63
  626. package/skills/i3-ui-prototype/references/project-layout.md +0 -92
  627. package/skills/i3-ui-prototype/references/template-adapters.md +0 -63
  628. package/skills/i3-ui-prototype/references/workflow-contract.md +0 -77
  629. package/skills/i3-ui-prototype/scripts/adapters/easel-html.cjs +0 -30
  630. package/skills/i3-ui-prototype/scripts/adapters/legacy-html.cjs +0 -28
  631. package/skills/i3-ui-prototype/scripts/browser-workspace.cjs +0 -72
  632. package/skills/i3-ui-prototype/scripts/buddy-host.cjs +0 -40
  633. package/skills/i3-ui-prototype/scripts/check-design-provider.cjs +0 -9
  634. package/skills/i3-ui-prototype/scripts/check-prototype.cjs +0 -14
  635. package/skills/i3-ui-prototype/scripts/codebuddy-context.cjs +0 -92
  636. package/skills/i3-ui-prototype/scripts/codebuddy-hook.cjs +0 -298
  637. package/skills/i3-ui-prototype/scripts/codebuddy-ide-source.cjs +0 -69
  638. package/skills/i3-ui-prototype/scripts/codebuddy-registration.cjs +0 -125
  639. package/skills/i3-ui-prototype/scripts/content-template.cjs +0 -98
  640. package/skills/i3-ui-prototype/scripts/design-provider-discovery.cjs +0 -128
  641. package/skills/i3-ui-prototype/scripts/enterprise-template.cjs +0 -104
  642. package/skills/i3-ui-prototype/scripts/execution-assertions.cjs +0 -43
  643. package/skills/i3-ui-prototype/scripts/execution-diagnostics.cjs +0 -91
  644. package/skills/i3-ui-prototype/scripts/execution-evidence.cjs +0 -177
  645. package/skills/i3-ui-prototype/scripts/execution-gates.cjs +0 -216
  646. package/skills/i3-ui-prototype/scripts/execution-policy.cjs +0 -62
  647. package/skills/i3-ui-prototype/scripts/execution-recovery.cjs +0 -58
  648. package/skills/i3-ui-prototype/scripts/execution-runtime.cjs +0 -69
  649. package/skills/i3-ui-prototype/scripts/generation-assets.cjs +0 -18
  650. package/skills/i3-ui-prototype/scripts/generation-contract.cjs +0 -214
  651. package/skills/i3-ui-prototype/scripts/generation-evidence.cjs +0 -50
  652. package/skills/i3-ui-prototype/scripts/generation-replan.cjs +0 -34
  653. package/skills/i3-ui-prototype/scripts/hosts/codebuddy.cjs +0 -21
  654. package/skills/i3-ui-prototype/scripts/init-prototype.cjs +0 -8
  655. package/skills/i3-ui-prototype/scripts/manage-baseline.cjs +0 -11
  656. package/skills/i3-ui-prototype/scripts/native-browser.cjs +0 -785
  657. package/skills/i3-ui-prototype/scripts/native-build.cjs +0 -91
  658. package/skills/i3-ui-prototype/scripts/native-command.cjs +0 -35
  659. package/skills/i3-ui-prototype/scripts/native-delivery.cjs +0 -104
  660. package/skills/i3-ui-prototype/scripts/native-devtools.cjs +0 -92
  661. package/skills/i3-ui-prototype/scripts/native-files.cjs +0 -44
  662. package/skills/i3-ui-prototype/scripts/native-pilot-lib.cjs +0 -290
  663. package/skills/i3-ui-prototype/scripts/native-pilot.cjs +0 -59
  664. package/skills/i3-ui-prototype/scripts/native-tool-name.cjs +0 -5
  665. package/skills/i3-ui-prototype/scripts/native-tool-result.cjs +0 -14
  666. package/skills/i3-ui-prototype/scripts/optional-skill-install.cjs +0 -203
  667. package/skills/i3-ui-prototype/scripts/project-registry.cjs +0 -126
  668. package/skills/i3-ui-prototype/scripts/prototype-dependencies.cjs +0 -103
  669. package/skills/i3-ui-prototype/scripts/prototype-hooks.cjs +0 -94
  670. package/skills/i3-ui-prototype/scripts/prototype-lib.cjs +0 -277
  671. package/skills/i3-ui-prototype/scripts/prototype-locations.cjs +0 -69
  672. package/skills/i3-ui-prototype/scripts/ptc-callbacks.cjs +0 -131
  673. package/skills/i3-ui-prototype/scripts/sync-template.cjs +0 -19
  674. package/skills/i3-ui-prototype/scripts/template-adapters.cjs +0 -89
  675. package/skills/i3-ui-prototype/scripts/template-contract.cjs +0 -407
  676. package/skills/i3-ui-prototype/scripts/template-inventory.cjs +0 -78
  677. package/skills/i3-ui-prototype/scripts/validate-result.cjs +0 -117
@@ -79,7 +79,7 @@ Quick reference for WCAG 2.1 AA compliance. Use alongside the `i3-frontend-ui-en
79
79
 
80
80
  ```html
81
81
  <!-- Explicit label association -->
82
- <label htmlFor="email">Email address</label>
82
+ <label for="email">Email address</label>
83
83
  <input id="email" type="email" required />
84
84
 
85
85
  <!-- Implicit wrapping -->
@@ -112,7 +112,7 @@ Quick reference for WCAG 2.1 AA compliance. Use alongside the `i3-frontend-ui-en
112
112
  </dialog>
113
113
 
114
114
  <!-- Loading states -->
115
- <div aria-busy="true" aria-label="Loading tasks">
115
+ <div role="status" aria-busy="true" aria-label="Loading tasks">
116
116
  <Spinner />
117
117
  </div>
118
118
  ```
@@ -123,7 +123,7 @@ Quick reference for WCAG 2.1 AA compliance. Use alongside the `i3-frontend-ui-en
123
123
  <ul role="list" aria-label="Tasks">
124
124
  <li>
125
125
  <input type="checkbox" id="task-1" aria-label="Complete: Buy groceries" />
126
- <label htmlFor="task-1">Buy groceries</label>
126
+ <label for="task-1">Buy groceries</label>
127
127
  </li>
128
128
  </ul>
129
129
  ```
@@ -132,7 +132,7 @@ Quick reference for WCAG 2.1 AA compliance. Use alongside the `i3-frontend-ui-en
132
132
 
133
133
  ```bash
134
134
  # Automated audit
135
- npx axe-core # Programmatic accessibility testing
135
+ npx --package=@axe-core/cli axe http://localhost:3000
136
136
  npx pa11y # CLI accessibility checker
137
137
 
138
138
  # In browser
@@ -200,7 +200,7 @@ For a shared cache, the same idea needs a distributed lock, or `stale-while-reva
200
200
 
201
201
  ```bash
202
202
  # Lighthouse CLI
203
- npx lighthouse https://localhost:3000 --output json --output-path ./report.json
203
+ npx lighthouse http://localhost:3000 --output json --output-path ./report.json
204
204
 
205
205
  # Bundle analysis
206
206
  npx webpack-bundle-analyzer stats.json
@@ -218,9 +218,10 @@ onLCP(console.log);
218
218
  onINP(console.log);
219
219
  onCLS(console.log);
220
220
 
221
- // INP with interaction-level detail (attribution build)
222
- import { onINP } from 'web-vitals/attribution';
223
- onINP(({ value, attribution }) => {
221
+ // INP with interaction-level detail (attribution build). The attribution build
222
+ // exports the same names, so alias it when both builds share a module.
223
+ import { onINP as onINPWithAttribution } from 'web-vitals/attribution';
224
+ onINPWithAttribution(({ value, attribution }) => {
224
225
  const { interactionTarget, inputDelay, processingDuration, presentationDelay } = attribution;
225
226
  console.log({ value, interactionTarget, inputDelay, processingDuration, presentationDelay });
226
227
  });
@@ -220,7 +220,8 @@ test('user can create and complete a task', async ({ page }) => {
220
220
  await page.getByRole('button', { name: /create/i }).click();
221
221
 
222
222
  // Verify task appears
223
- const task = page.getByRole('listitem', { name: /buy groceries/i });
223
+ // listitem has no accessible name from its content, so filter by text
224
+ const task = page.getByRole('listitem').filter({ hasText: /buy groceries/i });
224
225
  await expect(task).toBeVisible();
225
226
 
226
227
  // Complete the task
@@ -289,3 +289,35 @@ test('floor guard: outside a git work tree exits 2, never 0', () => {
289
289
  const result = runGuard(dir);
290
290
  assert.equal(result.status, 2, result.stderr);
291
291
  });
292
+
293
+ // The skill's CONSTRAINTS.md template keeps a ratchet's direction in its own column:
294
+ // `| Project coverage | 62.4% | must not fall |`. The direction words sit after a `|`.
295
+ const MEASURED = [
296
+ '',
297
+ '## Measured, not yet enforced',
298
+ '',
299
+ '| Metric | Today | Direction |',
300
+ '|--------|-------|-----------|',
301
+ '| Project coverage | 62.4% | must not fall |',
302
+ '| Bundle size (main) | 184 kB | must not grow |',
303
+ '',
304
+ ].join('\n');
305
+
306
+ for (const [name, expectedExit, from, to] of [
307
+ ['raising a must-not-fall ratchet in its own column is silent', 0, '| 62.4% |', '| 65.0% |'],
308
+ ['lowering a must-not-fall ratchet in its own column is a violation', 1, '| 62.4% |', '| 55.0% |'],
309
+ ['lowering a must-not-grow ratchet in its own column is silent', 0, '| 184 kB |', '| 170 kB |'],
310
+ ['raising a must-not-grow ratchet in its own column is a violation', 1, '| 184 kB |', '| 250 kB |'],
311
+ ]) {
312
+ test(`floor guard: ${name}`, () => {
313
+ const root = makeRepo();
314
+ commitFile(root, 'CONSTRAINTS.md', CONSTRAINTS + MEASURED);
315
+ editConstraints(root, from, to);
316
+ const result = runGuard(root);
317
+ assert.equal(
318
+ result.status, expectedExit,
319
+ `expected exit ${expectedExit}, got ${result.status}\nstdout: ${result.stdout}\nstderr: ${result.stderr}`,
320
+ );
321
+ if (expectedExit === 1) assert.match(result.stderr, /\[threshold-loosened\]/);
322
+ });
323
+ }
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ // Process exit zero alone does not establish that a stream-json run finished.
4
+ function executionFailure(trace) {
5
+ let events;
6
+ try {
7
+ events = trace.split('\n').filter((line) => line.trim()).map((line) => JSON.parse(line));
8
+ } catch { return 'invalid execution JSON'; }
9
+ if (events.some((event) => !event || typeof event !== 'object' || Array.isArray(event))) {
10
+ return 'invalid execution event';
11
+ }
12
+ const turns = events.filter((event) => ['assistant', 'user', 'result'].includes(event.type));
13
+ const final = turns.at(-1);
14
+ if (final?.type !== 'result' || final.subtype !== 'success' || final.is_error !== false) {
15
+ return 'missing successful terminal result';
16
+ }
17
+ if (final.permission_denials !== undefined && !Array.isArray(final.permission_denials)) return 'invalid permission denials';
18
+ if (final.permission_denials?.length) return 'permission denied';
19
+ const pending = new Set();
20
+ const seen = new Set();
21
+ for (const event of turns) {
22
+ if (event.type === 'result') continue;
23
+ const message = event.message;
24
+ if (!message || typeof message !== 'object' || Array.isArray(message)) return 'invalid message';
25
+ const content = message.content;
26
+ if (event.type === 'user' && typeof content === 'string') continue;
27
+ if (!Array.isArray(content)) return 'invalid message content';
28
+ for (const block of content) {
29
+ if (!block || typeof block !== 'object' || Array.isArray(block)) return 'invalid message content';
30
+ if (event.type === 'assistant' && block.type === 'tool_use') {
31
+ if (typeof block.id !== 'string' || !block.id || seen.has(block.id)) return 'invalid tool call id';
32
+ seen.add(block.id);
33
+ pending.add(block.id);
34
+ }
35
+ if (event.type === 'user' && block.type === 'tool_result' && !pending.delete(block.tool_use_id)) {
36
+ return 'unmatched tool result';
37
+ }
38
+ }
39
+ }
40
+ // A returned error may be an intentional RED probe; the grader judges recovery.
41
+ return pending.size ? 'missing tool result' : null;
42
+ }
43
+
44
+ module.exports = { executionFailure };
@@ -56,8 +56,7 @@ function makeSandbox() {
56
56
  fs.mkdirSync(path.join(root, 'evals', 'cases'), { recursive: true });
57
57
  fs.mkdirSync(path.join(root, 'evals', 'fixtures', 'project'), { recursive: true });
58
58
  fs.copyFileSync(RUNNER, path.join(root, 'scripts', 'run-evals.js'));
59
- fs.mkdirSync(path.join(root, 'scripts', 'lib'), { recursive: true });
60
- fs.copyFileSync(path.join(__dirname, 'lib', 'skill-lint.js'), path.join(root, 'scripts', 'lib', 'skill-lint.js'));
59
+ fs.cpSync(path.join(__dirname, 'lib'), path.join(root, 'scripts', 'lib'), { recursive: true });
61
60
  fs.writeFileSync(path.join(root, 'evals', 'fixtures', 'project', 'context.txt'), 'fixture\n');
62
61
  return root;
63
62
  }
@@ -69,19 +68,20 @@ function run(root, args = []) {
69
68
  });
70
69
  }
71
70
 
72
- function runBehavioralWithGrading(root, raw) {
71
+ function runBehavioralWithGrading(root, raw, options = {}) {
73
72
  writeSkill(root, 'alpha-skill', 'Handles alpha widgets.');
74
73
  const evalCase = completeCase('alpha-skill', 'change alpha widget');
75
- evalCase.evals = [{ ...behavioralEval([]), kind: 'dialogue' }];
74
+ evalCase.evals = (options.ids || [1]).map((id) => ({ ...behavioralEval([]), id, kind: 'dialogue' }));
76
75
  writeJson(path.join(root, 'evals', 'cases', 'alpha-skill.json'), evalCase);
77
76
  const stub = path.join(root, 'stub-claude.cjs');
78
77
  fs.writeFileSync(stub, `
79
78
  const assert = require('node:assert/strict');
80
79
  require('child_process').execFileSync = (command, args) => {
81
80
  assert.equal(command, 'claude');
82
- return args.includes('--output-format')
83
- ? '{"type":"result","result":"done"}\\n'
84
- : ${JSON.stringify(raw)};
81
+ const executor = args.includes('--output-format');
82
+ require('node:fs').appendFileSync(${JSON.stringify(path.join(root, 'claude-calls.txt'))}, executor ? 'executor\\n' : 'grader\\n');
83
+ if (executor && ${JSON.stringify(Boolean(options.error))}) throw Object.assign(new Error('executor failed'), ${JSON.stringify(options.error || {})});
84
+ return executor ? ${JSON.stringify(options.trace ?? '{"type":"result","subtype":"success","is_error":false,"result":"done"}\n')} : ${JSON.stringify(raw)};
85
85
  };
86
86
  `);
87
87
  return spawnSync(process.execPath, [
@@ -90,6 +90,80 @@ function runBehavioralWithGrading(root, raw) {
90
90
  ], { cwd: root, encoding: 'utf8' });
91
91
  }
92
92
 
93
+ const passingGrading = JSON.stringify({
94
+ expectations: [{ id: 1, text: 'check', passed: true, evidence: 'observed' }],
95
+ summary: { passed: 1, failed: 0, total: 1, pass_rate: 1 },
96
+ });
97
+ const terminal = { type: 'result', subtype: 'success', is_error: false };
98
+ const call = { type: 'assistant', message: { content: [{ type: 'tool_use', name: 'Bash', id: 'test', input: {} }] } };
99
+ const returned = (id, is_error = false) => ({ type: 'user', message: { content: [{ type: 'tool_result', tool_use_id: id, is_error }] } });
100
+ const traceOf = (...events) => events.map((event) => JSON.stringify(event)).join('\n') + '\n';
101
+
102
+ for (const [name, trace] of Object.entries({
103
+ 'terminal error': traceOf({ type: 'result', subtype: 'error_max_turns', is_error: true }),
104
+ 'missing terminal': traceOf(call),
105
+ 'implicit success': traceOf({ type: 'result', subtype: 'success' }),
106
+ 'stale terminal': traceOf(terminal, call),
107
+ 'permission denial': traceOf({ ...terminal, permission_denials: [{ tool_name: 'Read' }] }),
108
+ 'pending tool': traceOf(call, terminal),
109
+ 'unmatched return': traceOf(returned('unknown'), terminal),
110
+ 'malformed event': 'null\n',
111
+ 'invalid JSON': 'not JSON\n',
112
+ 'null assistant message': traceOf({ type: 'assistant', message: null }, terminal),
113
+ 'array assistant message': traceOf({ type: 'assistant', message: [] }, terminal),
114
+ 'null assistant content': traceOf({ type: 'assistant', message: { content: null } }, terminal),
115
+ 'object assistant content': traceOf({ type: 'assistant', message: { content: { type: 'tool_use', id: 'hidden' } } }, terminal),
116
+ 'null user message': traceOf({ type: 'user', message: null }, terminal),
117
+ 'null content block': traceOf({ type: 'assistant', message: { content: [null] } }, terminal),
118
+ })) {
119
+ test(`does not grade an incomplete execution: ${name}`, () => {
120
+ const root = makeSandbox();
121
+ try {
122
+ const result = runBehavioralWithGrading(root, passingGrading, { trace });
123
+ assert.equal(result.status, 1, result.stdout + result.stderr);
124
+ assert.match(result.stdout, /execution incomplete/);
125
+ const base = path.join(root, 'evals/results/alpha-skill.eval-1');
126
+ assert.equal(fs.existsSync(`${base}.grading.json`), false);
127
+ assert.equal(fs.readFileSync(`${base}.execution.raw.txt`, 'utf8'), trace);
128
+ assert.equal(fs.readFileSync(path.join(root, 'claude-calls.txt'), 'utf8'), 'executor\n');
129
+ } finally { fs.rmSync(root, { recursive: true, force: true }); }
130
+ });
131
+ }
132
+
133
+ test('a returned failed probe can recover before successful completion', () => {
134
+ const root = makeSandbox();
135
+ try {
136
+ const next = { ...call, message: { content: [{ ...call.message.content[0], id: 'green' }] } };
137
+ const trace = traceOf(call, returned('test', true),
138
+ { type: 'user', message: { content: 'Continue the repair.' } }, next, returned('green'), terminal,
139
+ { type: 'system', subtype: 'status', status: 'idle' });
140
+ const result = runBehavioralWithGrading(root, passingGrading, { trace });
141
+ assert.equal(result.status, 0, result.stdout + result.stderr);
142
+ assert.equal(fs.existsSync(path.join(root, 'evals/results/alpha-skill.eval-1.grading.json')), true);
143
+ } finally { fs.rmSync(root, { recursive: true, force: true }); }
144
+ });
145
+
146
+ for (const code of ['ETIMEDOUT', 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER']) {
147
+ test(`retains partial execution evidence and continues after ${code}`, () => {
148
+ const root = makeSandbox();
149
+ try {
150
+ const trace = traceOf(call);
151
+ const result = runBehavioralWithGrading(root, passingGrading,
152
+ { error: { code, stdout: trace, stderr: 'captured diagnostic' }, ids: [1, 2] });
153
+ assert.equal(result.status, 1, result.stdout + result.stderr);
154
+ assert.match(result.stdout, /eval 2: executing/);
155
+ for (const id of [1, 2]) {
156
+ const base = path.join(root, `evals/results/alpha-skill.eval-${id}`);
157
+ assert.equal(fs.existsSync(`${base}.grading.json`), false);
158
+ assert.equal(fs.readFileSync(`${base}.execution.raw.txt`, 'utf8'), trace);
159
+ assert.match(fs.readFileSync(`${base}.execution.error.txt`, 'utf8'), new RegExp(code));
160
+ assert.match(fs.readFileSync(`${base}.execution.error.txt`, 'utf8'), /captured diagnostic/);
161
+ }
162
+ assert.equal(fs.readFileSync(path.join(root, 'claude-calls.txt'), 'utf8'), 'executor\nexecutor\n');
163
+ } finally { fs.rmSync(root, { recursive: true, force: true }); }
164
+ });
165
+ }
166
+
93
167
  for (const passed of [true, false]) {
94
168
  for (const evidence of ['', ' \t\r\n', '\u00a0\u2003']) {
95
169
  test(`behavioral CLI diagnoses blank evidence for ${passed ? 'passing' : 'failing'} verdict ${JSON.stringify(evidence)}`, () => {
@@ -424,6 +498,78 @@ test('rejects an invalid rank-1 floor', () => {
424
498
  assert.match(result.stderr, /--min-rank1 must be a number from 0 to 100/);
425
499
  });
426
500
 
501
+ test('routes clipped prompt forms to their long-form skill (see #660)', () => {
502
+ const root = makeSandbox();
503
+ // Note: the skill name must not contain the clipped form itself — name
504
+ // tokens are weighted 2x, which would route the prompt even without the
505
+ // alias map. The prompt shares no vocabulary with the description except
506
+ // the clipped/long pair (auth/authentication): without the alias map the
507
+ // skill scores zero and the positive prompt fails.
508
+ writeSkill(
509
+ root,
510
+ 'credential-skill',
511
+ 'Protects credential verification. Use when configuring authentication ceremonies.',
512
+ );
513
+ writeSkill(root, 'paint-skill', 'Paints sheds. Use when choosing exterior paint colors.');
514
+ writeJson(
515
+ path.join(root, 'evals', 'cases', 'credential-skill.json'),
516
+ completeCase('credential-skill', 'fix broken auth checks', 1),
517
+ );
518
+ writeJson(
519
+ path.join(root, 'evals', 'cases', 'paint-skill.json'),
520
+ completeCase('paint-skill', 'choose exterior paint colors', 1),
521
+ );
522
+
523
+ const result = run(root);
524
+
525
+ assert.equal(result.status, 0, result.stdout + result.stderr);
526
+ });
527
+
528
+ test('folds -ifications to their -ify verb, not to the unrelated "specific" (see #660)', () => {
529
+ const root = makeSandbox();
530
+ // "specification" is a nominalization of "specify", so it must reach the
531
+ // spec skill. Stripping a bare "-ation" instead yields "specific", which
532
+ // silently cross-merges the two words and starves the spec skill. Each
533
+ // prompt shares vocabulary with its own skill only.
534
+ writeSkill(root, 'spec-skill', 'Agree on requirements up front. Use when you specify behaviour.');
535
+ writeSkill(root, 'specific-skill', 'Narrow a choice down. Use when one target matters.');
536
+ writeJson(
537
+ path.join(root, 'evals', 'cases', 'spec-skill.json'),
538
+ completeCase('spec-skill', 'document a specification for the billing rollout', 1),
539
+ );
540
+ writeJson(
541
+ path.join(root, 'evals', 'cases', 'specific-skill.json'),
542
+ completeCase('specific-skill', 'narrow the choice down to one target', 1),
543
+ );
544
+
545
+ const result = run(root);
546
+
547
+ assert.equal(result.status, 0, result.stdout + result.stderr);
548
+ });
549
+
550
+ test('strips -ations as well as -ation so plurals do not out-stem singulars (see #660)', () => {
551
+ const root = makeSandbox();
552
+ // "migration" and "migrations" are the same word, so both forms have to
553
+ // reach the migration skill. With only "-ation" in the suffix list the
554
+ // plural keeps its "-s" ("migration" -> "migr" vs "migrations" ->
555
+ // "migration"), which splits the pair and halves the score. Neither
556
+ // prompt shares vocabulary with the other skill.
557
+ writeSkill(root, 'migration-skill', 'Move old data stores off production without downtime.');
558
+ writeSkill(root, 'recipe-skill', 'Plan tonight dinner from what is already in the cupboard.');
559
+ writeJson(
560
+ path.join(root, 'evals', 'cases', 'migration-skill.json'),
561
+ completeCase('migration-skill', 'plan the database migrations', 1),
562
+ );
563
+ writeJson(
564
+ path.join(root, 'evals', 'cases', 'recipe-skill.json'),
565
+ completeCase('recipe-skill', 'plan tonight dinner from the cupboard', 1),
566
+ );
567
+
568
+ const result = run(root);
569
+
570
+ assert.equal(result.status, 0, result.stdout + result.stderr);
571
+ });
572
+
427
573
  // ---------- parseGrading expectation-binding tests ----------
428
574
 
429
575
  test('accepts reordered-but-complete grader results', () => {
@@ -616,6 +762,8 @@ test('a grader that throws leaves no result file behind', () => {
616
762
  // Stale files from a prior run
617
763
  fs.writeFileSync(`${base}.grading.json`, '{"previous":"run"}\n');
618
764
  fs.writeFileSync(`${base}.grading.raw.txt`, 'previous raw output');
765
+ fs.writeFileSync(`${base}.execution.raw.txt`, 'previous partial trace');
766
+ fs.writeFileSync(`${base}.execution.error.txt`, 'previous execution failure');
619
767
 
620
768
  clearGradingSlot(base);
621
769
 
@@ -623,6 +771,8 @@ test('a grader that throws leaves no result file behind', () => {
623
771
 
624
772
  assert.equal(fs.existsSync(`${base}.grading.json`), false, 'stale grading.json must not survive a crash');
625
773
  assert.equal(fs.existsSync(`${base}.grading.raw.txt`), false, 'stale grading.raw.txt must not survive a crash');
774
+ assert.equal(fs.existsSync(`${base}.execution.raw.txt`), false, 'old partial trace must not survive a new attempt');
775
+ assert.equal(fs.existsSync(`${base}.execution.error.txt`), false, 'old execution failure must not survive a new attempt');
626
776
  } finally {
627
777
  fs.rmSync(dir, { recursive: true, force: true });
628
778
  }
@@ -32,6 +32,7 @@ const fs = require('fs');
32
32
  const os = require('os');
33
33
  const path = require('path');
34
34
  const { parseFrontmatter } = require('./lib/skill-lint');
35
+ const { executionFailure } = require('./lib/execution-status');
35
36
  const { execFileSync } = require('child_process');
36
37
 
37
38
  const ROOT = path.join(__dirname, '..');
@@ -70,7 +71,16 @@ const STOP = new Set([
70
71
  function stem(t) {
71
72
  // Light suffix stripping so "conflicts"/"conflict", "branching"/"branch",
72
73
  // "architectural"/"architecture" cluster together. Not a real stemmer.
73
- for (const suf of ['ally', 'ing', 'ed', 'es', 'al']) {
74
+ // "ations"/"ation" fold Latinate nominalizations ("documentation"/"document",
75
+ // "configuration"/"configure") the same way. Both forms are listed so a
76
+ // plural doesn't survive the rule as a longer stem than its singular
77
+ // ("migration" -> "migr" but "migrations" -> "migration").
78
+ // "-ification" nouns are built on "-ify" verbs, so they fold to the verb's
79
+ // "-ifi" stem ("specification"/"specify", "verification"/"verify") rather
80
+ // than losing "-ication" and colliding with an unrelated word
81
+ // ("specification"/"specific"). Checked first so it wins over "-ation".
82
+ if (t.length > 10 && /ifications?$/.test(t)) t = t.replace(/ications?$/, 'i');
83
+ for (const suf of ['ally', 'ing', 'ations', 'ation', 'ed', 'es', 'al']) {
74
84
  if (t.length > suf.length + 3 && t.endsWith(suf)) {
75
85
  t = t.slice(0, -suf.length);
76
86
  break;
@@ -87,11 +97,32 @@ function stem(t) {
87
97
  return t;
88
98
  }
89
99
 
100
+ // Clipped forms users type that never share a stem with the long form used
101
+ // in descriptions ("docs" vs "documentation", "auth" vs "authentication").
102
+ // Applied before stemming; each value is the canonical long form, so both
103
+ // registers stem identically. Explicit and easy to extend (see #660) —
104
+ // prefer adding an entry here over padding descriptions with clipped forms,
105
+ // which would only teach skills to game the lexical proxy.
106
+ const TOKEN_ALIASES = new Map(
107
+ Object.entries({
108
+ doc: 'document',
109
+ docs: 'document',
110
+ config: 'configuration',
111
+ configs: 'configuration',
112
+ auth: 'authenticate',
113
+ authentication: 'authenticate',
114
+ repo: 'repository',
115
+ repos: 'repository',
116
+ dep: 'dependency',
117
+ deps: 'dependency',
118
+ }),
119
+ );
120
+
90
121
  const chineseSegmenter = new Intl.Segmenter('zh-CN', { granularity: 'word' });
91
122
  const chineseStop = new Set(['请问', '帮我', '一下', '这个', '那个', '使用', '适用于', '用于', '需要', '进行', '以及', '如何', '是否', '我们', '当前']);
92
123
  function tokenize(text) {
93
124
  const english = text.toLowerCase().replace(/[^a-z0-9\s-]/g, ' ').split(/[\s-]+/)
94
- .filter(t => t.length > 2 && !STOP.has(t)).map(stem);
125
+ .filter(t => t.length > 2 && !STOP.has(t)).map(t => stem(TOKEN_ALIASES.get(t) || t));
95
126
  const chinese = [...chineseSegmenter.segment(text)].filter(part => part.isWordLike
96
127
  && /[\u3400-\u9fff]/.test(part.segment) && part.segment.length > 1 && !chineseStop.has(part.segment))
97
128
  .map(part => part.segment);
@@ -537,8 +568,9 @@ function extractExecutorModel(trace) {
537
568
  }
538
569
 
539
570
  function clearGradingSlot(base) {
540
- fs.rmSync(`${base}.grading.json`, { force: true });
541
- fs.rmSync(`${base}.grading.raw.txt`, { force: true });
571
+ for (const suffix of ['grading.json', 'grading.raw.txt', 'execution.raw.txt', 'execution.error.txt']) {
572
+ fs.rmSync(`${base}.${suffix}`, { force: true });
573
+ }
542
574
  }
543
575
 
544
576
  function persistGradingOutcome(base, grading, raw, runMeta) {
@@ -614,14 +646,29 @@ function runBehavioral(skillName, dryRun) {
614
646
  // headless denials would force the exact narrate-instead-of-perform
615
647
  // failure mode that trace grading exists to catch.
616
648
  try {
617
- const trace = execFileSync(
618
- 'claude',
619
- ['-p', ...(process.env.I3_EVAL_MODEL ? ['--model', process.env.I3_EVAL_MODEL] : []), '--verbose', '--output-format', 'stream-json',
620
- '--permission-mode', 'acceptEdits',
621
- '--allowedTools', EXECUTOR_TOOLS,
622
- '--append-system-prompt', `Follow this skill exactly:\n\n${fs.readFileSync(skillFile, 'utf8')}`],
623
- { input: ev.prompt, encoding: 'utf8', maxBuffer: 64 * 1024 * 1024, cwd: workspace, timeout: EXECUTOR_TIMEOUT_MS },
624
- );
649
+ let trace;
650
+ let executorError;
651
+ try {
652
+ trace = execFileSync(
653
+ 'claude',
654
+ ['-p', ...(process.env.I3_EVAL_MODEL ? ['--model', process.env.I3_EVAL_MODEL] : []), '--verbose', '--output-format', 'stream-json',
655
+ '--permission-mode', 'acceptEdits',
656
+ '--allowedTools', EXECUTOR_TOOLS,
657
+ '--append-system-prompt', `Follow this skill exactly:\n\n${fs.readFileSync(skillFile, 'utf8')}`],
658
+ { input: ev.prompt, encoding: 'utf8', maxBuffer: 64 * 1024 * 1024, cwd: workspace, timeout: EXECUTOR_TIMEOUT_MS },
659
+ );
660
+ } catch (error) {
661
+ trace = String(error.stdout || '');
662
+ executorError = error;
663
+ }
664
+ const failure = executorError ? `${executorError.code || 'process failed'}: ${executorError.message}` : executionFailure(trace);
665
+ if (failure) {
666
+ fs.writeFileSync(`${base}.execution.raw.txt`, trace);
667
+ fs.writeFileSync(`${base}.execution.error.txt`, `${failure}\n${executorError?.stderr || ''}`);
668
+ console.log(` ✗ eval ${ev.id}: execution incomplete: ${failure}; raw execution retained`);
669
+ failures++;
670
+ continue;
671
+ }
625
672
  const gradingInstructions = kind === 'dialogue'
626
673
  ? [
627
674
  'You are grading an agent dialogue transcript against explicit expectations.',
@@ -49,7 +49,7 @@ test('i3-ui-demo template resolution works without another prototype skill and n
49
49
  assert.equal(detection.design.availability, 'missing');
50
50
  assert.equal(detection.official.availability, 'missing');
51
51
  const ownGeneration = path.join(own, 'assets/templates/enterprise-admin/generation.json');
52
- const foreign = path.join(temporary, 'skills', path.basename(resources.root).startsWith('i3-') ? 'i3-ui-prototype' : 'i3-ui-prototype', 'assets/templates/enterprise-admin');
52
+ const foreign = path.join(temporary, 'skills', path.basename(resources.root).startsWith('i3-') ? 'i3-ui-prototype' : 'ui-prototype', 'assets/templates/enterprise-admin');
53
53
  fs.cpSync(path.dirname(ownGeneration), foreign, { recursive: true });
54
54
  fs.unlinkSync(ownGeneration);
55
55
  assert.throws(() => isolated.resolveResources(), /missing/i);
@@ -121,7 +121,7 @@ test('i3-ui-demo reads selected page structure, behavior and styles without an i
121
121
  assert.ok(page.styleFiles.includes('reference/styles/tokens.css'));
122
122
  assert.ok(page.elements.length > 0);
123
123
  assert.ok(page.elements.some(element => element.events.length > 0));
124
- assert.ok(!JSON.stringify(page).includes('i3-ui-prototype'));
124
+ assert.ok(!JSON.stringify(page).includes('ui-prototype'));
125
125
  assert.equal(isolated.readCapability('pagination').defaults.minimumTestPages, 3);
126
126
  });
127
127
 
@@ -104,6 +104,20 @@ test('ignores non-artifact markdown references (no false positives)', () => {
104
104
  assert.match(result.stdout, /1 files checked — 0 error\(s\) — PASSED/);
105
105
  });
106
106
 
107
+ test('does not mistake the tail of an unrelated filename for an artifact path', () => {
108
+ const root = makeSandbox();
109
+ writeFile(
110
+ root,
111
+ 'skills/i3-planning-and-task-breakdown/SKILL.md',
112
+ 'Attach `test-plan.md` and `release_todo.md`. Save the plan to `tasks/plan.md`.\n',
113
+ );
114
+
115
+ const result = run(root);
116
+
117
+ assert.equal(result.status, 0, result.stdout + result.stderr);
118
+ assert.match(result.stdout, /1 files checked — 0 error\(s\) — PASSED/);
119
+ });
120
+
107
121
  test('skips guarded files that do not exist', () => {
108
122
  const root = makeSandbox();
109
123
  writeFile(root, '.claude/commands/spec.md', 'Save the spec as `SPEC.md`.\n');
@@ -71,8 +71,10 @@ const GUARDED_FILES = [
71
71
  // Matches a path-like token ending in a spec/plan/todo artifact filename,
72
72
  // including an optional directory prefix with bracket placeholders like
73
73
  // docs/features/[feature-name]/spec.md. Case-insensitive so SPEC.md and a
74
- // drifted spec.md are both caught, then compared against the allowlist.
75
- const ARTIFACT_RE = /(?:[A-Za-z0-9._[\]-]+\/)*(?:spec|plan|todo)\.md/gi;
74
+ // drifted spec.md are both caught, then compared against the allowlist. The
75
+ // lookbehind keeps the match from starting mid-word, so `test-plan.md` or
76
+ // `release_todo.md` are not mistaken for a drifted `plan.md` / `todo.md`.
77
+ const ARTIFACT_RE = /(?<![A-Za-z0-9._[\]-])(?:[A-Za-z0-9._[\]-]+\/)*(?:spec|plan|todo)\.md/gi;
76
78
 
77
79
  GUARDED_FILES.push(...GUARDED_FILES.filter(relative => /(?:^|\/)commands\//.test(relative)).map(relative => relative.replace(/(commands\/)([^/]+)(\.md|\.toml)$/, '$1i3-$2$3')));
78
80
 
@@ -208,7 +208,9 @@ The unique constraint *is* the mechanism. A store that cannot enforce uniqueness
208
208
 
209
209
  ```typescript
210
210
  if (existing.requestHash !== hash(req.body)) {
211
- return res.status(422).json({ error: 'idempotency key reused with a different payload' });
211
+ return res.status(422).json({
212
+ error: { code: 'IDEMPOTENCY_KEY_REUSED', message: 'Idempotency key reused with a different payload' },
213
+ });
212
214
  }
213
215
  ```
214
216
 
@@ -196,7 +196,7 @@ Agent fixes → pushes → CI runs again
196
196
  **Key patterns:**
197
197
 
198
198
  ```
199
- Lint failure → Agent runs `npm run lint --fix` and commits
199
+ Lint failure → Agent runs `npm run lint -- --fix` and commits
200
200
  Type error → Agent reads the error location and fixes the type
201
201
  Test failure → Agent follows i3-debugging-and-error-recovery skill
202
202
  Build error → Agent checks config and dependencies
@@ -275,9 +275,12 @@ jobs:
275
275
  runs-on: ubuntu-latest
276
276
  steps:
277
277
  - name: Rollback deployment
278
+ env:
279
+ VERSION: ${{ inputs.version }}
278
280
  run: |
279
- # Deploy the specified previous version
280
- npx vercel rollback ${{ inputs.version }}
281
+ # Deploy the specified previous version. Pass the input through env,
282
+ # never interpolate it into the script (shell injection).
283
+ npx vercel rollback "$VERSION"
281
284
  ```
282
285
 
283
286
  ## Environment Management
@@ -325,7 +328,7 @@ When the pipeline exceeds 10 minutes, apply these strategies in order of impact:
325
328
  ```
326
329
  Slow CI pipeline?
327
330
  ├── Cache dependencies
328
- │ └── Use actions/cache or setup-node cache option for node_modules
331
+ │ └── Use the setup-node cache option (or actions/cache) for the package manager cache, not node_modules
329
332
  ├── Run jobs in parallel
330
333
  │ └── Split lint, typecheck, test, build into separate parallel jobs
331
334
  ├── Only run what changed
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: i3-code-simplification
3
- description: "在保持行为不变的前提下简化代码。适用于简化现有代码结构、重构复杂逻辑、保留全部现有行为,并提高可读性、维护性与可扩展性。"
4
- # i3-description-source: "description: Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend than it should be. Use when reviewing code that has accumulated unnecessary complexity."
3
+ description: "在保持行为不变的前提下简化代码。适用于简化现有代码结构、重构复杂逻辑、保留全部现有行为,并提高可读性、维护性与可扩展性;也适用于直接粘贴函数或模块,要求简化、清理或减少嵌套而无需其他改动的请求。"
4
+ # i3-description-source: "description: Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend than it should be. Use when reviewing code that has accumulated unnecessary complexity. Use when asked to simplify, clean up, or reduce the nesting of a function or module that already works, even when the code is pasted inline and nothing else needs to change."
5
5
  ---
6
6
 
7
7
  <!-- i3:zh-CN:start -->
@@ -12,7 +12,7 @@ description: "在保持行为不变的前提下简化代码。适用于简化现
12
12
  Skill/Command/Agent 标识、文件路径、命令参数、代码/API 名称、工具调用参数、JSON 键/类型/枚举、机器状态、测试期望字面量及引用原文保持原样。生成文档正文用中文,SPEC.md、tasks/plan.md、tasks/todo.md、CONSTRAINTS.md 等约定路径不改名。
13
13
  严重程度按原规则判断,面向用户可写“严重(Critical)”“必须修复(Required)”“小问题(Nit)”“可选(Optional)”“建议考虑(Consider)”“仅供参考(FYI)”;High/Medium/Low、APPROVE/REQUEST CHANGES 和 GO/NO-GO 保留其原始语义与机器值。不得因翻译降低门槛,角色不能互相委派。
14
14
 
15
- 适用说明:在保持行为不变的前提下简化代码。适用于简化现有代码结构、重构复杂逻辑、保留全部现有行为,并提高可读性、维护性与可扩展性。
15
+ 适用说明:在保持行为不变的前提下简化代码。适用于简化现有代码结构、重构复杂逻辑、保留全部现有行为,并提高可读性、维护性与可扩展性;也适用于直接粘贴函数或模块,要求简化、清理或减少嵌套而无需其他改动的请求。
16
16
  <!-- i3:zh-CN:end -->
17
17
 
18
18
  # Code Simplification
@@ -125,7 +125,7 @@ Last reviewed: 2026-08-08 by @addy
125
125
  |-----------|------|-----------|---------|
126
126
  | Types | Zero type errors | `tsc --noEmit` | every edit |
127
127
  | Lint | Zero errors from our config | `biome check` | every edit |
128
- | Secrets | No secrets in source | `gitleaks detect --redact` | every edit |
128
+ | Secrets | No secrets in source | `gitleaks dir . --redact` | every edit |
129
129
  | Coverage | Changed lines ≥ 80% covered | `vitest run --coverage` + git diff | task end, CI |
130
130
  | Security: code | No high findings | `semgrep scan --config p/default` | CI |
131
131
  | Security: deps | Nothing at high or above | `osv-scanner scan source -r .` | CI |
@@ -160,10 +160,10 @@ Picking a dimension means installing something. Don't leave the user with a numb
160
160
  | Types (TS) | tsc | already there | `tsc --noEmit` | any error |
161
161
  | Types (Python) | mypy | `pip install mypy` | `mypy .` | any error |
162
162
  | Lint | your existing config | already there | `eslint .` / `biome check` / `ruff check` | any error |
163
- | Coverage (JS) | your test runner | already there | `vitest run --coverage` (or `jest --coverage`) | coverage of changed lines |
163
+ | Coverage (JS) | your test runner | Vitest: `npm i -D @vitest/coverage-v8`; Jest: already there | `vitest run --coverage` (or `jest --coverage`) | coverage of changed lines |
164
164
  | Coverage (Python) | pytest-cov | `pip install pytest-cov` | `pytest --cov --cov-report=lcov` | same |
165
165
  | Security: code | Semgrep | `pipx install semgrep` | `semgrep scan --config p/default --config p/owasp-top-ten` | any high finding |
166
- | Security: secrets | gitleaks | `brew install gitleaks` | `gitleaks detect --redact --no-banner` | any finding |
166
+ | Security: secrets | gitleaks | `brew install gitleaks` | `gitleaks dir . --redact --no-banner` | any finding |
167
167
  | Security: dependencies | osv-scanner | `brew install osv-scanner` | `osv-scanner scan source -r .` | high or above |
168
168
  | Performance: page | Lighthouse | `npm i -D lighthouse` | `lighthouse $URL --output=json --quiet` | LCP, CLS, performance score |
169
169
  | Performance: bundle | size-limit | `npm i -D size-limit` | `size-limit --json` | per-entry byte budget |
@@ -184,7 +184,7 @@ Add each one to the project's own script so it's reproducible without an agent:
184
184
  ```json
185
185
  {
186
186
  "scripts": {
187
- "check:fast": "tsc --noEmit && eslint . && gitleaks detect --redact --no-banner",
187
+ "check:fast": "tsc --noEmit && eslint . && gitleaks dir . --redact --no-banner",
188
188
  "check:task": "npm run check:fast && vitest run --coverage",
189
189
  "check:full": "npm run check:task && semgrep scan --config p/default && osv-scanner scan source -r ."
190
190
  }
@@ -131,8 +131,8 @@ const ruleKey = (t) => {
131
131
  const isException = (t) => /^\| *(W|E)\d+ *\|/.test(t.trim());
132
132
  const MIN_BEFORE = /(>=|>|≥|at least|minimum|\bmin\b|no less than|not fall|not drop)\s*$/;
133
133
  const MAX_BEFORE = /(<=|<|≤|at most|maximum|\bmax\b|no more than|under|below|not grow|not exceed)\s*$/;
134
- const MIN_AFTER = /^\s*\S*\s*(or more|or higher|must not fall|must not drop)/;
135
- const MAX_AFTER = /^\s*\S*\s*(or less|or lower|must not grow|must not exceed)/;
134
+ const MIN_AFTER = /^\s*\S*\s*(?:\|\s*)?(or more|or higher|must not fall|must not drop)/;
135
+ const MAX_AFTER = /^\s*\S*\s*(?:\|\s*)?(or less|or lower|must not grow|must not exceed)/;
136
136
  const thresholds = (t) => {
137
137
  const out = [], re = /\d+(?:\.\d+)?/g;
138
138
  let m;