@amsterdamdatalabs/enact-extensions 0.1.42 → 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 +11 -1
- 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 +84 -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 +43 -26
- package/extensions/enact-loop/skills/loop-intake/SKILL.md +44 -32
- 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 -878
- 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/deslop-handover/SKILL.md +0 -97
- package/extensions/enact-factory/skills/deslop-handover/deslop.py +0 -181
- 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/paseo-dispatch/SKILL.md +0 -141
- 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 -49
- package/scripts/install.sh +0 -70
- package/scripts/lib/auto-update.mjs +0 -88
- 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 -507
- package/scripts/lib/run-prune.mjs +0 -94
- package/scripts/lib/run-uninstall.mjs +0 -244
- package/scripts/lib/run-update.mjs +0 -165
- 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.6-terra** — 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.6-terra.** 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.6-terra**, 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.6-terra", 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,97 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: deslop-handover
|
|
3
|
-
description: "Strip AI-authoring tells (emoji, marketing tone, over-bolding, edit scars) from handover docs for a no-AI customer, while preserving every number, reference, code block, and finding verbatim."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Deslop Handover
|
|
7
|
-
|
|
8
|
-
Make a documentation handover read as plain, human-authored engineering notes — for a
|
|
9
|
-
customer that enforces a **strict no-AI policy** — without losing any of the hard-won
|
|
10
|
-
technical substance.
|
|
11
|
-
|
|
12
|
-
This is sharper than `ai-slop-cleaner` (which targets TODO/placeholder code residue) because
|
|
13
|
-
it adds the two things that matter for prose handovers:
|
|
14
|
-
|
|
15
|
-
1. **Preserve-rules** — numbers, percentages, file:line refs, code blocks, table data,
|
|
16
|
-
citations/DOIs stay byte-for-byte. The value is the substance; only the *voice* changes.
|
|
17
|
-
2. **Sanctioned-vs-violation distinction** — the delivered product running on the customer's
|
|
18
|
-
OWN infrastructure (Azure OpenAI, LLM parser, embeddings, BM25, vector search, ontology,
|
|
19
|
-
taxonomy) is **architecture, not a violation** — KEEP it. Only AI-*authoring* tells go.
|
|
20
|
-
|
|
21
|
-
## Use When
|
|
22
|
-
|
|
23
|
-
- Preparing any markdown/docs bundle for handover to a no-AI / compliance-sensitive customer.
|
|
24
|
-
- After an AI-assisted writing or redaction pass that left tone slop or edit scars.
|
|
25
|
-
- When docs must look human-authored but every finding/number must survive intact.
|
|
26
|
-
|
|
27
|
-
## What counts as slop (REMOVE / NEUTRALIZE)
|
|
28
|
-
|
|
29
|
-
- **Emoji & decorative symbols** (✅ ✔ ✓ ❌ ⚠️ 🎯 📊 🚀 ✨ ⭐). Badge labels like `✅ Good` →
|
|
30
|
-
the plain word (`Good`); decorative ones → delete. (Arrows `→`, dashes `—`, math `≤ ≥ ≠`
|
|
31
|
-
are notation — keep.)
|
|
32
|
-
- **Marketing / filler**: comprehensive, seamless, robust (only when decorative — keep
|
|
33
|
-
"robust to X" technical usage), powerful, leverage, elegant, best practices, closes the
|
|
34
|
-
gap, dive in, it's worth noting, it's important to note, "Note that" openers, "Overall,",
|
|
35
|
-
"In summary", "In conclusion", game-changer, unlock(s), elevate, supercharge, effortless,
|
|
36
|
-
cutting-edge.
|
|
37
|
-
- **Rule-of-three flourishes** and hype cadence ("X, Y, and Z — all real") → plain statement.
|
|
38
|
-
- **Over-bolding** — bold used for sentence emphasis; keep bold only on genuine key terms/values.
|
|
39
|
-
- **Self-referential tells** — "generated by an AI", "LLM-authored", "I analyzed", "this
|
|
40
|
-
session", "as an AI"; template title prefixes like `Learning:` / `Fix:`.
|
|
41
|
-
- **Edit scars** from prior passes — blank-date holes (`as of )`, `On , `, `( run, …)`),
|
|
42
|
-
empty parens `( )`, leading-comma parens `(, …)`, space-before-colon `Foo :`, dangling
|
|
43
|
-
heading dashes `# Title —`, duplicated words.
|
|
44
|
-
|
|
45
|
-
## What to PRESERVE (do not touch)
|
|
46
|
-
|
|
47
|
-
Every number, percentage, row count, threshold, column name, file path, file:line reference,
|
|
48
|
-
SQL/code block (verbatim), table data cell, citation, DOI, author, journal, year. Every
|
|
49
|
-
finding, root cause, decision, and deferred/open/superseded note. Section structure. The
|
|
50
|
-
sanctioned product-architecture terms listed above.
|
|
51
|
-
|
|
52
|
-
## Workflow
|
|
53
|
-
|
|
54
|
-
**Step 1 — mechanical pass (the ~80%).** Run the bundled script in report mode first, then fix:
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
python skills/deslop-handover/deslop.py --report <root-or-globs...> # see what's there
|
|
58
|
-
python skills/deslop-handover/deslop.py --fix <root-or-globs...> # apply mechanical fixes
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
The script is **code-fence-aware** (never touches fenced ``` blocks, inline `code`, or digits)
|
|
62
|
-
and only does safe structural edits: emoji removal/badge-strip, edit-scar repair, trailing
|
|
63
|
-
whitespace. It does NOT auto-rewrite prose — it **reports** slop phrases, over-bold lines, and
|
|
64
|
-
blank-date holes for the judgment pass.
|
|
65
|
-
|
|
66
|
-
**Step 2 — judgment pass (the ~20%), fanned out.** Tone, over-bolding ("key term vs emphasis"),
|
|
67
|
-
rule-of-three, and ambiguous scars need a reader. Parallelize:
|
|
68
|
-
|
|
69
|
-
1. Write a shared rubric file (this SKILL's "What counts as slop" + "PRESERVE" sections).
|
|
70
|
-
2. Group the dirty files into batches of ~6.
|
|
71
|
-
3. Dispatch one sonnet executor per batch: *"Read the rubric at <path>. Deslop these files in
|
|
72
|
-
place: <list>. Preserve all numbers/refs/code verbatim. Report per file."*
|
|
73
|
-
4. Each executor reports per-file changes and confirms zero numbers/refs/code changed.
|
|
74
|
-
|
|
75
|
-
**Step 3 — verification gate.** Re-grep the whole bundle; the count must be zero:
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
rg -lP '[\x{1F300}-\x{1FAFF}\x{2600}-\x{26FF}\x{2705}\x{274C}\x{2714}\x{2713}\x{2716}]' <root> # emoji
|
|
79
|
-
rg -ni -e seamless -e '\bleverage' -e '\bunlock' -e 'best practices' -e 'dive in' <root> # phrases
|
|
80
|
-
rg -n -e 'as of \)' -e '\( *\)' -e '\(, ' -e ' —$' <root> # scars
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
A grep hit inside a fenced code block (e.g. `.collect()` matching empty-parens) is a
|
|
84
|
-
false positive — confirm by line before acting.
|
|
85
|
-
|
|
86
|
-
## State Contract
|
|
87
|
-
|
|
88
|
-
- Reads: the target docs (and a temp rubric file for the judgment pass).
|
|
89
|
-
- Writes: the same docs, in place. No new files in the handover bundle, no frontmatter added.
|
|
90
|
-
|
|
91
|
-
## Final Check
|
|
92
|
-
|
|
93
|
-
- Zero emoji, zero slop phrases, zero edit scars outside fenced code.
|
|
94
|
-
- Every number, file:line ref, code block, table cell, and citation is unchanged (diff to confirm).
|
|
95
|
-
- Product-architecture terms (Azure OpenAI / LLM / embeddings / BM25 / ontology) intact.
|
|
96
|
-
- Protected docs (e.g. a `STRATEGY.md`) excluded unless the user explicitly opts them in.
|
|
97
|
-
- Ambiguous scars (missing words, duplicated phrases, lost dates) surfaced to the user, not guessed.
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""deslop-handover — mechanical AI-tone cleanup for markdown handover docs.
|
|
3
|
-
|
|
4
|
-
Code-fence-aware. Does the safe, deterministic ~80% of a deslop pass:
|
|
5
|
-
- strips emoji / badge symbols (keeps arrows, dashes, math notation)
|
|
6
|
-
- repairs edit scars (empty parens, leading-comma parens, space-before-colon,
|
|
7
|
-
space-before-comma, dangling heading dashes, trailing whitespace)
|
|
8
|
-
- REPORTS (never auto-rewrites) slop phrases, over-bold lines, and blank-date holes
|
|
9
|
-
that need the judgment/agent pass.
|
|
10
|
-
|
|
11
|
-
NEVER touches: fenced ``` code blocks, inline `code` spans, digits, or table data values.
|
|
12
|
-
|
|
13
|
-
Usage:
|
|
14
|
-
python deslop.py --report PATH [PATH ...] # default: show findings, change nothing
|
|
15
|
-
python deslop.py --fix PATH [PATH ...] # apply the mechanical fixes in place
|
|
16
|
-
|
|
17
|
-
PATH may be a file, a directory (recursed for *.md), or a glob. Vendored dirs
|
|
18
|
-
(.venv/.git/node_modules/dist-info/.pytest_cache) are skipped.
|
|
19
|
-
"""
|
|
20
|
-
from __future__ import annotations
|
|
21
|
-
|
|
22
|
-
import argparse
|
|
23
|
-
import glob
|
|
24
|
-
import re
|
|
25
|
-
import sys
|
|
26
|
-
from pathlib import Path
|
|
27
|
-
|
|
28
|
-
_SKIP_DIRS = {".venv", ".git", "node_modules", ".pytest_cache", "__pycache__"}
|
|
29
|
-
|
|
30
|
-
# Emoji / decorative symbols. Deliberately EXCLUDES arrows (U+2190-21FF, →),
|
|
31
|
-
# dashes (—, –) and math (≤ ≥ ≠) which are technical notation.
|
|
32
|
-
EMOJI = re.compile(
|
|
33
|
-
"[\U0001F300-\U0001FAFF\U00002600-\U000027BF\U00002B00-\U00002BFF"
|
|
34
|
-
"✅❌✔✓✖✗✨️]"
|
|
35
|
-
)
|
|
36
|
-
|
|
37
|
-
SLOP_PHRASES = [
|
|
38
|
-
"comprehensive", "seamless", "powerful", "leverage", "elegant", "best practices",
|
|
39
|
-
"closes the gap", "dive in", "worth noting", "important to note", "game-changer",
|
|
40
|
-
"game changer", "unlock", "elevate", "supercharge", "effortless", "cutting-edge",
|
|
41
|
-
"in conclusion", "in summary",
|
|
42
|
-
]
|
|
43
|
-
# matches that are technical, not slop — do not flag these
|
|
44
|
-
SLOP_ALLOW = re.compile(r"robust to|robustness|leverage point|highest leverage", re.I)
|
|
45
|
-
|
|
46
|
-
# Ambiguous scars that imply a lost word/date — REPORT, do not auto-fix.
|
|
47
|
-
HOLE = re.compile(r"as of \)|\( *run\b|On , |Effective ,|\bpre-\s*$")
|
|
48
|
-
|
|
49
|
-
_INLINE_CODE = re.compile(r"`[^`]*`")
|
|
50
|
-
_FENCE = re.compile(r"^\s*(```|~~~)")
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def _split_protecting_code(line: str):
|
|
54
|
-
"""Yield (text, is_code) chunks so transforms skip inline `code` spans."""
|
|
55
|
-
pos = 0
|
|
56
|
-
for m in _INLINE_CODE.finditer(line):
|
|
57
|
-
if m.start() > pos:
|
|
58
|
-
yield line[pos:m.start()], False
|
|
59
|
-
yield m.group(0), True
|
|
60
|
-
pos = m.end()
|
|
61
|
-
if pos < len(line):
|
|
62
|
-
yield line[pos:], False
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def _fix_text(text: str, is_heading: bool) -> str:
|
|
66
|
-
"""Apply mechanical fixes to a non-code text chunk."""
|
|
67
|
-
text = EMOJI.sub("", text)
|
|
68
|
-
text = text.replace("️", "")
|
|
69
|
-
text = re.sub(r"\(\s*\)", "", text) # empty parens
|
|
70
|
-
text = re.sub(r"\(,\s*", "(", text) # leading-comma paren
|
|
71
|
-
text = re.sub(r"\(\s+", "(", text) # leading space in paren
|
|
72
|
-
text = re.sub(r"\s+\)", ")", text) # space before close paren
|
|
73
|
-
text = re.sub(r"\s+,", ",", text) # space before comma
|
|
74
|
-
text = re.sub(r"\s+:\*\*", ":**", text) # space before bold-closing colon
|
|
75
|
-
text = re.sub(r"(\*\*[^*\n]+?) :", r"\1:", text) # "label :" inside bold
|
|
76
|
-
text = re.sub(r"\s+:\s*$", ":", text) # space before trailing label colon
|
|
77
|
-
if is_heading:
|
|
78
|
-
text = re.sub(r"\s*[—–-]\s*$", "", text) # dangling heading dash
|
|
79
|
-
text = re.sub(r"(?<=\S) +", " ", text) # collapse runs of inner spaces
|
|
80
|
-
return text
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
def process(path: Path, fix: bool):
|
|
84
|
-
lines = path.read_text(encoding="utf-8").splitlines(keepends=False)
|
|
85
|
-
in_fence = False
|
|
86
|
-
out, report = [], {"emoji": 0, "scars": 0, "phrases": [], "bold": [], "holes": []}
|
|
87
|
-
for n, line in enumerate(lines, 1):
|
|
88
|
-
if _FENCE.match(line):
|
|
89
|
-
in_fence = not in_fence
|
|
90
|
-
out.append(line)
|
|
91
|
-
continue
|
|
92
|
-
if in_fence:
|
|
93
|
-
out.append(line)
|
|
94
|
-
continue
|
|
95
|
-
|
|
96
|
-
# ---- report-only signals (computed on the original line) ----
|
|
97
|
-
for p in SLOP_PHRASES:
|
|
98
|
-
if p in line.lower() and not SLOP_ALLOW.search(line):
|
|
99
|
-
report["phrases"].append((n, p))
|
|
100
|
-
if HOLE.search(line):
|
|
101
|
-
report["holes"].append((n, line.strip()[:80]))
|
|
102
|
-
for b in re.findall(r"\*\*([^*\n]+)\*\*", line):
|
|
103
|
-
if "." in b or len(b.split()) > 6: # bold wrapping a sentence/clause
|
|
104
|
-
report["bold"].append((n, b[:60]))
|
|
105
|
-
report["emoji"] += len(EMOJI.findall(line))
|
|
106
|
-
|
|
107
|
-
# ---- mechanical fix ----
|
|
108
|
-
lead = re.match(r"^\s*", line).group(0)
|
|
109
|
-
rest = line[len(lead):]
|
|
110
|
-
is_heading = rest.startswith("#") or rest.startswith(">")
|
|
111
|
-
rebuilt = "".join(
|
|
112
|
-
chunk if is_code else _fix_text(chunk, is_heading)
|
|
113
|
-
for chunk, is_code in _split_protecting_code(rest)
|
|
114
|
-
)
|
|
115
|
-
rebuilt = (lead + rebuilt).rstrip()
|
|
116
|
-
if rebuilt != line:
|
|
117
|
-
report["scars"] += 1
|
|
118
|
-
out.append(rebuilt)
|
|
119
|
-
|
|
120
|
-
changed = out != lines
|
|
121
|
-
if fix and changed:
|
|
122
|
-
path.write_text("\n".join(out) + "\n", encoding="utf-8")
|
|
123
|
-
return changed, report
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
def collect(paths):
|
|
127
|
-
files = []
|
|
128
|
-
for p in paths:
|
|
129
|
-
for hit in glob.glob(p, recursive=True) if any(c in p for c in "*?[") else [p]:
|
|
130
|
-
hp = Path(hit)
|
|
131
|
-
if hp.is_dir():
|
|
132
|
-
files += [f for f in hp.rglob("*.md")
|
|
133
|
-
if not any(part in _SKIP_DIRS for part in f.parts)]
|
|
134
|
-
elif hp.suffix == ".md":
|
|
135
|
-
files.append(hp)
|
|
136
|
-
return sorted(set(files))
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
def main():
|
|
140
|
-
ap = argparse.ArgumentParser(description="Mechanical deslop for handover markdown.")
|
|
141
|
-
ap.add_argument("--fix", action="store_true", help="apply fixes (default: report only)")
|
|
142
|
-
ap.add_argument("--report", action="store_true", help="report only (default; no-op flag for clarity)")
|
|
143
|
-
ap.add_argument("paths", nargs="+", help="files, dirs, or globs")
|
|
144
|
-
args = ap.parse_args()
|
|
145
|
-
|
|
146
|
-
files = collect(args.paths)
|
|
147
|
-
if not files:
|
|
148
|
-
print("no markdown files found", file=sys.stderr)
|
|
149
|
-
return 1
|
|
150
|
-
|
|
151
|
-
total_changed = 0
|
|
152
|
-
for f in files:
|
|
153
|
-
changed, r = process(f, args.fix)
|
|
154
|
-
signal = r["emoji"] or r["scars"] or r["phrases"] or r["bold"] or r["holes"]
|
|
155
|
-
if not signal:
|
|
156
|
-
continue
|
|
157
|
-
total_changed += int(bool(changed))
|
|
158
|
-
tag = "FIXED " if (args.fix and changed) else "FOUND "
|
|
159
|
-
print(f"\n{tag}{f}")
|
|
160
|
-
if r["emoji"]:
|
|
161
|
-
print(f" emoji/badges: {r['emoji']}")
|
|
162
|
-
if r["scars"] and not args.fix:
|
|
163
|
-
print(f" mechanical scars: {r['scars']} line(s) (run --fix)")
|
|
164
|
-
if r["phrases"]:
|
|
165
|
-
print(" slop phrases (judgment): " +
|
|
166
|
-
", ".join(f"L{n}:{p}" for n, p in r["phrases"][:8]))
|
|
167
|
-
if r["bold"]:
|
|
168
|
-
print(f" over-bold lines (judgment): {len(r['bold'])} "
|
|
169
|
-
f"(e.g. L{r['bold'][0][0]})")
|
|
170
|
-
if r["holes"]:
|
|
171
|
-
print(" blank-date / lost-word HOLES (needs human): " +
|
|
172
|
-
"; ".join(f"L{n}" for n, _ in r["holes"]))
|
|
173
|
-
|
|
174
|
-
verb = "fixed" if args.fix else "with findings"
|
|
175
|
-
print(f"\n{total_changed if args.fix else len(files)} file(s) {verb}. "
|
|
176
|
-
f"Run the verification grep + judgment pass next (see SKILL.md).")
|
|
177
|
-
return 0
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
if __name__ == "__main__":
|
|
181
|
-
sys.exit(main())
|