@amsterdamdatalabs/enact-extensions 0.1.37 → 0.1.47

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 (577) hide show
  1. package/README.md +67 -108
  2. package/bundled-extensions.json +6 -0
  3. package/dist/create/enact.d.ts.map +1 -1
  4. package/dist/create/enact.js +2 -0
  5. package/dist/create/enact.js.map +1 -1
  6. package/dist/create/index.d.ts +3 -0
  7. package/dist/create/index.d.ts.map +1 -1
  8. package/dist/create/index.js +6 -0
  9. package/dist/create/index.js.map +1 -1
  10. package/dist/create/kimi.d.ts +16 -0
  11. package/dist/create/kimi.d.ts.map +1 -0
  12. package/dist/create/kimi.js +87 -0
  13. package/dist/create/kimi.js.map +1 -0
  14. package/dist/create/opencode.d.ts +129 -0
  15. package/dist/create/opencode.d.ts.map +1 -0
  16. package/dist/create/opencode.js +696 -0
  17. package/dist/create/opencode.js.map +1 -0
  18. package/dist/index.d.ts +12 -16
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +10 -10
  21. package/dist/index.js.map +1 -1
  22. package/dist/internal/agents.d.ts +12 -2
  23. package/dist/internal/agents.d.ts.map +1 -1
  24. package/dist/internal/agents.js +119 -3
  25. package/dist/internal/agents.js.map +1 -1
  26. package/dist/internal/extensions-table.d.ts +58 -0
  27. package/dist/internal/extensions-table.d.ts.map +1 -0
  28. package/dist/internal/extensions-table.js +134 -0
  29. package/dist/internal/extensions-table.js.map +1 -0
  30. package/dist/internal/file-ops.d.ts +36 -0
  31. package/dist/internal/file-ops.d.ts.map +1 -0
  32. package/dist/internal/file-ops.js +89 -0
  33. package/dist/internal/file-ops.js.map +1 -0
  34. package/dist/internal/hooks.d.ts +56 -0
  35. package/dist/internal/hooks.d.ts.map +1 -0
  36. package/dist/internal/hooks.js +128 -0
  37. package/dist/internal/hooks.js.map +1 -0
  38. package/dist/internal/json-merge.d.ts +63 -0
  39. package/dist/internal/json-merge.d.ts.map +1 -0
  40. package/dist/internal/json-merge.js +122 -0
  41. package/dist/internal/json-merge.js.map +1 -0
  42. package/dist/internal/lock-ownership.d.ts +41 -0
  43. package/dist/internal/lock-ownership.d.ts.map +1 -0
  44. package/dist/internal/lock-ownership.js +24 -0
  45. package/dist/internal/lock-ownership.js.map +1 -0
  46. package/dist/internal/platform.d.ts.map +1 -1
  47. package/dist/internal/platform.js +90 -4
  48. package/dist/internal/platform.js.map +1 -1
  49. package/dist/internal/schema.js.map +1 -1
  50. package/dist/internal/toml-block.d.ts +59 -0
  51. package/dist/internal/toml-block.d.ts.map +1 -0
  52. package/dist/internal/toml-block.js +113 -0
  53. package/dist/internal/toml-block.js.map +1 -0
  54. package/dist/internal/types.d.ts +2 -1
  55. package/dist/internal/types.d.ts.map +1 -1
  56. package/dist/projection.d.ts +47 -0
  57. package/dist/projection.d.ts.map +1 -0
  58. package/dist/projection.js +180 -0
  59. package/dist/projection.js.map +1 -0
  60. package/dist/validate/index.d.ts +9 -4
  61. package/dist/validate/index.d.ts.map +1 -1
  62. package/dist/validate/index.js +56 -7
  63. package/dist/validate/index.js.map +1 -1
  64. package/dist/validate/kimi.d.ts +3 -0
  65. package/dist/validate/kimi.d.ts.map +1 -0
  66. package/dist/validate/kimi.js +11 -0
  67. package/dist/validate/kimi.js.map +1 -0
  68. package/dist/validate/opencode.d.ts +3 -0
  69. package/dist/validate/opencode.d.ts.map +1 -0
  70. package/dist/validate/opencode.js +11 -0
  71. package/dist/validate/opencode.js.map +1 -0
  72. package/dist/validate/run.d.ts +39 -0
  73. package/dist/validate/run.d.ts.map +1 -0
  74. package/dist/validate/run.js +63 -0
  75. package/dist/validate/run.js.map +1 -0
  76. package/extensions/enact-loop/.agents/plugin.json +12 -8
  77. package/extensions/enact-loop/scripts/validate.mjs +113 -2
  78. package/extensions/enact-loop/skills/enact-loop/SKILL.md +36 -466
  79. package/extensions/enact-loop/skills/enact-loop/references/loop-contract.md +114 -0
  80. package/extensions/enact-loop/skills/loop-budget/SKILL.md +57 -0
  81. package/extensions/enact-loop/skills/loop-intake/SKILL.md +59 -0
  82. package/extensions/enact-repo/.agents/plugin.json +55 -0
  83. package/extensions/enact-repo/.mcp.json +20 -0
  84. package/extensions/enact-repo/README.md +90 -0
  85. package/extensions/enact-repo/hooks/hooks.json +98 -0
  86. package/extensions/enact-repo/lean-ctx/config.toml +35 -0
  87. package/extensions/enact-repo/lean-ctx/layout.toml +5 -0
  88. package/extensions/enact-repo/skills/aca-sandboxes/SKILL.md +53 -0
  89. package/extensions/enact-repo/skills/aca-sandboxes/references/capabilities.md +52 -0
  90. package/extensions/enact-repo/skills/aca-sandboxes/references/install.md +87 -0
  91. package/extensions/enact-repo/skills/aca-sandboxes/references/prerequisites.md +52 -0
  92. package/extensions/enact-repo/skills/aca-sandboxes/references/quickstart.md +164 -0
  93. package/extensions/enact-repo/skills/aca-sandboxes/references/reference-advanced.md +251 -0
  94. package/extensions/enact-repo/skills/aca-sandboxes/references/reference.md +287 -0
  95. package/extensions/enact-repo/skills/aca-sandboxes/references/response-cues.md +71 -0
  96. package/extensions/enact-repo/skills/aca-sandboxes/references/scenarios.md +219 -0
  97. package/extensions/enact-repo/skills/aca-sandboxes/version.json +4 -0
  98. package/extensions/enact-repo/skills/backend-remove-deadcode/SKILL.md +96 -0
  99. package/extensions/enact-repo/skills/cmux-leader/SKILL.md +61 -0
  100. package/extensions/enact-repo/skills/cmux-send/SKILL.md +61 -0
  101. package/extensions/enact-repo/skills/code-review/SKILL.md +100 -0
  102. package/extensions/enact-repo/skills/codebase-design/SKILL.md +98 -0
  103. package/extensions/enact-repo/skills/codebase-design/references/DEEPENING.md +37 -0
  104. package/extensions/enact-repo/skills/codebase-design/references/DESIGN-IT-TWICE.md +44 -0
  105. package/extensions/enact-repo/skills/codebase-design/references/TESTABILITY.md +29 -0
  106. package/extensions/enact-repo/skills/computer-use/SKILL.md +76 -0
  107. package/extensions/enact-repo/skills/debug-issue/SKILL.md +40 -0
  108. package/extensions/enact-repo/skills/diagnosing-bugs/SKILL.md +100 -0
  109. package/extensions/enact-repo/skills/diagnosing-bugs/references/FEEDBACK-LOOP-TACTICS.md +34 -0
  110. package/extensions/enact-repo/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  111. package/extensions/enact-repo/skills/domain-modeling/SKILL.md +86 -0
  112. package/extensions/enact-repo/skills/domain-modeling/references/ADR-FORMAT.md +47 -0
  113. package/extensions/enact-repo/skills/domain-modeling/references/CONTEXT-FORMAT.md +60 -0
  114. package/extensions/enact-repo/skills/explore-codebase/SKILL.md +41 -0
  115. package/extensions/enact-repo/skills/frontend-design/LICENSE.txt +177 -0
  116. package/extensions/enact-repo/skills/frontend-design/SKILL.md +56 -0
  117. package/extensions/enact-repo/skills/grill-me/SKILL.md +20 -0
  118. package/extensions/enact-repo/skills/grill-with-docs/SKILL.md +20 -0
  119. package/extensions/enact-repo/skills/handoff/SKILL.md +28 -0
  120. package/extensions/enact-repo/skills/http-contract-migration/SKILL.md +74 -0
  121. package/extensions/enact-repo/skills/http-contract-migration/references/compatibility-and-gates.md +26 -0
  122. package/extensions/enact-repo/skills/http-contract-migration/references/hexagonal-boundary.md +16 -0
  123. package/extensions/enact-repo/skills/http-contract-migration/references/publication-and-adoption.md +31 -0
  124. package/extensions/enact-repo/skills/http-contract-migration/references/wire-fidelity-and-dto.md +31 -0
  125. package/extensions/enact-repo/skills/implement/SKILL.md +28 -0
  126. package/extensions/enact-repo/skills/improve-codebase-architecture/SKILL.md +80 -0
  127. package/extensions/enact-repo/skills/improve-codebase-architecture/references/HTML-REPORT.md +123 -0
  128. package/extensions/enact-repo/skills/interaction-design/SKILL.md +30 -0
  129. package/extensions/enact-repo/skills/interaction-design/references/Workflow.md +146 -0
  130. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-gsap.md +220 -0
  131. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-native.md +110 -0
  132. package/extensions/enact-repo/skills/interaction-design/references/animation-libraries.md +178 -0
  133. package/extensions/enact-repo/skills/interaction-design/references/interaction-patterns.md +166 -0
  134. package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns-advanced.md +285 -0
  135. package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns.md +254 -0
  136. package/extensions/enact-repo/skills/interaction-design/references/scroll-animations-reveals.md +213 -0
  137. package/extensions/enact-repo/skills/interaction-design/references/scroll-animations.md +209 -0
  138. package/extensions/enact-repo/skills/lean-ctx/SKILL.md +81 -0
  139. package/extensions/enact-repo/skills/orca-cli/SKILL.md +88 -0
  140. package/extensions/enact-repo/skills/orchestration/SKILL.md +80 -0
  141. package/extensions/enact-repo/skills/prototype/SKILL.md +37 -0
  142. package/extensions/enact-repo/skills/prototype/references/LOGIC.md +79 -0
  143. package/extensions/enact-repo/skills/prototype/references/UI.md +112 -0
  144. package/extensions/enact-repo/skills/refactor-safely/SKILL.md +44 -0
  145. package/extensions/enact-repo/skills/remove-deadcode/SKILL.md +54 -0
  146. package/extensions/enact-repo/skills/research/SKILL.md +27 -0
  147. package/extensions/enact-repo/skills/resolving-merge-conflicts/SKILL.md +28 -0
  148. package/extensions/enact-repo/skills/review-changes/SKILL.md +45 -0
  149. package/extensions/enact-repo/skills/tailwind-4-docs/SKILL.md +88 -0
  150. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/accent-color.mdx +149 -0
  151. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/adding-custom-styles.mdx +635 -0
  152. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-content.mdx +300 -0
  153. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-items.mdx +241 -0
  154. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-self.mdx +294 -0
  155. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/animation.mdx +286 -0
  156. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/appearance.mdx +180 -0
  157. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/aspect-ratio.mdx +98 -0
  158. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-blur.mdx +109 -0
  159. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-brightness.mdx +82 -0
  160. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-contrast.mdx +82 -0
  161. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-grayscale.mdx +99 -0
  162. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-hue-rotate.mdx +173 -0
  163. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-invert.mdx +99 -0
  164. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-opacity.mdx +103 -0
  165. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-saturate.mdx +98 -0
  166. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-sepia.mdx +95 -0
  167. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter.mdx +113 -0
  168. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backface-visibility.mdx +110 -0
  169. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-attachment.mdx +126 -0
  170. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-blend-mode.mdx +79 -0
  171. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-clip.mdx +85 -0
  172. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-color.mdx +176 -0
  173. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-image.mdx +349 -0
  174. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-origin.mdx +64 -0
  175. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-position.mdx +171 -0
  176. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-repeat.mdx +127 -0
  177. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-size.mdx +100 -0
  178. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/block-size.mdx +190 -0
  179. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-collapse.mdx +181 -0
  180. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-color.mdx +316 -0
  181. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-radius.mdx +347 -0
  182. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-spacing.mdx +117 -0
  183. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-style.mdx +129 -0
  184. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-width.mdx +344 -0
  185. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-decoration-break.mdx +71 -0
  186. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-shadow.mdx +497 -0
  187. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-sizing.mdx +175 -0
  188. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-after.mdx +38 -0
  189. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-before.mdx +38 -0
  190. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-inside.mdx +34 -0
  191. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caption-side.mdx +190 -0
  192. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caret-color.mdx +66 -0
  193. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/clear.mdx +224 -0
  194. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color-scheme.mdx +81 -0
  195. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color.mdx +125 -0
  196. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/colors.mdx +927 -0
  197. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/columns.mdx +310 -0
  198. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/compatibility.mdx +193 -0
  199. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/content.mdx +129 -0
  200. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/cursor.mdx +104 -0
  201. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/dark-mode.mdx +191 -0
  202. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/detecting-classes-in-source-files.mdx +315 -0
  203. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/display.mdx +523 -0
  204. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/editor-setup.mdx +90 -0
  205. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/field-sizing.mdx +75 -0
  206. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/fill.mdx +100 -0
  207. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-blur.mdx +114 -0
  208. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-brightness.mdx +102 -0
  209. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-contrast.mdx +102 -0
  210. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-drop-shadow.mdx +230 -0
  211. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-grayscale.mdx +101 -0
  212. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-hue-rotate.mdx +171 -0
  213. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-invert.mdx +93 -0
  214. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-saturate.mdx +109 -0
  215. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-sepia.mdx +92 -0
  216. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter.mdx +113 -0
  217. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-basis.mdx +144 -0
  218. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-direction.mdx +130 -0
  219. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-grow.mdx +129 -0
  220. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-shrink.mdx +95 -0
  221. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-wrap.mdx +118 -0
  222. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex.mdx +164 -0
  223. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/float.mdx +197 -0
  224. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-family.mdx +119 -0
  225. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-feature-settings.mdx +52 -0
  226. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-size.mdx +184 -0
  227. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-smoothing.mdx +67 -0
  228. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-stretch.mdx +138 -0
  229. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-style.mdx +62 -0
  230. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-variant-numeric.mdx +228 -0
  231. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-weight.mdx +105 -0
  232. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/forced-color-adjust.mdx +152 -0
  233. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/functions-and-directives.mdx +322 -0
  234. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/gap.mdx +100 -0
  235. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-columns.mdx +43 -0
  236. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-flow.mdx +58 -0
  237. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-rows.mdx +43 -0
  238. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-column.mdx +124 -0
  239. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-row.mdx +115 -0
  240. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-columns.mdx +101 -0
  241. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-rows.mdx +108 -0
  242. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/height.mdx +260 -0
  243. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hover-focus-and-other-states.mdx +4935 -0
  244. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hyphens.mdx +112 -0
  245. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/inline-size.mdx +191 -0
  246. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/isolation.mdx +30 -0
  247. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-content.mdx +348 -0
  248. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-items.mdx +286 -0
  249. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-self.mdx +282 -0
  250. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/letter-spacing.mdx +100 -0
  251. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-clamp.mdx +110 -0
  252. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-height.mdx +147 -0
  253. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-image.mdx +80 -0
  254. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-position.mdx +67 -0
  255. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-type.mdx +86 -0
  256. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/margin.mdx +397 -0
  257. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-clip.mdx +66 -0
  258. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-composite.mdx +70 -0
  259. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-image.mdx +933 -0
  260. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-mode.mdx +114 -0
  261. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-origin.mdx +66 -0
  262. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-position.mdx +117 -0
  263. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-repeat.mdx +169 -0
  264. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-size.mdx +104 -0
  265. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-type.mdx +98 -0
  266. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-block-size.mdx +153 -0
  267. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-height.mdx +164 -0
  268. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-inline-size.mdx +185 -0
  269. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-width.mdx +214 -0
  270. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-block-size.mdx +146 -0
  271. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-height.mdx +150 -0
  272. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-inline-size.mdx +153 -0
  273. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-width.mdx +153 -0
  274. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mix-blend-mode.mdx +103 -0
  275. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-fit.mdx +147 -0
  276. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-position.mdx +182 -0
  277. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/opacity.mdx +84 -0
  278. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/order.mdx +94 -0
  279. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-color.mdx +130 -0
  280. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-offset.mdx +72 -0
  281. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-style.mdx +134 -0
  282. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-width.mdx +91 -0
  283. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow-wrap.mdx +130 -0
  284. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow.mdx +665 -0
  285. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overscroll-behavior.mdx +151 -0
  286. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/padding.mdx +232 -0
  287. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective-origin.mdx +127 -0
  288. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective.mdx +137 -0
  289. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-content.mdx +257 -0
  290. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-items.mdx +269 -0
  291. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-self.mdx +257 -0
  292. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/pointer-events.mdx +101 -0
  293. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/position.mdx +399 -0
  294. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/preflight.mdx +291 -0
  295. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/resize.mdx +110 -0
  296. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/responsive-design.mdx +666 -0
  297. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/rotate.mdx +291 -0
  298. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scale.mdx +360 -0
  299. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-behavior.mdx +39 -0
  300. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-margin.mdx +268 -0
  301. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-padding.mdx +255 -0
  302. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-align.mdx +281 -0
  303. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-stop.mdx +198 -0
  304. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-type.mdx +284 -0
  305. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/skew.mdx +352 -0
  306. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke-width.mdx +74 -0
  307. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke.mdx +103 -0
  308. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/styling-with-utility-classes.mdx +1020 -0
  309. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/table-layout.mdx +212 -0
  310. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-align.mdx +162 -0
  311. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-color.mdx +155 -0
  312. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-line.mdx +143 -0
  313. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-style.mdx +75 -0
  314. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-thickness.mdx +75 -0
  315. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-indent.mdx +74 -0
  316. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-overflow.mdx +103 -0
  317. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-shadow.mdx +177 -0
  318. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-transform.mdx +106 -0
  319. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-underline-offset.mdx +74 -0
  320. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-wrap.mdx +144 -0
  321. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/theme.mdx +1142 -0
  322. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/top-right-bottom-left.mdx +296 -0
  323. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/touch-action.mdx +95 -0
  324. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-origin.mdx +130 -0
  325. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-style.mdx +110 -0
  326. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform.mdx +51 -0
  327. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-behavior.mdx +76 -0
  328. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-delay.mdx +76 -0
  329. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-duration.mdx +82 -0
  330. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-property.mdx +137 -0
  331. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-timing-function.mdx +89 -0
  332. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/translate.mdx +487 -0
  333. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/upgrade-guide.mdx +910 -0
  334. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/user-select.mdx +114 -0
  335. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/vertical-align.mdx +194 -0
  336. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/visibility.mdx +287 -0
  337. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/white-space.mdx +211 -0
  338. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/width.mdx +264 -0
  339. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/will-change.mdx +47 -0
  340. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/word-break.mdx +94 -0
  341. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/z-index.mdx +104 -0
  342. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-catalog.md +251 -0
  343. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-index.tsx +237 -0
  344. package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-source.txt +6 -0
  345. package/extensions/enact-repo/skills/tailwind-4-docs/references/gotchas.md +18 -0
  346. package/extensions/enact-repo/skills/tailwind-4-docs/scripts/sync_tailwind_docs.py +183 -0
  347. package/extensions/enact-repo/skills/tdd/SKILL.md +49 -0
  348. package/extensions/enact-repo/skills/tdd/references/mocking.md +59 -0
  349. package/extensions/enact-repo/skills/tdd/references/tests.md +77 -0
  350. package/extensions/enact-repo/skills/teach/SKILL.md +88 -0
  351. package/extensions/enact-repo/skills/teach/references/GLOSSARY-FORMAT.md +35 -0
  352. package/extensions/enact-repo/skills/teach/references/LEARNING-RECORD-FORMAT.md +46 -0
  353. package/extensions/enact-repo/skills/teach/references/MISSION-FORMAT.md +31 -0
  354. package/extensions/enact-repo/skills/teach/references/PHILOSOPHY.md +65 -0
  355. package/extensions/enact-repo/skills/teach/references/RESOURCES-FORMAT.md +32 -0
  356. package/extensions/enact-repo/skills/testing/SKILL.md +54 -0
  357. package/extensions/enact-repo/skills/to-spec/SKILL.md +85 -0
  358. package/extensions/enact-repo/skills/to-tickets/SKILL.md +75 -0
  359. package/extensions/enact-repo/skills/to-tickets/references/TICKET-TEMPLATES.md +39 -0
  360. package/extensions/enact-repo/skills/triage/SKILL.md +99 -0
  361. package/extensions/enact-repo/skills/triage/references/AGENT-BRIEF.md +207 -0
  362. package/extensions/enact-repo/skills/triage/references/NEEDS-INFO-TEMPLATE.md +17 -0
  363. package/extensions/enact-repo/skills/triage/references/OUT-OF-SCOPE.md +105 -0
  364. package/extensions/enact-repo/skills/ui-ux-pro-max/SKILL.md +32 -0
  365. package/extensions/enact-repo/skills/ui-ux-pro-max/references/Workflow.md +207 -0
  366. package/extensions/enact-repo/skills/ui-ux-pro-max/references/workflow-reference.md +175 -0
  367. package/extensions/enact-repo/skills/wayfinder/SKILL.md +100 -0
  368. package/extensions/enact-repo/skills/wayfinder/references/TEMPLATES.md +35 -0
  369. package/extensions/enact-repo/skills/wayfinder/references/TICKET-TYPES.md +8 -0
  370. package/extensions/enact-repo/skills/writing-great-skills/SKILL.md +93 -0
  371. package/extensions/enact-repo/skills/writing-great-skills/references/GLOSSARY.md +201 -0
  372. package/package.json +18 -14
  373. package/scripts/enact-extensions.mjs +255 -873
  374. package/scripts/lib/allowed-plugins.mjs +52 -0
  375. package/scripts/lib/run-repo-doctor.mjs +571 -0
  376. package/scripts/lib/run-repo-install.mjs +1579 -0
  377. package/scripts/lib/run-sync.mjs +1 -1
  378. package/scripts/lib/run-validate.mjs +23 -37
  379. package/scripts/lib/skill-validator.mjs +872 -0
  380. package/spec/enact.json +21 -3
  381. package/spec/enact.md +13 -12
  382. package/spec/kimi.json +100 -0
  383. package/spec/opencode.json +64 -0
  384. package/dist/install.d.ts +0 -235
  385. package/dist/install.d.ts.map +0 -1
  386. package/dist/install.js +0 -697
  387. package/dist/install.js.map +0 -1
  388. package/dist/internal/claude.d.ts +0 -65
  389. package/dist/internal/claude.d.ts.map +0 -1
  390. package/dist/internal/claude.js +0 -200
  391. package/dist/internal/claude.js.map +0 -1
  392. package/dist/internal/codex.d.ts +0 -43
  393. package/dist/internal/codex.d.ts.map +0 -1
  394. package/dist/internal/codex.js +0 -211
  395. package/dist/internal/codex.js.map +0 -1
  396. package/dist/internal/cursor.d.ts +0 -2
  397. package/dist/internal/cursor.d.ts.map +0 -1
  398. package/dist/internal/cursor.js +0 -6
  399. package/dist/internal/cursor.js.map +0 -1
  400. package/dist/principles.d.ts +0 -28
  401. package/dist/principles.d.ts.map +0 -1
  402. package/dist/principles.js +0 -159
  403. package/dist/principles.js.map +0 -1
  404. package/dist/provision.d.ts +0 -30
  405. package/dist/provision.d.ts.map +0 -1
  406. package/dist/provision.js +0 -202
  407. package/dist/provision.js.map +0 -1
  408. package/extensions/dev-state/.agents/plugin.json +0 -36
  409. package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +0 -194
  410. package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +0 -4
  411. package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +0 -130
  412. package/extensions/enact-context/.agents/plugin.json +0 -41
  413. package/extensions/enact-context/.mcp.json +0 -8
  414. package/extensions/enact-context/README.md +0 -25
  415. package/extensions/enact-context/assets/icon.png +0 -0
  416. package/extensions/enact-context/assets/logo.png +0 -0
  417. package/extensions/enact-context/hooks/hooks.json +0 -115
  418. package/extensions/enact-context/skills/enact-context/SKILL.md +0 -151
  419. package/extensions/enact-context/skills/enact-context/scripts/install.sh +0 -69
  420. package/extensions/enact-core/.agents/plugin.json +0 -40
  421. package/extensions/enact-core/OPERATING-PRINCIPLES.md +0 -7
  422. package/extensions/enact-core/hooks/hooks.json +0 -26
  423. package/extensions/enact-evolve/.agents/plugin.json +0 -47
  424. package/extensions/enact-evolve/agents/evolve-session-analyst.toml +0 -37
  425. package/extensions/enact-evolve/assets/icon.png +0 -0
  426. package/extensions/enact-evolve/assets/logo.png +0 -0
  427. package/extensions/enact-evolve/skills/mined-investigate-loop/SKILL.md +0 -68
  428. package/extensions/enact-evolve/skills/session-analysis/SKILL.md +0 -98
  429. package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +0 -343
  430. package/extensions/enact-factory/.agents/plugin.json +0 -49
  431. package/extensions/enact-factory/.mcp.json +0 -8
  432. package/extensions/enact-factory/agents/architect.toml +0 -34
  433. package/extensions/enact-factory/agents/code-reviewer.toml +0 -33
  434. package/extensions/enact-factory/agents/critic.toml +0 -39
  435. package/extensions/enact-factory/agents/executor.toml +0 -26
  436. package/extensions/enact-factory/agents/explore.toml +0 -25
  437. package/extensions/enact-factory/agents/planner.toml +0 -26
  438. package/extensions/enact-factory/agents/verifier.toml +0 -33
  439. package/extensions/enact-factory/assets/icon.png +0 -0
  440. package/extensions/enact-factory/assets/logo.png +0 -0
  441. package/extensions/enact-factory/skills/advisor/SKILL.md +0 -82
  442. package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +0 -57
  443. package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +0 -353
  444. package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +0 -309
  445. package/extensions/enact-factory/skills/azdo-ci-strategy/references/build-failures.md +0 -60
  446. package/extensions/enact-factory/skills/azdo-ci-strategy/references/cli-reference.md +0 -87
  447. package/extensions/enact-factory/skills/azdo-ci-strategy/references/policies-and-pipelines.md +0 -132
  448. package/extensions/enact-factory/skills/azdo-ci-strategy/references/troubleshooting.md +0 -53
  449. package/extensions/enact-factory/skills/cmux-leader/SKILL.md +0 -74
  450. package/extensions/enact-factory/skills/cmux-send/SKILL.md +0 -50
  451. package/extensions/enact-factory/skills/committee/SKILL.md +0 -80
  452. package/extensions/enact-factory/skills/deep-interview/SKILL.md +0 -68
  453. package/extensions/enact-factory/skills/drive-loop/SKILL.md +0 -394
  454. package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +0 -127
  455. package/extensions/enact-factory/skills/handoff/SKILL.md +0 -75
  456. package/extensions/enact-factory/skills/hyperplan/SKILL.md +0 -59
  457. package/extensions/enact-factory/skills/looplan/SKILL.md +0 -120
  458. package/extensions/enact-factory/skills/plan/SKILL.md +0 -103
  459. package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +0 -46
  460. package/extensions/enact-factory/skills/research/SKILL.md +0 -83
  461. package/extensions/enact-factory/skills/review/SKILL.md +0 -67
  462. package/extensions/enact-factory/skills/security-research/SKILL.md +0 -57
  463. package/extensions/enact-factory/skills/tdd/SKILL.md +0 -62
  464. package/extensions/enact-factory/skills/testing-strategy/SKILL.md +0 -172
  465. package/extensions/enact-factory/skills/trace/SKILL.md +0 -42
  466. package/extensions/enact-factory/skills/ultraqa/SKILL.md +0 -85
  467. package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +0 -56
  468. package/extensions/enact-factory/skills/workitem-triage/SKILL.md +0 -42
  469. package/extensions/enact-wiki/.agents/plugin.json +0 -43
  470. package/extensions/enact-wiki/.mcp.json +0 -15
  471. package/extensions/enact-wiki/README.md +0 -44
  472. package/extensions/enact-wiki/assets/icon.png +0 -0
  473. package/extensions/enact-wiki/assets/logo.png +0 -0
  474. package/extensions/enact-wiki/skills/document-parser/SKILL.md +0 -17
  475. package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +0 -60
  476. package/extensions/enact-wiki/skills/document-parser/skill.json +0 -9
  477. package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +0 -30
  478. package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +0 -62
  479. package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +0 -34
  480. package/extensions/enact-wiki/skills/enact-wiki/references/query.md +0 -59
  481. package/extensions/enact-wiki/skills/search-lab/SKILL.md +0 -57
  482. package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +0 -23
  483. package/extensions/enact-wiki/skills/wiki/SKILL.md +0 -42
  484. package/extensions/net-revenue-management/.agents/plugin.json +0 -40
  485. package/extensions/net-revenue-management/.mcp.json +0 -9
  486. package/extensions/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -30
  487. package/extensions/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -31
  488. package/extensions/plugin-dev/.agents/plugin.json +0 -41
  489. package/extensions/plugin-dev/agents/agent-creator.md +0 -199
  490. package/extensions/plugin-dev/agents/plugin-validator.md +0 -91
  491. package/extensions/plugin-dev/agents/skill-reviewer.md +0 -212
  492. package/extensions/plugin-dev/skills/agent-development/SKILL.md +0 -641
  493. package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +0 -250
  494. package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +0 -461
  495. package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +0 -246
  496. package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +0 -216
  497. package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +0 -226
  498. package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +0 -464
  499. package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +0 -474
  500. package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +0 -176
  501. package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +0 -227
  502. package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +0 -227
  503. package/extensions/plugin-dev/skills/create-plugin/SKILL.md +0 -505
  504. package/extensions/plugin-dev/skills/hook-development/SKILL.md +0 -861
  505. package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +0 -55
  506. package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +0 -57
  507. package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +0 -48
  508. package/extensions/plugin-dev/skills/hook-development/references/advanced.md +0 -871
  509. package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +0 -145
  510. package/extensions/plugin-dev/skills/hook-development/references/migration.md +0 -392
  511. package/extensions/plugin-dev/skills/hook-development/references/patterns.md +0 -430
  512. package/extensions/plugin-dev/skills/hook-development/scripts/README.md +0 -181
  513. package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +0 -153
  514. package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +0 -276
  515. package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +0 -159
  516. package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +0 -775
  517. package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +0 -20
  518. package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +0 -19
  519. package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +0 -38
  520. package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +0 -26
  521. package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +0 -601
  522. package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +0 -190
  523. package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +0 -572
  524. package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +0 -623
  525. package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +0 -221
  526. package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +0 -705
  527. package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +0 -774
  528. package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +0 -83
  529. package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +0 -611
  530. package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +0 -289
  531. package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +0 -592
  532. package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +0 -233
  533. package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +0 -193
  534. package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +0 -625
  535. package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +0 -116
  536. package/extensions/plugin-dev/skills/skill-development/SKILL.md +0 -562
  537. package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +0 -465
  538. package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +0 -167
  539. package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +0 -111
  540. package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +0 -225
  541. package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +0 -39
  542. package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +0 -379
  543. package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +0 -210
  544. package/extensions/plugin-dev/skills/start/SKILL.md +0 -82
  545. package/scripts/check-hooks.mjs +0 -174
  546. package/scripts/check-principles.mjs +0 -116
  547. package/scripts/hooks/session-start-drift-check.mjs +0 -48
  548. package/scripts/install.sh +0 -70
  549. package/scripts/lib/auto-update.mjs +0 -75
  550. package/scripts/lib/bundle-hash.mjs +0 -137
  551. package/scripts/lib/hooks.mjs +0 -585
  552. package/scripts/lib/ledger.mjs +0 -163
  553. package/scripts/lib/migrate-artifacts.mjs +0 -144
  554. package/scripts/lib/outdated.mjs +0 -144
  555. package/scripts/lib/postinstall-offer.mjs +0 -83
  556. package/scripts/lib/principles.mjs +0 -109
  557. package/scripts/lib/provision-mcp.mjs +0 -16
  558. package/scripts/lib/resolve-plugin-root.mjs +0 -9
  559. package/scripts/lib/run-install.mjs +0 -500
  560. package/scripts/lib/run-prune.mjs +0 -94
  561. package/scripts/lib/run-uninstall.mjs +0 -244
  562. package/scripts/lib/run-update.mjs +0 -152
  563. package/scripts/lib/serve.mjs +0 -472
  564. package/scripts/lib/ups-router.mjs +0 -392
  565. package/scripts/postinstall.mjs +0 -101
  566. package/scripts/setup-enact-context.sh +0 -28
  567. package/scripts/version-bump.sh +0 -484
  568. package/web/assets/README.md +0 -111
  569. package/web/assets/logo-full.png +0 -0
  570. package/web/assets/logo-slim.png +0 -0
  571. package/web/assets/tokens/base.css +0 -45
  572. package/web/assets/tokens/colors.css +0 -248
  573. package/web/assets/tokens/effects.css +0 -24
  574. package/web/assets/tokens/fonts.css +0 -8
  575. package/web/assets/tokens/index.css +0 -18
  576. package/web/assets/tokens/spacing.css +0 -50
  577. package/web/index.html +0 -1188
@@ -1,494 +1,64 @@
1
1
  ---
2
2
  name: enact-loop
3
- description: "Contract-runner loop engine. Drives declared stages (mechanical and judgment) to closure; the Stop boulder refuses to exit until every required stage passes and independent graders have signed off every judgment stage."
3
+ description: Declare and drive a generic Stage graph through interactive Executor, mechanical, StageVerifier, and LoopGrader stages.
4
+ disable-model-invocation: false
4
5
  ---
5
6
 
6
- # enact-loop
7
-
8
- > **Storage is GLOBAL — never write to a repo-local `.enact` dir.** Resolve the project's global dir:
9
- > 1. `ROOT="$(git rev-parse --show-toplevel)"`
10
- > 2. In `~/.enact/workspaces.json` → `workspaces`, find the entry whose `.root` == `$ROOT`; its object key is `<name>-<id>` (e.g. `enact-loop-b9762d`).
11
- > 3. Loop runtime state lives under `~/.enact/loop/projects/<key>/…`.
7
+ # Enact Loop
12
8
 
13
9
  ## Purpose
14
10
 
15
- `$enact-loop` is the persistence wrapper for bounded work. Given a contract (an ordered set of
16
- stages), the loop drives each stage to closure and refuses to exit until every required stage has
17
- passed. Mechanical stages are graded by the engine: `loop_grade` runs the stage `command` in the
18
- loop root and derives pass/fail from exit code (caller-supplied `status`/`evidence` are rejected).
19
- Judgment stages require an **independent grader** on a different model — the executor must not
20
- fabricate or self-report judgment verdicts.
11
+ Drive bounded work to a declared contract. The runtime closes a loop only after every required stage passes.
21
12
 
22
13
  ## Use When
23
14
 
24
- - work must not stop until all required stages pass
25
- - judgment gates (architect-GO, code review, scope fidelity, QA) require independent sign-off
26
- - a previous attempt left work in an incomplete or unverified state
27
- - partial completion is unacceptable
28
-
29
- ## Contract Schema
30
-
31
- A **contract** is the declarative closure spec. Declare it inline or pass a YAML/JSON file.
32
-
33
- ```
34
- Contract { id, name, stages[] }
35
-
36
- Stage {
37
- id: string
38
- name: string
39
- type: 'mechanical' | 'judgment'
40
- required: boolean
41
- requires?: string[] # stage ids that must pass before this stage runs
42
- command?: string # mechanical stages only
43
- grader?: GraderSpec # judgment stages only
44
- passCriteria?: string
45
- }
46
-
47
- GraderSpec {
48
- role: architect | critic | code-reviewer | verifier # required
49
- model?: string # e.g. claude-opus-4-8 — always specify; omitting causes E_GRADER_MODEL_UNSET
50
- harness?: paseo | subagent # default: paseo
51
- rounds?: integer # max grading rounds before escalation (default: 3)
52
- timeoutMs?: integer # grader session timeout (default: 30 min); timeout → grader-unavailable blocker
53
- fallbackModels?: string[] # tried in order on re-dispatch after spawn failure (529/overload)
54
- }
55
- ```
56
-
57
- ## Stage Types
58
-
59
- **Mechanical** stages are engine-run: call `loop_grade({ stageId, timeoutMs? })` and the runtime
60
- executes the stage `command` in the loop root cwd, capturing exit code and output. Caller-supplied
61
- `status` or `evidence` are rejected. No independent grader is needed.
62
-
63
- **Judgment** stages require an independent grader. The executor/driver dispatches via
64
- `loop_grader_dispatch`, then records the verdict via `loop_grader_verdict` (default:
65
- `captureSource: "relayed"` — grader returns a verdict envelope; driver records with the minted
66
- `continuationId`). A grader child session may call `loop_grader_verdict` directly (`captureSource:
67
- "direct"`) but only with a `continuationId` minted by dispatch — otherwise
68
- `E_UNKNOWN_GRADER_SESSION`. The engine rejects verdicts where grader identity overlaps executor
69
- identity.
70
-
71
- ## The Independence Rule
72
-
73
- Judgment stages must be graded by a **different model** than the executor (model-distinct, not
74
- vendor/surface-distinct). The loop rejects a verdict whose grader model, session, or agent equals
75
- the executor's. Graders are dispatched out-of-session via Paseo `--provider <model>` (use
76
- `--mode auto-review` so on-request approvals don't block; see Verdict capture) for
77
- cross-surface grading; in-surface graders just need a supported model that differs from the
78
- executor's.
15
+ - Work needs explicit stages, evidence, and closure.
16
+ - Prompt-driven work needs an interactive Executor Stage with immutable input and pass-only completion evidence.
17
+ - A mechanical Stage must be executed by the engine.
18
+ - A current-plus-predecessor Stage needs StageVerifier review.
19
+ - The complete loop needs LoopGrader judgment.
20
+ - A previous attempt is incomplete, blocked, or unverified.
79
21
 
80
- The engine enforces independence at `recordStage` AND `completeLoop` (defense in depth). The Stop
81
- boulder re-checks at session exit. Violations emit `grader-independence-missing` and block closure.
22
+ ## Do Not Use When
82
23
 
83
- ## Loop Phases
84
-
85
- ```
86
- idle → running → verifying → completed (terminal)
87
- ↘ blocked → running | verifying
88
- ↘ paused → running | verifying (Stop ALLOWS exit while paused)
89
- ↘ aborted (terminal)
90
- ```
91
-
92
- - **idle** — loop declared, not yet started
93
- - **running** — executor actively working
94
- - **verifying** — executor running closure checks
95
- - **completed** — all required stages passed, loop closed
96
- - **blocked** — waiting on an external dependency (`loop_block` / `loop_advance` to resume)
97
- - **paused** — deliberate human suspension via `loop_pause`; the Stop boulder ALLOWS exit while
98
- paused; SessionStart does NOT auto-resume a paused loop; stays paused until `loop_resume` is
99
- explicitly called
100
- - **aborted** — cancelled with a reason (terminal)
101
-
102
- ## Routing Rules
103
-
104
- - ambiguous goal → clarify first, then start the loop with the refined goal
105
- - goal is clear → start immediately: `loop_start`
106
- - blocked on external dependency → `loop_block`, resolve, then `loop_advance` back to `running`
107
- - all required stages passed → `enact-loop summary write`, then `loop_complete` (only from phase=verifying)
24
+ - The request is only for triage or a proposed contract; use `loop-intake`.
25
+ - The request is only to inspect limits or counters; use `loop-budget`.
26
+ - The goal, workspace, acceptance evidence, or authority is too ambiguous to declare a contract.
108
27
 
109
28
  ## Workflow
110
29
 
111
- 1. Read current state: `loop_status`
112
- 2. If no active loop, start one:
113
- ```
114
- loop_start goal="<goal>" preset=<preset>|contract=<stages JSON>
115
- ```
116
- Built-in presets: `frontend-ui` (5 mechanical: lint/typecheck/test/build/visual,
117
- then **two** judgment stages `code-review` **and** `verify` the shape that
118
- reliably catches both correctness and acceptance defects), `docs` (mechanical +
119
- one lighter `review`), plus `docs-workflow` / `custom-pipeline`. Use a preset to
120
- get the right judgment shape by default instead of hand-authoring stages.
121
- 3. Implement the work while in phase `running`.
122
- 4. Advance to verification:
123
- ```
124
- loop_advance toPhase=verifying
125
- ```
126
- 5. For each **mechanical** stage (respecting `requires` preconditions): `loop_grade({ stageId })`.
127
- 6. For each **judgment** stage: `loop_grader_dispatch({ stageId })` → spawn grader → record via
128
- `loop_grader_verdict` (`captureSource: "relayed"` from driver, or `"direct"` from grader child).
129
- 7. When all required stages are `passed`: run `enact-loop summary write` (pipe body sections;
130
- CLI stamps the fingerprint header), then `loop_complete`.
131
- 8. If a stage fails: fix the root cause, do not fabricate evidence, re-run and re-grade.
132
-
133
- ## Judgment Grading Protocol
134
-
135
- **Step 1 — Dispatch a grader:**
136
-
137
- ```
138
- loop_grader_dispatch stageId=<id> [model=<grader-model>]
139
- ```
140
-
141
- - mints an unforgeable `continuationId` and `graderSessionId` via the runtime
142
- - resolves the grader model: an explicit `model` override is used **verbatim**
143
- (after the `≠ executor` check); otherwise `stage.grader.model ?? loop.graderModel`,
144
- advancing through `fallbackModels` on re-dispatch after a spawn failure
145
- - requires the resolved model to differ from the executor's (`E_NO_DIVERSITY` otherwise)
146
- - launches the grader agent (read-only, same cwd) via Paseo `--provider <graderModel>`
147
- (use `--mode auto-review` so on-request approvals don't block; see Verdict capture)
148
- - returns the `continuationId` you must pass to step 2
149
-
150
- **Step 2 — Record the grader's verdict** (driver-relayed is the default):
151
-
152
- ```
153
- loop_grader_verdict stageId=<id> continuationId=<id> verdict=GO|NO-GO evidence="<findings>"
154
- graderAgentId=<id> graderSessionId=<id> captureSource=relayed
155
- recordedByAgentId=<executor> recordedByModel=<model> recordedBySessionId=<session>
156
- [graderModelActual=<model-that-actually-ran>]
157
- ```
158
-
159
- `graderModelActual` records the model that *actually* ran the grader (e.g. the
160
- Paseo-resolved provider), separate from the dispatch-resolved request — the
161
- verdict stores it as the authoritative grader model (keeping the dispatched one
162
- as `graderModelDispatched`) and the independence check runs against it. Supply it
163
- when the host ran a different/fallback model than dispatched; omit it otherwise.
164
-
165
- Grader child sessions may call `loop_grader_verdict` directly with `captureSource=direct` instead.
166
- Direct calls without a dispatch-minted `continuationId` fail with `E_UNKNOWN_GRADER_SESSION`.
167
- Grader MCP sessions are **runtime-gated**: only `loop_grader_verdict`, `loop_status`,
168
- `loop_stop_evaluate` — pass `_meta.enactLoop` with `sessionRole: grader` and bound `continuationId`.
169
- Incomplete grader metadata (e.g. `role=grader` without `sessionId`) fails closed with
170
- `E_INCOMPLETE_GRADER_SESSION` rather than defaulting to executor.
171
- Grader timeout surfaces as `grader-unavailable` blocker — re-dispatch; never assume GO.
172
- Spawn failure (529): `loop_grader_report_spawn_failure` then re-dispatch (uses `fallbackModels`).
173
- While grader is in flight, Stop **allows** exit without `loop_pause` churn.
174
-
175
- The engine rejects the verdict if grader identity overlaps executor identity or the
176
- `continuationId` was not minted by this runtime.
177
-
178
- **NEVER self-report a judgment verdict.** The boulder blocks Stop and re-prompts with
179
- `grader-independence-missing` if you do. If a grader returns NO-GO: fix the issue, stay in
180
- `verifying`, and re-dispatch. Exceeding the round limit escalates with a blocker.
181
-
182
- ## Operational notes — grader independence, fallback, and worktree discipline
183
-
184
- > Context: in a validated 3-wave run, independent graders caught FIVE real defects that
185
- > all mechanical gates passed — model-distinct cross-vendor grading is the mechanism that
186
- > surfaces defects mechanical gates cannot see.
187
-
188
- ### Grader independence is MODEL-DISTINCT
189
-
190
- The independence rule is checked by model identity, not by vendor or surface name.
191
- **A sonnet executor + a cursor-sonnet grader is NOT distinct** — `cursor/claude-sonnet-4-6`
192
- runs the same underlying model. The engine will emit `grader-independence-missing` and
193
- block closure. Ensure the resolved `grader.model` differs from the executor's model string.
194
-
195
- **Default cheap graders:** **minimax M3** (opencode) and **kimi K2.7** are vendor-distinct from
196
- both sonnet and codex, making them always-independent defaults (~80% of grading). Escalate to
197
- **opus 4.8** or **gpt-5.5** for high-risk judgment (a11y / visual / security / architecture).
198
- `cursor` is only distinct when the executor is opus-tier (cursor runs claude-sonnet).
199
-
200
- ### fallbackModels rotation on spawn failure (529 / overload)
201
-
202
- 1. Call `loop_grader_report_spawn_failure({ continuationId, error })` to record the failure.
203
- 2. Re-call `loop_grader_dispatch` — with no `model`, the runtime auto-selects the next
204
- `fallbackModels` entry; pass an explicit `model` to **pin a specific grader** (the override
205
- is honored verbatim and is not consumed by the rotation pointer).
206
- 3. Record the verdict under the minted `continuationId`; set `graderModelActual` to the model
207
- that actually ran so provenance is accurate. Independence holds as long as the actual grader
208
- model ≠ executor model.
209
-
210
- ### Worktree fingerprint — when verdicts are invalidated vs. preserved
211
-
212
- | Change type | Effect on verdicts |
213
- |---|---|
214
- | Edit a **tracked** source file | Fingerprint changes → all prior `passed` verdicts invalidated (`BLOCKER_FILESYSTEM_STATE_CHANGED`) → re-grade required |
215
- | Add an **untracked** new file (e.g. a new test file) | Fingerprint unchanged → prior GO verdicts remain valid |
216
-
217
- This means you can add new test files mid-loop without forcing re-grading of already-passed stages.
218
- Never use `git stash` mid-loop — it mutates tracked-file state and invalidates all verdicts.
219
-
220
- ### `loop_pause` / `loop_resume` around long async grading
221
-
222
- While a grader is dispatched and in flight, the Stop boulder already allows exit without `loop_pause`.
223
- Use `loop_pause` / `loop_resume` explicitly when you need to hand off control for extended human
224
- review or an async wait that is not grader-dispatch-in-flight, to avoid unnecessary Stop churn.
225
-
226
- ### Graders are read-only
227
-
228
- Grader child sessions must review the artifact and emit a verdict — nothing else.
229
- They MUST NOT call `loop_*` management tools (complete, pause, resume, retarget, block, abort)
230
- or `factory_*` tools. The runtime rejects these calls from grader sessions.
231
-
232
- **Verdict capture is STRUCTURED, not log-scraped.** Dispatch with:
233
- `paseo run --provider <graderModel> --mode auto-review --output-schema <verdict.json> --json --label continuation=<cid>`
234
- — stdout is the validated `{verdict, evidence}` object (verified on codex / cursor / opencode / kimi;
235
- coexists with tool use). With the codex provider, `--mode auto-review` routes the grader's eligible
236
- `on-request` approvals through codex's auto-reviewer subagent instead of BLOCKING — without it a
237
- grader can stall waiting on an approval (e.g. a cargo/network fetch during build verification). The
238
- grader stays read-only BY PROMPT; auto-review only governs approval handling and composes with the
239
- `--output-schema` structured verdict capture. Codex mode enum (authoritative): `read-only` · `auto`
240
- · `auto-review` · `full-access`. Flip a running grader with `paseo agent mode <id> auto-review`.
241
- Recover actual grader model + cost via
242
- `paseo ls -a --label continuation=<cid> --json` + `paseo inspect <id> --json`.
243
- Watch live: recover the id by label then `paseo attach <id>`.
244
- Fallback only: if structured capture is unavailable, embed evidence inline in the `evidence` field.
245
- Design doc: `enact-loop/docs/design/2026-06-22-paseo-verdict-capture.md`.
246
-
247
- ## Access Control — `.enact/` is CLI-mediated
248
-
249
- The agent **NEVER edits `~/.enact/` files directly**. All loop state mutation goes through the
250
- `enact-loop` CLI or `loop_*` MCP tools — never raw file edits. Read state via:
251
-
252
- ```bash
253
- enact-loop status --json # current loop state as JSON
254
- enact-loop summary show # display the current closure summary
255
- ```
256
-
257
- ## Session roles and closure authority
258
-
259
- | Role | May call | Must NOT call |
260
- |------|----------|---------------|
261
- | **Executor/driver** | `loop_grade`, `loop_grader_dispatch`, `loop_grader_verdict` (relayed), `loop_pause`, `loop_resume`, `loop_retarget`, `loop_complete`, `enact-loop summary write` | — |
262
- | **Grader child** | `loop_grader_verdict` (direct), `loop_status`, `loop_stop_evaluate` | `loop_complete`, summary write, `loop_pause`/`loop_resume`/`loop_retarget`, closure tools |
263
-
264
- Grader child sessions: review, emit verdict, stop cleanly. They have **no closure authority**.
265
-
266
- **No `git stash` during an active loop** — stash mid-loop invalidates worktree state and stale
267
- verdict fingerprints.
268
-
269
- ## Worktree fingerprint
270
-
271
- Each verdict is stamped with a worktree fingerprint. When the workspace changes (e.g. after
272
- retarget or filesystem drift), stale `passed` verdicts are invalidated (`BLOCKER_FILESYSTEM_STATE_CHANGED`).
273
- `loop_retarget` preserves verdicts only when `id + type + worktreeFingerprint` match unchanged stages.
274
-
275
- ## Workspace root resolution
276
-
277
- Loop state is keyed to the **launch workspace** — no ancestor `.git` walk:
278
-
279
- | Surface | Root source |
280
- |---------|-------------|
281
- | CLI subcommands | `process.cwd()` — run from the driven project |
282
- | MCP | `enact-loop mcp <workspace>` positional arg (bundle uses `"."` = host MCP cwd) |
283
- | Hooks | `payload.cwd` from hook JSON |
284
-
285
- Wrong cwd → different project store → "no active loop".
286
-
287
- ## Closure
288
-
289
- Closure requires a written, CURRENT timestamped summary under
290
- `~/.enact/loop/projects/<key>/state/<YYMMDDHH>-loop-summary.md`. The runtime records the active
291
- path in `~/.enact/loop/projects/<key>/state/summary-current.json`. When all required stages pass
292
- (and every judgment stage has an independent verdict), the loop is closure-ready and enters the
293
- `verifying` phase. The Stop boulder then **BLOCKS exit** and injects a generic markdown
294
- **TEMPLATE** whose first line is a fingerprint header:
295
-
296
- ```
297
- <!-- enact-loop-summary loop:<id> fp:<phase|stagesPassed|historyLen> -->
298
- ```
299
-
300
- The template defines these sections (keep the whole file under 100 lines):
301
-
302
- - **Summary** — one-line statement of what was accomplished or why blocking/aborting
303
- - **Stage state** — list of stages with their final status
304
- - **Blockers** — any unresolved blockers (if blocking/aborting)
305
- - **Failures** — any stages that failed and the root cause
306
- - **Evidence** — key commands run and observed outputs
307
- - **Recommendations** — suggested next actions
308
-
309
- To write the summary, **pipe the body sections to the CLI** — the CLI stamps the fingerprint
310
- header automatically:
311
-
312
- ```bash
313
- enact-loop summary write <<'EOF'
314
- ## Summary
315
- <one-line summary>
316
-
317
- ## Stage state
318
- <stage list>
319
-
320
- ## Blockers
321
- <none|list>
322
-
323
- ## Failures
324
- <none|list>
325
-
326
- ## Evidence
327
- <commands + observed output>
328
-
329
- ## Recommendations
330
- <next actions>
331
- EOF
332
- ```
333
-
334
- Once a current summary exists, the boulder allows exit. `completeLoop` / `blockLoop` / `abortLoop`
335
- all **REQUIRE** a current summary and throw `E_CLOSURE_SUMMARY_MISSING` otherwise.
336
-
337
- When a later `loop_start` begins a new loop, the prior terminal loop's active state is archived
338
- under `~/.enact/loop/projects/<key>/archive/<loop-id>-<contract-id>/` before the new active
339
- `state/loop.json` is written. That archive keeps the closed loop's `loop.json`,
340
- `closure-manifest.json`, `grader-sessions.json`, `summary-current.json`, and every timestamped
341
- closure summary for auditability.
342
-
343
- **This summary is the handoff**: enact-factory's brain reads it (together with the Paseo agent's
344
- last message) to decide the next action after the loop completes.
345
-
346
- **Closure sequence — required for ALL terminal transitions:**
347
-
348
- 1. `enact-loop summary write` — pipe body sections; CLI stamps the fingerprint header
349
- 2. Then call: `loop_complete summary="<one-line>"` OR `loop_block reason="<reason>"` OR
350
- `loop_abort reason="<reason>"`
351
-
352
- ## MCP Tools
353
-
354
- | Tool | Purpose |
355
- |------|---------|
356
- | `loop_start` | Start loop with goal + contract/preset; stamps executorIdentity |
357
- | `loop_status` | Read current loop state |
358
- | `loop_advance` | Phase transition |
359
- | `loop_grade` | Run a mechanical stage command in loop root; args: `stageId`, optional `timeoutMs` |
360
- | `loop_grader_dispatch` | Dispatch an independent grader for a judgment stage (returns continuationId) |
361
- | `loop_grader_verdict` | Record GO/NO-GO; `captureSource`: `relayed` (driver default) or `direct` (grader child) |
362
- | `loop_pause` | Pause the loop for human review; Stop allows exit while paused |
363
- | `loop_resume` | Resume a paused loop; restores the pre-pause phase |
364
- | `loop_retarget` | Replace the active contract with a new one (same loop id) |
365
- | `loop_block` | Mark blocked with a reason; requires current closure summary |
366
- | `loop_complete` | Close the loop; requires current closure summary + phase=verifying + all stages passed |
367
- | `loop_abort` | Abort with a reason; requires current closure summary |
368
- | `loop_contract_parity` | Run contract-parity check |
369
- | `loop_stop_evaluate` | Evaluate Stop boulder policy (called by the Stop hook) |
370
-
371
- ## CLI
372
-
373
- ```bash
374
- # Read state (never read .enact/ files directly)
375
- enact-loop status --json # current loop state as JSON
376
- enact-loop summary show # display the current closure summary
377
-
378
- # Write the closure summary (CLI stamps fingerprint header into a new YYMMDDHH-loop-summary.md; never write summaries directly)
379
- enact-loop summary write <<'EOF'
380
- ## Summary
381
- ...
382
- EOF
383
-
384
- # Validate a contract file before using it with loop_start
385
- enact-loop contract validate <path/to/contract.json|yaml>
386
-
387
- # Health check — verify MCP server reachability and runtime state; optionally validate
388
- # that a contract's grader model differs from the executor model
389
- enact-loop doctor --contract <file> [--executor-model M] [--grader-model M]
390
- ```
391
-
392
- `contract validate` exits 0 + `✓ valid contract: <id> (<n> stages)` on success; exits 1 with an
393
- error list on failure. Common errors: missing required fields, judgment stage without `grader`,
394
- mechanical stage with `grader` (use `command` instead), malformed YAML/JSON.
395
-
396
- ## Boulder Behavior
397
-
398
- The Stop hook calls `enact-loop hook stop` → `loop_stop_evaluate`. The boulder blocks exit if:
399
- - any `required` stage is still `pending` or `failed`
400
- - any judgment stage is `passed` but lacks a valid independent verdict (`grader-independence-missing`)
401
- - a required grader is unavailable (`grader-unavailable`)
402
- - the loop is closure-ready (all stages passed, independence satisfied) but no current closure summary exists
403
- or the summary fingerprint is stale (`closure-summary-missing`) — resolve by running `enact-loop summary write`
404
- - the loop phase is not terminal (exception: `paused` allows exit)
405
-
406
- ## State
30
+ 1. Read `loop_status`; clarify the goal if needed.
31
+ 2. Declare a contract using the exact `executor`, `mechanical`, `stage-verifier`, and `loop-grader` types needed by the outcome. Dependencies form the graph; no domain-specific Stage ids are required. Use `executor` for prompt-driven interactive work and `mechanical` only for a real executable command.
32
+ 3. Start with `loop_start`, perform the declared work in `running`, then advance with `loop_advance toPhase=verifying`.
33
+ 4. For an `executor` Stage, the authenticated active Executor first calls `loop_executor_stage_input({ stageId })`, performs the returned exact `prompt.text`, then calls `loop_executor_stage_complete` with the response's exact `identity`, `inputFingerprint`, and `executorContinuationId`, plus non-empty `evidenceRefs`, a lower-case SHA-256 `outputDigest`, and any mapped `assertionResults`. The operation is pass-only; status, command result, and Executor identity are not caller inputs.
34
+ 5. Run each `mechanical` Stage through `loop_stage_run`; do not use Executor completion for a declared command.
35
+ 6. For a `stage-verifier` Stage, reserve with `loop_stage_verifier_dispatch`, bind the launched reviewer with `loop_stage_verifier_register_session`, persist observed transport with `loop_stage_verifier_observation_record`, and submit its role-specific verdict through `loop_stage_verifier_verdict`. Record launch failure only through `loop_stage_verifier_report_spawn_failure`.
36
+ 7. For a `loop-grader` Stage, use the distinct `loop_grader_dispatch`, `loop_grader_register_session`, `loop_grader_observation_record`, `loop_grader_verdict`, and `loop_grader_report_spawn_failure` surface. Do not select either role through a generic role flag.
37
+ 8. Resume the same Executor after a StageVerifier GO. Fix a NO-GO within the declared contract; pause for human amendment when the contract must change. When every required Stage and assertion passes, write the summary and close with `loop_complete`.
38
+ 9. Read [the contract reference](references/loop-contract.md) before declaring complex dependencies or budgets.
407
39
 
408
- `.enact/` is CLI-mediated — never read or write `.enact/` files directly.
40
+ ## Output
409
41
 
410
- - Read state: `enact-loop status --json` (loop state) · `enact-loop summary show` (current closure summary)
411
- - Mutate state: `loop_*` MCP tools or `enact-loop` CLI subcommands only
412
- - Active loop state stays in `~/.enact/loop/projects/<key>/state/`; closed loops move to
413
- `~/.enact/loop/projects/<key>/archive/<loop-id>-<contract-id>/` on the next `loop_start`
414
- - Closure summaries are append-only timestamped files at
415
- `~/.enact/loop/projects/<key>/state/<YYMMDDHH>-loop-summary.md`, written via `enact-loop summary write`
416
- (CLI stamps the fingerprint header and updates `summary-current.json`); read by enact-factory's brain after loop completion.
417
- - SessionStart hook auto-resumes an active (`running` or `verifying`) loop when the prompt
418
- contains `$enact-loop`. Paused loops are NOT auto-resumed.
42
+ Return the loop id, phase, contract, interactive Executor evidence, mechanical evidence, role-specific verdicts, blockers, and closure summary.
419
43
 
420
- ## Example Contracts
44
+ ## State Contract
421
45
 
422
- ### Delivery Contract
46
+ The runtime owns loop state and derives its project key from the launch workspace. Inspect state through loop tools; never fabricate evidence, stage status, or a judgment verdict.
423
47
 
424
- ```yaml
425
- id: delivery
426
- name: Feature Delivery
427
- stages:
428
- - id: tests
429
- name: Tests passing
430
- type: mechanical
431
- required: true
432
- command: bash scripts/ci-local.sh
433
- passCriteria: All tests exit 0
48
+ ## Boundaries
434
49
 
435
- - id: typecheck
436
- name: Type check clean
437
- type: mechanical
438
- required: true
439
- command: npm run typecheck && npm run typecheck:tests
440
- passCriteria: No type errors in src or test files
50
+ ### In scope
441
51
 
442
- - id: lint
443
- name: Lint clean
444
- type: mechanical
445
- required: true
446
- command: npm run lint
447
- passCriteria: No lint errors
52
+ Declaring, executing, grading, blocking, resuming, and closing an enact-loop contract.
448
53
 
449
- - id: code-review
450
- name: Code review
451
- type: judgment
452
- required: true
453
- grader:
454
- role: code-reviewer
455
- model: claude-opus-4-8
456
- harness: paseo
457
- rounds: 3
458
- passCriteria: Reviewer approves with no blocking issues
459
- ```
54
+ ### Out of scope
460
55
 
461
- **Tests stage must mirror CI (hard requirement #9).** A bare `npm test` on the
462
- host is not acceptable — the host suite can pass green while the same deliverable
463
- fails the Linux CI agent due to `HOME`/path divergence. The `command` for the
464
- `tests` stage must invoke a Linux-parity / containerized runner (e.g.
465
- `bash scripts/ci-local.sh`) that reproduces the CI environment locally.
56
+ Using an Executor session as StageVerifier or LoopGrader, using pass-only Executor completion for a mechanical or judgment Stage, editing runtime state files, bypassing a failed required Stage, or treating a proposed contract as approval.
466
57
 
467
- **Include `typecheck:tests` (rule #7).** When the project has a separate
468
- test-file typecheck script, include it — either as its own mechanical stage or
469
- folded into the typecheck stage command (`npm run typecheck && npm run
470
- typecheck:tests`). A src-only `typecheck` lets test-file type regressions slip
471
- past undetected.
58
+ ### Fog of war
472
59
 
473
- ### Docs Workflow
60
+ If scope, acceptance, dependency, or reviewer identity is unknown, block or clarify instead of starting or completing a loop.
474
61
 
475
- ```yaml
476
- id: docs-workflow
477
- name: Documentation Update
478
- stages:
479
- - id: build
480
- name: Docs build clean
481
- type: mechanical
482
- required: true
483
- command: npm run docs:build
62
+ ## Completion
484
63
 
485
- - id: scope-fidelity
486
- name: Scope fidelity
487
- type: judgment
488
- required: true
489
- grader:
490
- role: critic
491
- model: claude-opus-4-8
492
- rounds: 2
493
- passCriteria: Critic confirms docs match the stated scope
494
- ```
64
+ Prove closure with `loop_status` after `enact-loop summary write` and `loop_complete`; every required Stage must be `passed`, every required assertion must be met, and every judgment verdict must use its exact role-specific surface.
@@ -0,0 +1,114 @@
1
+ # Enact-loop contract reference
2
+
3
+ ## Contract shape
4
+
5
+ Declare a generic contract with an id, name, optional opaque skill reference, and Stages. A Stage has an opaque id, name, exact type, required flag, optional dependency ids, and optional prompt, evidence schema, and stop conditions. Use `executor` for interactive prompt-driven work; use `mechanical` only when the engine must run a real command.
6
+
7
+ ```yaml
8
+ id: <loop-id>
9
+ name: <outcome name>
10
+ skill:
11
+ id: <optional opaque skill id>
12
+ stages:
13
+ - id: produce
14
+ name: Produce the artifact
15
+ type: executor
16
+ required: true
17
+ prompt:
18
+ text: <exact prompt text>
19
+ sha256: <lower-case SHA-256 of text>
20
+ - id: validate
21
+ name: Validate the artifact
22
+ type: mechanical
23
+ required: true
24
+ requires: [produce]
25
+ command: <executable validation command>
26
+ passCriteria: The artifact satisfies its declared mechanical checks
27
+ - id: inspect-current
28
+ name: Inspect current work and predecessors
29
+ type: stage-verifier
30
+ required: true
31
+ requires: [validate]
32
+ stageVerifier:
33
+ role: stage-verifier
34
+ rounds: 3
35
+ - id: judge-complete
36
+ name: Judge whole-loop completeness
37
+ type: loop-grader
38
+ required: true
39
+ requires: [inspect-current]
40
+ loopGrader:
41
+ role: loop-grader
42
+ rounds: 3
43
+ ```
44
+
45
+ Interactive Executor Stages declare no command. Their authenticated active Executor records pass-only completion against the exact immutable input packet. Mechanical Stages require an executable command; `loop_stage_run` executes it in the supplied root and derives its outcome from the exit code. Caller-supplied status or evidence does not replace execution.
46
+
47
+ StageVerifier and LoopGrader are separate Stage types and separate transport surfaces. Each requires a reviewer session and agent identity distinct from the Executor. Dispatch reserves the role-specific continuation required for observation and verdict recording. Missing, unknown, overlapping, or cross-wired identity blocks closure.
48
+
49
+ ## Phase transitions
50
+
51
+ `idle → running → verifying → completed` is the normal path. A loop may become `blocked` while waiting for an external dependency or `paused` by explicit human action. `aborted` is terminal. Resume a blocked or paused loop only after the reported condition is addressed.
52
+
53
+ Use `loop_advance toPhase=verifying` only after the declared Stage inputs and evidence are ready. Use `loop_complete` only from `verifying` after every required Stage passed.
54
+
55
+ ## Executor Stage protocol
56
+
57
+ 1. From the authenticated active Executor session, call `loop_executor_stage_input({ stageId })`. It idempotently persists the pending Stage's exact `enact.loop.stage-input/v1` packet and returns `{ stageInput, identity, inputFingerprint, executorContinuationId, prompt: { text, sha256 } }` without running freshness or timeout mutation.
58
+ 2. Perform the returned exact `prompt.text` without changing the declared contract; `prompt.sha256` is already bound inside `stageInput.renderedPromptDigest`.
59
+ 3. Call `loop_executor_stage_complete` with exactly:
60
+
61
+ - `stageId`
62
+ - the returned `identity` (`loopRunId`, `subjectRef`, `stageId`, positive `attempt`, `contractDigest`, and `cumulativeFingerprint`)
63
+ - the returned `inputFingerprint`
64
+ - the returned `executorContinuationId`
65
+ - one or more immutable `evidenceRefs`
66
+ - a lower-case SHA-256 `outputDigest`
67
+ - optional `assertionResults` only for assertions mapped to this Stage; every mapped required assertion must be `met`.
68
+
69
+ 4. The tool derives Executor identity from the authenticated session, records only `passed`, and rejects a foreign session, continuation, input packet, Stage type, assertion, or repeat completion. It accepts no caller `status`, command, or Executor-identity field.
70
+
71
+ ## StageVerifier protocol
72
+
73
+ 1. Call `loop_stage_verifier_dispatch` for the `stage-verifier` Stage.
74
+ 2. Launch the lightweight reviewer outside Loop and bind its session through `loop_stage_verifier_register_session`.
75
+ 3. Persist observed transport through `loop_stage_verifier_observation_record`.
76
+ 4. Record only a StageVerifier verdict with `loop_stage_verifier_verdict`.
77
+ 5. On launch failure, call `loop_stage_verifier_report_spawn_failure`; on NO-GO, fix within contract and reserve a new round.
78
+
79
+ ## LoopGrader protocol
80
+
81
+ 1. Call `loop_grader_dispatch` only for the `loop-grader` Stage.
82
+ 2. Bind the final reviewer with `loop_grader_register_session` and persist observed transport with `loop_grader_observation_record`.
83
+ 3. Record only a LoopGrader verdict with `loop_grader_verdict`.
84
+ 4. On launch failure, call `loop_grader_report_spawn_failure`; on NO-GO, fix within contract and reserve a new round.
85
+
86
+ For both roles, use `captureSource=relayed` when a driver relays the role envelope and `captureSource=direct` only for the bound reviewer session. A timeout or launch failure is a blocker, not a GO. No generic role selector or compatibility judgment surface exists.
87
+
88
+ CLI relay equivalents are role-specific too:
89
+
90
+ ```text
91
+ enact-loop stage-verifier observation-record --file <json>
92
+ enact-loop stage-verifier verdict --file <json>
93
+ enact-loop loop-grader observation-record --file <json>
94
+ enact-loop loop-grader verdict --file <json>
95
+ ```
96
+
97
+ ## Dependencies and budgets
98
+
99
+ `requires` must form an acyclic graph. A dependent stage cannot run or dispatch before all required predecessors pass.
100
+
101
+ ```yaml
102
+ executionBudget:
103
+ maxMechanicalAttempts: 3
104
+ maxTotalMechanicalAttempts: 8
105
+ maxTotalJudgmentDispatches: 2
106
+ failurePolicy:
107
+ maxMechanicalFailures: 3
108
+ ```
109
+
110
+ Set every budget deliberately. A zero budget is an explicit no-op. Mechanical-attempt exhaustion blocks the loop; judgment-dispatch exhaustion refuses that dispatch. `failurePolicy.maxMechanicalFailures` is independent of the execution budget and blocks repeated failing mechanical work when configured.
111
+
112
+ ## Evidence and summary
113
+
114
+ Use `loop_operations_snapshot` and `loop_status` for durable runtime facts. Do not read or edit runtime ledger files directly. Before closing, run `enact-loop summary write`; it records the required closure summary and fingerprint.