@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.
- package/README.md +67 -108
- package/bundled-extensions.json +6 -0
- package/dist/create/enact.d.ts.map +1 -1
- package/dist/create/enact.js +2 -0
- package/dist/create/enact.js.map +1 -1
- package/dist/create/index.d.ts +3 -0
- package/dist/create/index.d.ts.map +1 -1
- package/dist/create/index.js +6 -0
- package/dist/create/index.js.map +1 -1
- package/dist/create/kimi.d.ts +16 -0
- package/dist/create/kimi.d.ts.map +1 -0
- package/dist/create/kimi.js +87 -0
- package/dist/create/kimi.js.map +1 -0
- package/dist/create/opencode.d.ts +129 -0
- package/dist/create/opencode.d.ts.map +1 -0
- package/dist/create/opencode.js +696 -0
- package/dist/create/opencode.js.map +1 -0
- package/dist/index.d.ts +12 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/internal/agents.d.ts +12 -2
- package/dist/internal/agents.d.ts.map +1 -1
- package/dist/internal/agents.js +119 -3
- package/dist/internal/agents.js.map +1 -1
- package/dist/internal/extensions-table.d.ts +58 -0
- package/dist/internal/extensions-table.d.ts.map +1 -0
- package/dist/internal/extensions-table.js +134 -0
- package/dist/internal/extensions-table.js.map +1 -0
- package/dist/internal/file-ops.d.ts +36 -0
- package/dist/internal/file-ops.d.ts.map +1 -0
- package/dist/internal/file-ops.js +89 -0
- package/dist/internal/file-ops.js.map +1 -0
- package/dist/internal/hooks.d.ts +56 -0
- package/dist/internal/hooks.d.ts.map +1 -0
- package/dist/internal/hooks.js +128 -0
- package/dist/internal/hooks.js.map +1 -0
- package/dist/internal/json-merge.d.ts +63 -0
- package/dist/internal/json-merge.d.ts.map +1 -0
- package/dist/internal/json-merge.js +122 -0
- package/dist/internal/json-merge.js.map +1 -0
- package/dist/internal/lock-ownership.d.ts +41 -0
- package/dist/internal/lock-ownership.d.ts.map +1 -0
- package/dist/internal/lock-ownership.js +24 -0
- package/dist/internal/lock-ownership.js.map +1 -0
- package/dist/internal/platform.d.ts.map +1 -1
- package/dist/internal/platform.js +90 -4
- package/dist/internal/platform.js.map +1 -1
- package/dist/internal/schema.js.map +1 -1
- package/dist/internal/toml-block.d.ts +59 -0
- package/dist/internal/toml-block.d.ts.map +1 -0
- package/dist/internal/toml-block.js +113 -0
- package/dist/internal/toml-block.js.map +1 -0
- package/dist/internal/types.d.ts +2 -1
- package/dist/internal/types.d.ts.map +1 -1
- package/dist/projection.d.ts +47 -0
- package/dist/projection.d.ts.map +1 -0
- package/dist/projection.js +180 -0
- package/dist/projection.js.map +1 -0
- package/dist/validate/index.d.ts +9 -4
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +56 -7
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/kimi.d.ts +3 -0
- package/dist/validate/kimi.d.ts.map +1 -0
- package/dist/validate/kimi.js +11 -0
- package/dist/validate/kimi.js.map +1 -0
- package/dist/validate/opencode.d.ts +3 -0
- package/dist/validate/opencode.d.ts.map +1 -0
- package/dist/validate/opencode.js +11 -0
- package/dist/validate/opencode.js.map +1 -0
- package/dist/validate/run.d.ts +39 -0
- package/dist/validate/run.d.ts.map +1 -0
- package/dist/validate/run.js +63 -0
- package/dist/validate/run.js.map +1 -0
- package/extensions/enact-loop/.agents/plugin.json +12 -8
- package/extensions/enact-loop/scripts/validate.mjs +113 -2
- package/extensions/enact-loop/skills/enact-loop/SKILL.md +36 -466
- package/extensions/enact-loop/skills/enact-loop/references/loop-contract.md +114 -0
- package/extensions/enact-loop/skills/loop-budget/SKILL.md +57 -0
- package/extensions/enact-loop/skills/loop-intake/SKILL.md +59 -0
- package/extensions/enact-repo/.agents/plugin.json +55 -0
- package/extensions/enact-repo/.mcp.json +20 -0
- package/extensions/enact-repo/README.md +90 -0
- package/extensions/enact-repo/hooks/hooks.json +98 -0
- package/extensions/enact-repo/lean-ctx/config.toml +35 -0
- package/extensions/enact-repo/lean-ctx/layout.toml +5 -0
- package/extensions/enact-repo/skills/aca-sandboxes/SKILL.md +53 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/capabilities.md +52 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/install.md +87 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/prerequisites.md +52 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/quickstart.md +164 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/reference-advanced.md +251 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/reference.md +287 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/response-cues.md +71 -0
- package/extensions/enact-repo/skills/aca-sandboxes/references/scenarios.md +219 -0
- package/extensions/enact-repo/skills/aca-sandboxes/version.json +4 -0
- package/extensions/enact-repo/skills/backend-remove-deadcode/SKILL.md +96 -0
- package/extensions/enact-repo/skills/cmux-leader/SKILL.md +61 -0
- package/extensions/enact-repo/skills/cmux-send/SKILL.md +61 -0
- package/extensions/enact-repo/skills/code-review/SKILL.md +100 -0
- package/extensions/enact-repo/skills/codebase-design/SKILL.md +98 -0
- package/extensions/enact-repo/skills/codebase-design/references/DEEPENING.md +37 -0
- package/extensions/enact-repo/skills/codebase-design/references/DESIGN-IT-TWICE.md +44 -0
- package/extensions/enact-repo/skills/codebase-design/references/TESTABILITY.md +29 -0
- package/extensions/enact-repo/skills/computer-use/SKILL.md +76 -0
- package/extensions/enact-repo/skills/debug-issue/SKILL.md +40 -0
- package/extensions/enact-repo/skills/diagnosing-bugs/SKILL.md +100 -0
- package/extensions/enact-repo/skills/diagnosing-bugs/references/FEEDBACK-LOOP-TACTICS.md +34 -0
- package/extensions/enact-repo/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/extensions/enact-repo/skills/domain-modeling/SKILL.md +86 -0
- package/extensions/enact-repo/skills/domain-modeling/references/ADR-FORMAT.md +47 -0
- package/extensions/enact-repo/skills/domain-modeling/references/CONTEXT-FORMAT.md +60 -0
- package/extensions/enact-repo/skills/explore-codebase/SKILL.md +41 -0
- package/extensions/enact-repo/skills/frontend-design/LICENSE.txt +177 -0
- package/extensions/enact-repo/skills/frontend-design/SKILL.md +56 -0
- package/extensions/enact-repo/skills/grill-me/SKILL.md +20 -0
- package/extensions/enact-repo/skills/grill-with-docs/SKILL.md +20 -0
- package/extensions/enact-repo/skills/handoff/SKILL.md +28 -0
- package/extensions/enact-repo/skills/http-contract-migration/SKILL.md +74 -0
- package/extensions/enact-repo/skills/http-contract-migration/references/compatibility-and-gates.md +26 -0
- package/extensions/enact-repo/skills/http-contract-migration/references/hexagonal-boundary.md +16 -0
- package/extensions/enact-repo/skills/http-contract-migration/references/publication-and-adoption.md +31 -0
- package/extensions/enact-repo/skills/http-contract-migration/references/wire-fidelity-and-dto.md +31 -0
- package/extensions/enact-repo/skills/implement/SKILL.md +28 -0
- package/extensions/enact-repo/skills/improve-codebase-architecture/SKILL.md +80 -0
- package/extensions/enact-repo/skills/improve-codebase-architecture/references/HTML-REPORT.md +123 -0
- package/extensions/enact-repo/skills/interaction-design/SKILL.md +30 -0
- package/extensions/enact-repo/skills/interaction-design/references/Workflow.md +146 -0
- package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-gsap.md +220 -0
- package/extensions/enact-repo/skills/interaction-design/references/animation-libraries-native.md +110 -0
- package/extensions/enact-repo/skills/interaction-design/references/animation-libraries.md +178 -0
- package/extensions/enact-repo/skills/interaction-design/references/interaction-patterns.md +166 -0
- package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns-advanced.md +285 -0
- package/extensions/enact-repo/skills/interaction-design/references/microinteraction-patterns.md +254 -0
- package/extensions/enact-repo/skills/interaction-design/references/scroll-animations-reveals.md +213 -0
- package/extensions/enact-repo/skills/interaction-design/references/scroll-animations.md +209 -0
- package/extensions/enact-repo/skills/lean-ctx/SKILL.md +81 -0
- package/extensions/enact-repo/skills/orca-cli/SKILL.md +88 -0
- package/extensions/enact-repo/skills/orchestration/SKILL.md +80 -0
- package/extensions/enact-repo/skills/prototype/SKILL.md +37 -0
- package/extensions/enact-repo/skills/prototype/references/LOGIC.md +79 -0
- package/extensions/enact-repo/skills/prototype/references/UI.md +112 -0
- package/extensions/enact-repo/skills/refactor-safely/SKILL.md +44 -0
- package/extensions/enact-repo/skills/remove-deadcode/SKILL.md +54 -0
- package/extensions/enact-repo/skills/research/SKILL.md +27 -0
- package/extensions/enact-repo/skills/resolving-merge-conflicts/SKILL.md +28 -0
- package/extensions/enact-repo/skills/review-changes/SKILL.md +45 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/SKILL.md +88 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/accent-color.mdx +149 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/adding-custom-styles.mdx +635 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-content.mdx +300 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-items.mdx +241 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/align-self.mdx +294 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/animation.mdx +286 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/appearance.mdx +180 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/aspect-ratio.mdx +98 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-blur.mdx +109 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-brightness.mdx +82 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-contrast.mdx +82 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-grayscale.mdx +99 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-hue-rotate.mdx +173 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-invert.mdx +99 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-opacity.mdx +103 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-saturate.mdx +98 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter-sepia.mdx +95 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backdrop-filter.mdx +113 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/backface-visibility.mdx +110 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-attachment.mdx +126 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-blend-mode.mdx +79 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-clip.mdx +85 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-color.mdx +176 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-image.mdx +349 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-origin.mdx +64 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-position.mdx +171 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-repeat.mdx +127 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/background-size.mdx +100 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/block-size.mdx +190 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-collapse.mdx +181 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-color.mdx +316 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-radius.mdx +347 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-spacing.mdx +117 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-style.mdx +129 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/border-width.mdx +344 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-decoration-break.mdx +71 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-shadow.mdx +497 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/box-sizing.mdx +175 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-after.mdx +38 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-before.mdx +38 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/break-inside.mdx +34 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caption-side.mdx +190 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/caret-color.mdx +66 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/clear.mdx +224 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color-scheme.mdx +81 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/color.mdx +125 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/colors.mdx +927 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/columns.mdx +310 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/compatibility.mdx +193 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/content.mdx +129 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/cursor.mdx +104 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/dark-mode.mdx +191 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/detecting-classes-in-source-files.mdx +315 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/display.mdx +523 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/editor-setup.mdx +90 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/field-sizing.mdx +75 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/fill.mdx +100 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-blur.mdx +114 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-brightness.mdx +102 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-contrast.mdx +102 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-drop-shadow.mdx +230 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-grayscale.mdx +101 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-hue-rotate.mdx +171 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-invert.mdx +93 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-saturate.mdx +109 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter-sepia.mdx +92 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/filter.mdx +113 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-basis.mdx +144 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-direction.mdx +130 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-grow.mdx +129 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-shrink.mdx +95 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex-wrap.mdx +118 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/flex.mdx +164 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/float.mdx +197 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-family.mdx +119 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-feature-settings.mdx +52 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-size.mdx +184 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-smoothing.mdx +67 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-stretch.mdx +138 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-style.mdx +62 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-variant-numeric.mdx +228 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/font-weight.mdx +105 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/forced-color-adjust.mdx +152 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/functions-and-directives.mdx +322 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/gap.mdx +100 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-columns.mdx +43 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-flow.mdx +58 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-auto-rows.mdx +43 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-column.mdx +124 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-row.mdx +115 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-columns.mdx +101 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/grid-template-rows.mdx +108 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/height.mdx +260 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hover-focus-and-other-states.mdx +4935 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/hyphens.mdx +112 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/inline-size.mdx +191 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/isolation.mdx +30 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-content.mdx +348 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-items.mdx +286 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/justify-self.mdx +282 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/letter-spacing.mdx +100 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-clamp.mdx +110 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/line-height.mdx +147 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-image.mdx +80 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-position.mdx +67 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/list-style-type.mdx +86 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/margin.mdx +397 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-clip.mdx +66 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-composite.mdx +70 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-image.mdx +933 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-mode.mdx +114 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-origin.mdx +66 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-position.mdx +117 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-repeat.mdx +169 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-size.mdx +104 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mask-type.mdx +98 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-block-size.mdx +153 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-height.mdx +164 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-inline-size.mdx +185 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/max-width.mdx +214 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-block-size.mdx +146 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-height.mdx +150 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-inline-size.mdx +153 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/min-width.mdx +153 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/mix-blend-mode.mdx +103 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-fit.mdx +147 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/object-position.mdx +182 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/opacity.mdx +84 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/order.mdx +94 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-color.mdx +130 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-offset.mdx +72 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-style.mdx +134 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/outline-width.mdx +91 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow-wrap.mdx +130 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overflow.mdx +665 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/overscroll-behavior.mdx +151 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/padding.mdx +232 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective-origin.mdx +127 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/perspective.mdx +137 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-content.mdx +257 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-items.mdx +269 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/place-self.mdx +257 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/pointer-events.mdx +101 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/position.mdx +399 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/preflight.mdx +291 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/resize.mdx +110 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/responsive-design.mdx +666 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/rotate.mdx +291 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scale.mdx +360 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-behavior.mdx +39 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-margin.mdx +268 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-padding.mdx +255 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-align.mdx +281 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-stop.mdx +198 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/scroll-snap-type.mdx +284 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/skew.mdx +352 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke-width.mdx +74 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/stroke.mdx +103 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/styling-with-utility-classes.mdx +1020 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/table-layout.mdx +212 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-align.mdx +162 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-color.mdx +155 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-line.mdx +143 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-style.mdx +75 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-decoration-thickness.mdx +75 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-indent.mdx +74 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-overflow.mdx +103 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-shadow.mdx +177 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-transform.mdx +106 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-underline-offset.mdx +74 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/text-wrap.mdx +144 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/theme.mdx +1142 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/top-right-bottom-left.mdx +296 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/touch-action.mdx +95 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-origin.mdx +130 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform-style.mdx +110 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transform.mdx +51 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-behavior.mdx +76 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-delay.mdx +76 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-duration.mdx +82 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-property.mdx +137 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/transition-timing-function.mdx +89 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/translate.mdx +487 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/upgrade-guide.mdx +910 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/user-select.mdx +114 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/vertical-align.mdx +194 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/visibility.mdx +287 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/white-space.mdx +211 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/width.mdx +264 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/will-change.mdx +47 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/word-break.mdx +94 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs/z-index.mdx +104 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-catalog.md +251 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-index.tsx +237 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/docs-source.txt +6 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/references/gotchas.md +18 -0
- package/extensions/enact-repo/skills/tailwind-4-docs/scripts/sync_tailwind_docs.py +183 -0
- package/extensions/enact-repo/skills/tdd/SKILL.md +49 -0
- package/extensions/enact-repo/skills/tdd/references/mocking.md +59 -0
- package/extensions/enact-repo/skills/tdd/references/tests.md +77 -0
- package/extensions/enact-repo/skills/teach/SKILL.md +88 -0
- package/extensions/enact-repo/skills/teach/references/GLOSSARY-FORMAT.md +35 -0
- package/extensions/enact-repo/skills/teach/references/LEARNING-RECORD-FORMAT.md +46 -0
- package/extensions/enact-repo/skills/teach/references/MISSION-FORMAT.md +31 -0
- package/extensions/enact-repo/skills/teach/references/PHILOSOPHY.md +65 -0
- package/extensions/enact-repo/skills/teach/references/RESOURCES-FORMAT.md +32 -0
- package/extensions/enact-repo/skills/testing/SKILL.md +54 -0
- package/extensions/enact-repo/skills/to-spec/SKILL.md +85 -0
- package/extensions/enact-repo/skills/to-tickets/SKILL.md +75 -0
- package/extensions/enact-repo/skills/to-tickets/references/TICKET-TEMPLATES.md +39 -0
- package/extensions/enact-repo/skills/triage/SKILL.md +99 -0
- package/extensions/enact-repo/skills/triage/references/AGENT-BRIEF.md +207 -0
- package/extensions/enact-repo/skills/triage/references/NEEDS-INFO-TEMPLATE.md +17 -0
- package/extensions/enact-repo/skills/triage/references/OUT-OF-SCOPE.md +105 -0
- package/extensions/enact-repo/skills/ui-ux-pro-max/SKILL.md +32 -0
- package/extensions/enact-repo/skills/ui-ux-pro-max/references/Workflow.md +207 -0
- package/extensions/enact-repo/skills/ui-ux-pro-max/references/workflow-reference.md +175 -0
- package/extensions/enact-repo/skills/wayfinder/SKILL.md +100 -0
- package/extensions/enact-repo/skills/wayfinder/references/TEMPLATES.md +35 -0
- package/extensions/enact-repo/skills/wayfinder/references/TICKET-TYPES.md +8 -0
- package/extensions/enact-repo/skills/writing-great-skills/SKILL.md +93 -0
- package/extensions/enact-repo/skills/writing-great-skills/references/GLOSSARY.md +201 -0
- package/package.json +18 -14
- package/scripts/enact-extensions.mjs +255 -873
- package/scripts/lib/allowed-plugins.mjs +52 -0
- package/scripts/lib/run-repo-doctor.mjs +571 -0
- package/scripts/lib/run-repo-install.mjs +1579 -0
- package/scripts/lib/run-sync.mjs +1 -1
- package/scripts/lib/run-validate.mjs +23 -37
- package/scripts/lib/skill-validator.mjs +872 -0
- package/spec/enact.json +21 -3
- package/spec/enact.md +13 -12
- package/spec/kimi.json +100 -0
- package/spec/opencode.json +64 -0
- package/dist/install.d.ts +0 -235
- package/dist/install.d.ts.map +0 -1
- package/dist/install.js +0 -697
- package/dist/install.js.map +0 -1
- package/dist/internal/claude.d.ts +0 -65
- package/dist/internal/claude.d.ts.map +0 -1
- package/dist/internal/claude.js +0 -200
- package/dist/internal/claude.js.map +0 -1
- package/dist/internal/codex.d.ts +0 -43
- package/dist/internal/codex.d.ts.map +0 -1
- package/dist/internal/codex.js +0 -211
- package/dist/internal/codex.js.map +0 -1
- package/dist/internal/cursor.d.ts +0 -2
- package/dist/internal/cursor.d.ts.map +0 -1
- package/dist/internal/cursor.js +0 -6
- package/dist/internal/cursor.js.map +0 -1
- package/dist/principles.d.ts +0 -28
- package/dist/principles.d.ts.map +0 -1
- package/dist/principles.js +0 -159
- package/dist/principles.js.map +0 -1
- package/dist/provision.d.ts +0 -30
- package/dist/provision.d.ts.map +0 -1
- package/dist/provision.js +0 -202
- package/dist/provision.js.map +0 -1
- package/extensions/dev-state/.agents/plugin.json +0 -36
- package/extensions/dev-state/skills/dev-state-plan-graduation/SKILL.md +0 -194
- package/extensions/dev-state/skills/dev-state-plan-graduation/agents/openai.yaml +0 -4
- package/extensions/dev-state/skills/dev-state-plan-graduation/references/reference.md +0 -130
- package/extensions/enact-context/.agents/plugin.json +0 -41
- package/extensions/enact-context/.mcp.json +0 -8
- package/extensions/enact-context/README.md +0 -25
- package/extensions/enact-context/assets/icon.png +0 -0
- package/extensions/enact-context/assets/logo.png +0 -0
- package/extensions/enact-context/hooks/hooks.json +0 -115
- package/extensions/enact-context/skills/enact-context/SKILL.md +0 -151
- package/extensions/enact-context/skills/enact-context/scripts/install.sh +0 -69
- package/extensions/enact-core/.agents/plugin.json +0 -40
- package/extensions/enact-core/OPERATING-PRINCIPLES.md +0 -7
- package/extensions/enact-core/hooks/hooks.json +0 -26
- package/extensions/enact-evolve/.agents/plugin.json +0 -47
- package/extensions/enact-evolve/agents/evolve-session-analyst.toml +0 -37
- package/extensions/enact-evolve/assets/icon.png +0 -0
- package/extensions/enact-evolve/assets/logo.png +0 -0
- package/extensions/enact-evolve/skills/mined-investigate-loop/SKILL.md +0 -68
- package/extensions/enact-evolve/skills/session-analysis/SKILL.md +0 -98
- package/extensions/enact-evolve/skills/session-analysis/scripts/run-evolve-analysis.sh +0 -343
- package/extensions/enact-factory/.agents/plugin.json +0 -49
- package/extensions/enact-factory/.mcp.json +0 -8
- package/extensions/enact-factory/agents/architect.toml +0 -34
- package/extensions/enact-factory/agents/code-reviewer.toml +0 -33
- package/extensions/enact-factory/agents/critic.toml +0 -39
- package/extensions/enact-factory/agents/executor.toml +0 -26
- package/extensions/enact-factory/agents/explore.toml +0 -25
- package/extensions/enact-factory/agents/planner.toml +0 -26
- package/extensions/enact-factory/agents/verifier.toml +0 -33
- package/extensions/enact-factory/assets/icon.png +0 -0
- package/extensions/enact-factory/assets/logo.png +0 -0
- package/extensions/enact-factory/skills/advisor/SKILL.md +0 -82
- package/extensions/enact-factory/skills/ai-slop-cleaner/SKILL.md +0 -57
- package/extensions/enact-factory/skills/autonomous-runner/SKILL.md +0 -353
- package/extensions/enact-factory/skills/azdo-ci-strategy/SKILL.md +0 -309
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/build-failures.md +0 -60
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/cli-reference.md +0 -87
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/policies-and-pipelines.md +0 -132
- package/extensions/enact-factory/skills/azdo-ci-strategy/references/troubleshooting.md +0 -53
- package/extensions/enact-factory/skills/cmux-leader/SKILL.md +0 -74
- package/extensions/enact-factory/skills/cmux-send/SKILL.md +0 -50
- package/extensions/enact-factory/skills/committee/SKILL.md +0 -80
- package/extensions/enact-factory/skills/deep-interview/SKILL.md +0 -68
- package/extensions/enact-factory/skills/drive-loop/SKILL.md +0 -394
- package/extensions/enact-factory/skills/drive-loop/references/contract-schema.md +0 -127
- package/extensions/enact-factory/skills/handoff/SKILL.md +0 -75
- package/extensions/enact-factory/skills/hyperplan/SKILL.md +0 -59
- package/extensions/enact-factory/skills/looplan/SKILL.md +0 -120
- package/extensions/enact-factory/skills/plan/SKILL.md +0 -103
- package/extensions/enact-factory/skills/remove-deadcode/SKILL.md +0 -46
- package/extensions/enact-factory/skills/research/SKILL.md +0 -83
- package/extensions/enact-factory/skills/review/SKILL.md +0 -67
- package/extensions/enact-factory/skills/security-research/SKILL.md +0 -57
- package/extensions/enact-factory/skills/tdd/SKILL.md +0 -62
- package/extensions/enact-factory/skills/testing-strategy/SKILL.md +0 -172
- package/extensions/enact-factory/skills/trace/SKILL.md +0 -42
- package/extensions/enact-factory/skills/ultraqa/SKILL.md +0 -85
- package/extensions/enact-factory/skills/work-with-workitem/SKILL.md +0 -56
- package/extensions/enact-factory/skills/workitem-triage/SKILL.md +0 -42
- package/extensions/enact-wiki/.agents/plugin.json +0 -43
- package/extensions/enact-wiki/.mcp.json +0 -15
- package/extensions/enact-wiki/README.md +0 -44
- package/extensions/enact-wiki/assets/icon.png +0 -0
- package/extensions/enact-wiki/assets/logo.png +0 -0
- package/extensions/enact-wiki/skills/document-parser/SKILL.md +0 -17
- package/extensions/enact-wiki/skills/document-parser/scripts/parse.sh +0 -60
- package/extensions/enact-wiki/skills/document-parser/skill.json +0 -9
- package/extensions/enact-wiki/skills/enact-wiki/SKILL.md +0 -30
- package/extensions/enact-wiki/skills/enact-wiki/references/ingest.md +0 -62
- package/extensions/enact-wiki/skills/enact-wiki/references/manage.md +0 -34
- package/extensions/enact-wiki/skills/enact-wiki/references/query.md +0 -59
- package/extensions/enact-wiki/skills/search-lab/SKILL.md +0 -57
- package/extensions/enact-wiki/skills/search-lab/scripts/analyze.ts +0 -23
- package/extensions/enact-wiki/skills/wiki/SKILL.md +0 -42
- package/extensions/net-revenue-management/.agents/plugin.json +0 -40
- package/extensions/net-revenue-management/.mcp.json +0 -9
- package/extensions/net-revenue-management/skills/net-revenue-risks/SKILL.md +0 -30
- package/extensions/net-revenue-management/skills/net-revenue-scenario/SKILL.md +0 -31
- package/extensions/plugin-dev/.agents/plugin.json +0 -41
- package/extensions/plugin-dev/agents/agent-creator.md +0 -199
- package/extensions/plugin-dev/agents/plugin-validator.md +0 -91
- package/extensions/plugin-dev/agents/skill-reviewer.md +0 -212
- package/extensions/plugin-dev/skills/agent-development/SKILL.md +0 -641
- package/extensions/plugin-dev/skills/agent-development/examples/agent-creation-prompt.md +0 -250
- package/extensions/plugin-dev/skills/agent-development/examples/complete-agent-examples.md +0 -461
- package/extensions/plugin-dev/skills/agent-development/references/advanced-agent-fields.md +0 -246
- package/extensions/plugin-dev/skills/agent-development/references/agent-creation-system-prompt.md +0 -216
- package/extensions/plugin-dev/skills/agent-development/references/permission-modes-rules.md +0 -226
- package/extensions/plugin-dev/skills/agent-development/references/system-prompt-design.md +0 -464
- package/extensions/plugin-dev/skills/agent-development/references/triggering-examples.md +0 -474
- package/extensions/plugin-dev/skills/agent-development/scripts/create-agent-skeleton.sh +0 -176
- package/extensions/plugin-dev/skills/agent-development/scripts/test-agent-trigger.sh +0 -227
- package/extensions/plugin-dev/skills/agent-development/scripts/validate-agent.sh +0 -227
- package/extensions/plugin-dev/skills/create-plugin/SKILL.md +0 -505
- package/extensions/plugin-dev/skills/hook-development/SKILL.md +0 -861
- package/extensions/plugin-dev/skills/hook-development/examples/load-context.sh +0 -55
- package/extensions/plugin-dev/skills/hook-development/examples/validate-bash.sh +0 -57
- package/extensions/plugin-dev/skills/hook-development/examples/validate-write.sh +0 -48
- package/extensions/plugin-dev/skills/hook-development/references/advanced.md +0 -871
- package/extensions/plugin-dev/skills/hook-development/references/hook-input-schemas.md +0 -145
- package/extensions/plugin-dev/skills/hook-development/references/migration.md +0 -392
- package/extensions/plugin-dev/skills/hook-development/references/patterns.md +0 -430
- package/extensions/plugin-dev/skills/hook-development/scripts/README.md +0 -181
- package/extensions/plugin-dev/skills/hook-development/scripts/hook-linter.sh +0 -153
- package/extensions/plugin-dev/skills/hook-development/scripts/test-hook.sh +0 -276
- package/extensions/plugin-dev/skills/hook-development/scripts/validate-hook-schema.sh +0 -159
- package/extensions/plugin-dev/skills/mcp-integration/SKILL.md +0 -775
- package/extensions/plugin-dev/skills/mcp-integration/examples/http-server.json +0 -20
- package/extensions/plugin-dev/skills/mcp-integration/examples/sse-server.json +0 -19
- package/extensions/plugin-dev/skills/mcp-integration/examples/stdio-server.json +0 -38
- package/extensions/plugin-dev/skills/mcp-integration/examples/ws-server.json +0 -26
- package/extensions/plugin-dev/skills/mcp-integration/references/authentication.md +0 -601
- package/extensions/plugin-dev/skills/mcp-integration/references/server-discovery.md +0 -190
- package/extensions/plugin-dev/skills/mcp-integration/references/server-types.md +0 -572
- package/extensions/plugin-dev/skills/mcp-integration/references/tool-usage.md +0 -623
- package/extensions/plugin-dev/skills/plugin-dev-guide/SKILL.md +0 -221
- package/extensions/plugin-dev/skills/plugin-structure/SKILL.md +0 -705
- package/extensions/plugin-dev/skills/plugin-structure/examples/advanced-plugin.md +0 -774
- package/extensions/plugin-dev/skills/plugin-structure/examples/minimal-plugin.md +0 -83
- package/extensions/plugin-dev/skills/plugin-structure/examples/standard-plugin.md +0 -611
- package/extensions/plugin-dev/skills/plugin-structure/references/advanced-topics.md +0 -289
- package/extensions/plugin-dev/skills/plugin-structure/references/component-patterns.md +0 -592
- package/extensions/plugin-dev/skills/plugin-structure/references/github-actions.md +0 -233
- package/extensions/plugin-dev/skills/plugin-structure/references/headless-ci-mode.md +0 -193
- package/extensions/plugin-dev/skills/plugin-structure/references/manifest-reference.md +0 -625
- package/extensions/plugin-dev/skills/plugin-structure/references/output-styles.md +0 -116
- package/extensions/plugin-dev/skills/skill-development/SKILL.md +0 -562
- package/extensions/plugin-dev/skills/skill-development/examples/complete-skill.md +0 -465
- package/extensions/plugin-dev/skills/skill-development/examples/frontmatter-templates.md +0 -167
- package/extensions/plugin-dev/skills/skill-development/examples/minimal-skill.md +0 -111
- package/extensions/plugin-dev/skills/skill-development/references/advanced-frontmatter.md +0 -225
- package/extensions/plugin-dev/skills/skill-development/references/commands-vs-skills.md +0 -39
- package/extensions/plugin-dev/skills/skill-development/references/skill-creation-workflow.md +0 -379
- package/extensions/plugin-dev/skills/skill-development/references/skill-creator-original.md +0 -210
- package/extensions/plugin-dev/skills/start/SKILL.md +0 -82
- package/scripts/check-hooks.mjs +0 -174
- package/scripts/check-principles.mjs +0 -116
- package/scripts/hooks/session-start-drift-check.mjs +0 -48
- package/scripts/install.sh +0 -70
- package/scripts/lib/auto-update.mjs +0 -75
- package/scripts/lib/bundle-hash.mjs +0 -137
- package/scripts/lib/hooks.mjs +0 -585
- package/scripts/lib/ledger.mjs +0 -163
- package/scripts/lib/migrate-artifacts.mjs +0 -144
- package/scripts/lib/outdated.mjs +0 -144
- package/scripts/lib/postinstall-offer.mjs +0 -83
- package/scripts/lib/principles.mjs +0 -109
- package/scripts/lib/provision-mcp.mjs +0 -16
- package/scripts/lib/resolve-plugin-root.mjs +0 -9
- package/scripts/lib/run-install.mjs +0 -500
- package/scripts/lib/run-prune.mjs +0 -94
- package/scripts/lib/run-uninstall.mjs +0 -244
- package/scripts/lib/run-update.mjs +0 -152
- package/scripts/lib/serve.mjs +0 -472
- package/scripts/lib/ups-router.mjs +0 -392
- package/scripts/postinstall.mjs +0 -101
- package/scripts/setup-enact-context.sh +0 -28
- package/scripts/version-bump.sh +0 -484
- package/web/assets/README.md +0 -111
- package/web/assets/logo-full.png +0 -0
- package/web/assets/logo-slim.png +0 -0
- package/web/assets/tokens/base.css +0 -45
- package/web/assets/tokens/colors.css +0 -248
- package/web/assets/tokens/effects.css +0 -24
- package/web/assets/tokens/fonts.css +0 -8
- package/web/assets/tokens/index.css +0 -18
- package/web/assets/tokens/spacing.css +0 -50
- package/web/index.html +0 -1188
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cmux-leader
|
|
3
|
-
description: "Become the cmux LEADER — spawn, root-per-repo, brief, poll, unblock, and verify parallel claude follower terminals from a neutral leader. Use when orchestrating multi-session work across sibling terminals. Followers reply via the cmux-send skill."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# cmux-leader — you are the LEADER
|
|
7
|
-
|
|
8
|
-
You run inside a cmux workspace and orchestrate **follower** claude sessions in sibling terminals.
|
|
9
|
-
You coordinate; followers do the hands-on work. Keep your own context for the plan and the gates.
|
|
10
|
-
|
|
11
|
-
## Hard rules (learned the hard way)
|
|
12
|
-
|
|
13
|
-
- **One surface per directory.** A working tree cannot have two drivers — two followers, or leader +
|
|
14
|
-
a follower, in the same repo causes git collisions and duplicate PRs. If two must touch one repo,
|
|
15
|
-
give each its own `git worktree`.
|
|
16
|
-
- **Verify cwd BEFORE launching claude.** `new-split`/`new-surface` do NOT take a working-directory
|
|
17
|
-
flag — a new pane inherits the parent's cwd. Always `cd <repo>` then confirm `pwd` *before* you run
|
|
18
|
-
`claude`, or the follower boots in the wrong repo.
|
|
19
|
-
- **Lead from a NEUTRAL dir** (the common parent of all repos). The enact-loop Stop hook resolves the
|
|
20
|
-
active loop by SHELL cwd — if you `cd` into a follower's repo you inherit its Stop boulder and it
|
|
21
|
-
blocks your exit. Inspect a follower's repo with `git -C <path> …`, never a persistent `cd`.
|
|
22
|
-
- **Spawn on demand.** Don't pre-create followers for ungreenlit work — idle sessions burn tokens.
|
|
23
|
-
Create one only when a concrete task is ready; `close-surface` it when its work is done.
|
|
24
|
-
- **Before opening a PR, check no follower already opened one** for that branch (avoid duplicate PRs).
|
|
25
|
-
- **Don't accept self-reported green** — verify against real output (tests, build, PR state).
|
|
26
|
-
- **Max 5 claude sessions**, horizontal splits, one workspace.
|
|
27
|
-
|
|
28
|
-
## Commands I use
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
# Orient (re-discover every turn; surface numbers renumber)
|
|
32
|
-
cmux list-panes
|
|
33
|
-
cmux list-pane-surfaces [--pane pane:N] # name each surface
|
|
34
|
-
cmux tree # process/Surface tree (optional)
|
|
35
|
-
|
|
36
|
-
# Read a follower
|
|
37
|
-
cmux read-screen --surface surface:N [--lines 40] [--scrollback]
|
|
38
|
-
|
|
39
|
-
# Drive a follower (send → 2×Enter → ctrl+b → verify EMPTY box)
|
|
40
|
-
cmux send --surface surface:N "text\n"
|
|
41
|
-
cmux send-key --surface surface:N enter # Enter #1
|
|
42
|
-
cmux send-key --surface surface:N enter # Enter #2 — one Enter often does NOT land
|
|
43
|
-
cmux send-key --surface surface:N ctrl+b # flush a QUEUED msg — no-op while only thinking
|
|
44
|
-
cmux read-screen --surface surface:N --lines 6 # confirm the ❯ box is EMPTY (it landed)
|
|
45
|
-
cmux send-key --surface surface:N ctrl+c # interrupt a runaway
|
|
46
|
-
|
|
47
|
-
# Spawn a follower (root it correctly, THEN launch claude)
|
|
48
|
-
cmux new-split right --focus false # -> surface:N
|
|
49
|
-
cmux send --surface surface:N "cd /abs/repo && pwd\n"
|
|
50
|
-
cmux read-screen --surface surface:N --lines 5 # CONFIRM pwd == the repo
|
|
51
|
-
cmux send --surface surface:N "claude\n"
|
|
52
|
-
|
|
53
|
-
# Close a finished/dead follower
|
|
54
|
-
cmux close-surface --surface surface:N
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## Messaging — always use the cmux-send skill
|
|
58
|
-
|
|
59
|
-
Every follower briefing must tell the follower to use the **cmux-send** skill. Each message: prefix
|
|
60
|
-
`[LEADER] to [FOLLOWER-<name>] `, end with `Respond back once you are done with using prefix
|
|
61
|
-
"[FOLLOWER-<name>] to [LEADER] "`. After every `send`, fire **two** `send-key … enter` (one Enter
|
|
62
|
-
often does not land) + one `ctrl+b`, then `read-screen` and confirm the `❯` box is **empty** — an
|
|
63
|
-
empty inbox is the only proof it submitted.
|
|
64
|
-
|
|
65
|
-
## Leader loop
|
|
66
|
-
|
|
67
|
-
1. **Shard** the goal into independent slices, one repo per follower.
|
|
68
|
-
2. **Spawn & brief** — split → `cd <repo>` (verify pwd) → `claude` → self-contained briefing (role,
|
|
69
|
-
scope, exit criteria, "use cmux-send to reply, report in one line").
|
|
70
|
-
3. **Poll on a ~15-min cadence** — never go idle while followers run. Re-discover topology, `read-screen`
|
|
71
|
-
each, classify (working / idle-done / parked / blocked / ctx≥80%), and act: parked → `send-key enter`
|
|
72
|
-
×2 + `ctrl+b`, then verify the `❯` box is empty; ctx≥80% → tell it to `/compact`; blocked → answer;
|
|
73
|
-
idle-done → assign next or `close-surface`.
|
|
74
|
-
4. **Verify & gate** — confirm real output before treating a slice as green; drive merges from the leader.
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cmux-send
|
|
3
|
-
description: "How to correctly message a cmux surface — the send→verify→enter protocol and the [from] to [to] envelope. Use whenever messaging a cmux session (leader→follower or follower→leader)."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# cmux-send — message a cmux surface correctly
|
|
7
|
-
|
|
8
|
-
Two parts are easy to get wrong: **submitting** the message and **wrapping** it.
|
|
9
|
-
|
|
10
|
-
## 1. Submit protocol (send → 2×Enter → ctrl+b → verify empty box)
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
cmux send --surface surface:N "<one-line message>\n" # \n = Enter (often not enough alone)
|
|
14
|
-
cmux send-key --surface surface:N enter # Enter #1
|
|
15
|
-
cmux send-key --surface surface:N enter # Enter #2 — one Enter frequently does NOT land
|
|
16
|
-
cmux send-key --surface surface:N ctrl+b # flush if a bash command is running
|
|
17
|
-
cmux read-screen --surface surface:N --lines 6 # VERIFY: the ❯ box is EMPTY (message left)
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
- **Send TWO Enter keys, not one.** A single `send-key … enter` (or the trailing `\n`) frequently
|
|
21
|
-
fails to submit while the follower is booting or thinking — the text parks in the `❯` box. Two
|
|
22
|
-
Enters is the reliable default; a leftover empty Enter is harmless.
|
|
23
|
-
- **Then one `ctrl+b`.** It flushes a *queued* message only when the follower has a **running bash
|
|
24
|
-
command** to background; while it is purely thinking `ctrl+b` is a harmless no-op. Sending it
|
|
25
|
-
unconditionally costs nothing and frees the queue the moment a command is running.
|
|
26
|
-
- **Always confirm an EMPTY inbox.** `read-screen` after submitting and check the `❯` box is clear
|
|
27
|
-
(no parked text, no "Press up to edit queued messages"). An empty box is the only proof it landed —
|
|
28
|
-
do not assume submission, verify it.
|
|
29
|
-
- **To submit a parked message, `send-key … enter` (×2), NOT `ctrl+b` alone.** `ctrl+b` does nothing
|
|
30
|
-
while the follower is only thinking.
|
|
31
|
-
- **One line only.** Every literal `\n` submits, so a multi-line prompt fires early and fragments.
|
|
32
|
-
- `read-screen` takes `--surface`, not `--pane`.
|
|
33
|
-
|
|
34
|
-
## 2. Message envelope (every message)
|
|
35
|
-
|
|
36
|
-
- **Start with:** `[<from-surface-name>] to [<to-surface-name>] `
|
|
37
|
-
- **End with:** `Respond back once you are done with using prefix "[<to-surface-name>] to [<from-surface-name>] "`
|
|
38
|
-
|
|
39
|
-
Surface names are the human labels (e.g. `LEADER`, `FOLLOWER-enact-wiki`), not `surface:N`. Map them
|
|
40
|
-
with `cmux list-pane-surfaces [--pane pane:N]`.
|
|
41
|
-
|
|
42
|
-
### Example (leader → follower)
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
cmux send --surface surface:3 "[LEADER] to [FOLLOWER-enact-wiki] <instruction on one line>. Respond back once you are done with using prefix \"[FOLLOWER-enact-wiki] to [LEADER] \"\n"
|
|
46
|
-
cmux send-key --surface surface:3 enter # ×2 — one Enter often does not land
|
|
47
|
-
cmux send-key --surface surface:3 enter
|
|
48
|
-
cmux send-key --surface surface:3 ctrl+b # flush if a command is running (no-op while thinking)
|
|
49
|
-
cmux read-screen --surface surface:3 --lines 6 # confirm the ❯ box is EMPTY
|
|
50
|
-
```
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: committee
|
|
3
|
-
description: >-
|
|
4
|
-
Two contrasting-vendor agents root-cause a stuck, blocked, or looping WorkItem
|
|
5
|
-
and produce a plan. Use when asked to "convene a committee", "root-cause this",
|
|
6
|
-
"the item is stuck/looping", "debate the approach", or when the driver's loop
|
|
7
|
-
stalls and needs a way forward. Produces a plan that feeds `plan` / `drive-loop`;
|
|
8
|
-
may propose a different approach. Read + plan only — no implementation.
|
|
9
|
-
metadata:
|
|
10
|
-
author: Amsterdam Data Labs
|
|
11
|
-
version: 1.0.0
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# committee
|
|
15
|
-
|
|
16
|
-
> **Storage is GLOBAL — never write to a repo-local `.enact` dir.** Resolve the project's global dir:
|
|
17
|
-
> 1. `ROOT="$(git rev-parse --show-toplevel)"`
|
|
18
|
-
> 2. In `~/.enact/workspaces.json` → `workspaces`, find the entry whose `.root` == `$ROOT`; its object key is `<name>-<id>`.
|
|
19
|
-
> 3. Factory planning artifacts go under `~/.enact/factory/projects/<key>/…`.
|
|
20
|
-
|
|
21
|
-
Two **contrasting-vendor** agents independently diagnose a stuck WorkItem, then
|
|
22
|
-
their findings are reconciled into a single forward plan. Heavier than
|
|
23
|
-
[`advisor`](../advisor/SKILL.md) (one strong opinion); this is the **strong escalation** for
|
|
24
|
-
architecture decisions and risky or irreversible changes. Use when an item is **stalled, blocked,
|
|
25
|
-
or looping** and the path is unclear, OR when a risky migration / architecture decision requires
|
|
26
|
-
two independent strong perspectives before proceeding.
|
|
27
|
-
|
|
28
|
-
## When to escalate to committee
|
|
29
|
-
|
|
30
|
-
- Architecture decisions (interface shape, system redesign, approach selection)
|
|
31
|
-
- Risky or irreversible migrations (data, schema, breaking API changes)
|
|
32
|
-
- Items blocked at the loop level where `advisor`'s single opinion is insufficient
|
|
33
|
-
- Branch policy / CI strategy changes with wide blast radius
|
|
34
|
-
|
|
35
|
-
## Model selection
|
|
36
|
-
|
|
37
|
-
Committee always uses **opus 4.8 + gpt-5.5** — the two strongest available models from different
|
|
38
|
-
vendors. This pairing provides genuine diversity: one OpenAI-lineage, one Anthropic-lineage.
|
|
39
|
-
|
|
40
|
-
## Boundaries (hard)
|
|
41
|
-
|
|
42
|
-
- **Diagnose + plan only.** No code changes, no commits, no board mutation. The
|
|
43
|
-
output is a plan; implementation happens later via `drive-loop`.
|
|
44
|
-
- **Two distinct vendors: opus 4.8 + gpt-5.5.** Both members run on models that are different
|
|
45
|
-
from each other and from the executor (genuine diversity). If two distinct models are
|
|
46
|
-
unavailable, run what you can and STATE the reduced diversity loudly — do not
|
|
47
|
-
pretend two same-model passes are a committee.
|
|
48
|
-
- **Reconcile honestly.** If the two disagree, surface the disagreement and the
|
|
49
|
-
decisive evidence; do not paper over it.
|
|
50
|
-
|
|
51
|
-
## Sequence
|
|
52
|
-
|
|
53
|
-
1. Assemble the dossier: `factory_workitem_get` (goal, acceptance, current
|
|
54
|
-
state, `blockedBy`), the loop status / stall reason, recent failing output.
|
|
55
|
-
2. Spawn TWO agents on **opus 4.8 + gpt-5.5**, with contrasting lenses:
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
Agent({ subagent_type: "critic", model: "claude-opus-4-8", prompt: "<dossier> — root-cause why this is stuck; what is the real blocker?" })
|
|
59
|
-
Agent({ subagent_type: "architect", model: "gpt-5.5", prompt: "<dossier> — is the current approach right? propose the smallest viable path to closure." })
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
3. Reconcile their findings into ONE plan: the root cause, the chosen approach
|
|
63
|
-
(note if it differs from the original), and ordered next steps mapped to
|
|
64
|
-
loop stages.
|
|
65
|
-
4. Hand the result to `$plan` so it is persisted as a new timestamped
|
|
66
|
-
`~/.enact/factory/projects/<key>/plans/<YYMMDDHH>-<phase>.md` artifact rather
|
|
67
|
-
than left only in chat output.
|
|
68
|
-
|
|
69
|
-
## Output
|
|
70
|
-
|
|
71
|
-
`{ rootCause, approach (kept | changed + why), steps[], dissent? , members[] }`
|
|
72
|
-
where `members[]` shows the two distinct models. The `steps[]` are ready to feed
|
|
73
|
-
[`plan`](../plan/SKILL.md) or directly into a [`drive-loop`](../drive-loop/SKILL.md)
|
|
74
|
-
contract.
|
|
75
|
-
|
|
76
|
-
## Related
|
|
77
|
-
|
|
78
|
-
- [`advisor`](../advisor/SKILL.md) — when one opinion is enough.
|
|
79
|
-
- [`plan`](../plan/SKILL.md) — turn the committee's steps into an execution plan.
|
|
80
|
-
- [`drive-loop`](../drive-loop/SKILL.md) — execute the chosen path to closure.
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: deep-interview
|
|
3
|
-
description: "Intent-first clarification loop for vague, risky, or product-heavy work before planning or execution."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Deep Interview
|
|
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-evolve-a38d1e`).
|
|
11
|
-
> 3. Factory planning artifacts go under `~/.enact/factory/projects/<key>/…`.
|
|
12
|
-
|
|
13
|
-
## Purpose
|
|
14
|
-
|
|
15
|
-
Use `$deep-interview` to turn a fuzzy request into an execution-ready spec. This is not generic
|
|
16
|
-
brainstorming. It is a focused clarification loop that removes ambiguity before planning or coding.
|
|
17
|
-
|
|
18
|
-
## Use When
|
|
19
|
-
|
|
20
|
-
- the request describes outcomes, not behavior
|
|
21
|
-
- the user is still discovering what they want
|
|
22
|
-
- scope, non-goals, or decision boundaries are unclear
|
|
23
|
-
- a wrong assumption would create expensive rework
|
|
24
|
-
|
|
25
|
-
## Do Not Use When
|
|
26
|
-
|
|
27
|
-
- the request already names files, symbols, and acceptance criteria
|
|
28
|
-
- the user explicitly wants immediate execution and the risk is low
|
|
29
|
-
- the only missing work is architectural decomposition, not intent clarity
|
|
30
|
-
|
|
31
|
-
## Execution Policy
|
|
32
|
-
|
|
33
|
-
- ask one question at a time
|
|
34
|
-
- ask only the highest-leverage unresolved question
|
|
35
|
-
- use repo facts before asking about codebase internals
|
|
36
|
-
- force clarity on non-goals and decision boundaries before handoff
|
|
37
|
-
- keep the interview moving toward a durable artifact, not an endless conversation
|
|
38
|
-
- **never overwrite a prior requirements file in place** — each durable snapshot gets a fresh `YYMMDDHH` prefix
|
|
39
|
-
|
|
40
|
-
## Workflow
|
|
41
|
-
|
|
42
|
-
1. Inspect the repo for brownfield context if relevant.
|
|
43
|
-
2. Capture the current hypothesis in a **new** `~/.enact/factory/projects/<key>/plans/<YYMMDDHH>-<phase>-requirements.md` (e.g. `plans/26062101-auth-requirements.md`). Resolve `<key>` from `~/.enact/workspaces.json`; get the timestamp prefix via `date +%y%m%d%H`.
|
|
44
|
-
3. Run a one-question loop until these are explicit:
|
|
45
|
-
- goal
|
|
46
|
-
- in-scope
|
|
47
|
-
- out-of-scope
|
|
48
|
-
- acceptance criteria
|
|
49
|
-
- decision boundaries
|
|
50
|
-
4. During the interview, revise the **same** requirements file for the current pass only. A new interview session or phase restart writes a **new** timestamped file instead of editing an old one.
|
|
51
|
-
5. Hand off to `$plan` when the spec is concrete. `$plan` resolves the latest `*-requirements.md` per its Active Artifact Resolution rules.
|
|
52
|
-
|
|
53
|
-
## Output Standard
|
|
54
|
-
|
|
55
|
-
The finished interview should leave behind:
|
|
56
|
-
|
|
57
|
-
- clear goal
|
|
58
|
-
- explicit non-goals
|
|
59
|
-
- decision boundaries
|
|
60
|
-
- testable acceptance criteria
|
|
61
|
-
- constraints that downstream execution must honor
|
|
62
|
-
|
|
63
|
-
## Stop Conditions
|
|
64
|
-
|
|
65
|
-
Do not hand off while either of these is missing:
|
|
66
|
-
|
|
67
|
-
- non-goals
|
|
68
|
-
- decision boundaries
|
|
@@ -1,394 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: drive-loop
|
|
3
|
-
description: >-
|
|
4
|
-
Teaches factory how to drive a WorkItem through the enact-loop contract runner
|
|
5
|
-
using subagents. Use when delivering a work-item, running the loop, driving a
|
|
6
|
-
work-item to closure, executing the loop contract, dispatching grader subagents,
|
|
7
|
-
or integrating factory with enact-loop. Triggers on "drive a work-item",
|
|
8
|
-
"run the loop", "deliver work-item via loop", "loop contract", "grader dispatch",
|
|
9
|
-
"loop closure".
|
|
10
|
-
metadata:
|
|
11
|
-
author: Amsterdam Data Labs
|
|
12
|
-
version: 1.0.0
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# drive-loop
|
|
16
|
-
|
|
17
|
-
> **Storage is GLOBAL — never write to a repo-local `.enact` dir.** Resolve the project's global dir:
|
|
18
|
-
> 1. `ROOT="$(git rev-parse --show-toplevel)"`
|
|
19
|
-
> 2. In `~/.enact/workspaces.json` → `workspaces`, find the entry whose `.root` == `$ROOT`; its object key is `<name>-<id>`.
|
|
20
|
-
> 3. Factory artifacts go under `~/.enact/factory/projects/<key>/…`; loop runtime state and closure summaries go under `~/.enact/loop/projects/<key>/…`.
|
|
21
|
-
|
|
22
|
-
## Model
|
|
23
|
-
|
|
24
|
-
**enact-loop** is a domain-neutral contract-runner. **enact-factory** is the
|
|
25
|
-
orchestrator. The relationship is process-boundary integration only — no
|
|
26
|
-
cross-repo imports, no shared types. Integration is via the `enact-loop` MCP
|
|
27
|
-
tools or CLI.
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
Factory builds CONTRACT (JSON)
|
|
31
|
-
→ hands to enact-loop (MCP: loop_start | CLI: enact-loop)
|
|
32
|
-
→ loop drives each STAGE to closure
|
|
33
|
-
→ boulder (Stop hook) blocks the agent until every required stage has a PASS
|
|
34
|
-
and every judgment stage has an independent GO verdict
|
|
35
|
-
→ CONTROL RETURNS TO FACTORY
|
|
36
|
-
→ factory calls pushLoopClosure (enact-factory MCP/CLI)
|
|
37
|
-
→ lifecycle booleans advance → WorkItem progresses on the board
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
No cross-repo imports. The integration boundary is the `enact-loop` MCP tools
|
|
41
|
-
and the `enact-factory` MCP/CLI.
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Contract Schema
|
|
46
|
-
|
|
47
|
-
Embed the contract as plain JSON when calling `loop_start`. All fields are
|
|
48
|
-
required unless marked optional.
|
|
49
|
-
|
|
50
|
-
```json
|
|
51
|
-
{
|
|
52
|
-
"id": "<uuid>",
|
|
53
|
-
"name": "<human-readable name>",
|
|
54
|
-
"stages": [
|
|
55
|
-
{
|
|
56
|
-
"id": "<stage-id>",
|
|
57
|
-
"name": "<stage name>",
|
|
58
|
-
"type": "mechanical | judgment",
|
|
59
|
-
"required": true,
|
|
60
|
-
"command": "<shell command>",
|
|
61
|
-
"grader": {
|
|
62
|
-
"role": "architect | critic | code-reviewer | verifier",
|
|
63
|
-
"model": "<model-id — MUST differ from executor>",
|
|
64
|
-
"fallbackModels": ["<optional fallback models on 529/overload>"],
|
|
65
|
-
"harness": "paseo | subagent",
|
|
66
|
-
"rounds": 1
|
|
67
|
-
},
|
|
68
|
-
"passCriteria": "<optional plain-text pass condition>"
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### Rules
|
|
75
|
-
|
|
76
|
-
| Stage type | Required fields | Pass condition |
|
|
77
|
-
|------------|----------------|----------------|
|
|
78
|
-
| `mechanical` | `command` | exit-0 from the command |
|
|
79
|
-
| `judgment` | `grader` (with `role`) | independent GO verdict |
|
|
80
|
-
|
|
81
|
-
- `grader.model` **MUST** differ from the executor model. Cross-vendor is
|
|
82
|
-
preferred (e.g. executor = codex, grader = claude-opus-4-8). No self-grading.
|
|
83
|
-
- `grader.fallbackModels` — optional ordered list tried on re-dispatch after spawn failure
|
|
84
|
-
(`loop_grader_report_spawn_failure` on 529/overload). Does not consume the round budget.
|
|
85
|
-
- `requires` — stages run in contract order; `loop_grade` fails loudly if prerequisites are not
|
|
86
|
-
passed: `Cannot pass stage "X": requires stages not yet passed: …`.
|
|
87
|
-
- `required: true` → stage must pass before closure is declared.
|
|
88
|
-
- Closure = all required stages passed.
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## Workflow
|
|
93
|
-
|
|
94
|
-
### Step 1 — Build the contract from the WorkItem
|
|
95
|
-
|
|
96
|
-
Inspect the WorkItem's `closureRequirements`. Map each requirement to a stage:
|
|
97
|
-
|
|
98
|
-
- Deterministic check → `type: mechanical`, set `command`.
|
|
99
|
-
- Subjective quality gate → `type: judgment`, set `grader`.
|
|
100
|
-
|
|
101
|
-
> **Authoring note — mechanical stage commands:**
|
|
102
|
-
> The `tests` stage command must mirror CI's containerized/Linux-parity
|
|
103
|
-
> environment (e.g. `bash scripts/ci-local.sh`), not a bare host run. A
|
|
104
|
-
> host-passing suite can still fail the CI Linux agent due to `HOME`/path
|
|
105
|
-
> divergence. Where the project exposes a `typecheck:tests` script, include it
|
|
106
|
-
> — as its own mechanical stage or folded into the typecheck command
|
|
107
|
-
> (`npm run typecheck && npm run typecheck:tests`) — so test-file type
|
|
108
|
-
> regressions do not slip past.
|
|
109
|
-
|
|
110
|
-
### Step 2 — Start the loop
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
MCP: loop_start({ contract: <contract JSON> })
|
|
114
|
-
CLI: enact-loop --contract ./contract.json
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
The loop runner takes ownership of the session's Stop hook (the boulder). The
|
|
118
|
-
agent cannot stop until the loop signals closure.
|
|
119
|
-
|
|
120
|
-
### Step 3 — Drive mechanical stages
|
|
121
|
-
|
|
122
|
-
For each mechanical stage the loop surfaces (after any `requires` preconditions pass):
|
|
123
|
-
|
|
124
|
-
1. Call `loop_grade({ stageId, timeoutMs? })` — the engine runs the stage `command` in the loop
|
|
125
|
-
root cwd and records pass/fail from exit code.
|
|
126
|
-
2. Caller-supplied `status`, `pass`, or `output` are **rejected** — do not run the command
|
|
127
|
-
separately and self-report.
|
|
128
|
-
|
|
129
|
-
Repeat until the stage passes or the loop escalates to a retry/fail policy.
|
|
130
|
-
|
|
131
|
-
### Step 4 — Drive judgment stages (INDEPENDENT GRADER SUBAGENT)
|
|
132
|
-
|
|
133
|
-
For each judgment stage:
|
|
134
|
-
|
|
135
|
-
1. Call `loop_grader_dispatch({ stageId, childSessionId?, childAgentId? })` — mints `continuationId`.
|
|
136
|
-
2. Spawn an **independent subagent** on a **different model** (never the executor's model or
|
|
137
|
-
session). Pass grader role metadata so the grader MCP session is gated:
|
|
138
|
-
`_meta.enactLoop: { sessionRole: "grader", sessionId, continuationId }` or env vars
|
|
139
|
-
`ENACT_LOOP_SESSION_ROLE=grader`, `ENACT_LOOP_CONTINUATION_ID=<uuid>`.
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
Agent({
|
|
143
|
-
subagent_type: "<role>", // architect | critic | code-reviewer | verifier
|
|
144
|
-
model: "<grader model>", // MUST differ from executor
|
|
145
|
-
prompt: "<artifact + passCriteria + GO/NO-GO instruction>"
|
|
146
|
-
})
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
3. The grader reviews and returns a verdict envelope (GO/NO-GO + evidence). Grader child sessions
|
|
150
|
-
have **no closure authority** — runtime rejects dispatch/resume/complete/grade/summary tools.
|
|
151
|
-
Graders may only call `loop_grader_verdict`, `loop_status`, `loop_stop_evaluate`.
|
|
152
|
-
4. On grader spawn failure (529/overload): `loop_grader_report_spawn_failure({ continuationId, error })`
|
|
153
|
-
then re-dispatch (auto-selects next `fallbackModels` entry).
|
|
154
|
-
5. **Driver-relayed (default):** executor records via `loop_grader_verdict` with
|
|
155
|
-
`captureSource: "relayed"` and the minted `continuationId`.
|
|
156
|
-
**Direct:** grader child may call `loop_grader_verdict` with `captureSource: "direct"`.
|
|
157
|
-
Without dispatch → `E_UNKNOWN_GRADER_SESSION`. Grader timeout → `grader-unavailable` blocker.
|
|
158
|
-
|
|
159
|
-
> **Paseo graders — use `factory_paseo_grader_run` for structured capture.** When a judgment
|
|
160
|
-
> stage runs on Paseo (`harness: "paseo"`, or `grader.dispatchTool: "factory_paseo_grader_run"`),
|
|
161
|
-
> the factory MCP tool `factory_paseo_grader_run` runs the grader with
|
|
162
|
-
> `paseo run --output-schema --json --wait-timeout` so **stdout is the validated `{verdict,
|
|
163
|
-
> evidence}` object** — no `paseo logs | grep`. It bakes in the per-provider `--mode`
|
|
164
|
-
> (codex `auto-review` so on-request approvals don't block, kimi `auto`, cursor/opencode default) and recovers the actual resolved model via
|
|
165
|
-
> `paseo ls --label` / `inspect`, which you relay as `graderModelActual` on `loop_grader_verdict`.
|
|
166
|
-
> Full design: `enact-loop/docs/design/2026-06-22-paseo-verdict-capture.md`.
|
|
167
|
-
|
|
168
|
-
The boulder prevents the session from completing until every judgment stage has a GO from an
|
|
169
|
-
independent grader.
|
|
170
|
-
|
|
171
|
-
### Step 5 — Closure → factory lifecycle advance
|
|
172
|
-
|
|
173
|
-
When all required stages pass (executor/driver owns closure):
|
|
174
|
-
|
|
175
|
-
1. Run `enact-loop summary write` (driver only — graders cannot author summaries).
|
|
176
|
-
2. Call `loop_complete` via MCP.
|
|
177
|
-
3. Treat `~/.enact/loop/projects/<key>/state/` as the active surface only.
|
|
178
|
-
The next `loop_start` archives the prior terminal loop into
|
|
179
|
-
`~/.enact/loop/projects/<key>/archive/<loop-id>-<contract-id>/`, including
|
|
180
|
-
`loop.json`, `closure-manifest.json`, `grader-sessions.json`,
|
|
181
|
-
`summary-current.json`, and the loop's timestamped summaries.
|
|
182
|
-
4. Call `pushLoopClosure` (enact-factory MCP/CLI) with the loop's closure record.
|
|
183
|
-
5. Factory maps closure → lifecycle booleans → WorkItem advances on the board.
|
|
184
|
-
|
|
185
|
-
**Branch base:** `integration`. **No `git stash` during an active loop** — stash invalidates
|
|
186
|
-
worktree fingerprints and stale verdicts.
|
|
187
|
-
|
|
188
|
-
**Stacked-wave squash merges:** feature PRs squash into `integration`; later waves may conflict in
|
|
189
|
-
shared barrel/test/snapshot files. When the wave branch is a superset of `integration`, resolution
|
|
190
|
-
is usually `git checkout --ours -- <paths>` on those shared files — do not panic.
|
|
191
|
-
|
|
192
|
-
**Summary + active loop:** CLI and MCP must share the same workspace root. `summary write` stamps
|
|
193
|
-
`summary-current.json` keyed to active `loop.id`. If closure fails with loop-id mismatch, re-run
|
|
194
|
-
summary write from the same cwd as MCP (`enact-loop mcp .`).
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## Agent Roster (grader candidates)
|
|
199
|
-
|
|
200
|
-
Use these roles as `grader.role`. Each must run on a model/session distinct
|
|
201
|
-
from the executor.
|
|
202
|
-
|
|
203
|
-
| Role | Use for |
|
|
204
|
-
|------|---------|
|
|
205
|
-
| `architect` | design correctness, interface shape, system fit |
|
|
206
|
-
| `critic` | adversarial quality and risk review |
|
|
207
|
-
| `code-reviewer` | implementation correctness, test coverage, style |
|
|
208
|
-
| `verifier` | evidence that the deliverable meets acceptance criteria |
|
|
209
|
-
| `explore` | read-only scoping (typically pre-grader, not a grader itself) |
|
|
210
|
-
| `planner` | plan review (judgment on the plan artifact, not execution) |
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
|
|
214
|
-
## Tiered contract shaping + grader ops
|
|
215
|
-
|
|
216
|
-
> This matters: in a validated 3-wave run, the two-judgment Frontend/UI contract shape
|
|
217
|
-
> and cross-vendor model-distinct graders caught FIVE real defects (faked-AA contrast,
|
|
218
|
-
> missing focus indicator, consumer-prop a11y override, untested variant, theme flash)
|
|
219
|
-
> that all mechanical gates passed.
|
|
220
|
-
|
|
221
|
-
### Shape the contract by tier
|
|
222
|
-
|
|
223
|
-
| Tier | Mechanical stages | Judgment stages |
|
|
224
|
-
|---|---|---|
|
|
225
|
-
| Frontend / UI | tests, typecheck, lint, build, a11y-scan | `code-review` (impl correctness) + `verify` (acceptance criteria met) |
|
|
226
|
-
| Backend / logic | tests, typecheck, lint | `code-review` (+ optional `verify` for high blast-radius) |
|
|
227
|
-
| Docs | build | ONE lighter `review` (e.g. `critic` for scope fidelity) |
|
|
228
|
-
| Infra / CI | pipeline-validation, tests | architecture-fit + pipeline-correctness |
|
|
229
|
-
|
|
230
|
-
Frontend/UI gets **two** judgment stages because visual, a11y, and consumer-API
|
|
231
|
-
surfaces require both implementation review and evidence the deliverable meets
|
|
232
|
-
acceptance criteria in a real surface.
|
|
233
|
-
|
|
234
|
-
### Paseo grader operational notes
|
|
235
|
-
|
|
236
|
-
#### Grader selection — cheap default + risk-based escalation
|
|
237
|
-
|
|
238
|
-
**minimax M3** (opencode) and **kimi K2.7** are the default cheap graders for routine judgment
|
|
239
|
-
(~80% of grading). Escalate to a strong cross-vendor grader when:
|
|
240
|
-
- Frontend / UI a11y or visual / UX judgment → `advisor` = **gpt-5.5** (or opus 4.8 if executor was codex)
|
|
241
|
-
- Security, public API / barrel / contract changes → **opus 4.8**
|
|
242
|
-
- Architecture decisions / risky or irreversible migrations → `committee` (opus 4.8 + gpt-5.5)
|
|
243
|
-
|
|
244
|
-
**Independence (hard gate — model-distinct):** grader model ≠ executor model. minimax M3 / kimi K2.7
|
|
245
|
-
are vendor-distinct from both sonnet and codex workers, so default cheap graders are always
|
|
246
|
-
independent. On escalation keep cross-vendor: grade codex work with **opus** (not gpt-5.5 — same
|
|
247
|
-
OpenAI lineage); grade sonnet work with gpt-5.5 / opus / minimax / kimi.
|
|
248
|
-
|
|
249
|
-
#### Permission modes (REQUIRED — non-default modes prevent stall/empty sessions)
|
|
250
|
-
|
|
251
|
-
| Provider | Paseo flag | Notes |
|
|
252
|
-
|---|---|---|
|
|
253
|
-
| `codex` | `--mode auto-review` | Routes the grader's eligible `on-request` approvals through codex's auto-reviewer subagent instead of BLOCKING — without it a grader can stall on an approval (e.g. a cargo/network fetch during build verification). `--mode bypass` is rejected by codex |
|
|
254
|
-
| `cursor` | default / agent | `--mode bypass` is a claude mode, NOT cursor's — previously documented wrong |
|
|
255
|
-
| `kimi` | `--mode auto` | Same as codex |
|
|
256
|
-
| `opencode` (minimax M3) | default | No special mode flag needed |
|
|
257
|
-
|
|
258
|
-
Codex mode enum (authoritative): `read-only` · `auto` · `auto-review` · `full-access`. The grader
|
|
259
|
-
stays read-only BY PROMPT; `auto-review` only governs approval handling and composes with
|
|
260
|
-
`--output-schema` verdict capture. Flip a running grader with `paseo agent mode <id> auto-review`.
|
|
261
|
-
|
|
262
|
-
#### Sonnet-executor caveat
|
|
263
|
-
|
|
264
|
-
`cursor` (`cursor/claude-sonnet-4-6`) is NOT model-distinct from a sonnet executor.
|
|
265
|
-
Use **minimax M3** or **kimi K2.7** as the clean default cheap graders for sonnet-executor work;
|
|
266
|
-
escalate to opus 4.8 / gpt-5.5 for high-risk judgment. Reserve `cursor` for opus-tier executors.
|
|
267
|
-
|
|
268
|
-
#### Verdict capture — structured `--output-schema`, not log-scraped
|
|
269
|
-
|
|
270
|
-
Dispatch the grader with:
|
|
271
|
-
`paseo run --provider <graderModel> --mode auto-review --output-schema <verdict.json> --json --label continuation=<cid>`
|
|
272
|
-
— stdout is the validated `{verdict, evidence}` object (verified on codex / cursor / opencode / kimi;
|
|
273
|
-
coexists with tool use). On the codex provider, `--mode auto-review` keeps on-request approvals from
|
|
274
|
-
blocking the grader (read-only stays enforced by prompt). Recover actual grader model + cost via
|
|
275
|
-
`paseo ls -a --label continuation=<cid> --json` + `paseo inspect <id> --json`. Watch live by
|
|
276
|
-
recovering the id by label then `paseo attach <id>`.
|
|
277
|
-
Design doc: `enact-loop/docs/design/2026-06-22-paseo-verdict-capture.md`.
|
|
278
|
-
|
|
279
|
-
#### fallbackModels rotation on spawn failure
|
|
280
|
-
|
|
281
|
-
1. Record the failure: `loop_grader_report_spawn_failure({ continuationId, error })`.
|
|
282
|
-
2. Re-dispatch: `loop_grader_dispatch` auto-selects the next `fallbackModels` entry.
|
|
283
|
-
3. With no `model`, re-dispatch auto-advances `fallbackModels`; pass an explicit `model` to **pin
|
|
284
|
-
a specific grader** (the override is honored verbatim, not consumed by the pointer). Record the
|
|
285
|
-
verdict under the minted `continuationId` and set `graderModelActual` to the model that actually
|
|
286
|
-
ran. Independence holds as long as the actual grader model ≠ executor model.
|
|
287
|
-
|
|
288
|
-
#### Verdict relay when structured capture is unavailable
|
|
289
|
-
|
|
290
|
-
Preferred: call `factory_paseo_grader_run` (wraps `paseo run --output-schema <verdict.json>
|
|
291
|
-
--json --wait-timeout --label continuation=<cid>`) — stdout is the validated `{verdict, evidence}`
|
|
292
|
-
object, no log parsing — and it returns the resolved `graderModelActual` for provenance.
|
|
293
|
-
Fallback (provider without schema support): `paseo wait <id> --json` and read `.message` (the final
|
|
294
|
-
assistant text is guaranteed there) — never raw `paseo logs` scraping.
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
|
-
## Worked Example — Bug Delivery
|
|
299
|
-
|
|
300
|
-
```json
|
|
301
|
-
{
|
|
302
|
-
"id": "wi-2041-bug-null-crash",
|
|
303
|
-
"name": "Bug WI-2041: null crash in session handler",
|
|
304
|
-
"stages": [
|
|
305
|
-
{
|
|
306
|
-
"id": "unit-tests",
|
|
307
|
-
"name": "Unit tests pass",
|
|
308
|
-
"type": "mechanical",
|
|
309
|
-
"required": true,
|
|
310
|
-
"command": "cd codex-rs && cargo test --features codex-cli/enact --no-fail-fast -- --test-threads=2",
|
|
311
|
-
"passCriteria": "exit 0, no test failures"
|
|
312
|
-
},
|
|
313
|
-
{
|
|
314
|
-
"id": "regression-evidence",
|
|
315
|
-
"name": "Regression test covers the crash path",
|
|
316
|
-
"type": "mechanical",
|
|
317
|
-
"required": true,
|
|
318
|
-
"command": "grep -r 'null_session' codex-rs/src --include='*.rs' -l",
|
|
319
|
-
"passCriteria": "at least one file references the regression path"
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
"id": "code-review",
|
|
323
|
-
"name": "Independent code review: GO on fix correctness",
|
|
324
|
-
"type": "judgment",
|
|
325
|
-
"required": true,
|
|
326
|
-
"grader": {
|
|
327
|
-
"role": "code-reviewer",
|
|
328
|
-
"model": "claude-opus-4-8",
|
|
329
|
-
"harness": "subagent",
|
|
330
|
-
"rounds": 1
|
|
331
|
-
},
|
|
332
|
-
"passCriteria": "fix is minimal, regression is covered, no obvious regressions introduced"
|
|
333
|
-
},
|
|
334
|
-
{
|
|
335
|
-
"id": "verifier-signoff",
|
|
336
|
-
"name": "Verifier confirms acceptance criteria met",
|
|
337
|
-
"type": "judgment",
|
|
338
|
-
"required": true,
|
|
339
|
-
"grader": {
|
|
340
|
-
"role": "verifier",
|
|
341
|
-
"model": "claude-opus-4-8",
|
|
342
|
-
"harness": "subagent",
|
|
343
|
-
"rounds": 1
|
|
344
|
-
},
|
|
345
|
-
"passCriteria": "WI-2041 acceptance criteria satisfied; crash path eliminated"
|
|
346
|
-
}
|
|
347
|
-
]
|
|
348
|
-
}
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
**Execution trace:**
|
|
352
|
-
|
|
353
|
-
1. Factory builds this contract from WI-2041's `closureRequirements`.
|
|
354
|
-
2. `loop_start({ contract })` — boulder active.
|
|
355
|
-
3. Loop surfaces `unit-tests` → `loop_grade({ stageId: "unit-tests" })` — engine runs cargo test.
|
|
356
|
-
4. Loop surfaces `regression-evidence` → `loop_grade({ stageId: "regression-evidence" })`.
|
|
357
|
-
5. Loop surfaces `code-review` →
|
|
358
|
-
`loop_grader_dispatch({ stageId: "code-review" })` →
|
|
359
|
-
spawn `code-reviewer` subagent on `claude-opus-4-8` →
|
|
360
|
-
driver relays GO via
|
|
361
|
-
`loop_grader_verdict({ stageId: "code-review", continuationId, verdict: "GO", evidence: "...", captureSource: "relayed", ... })`.
|
|
362
|
-
6. Loop surfaces `verifier-signoff` →
|
|
363
|
-
`loop_grader_dispatch({ stageId: "verifier-signoff" })` →
|
|
364
|
-
spawn `verifier` subagent → driver relays GO via `loop_grader_verdict`.
|
|
365
|
-
7. All required stages passed → `enact-loop summary write` → `loop_complete`.
|
|
366
|
-
8. Factory calls `pushLoopClosure(closureRecord)` → WI-2041 advances to Done.
|
|
367
|
-
|
|
368
|
-
---
|
|
369
|
-
|
|
370
|
-
## Anti-patterns
|
|
371
|
-
|
|
372
|
-
- **Never self-grade judgment stages.** Grader must run on a different model and session.
|
|
373
|
-
- **Never self-report mechanical passes.** Use `loop_grade({ stageId })` — the engine runs the command.
|
|
374
|
-
- **Never stash during an active loop.** Stash invalidates worktree fingerprints.
|
|
375
|
-
- **Never skip the boulder.** Do not call loop completion tools unless all
|
|
376
|
-
required stages have passed — the boulder enforces this, but do not attempt
|
|
377
|
-
to work around it.
|
|
378
|
-
- **Never import enact-loop types directly.** The boundary is MCP/CLI only.
|
|
379
|
-
No shared module imports between factory and loop.
|
|
380
|
-
- **Judgment without a grader spec is invalid.** Every `type: judgment` stage
|
|
381
|
-
must have a `grader` field with at least `role` set.
|
|
382
|
-
|
|
383
|
-
---
|
|
384
|
-
|
|
385
|
-
## Related Skills
|
|
386
|
-
|
|
387
|
-
- `workitem-triage` — read-only triage of the WorkItem board (use before
|
|
388
|
-
building the contract to confirm the WorkItem is ready for delivery).
|
|
389
|
-
- `azdo-ci-strategy` — branch/PR/release strategy for integrating delivered
|
|
390
|
-
work into `integration` and `main`.
|
|
391
|
-
- `testing-strategy` — when a mechanical stage runs tests, use this skill to
|
|
392
|
-
pick the right test mode.
|
|
393
|
-
|
|
394
|
-
See `references/contract-schema.md` for the full contract schema reference.
|