@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,309 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: azdo-ci-strategy
|
|
3
|
-
description: >-
|
|
4
|
-
Azure DevOps CI/CD for enact-os: the branch / PR / release strategy plus the
|
|
5
|
-
az CLI + REST commands to run it. Use when opening or promoting PRs (to
|
|
6
|
-
integration or main), setting branch policies (merge-strategy,
|
|
7
|
-
build-validation), registering pipelines, diagnosing why a pipeline did not
|
|
8
|
-
trigger, or reading build failures. Triggers on "PR to integration", "promote
|
|
9
|
-
to main", "pipeline failing", "branch policy", "az repos", "az pipelines".
|
|
10
|
-
compatibility: >-
|
|
11
|
-
Requires the az CLI (>= 2.30) with the azure-devops extension, an
|
|
12
|
-
authenticated `az login`, and network access to an Azure DevOps organization.
|
|
13
|
-
metadata:
|
|
14
|
-
author: Amsterdam Data Labs
|
|
15
|
-
version: 1.0.0
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# Azure DevOps CI/CD Strategy — enact-os
|
|
19
|
-
|
|
20
|
-
> **Storage is GLOBAL — never write to a repo-local `.enact` dir.** Resolve the project's global dir:
|
|
21
|
-
> 1. `ROOT="$(git rev-parse --show-toplevel)"`
|
|
22
|
-
> 2. In `~/.enact/workspaces.json` → `workspaces`, find the entry whose `.root` == `$ROOT`; its object key is `<name>-<id>`.
|
|
23
|
-
> 3. Factory planning artifacts go under `~/.enact/factory/projects/<key>/…`; this skill itself does not define durable markdown artifacts.
|
|
24
|
-
|
|
25
|
-
The enact-os branch / release strategy and pipeline conventions. The `az` CLI
|
|
26
|
-
and REST command catalogs live in `references/` (see [Reference files](#reference-files))
|
|
27
|
-
and load on demand — this file holds the strategy and the everyday workflow.
|
|
28
|
-
|
|
29
|
-
> **Relationship to the `enact-factory` MCP server.** This is a standalone
|
|
30
|
-
> knowledge skill — it needs only the `az` CLI, no MCP server. When the
|
|
31
|
-
> `enact-factory` MCP *is* available, prefer its tools (`factory_workitem_*`,
|
|
32
|
-
> pipeline governance) for **live board/WorkItem/pipeline state**; use the
|
|
33
|
-
> CLI/REST recipes here for **branch & merge policies, PR creation/promotion,
|
|
34
|
-
> and build-failure diagnosis** — the operations the MCP doesn't cover, or for
|
|
35
|
-
> when it isn't connected. See the sibling `workitem-triage` skill for the
|
|
36
|
-
> read-only WorkItem triage surface.
|
|
37
|
-
|
|
38
|
-
## Branch flow
|
|
39
|
-
|
|
40
|
-
```text
|
|
41
|
-
feat/* local CI ──► PR to integration ── PR CI ──► auto-merge to integration
|
|
42
|
-
fix/* local CI ──► PR to integration ── PR CI ──► auto-merge to integration
|
|
43
|
-
integration ── automation creates or updates one PR to main ──► main
|
|
44
|
-
main ── manual approval + CI ──► publish
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
- Branch from `integration` (never from `main`). One branch per logical unit,
|
|
48
|
-
kebab-case. Never commit directly to `integration` or `main`.
|
|
49
|
-
- **Create a fresh branch only when no open PR to `integration` is left
|
|
50
|
-
outstanding** for your prior work — let that PR merge (or close it) first. Keep
|
|
51
|
-
one open `integration` PR at a time so the branch → PR → merge cycle stays
|
|
52
|
-
serialized and you never stack new work on a base that's still moving. Check
|
|
53
|
-
before branching:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
az repos pr list --target-branch integration --status active \
|
|
57
|
-
--creator "$(az account show --query user.name -o tsv)" -o table
|
|
58
|
-
```
|
|
59
|
-
- `feat/*` — new functionality, tooling, or docs. `fix/*` — bug/CI/config fixes.
|
|
60
|
-
|
|
61
|
-
## Setup
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
az extension add --name azure-devops # az cli 2.30+
|
|
65
|
-
az login
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
For any command surface not spelled out in the references, run `az <group>
|
|
69
|
-
--help` — e.g. `az repos pr --help`, `az pipelines --help`, `az devops --help`.
|
|
70
|
-
The references document only the non-obvious flags, gotchas, and the REST calls
|
|
71
|
-
the CLI can't make; the CLI's own help covers the rest.
|
|
72
|
-
|
|
73
|
-
## Variables
|
|
74
|
-
|
|
75
|
-
Every command and URL in this skill (including the reference files) references
|
|
76
|
-
these. Set them once per shell (or pass `--detect` inside a repo to infer
|
|
77
|
-
org/project from the git remote). Nothing here is tied to one tenant —
|
|
78
|
-
substitute your own org/project:
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
ORG_URL="https://dev.azure.com/<your-org>" # e.g. .../amsterdamdatalabs
|
|
82
|
-
PROJECT="<your-project>" # e.g. Enact
|
|
83
|
-
AZDO_RESOURCE="499b84ac-1321-427f-aa17-267ca6975798" # constant AAD app id for AzDO access tokens
|
|
84
|
-
|
|
85
|
-
# Optional: set CLI defaults so --org/--project can be omitted on every command.
|
|
86
|
-
az devops configure --defaults organization="$ORG_URL" project="$PROJECT"
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
## Developer workflow
|
|
90
|
-
|
|
91
|
-
0. Before starting any task: confirm you have no open `integration` PR left from
|
|
92
|
-
prior work, then sync local `integration` and branch from it:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
# Gate: must return nothing before you branch (let any prior PR merge/close first)
|
|
96
|
-
az repos pr list --target-branch integration --status active \
|
|
97
|
-
--creator "$(az account show --query user.name -o tsv)" -o table
|
|
98
|
-
|
|
99
|
-
git checkout integration
|
|
100
|
-
git pull --ff-only origin integration
|
|
101
|
-
git checkout -b feat/my-branch # or fix/my-branch
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
1. Work on a `feat/*` or `fix/*` branch.
|
|
105
|
-
2. Run local Docker CI before opening a PR. Each package has a wrapper at
|
|
106
|
-
`./scripts/ci-local-<package>.sh` (run from the `enact-os` workspace root):
|
|
107
|
-
|
|
108
|
-
- `ci-local-agent.sh` · `ci-local-context.sh` · `ci-local-eval.sh`
|
|
109
|
-
- `ci-local-factory.sh` · `ci-local-gateway.sh` · `ci-local-observe.sh`
|
|
110
|
-
- `ci-local-operator.sh` · `ci-local-proc-tap.sh` · `ci-local-runtime.sh`
|
|
111
|
-
- `ci-local-voice.sh` · `ci-local-watchdog.sh` · `ci-local-wiki.sh`
|
|
112
|
-
|
|
113
|
-
(Verify the exact set with `ls scripts/ci-local-*.sh` — it grows as packages
|
|
114
|
-
are added.) For `enact-factory` and `enact-wiki`, the Docker wrapper is the
|
|
115
|
-
source of truth for Azure parity; direct host-local Vitest can differ because
|
|
116
|
-
of optional native bindings on non-Linux machines.
|
|
117
|
-
|
|
118
|
-
3. Open a PR targeting **`integration`** only — never directly to `main`. Always
|
|
119
|
-
pass **both** `--auto-complete true` and `--delete-source-branch true` (these
|
|
120
|
-
are NOT inherited by CLI-created PRs — see the auto-complete gotcha in
|
|
121
|
-
`references/cli-reference.md`):
|
|
122
|
-
|
|
123
|
-
```bash
|
|
124
|
-
az repos pr create \
|
|
125
|
-
--source-branch feat/my-branch \
|
|
126
|
-
--target-branch integration \
|
|
127
|
-
--title "feat: description" \
|
|
128
|
-
--squash true \
|
|
129
|
-
--auto-complete true \
|
|
130
|
-
--delete-source-branch true \
|
|
131
|
-
--detect
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**Merge strategy is policy-gated.** `integration` requires the **squash**
|
|
135
|
-
strategy — without `--squash true`, completion fails with
|
|
136
|
-
`Merge strategy is not allowed by policy`. Note `pr create` may still create
|
|
137
|
-
the PR while rejecting the auto-complete settings; in that case set them on
|
|
138
|
-
the existing PR (idempotent):
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
az repos pr update --id <pr-id> --squash true --auto-complete true --delete-source-branch true
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
4. CI runs automatically on the PR. When CI passes the PR **auto-merges** (squash)
|
|
145
|
-
into `integration`. No reviewer is required on integration.
|
|
146
|
-
5. After each successful merge to `integration`, automation creates or updates
|
|
147
|
-
one open `integration → main` PR.
|
|
148
|
-
6. The `integration → main` PR stays **manual** — owner approval on it is the
|
|
149
|
-
release gate. (Create/update commands: `references/cli-reference.md`.)
|
|
150
|
-
|
|
151
|
-
## CI triggers
|
|
152
|
-
|
|
153
|
-
| Trigger | What runs |
|
|
154
|
-
| ------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
155
|
-
| Push to `feat/*` | **Nothing** — local Docker CI is the gate |
|
|
156
|
-
| Push to `fix/*` | **Nothing** — local Docker CI is the gate |
|
|
157
|
-
| PR opened / updated targeting `integration` | Build + test + lint (no version bump — see Version management) |
|
|
158
|
-
| Push to `integration` (after PR merged) | Build + test + lint + **patch version auto-bump** (pushed directly to `integration`, `***NO_CI***`) |
|
|
159
|
-
| Push to `main` (after PR merged) | Build + test + lint + **Publish** for publishable packages; CI only for internal-only packages |
|
|
160
|
-
|
|
161
|
-
> **⛔ NEVER use `az pipelines run` to manually trigger CI as a substitute for a
|
|
162
|
-
> PR push.** Manual runs do not update PR build status and give false
|
|
163
|
-
> confidence. If CI is not triggering on a PR, push a new commit (even empty):
|
|
164
|
-
>
|
|
165
|
-
> ```bash
|
|
166
|
-
> git commit --allow-empty -m "ci: re-trigger pipeline"
|
|
167
|
-
> git push
|
|
168
|
-
> ```
|
|
169
|
-
>
|
|
170
|
-
> The only permitted use of `az pipelines run` is a deliberate Publish-stage
|
|
171
|
-
> retag/hotfix on `main`, performed explicitly by the repo owner.
|
|
172
|
-
|
|
173
|
-
## Publish gate
|
|
174
|
-
|
|
175
|
-
- Publish only runs on `refs/heads/main`.
|
|
176
|
-
- `main` is branch-protected — direct push blocked; only PR merges allowed.
|
|
177
|
-
- Internal-only packages can omit a publish stage while keeping the same
|
|
178
|
-
`integration` / `main` CI trigger pattern.
|
|
179
|
-
- Merging the `integration → main` PR IS the manual approval for publish.
|
|
180
|
-
- Patch auto-bumps per PR (see Version management); the owner sets minor/major and
|
|
181
|
-
gates the `integration → main` merge that triggers publish.
|
|
182
|
-
|
|
183
|
-
## Version management
|
|
184
|
-
|
|
185
|
-
- **Patch auto-bumps on the `integration` build, AFTER each PR merges.** The
|
|
186
|
-
integration CI runs `version-bump.sh --integration` and pushes the bumped
|
|
187
|
-
`package.json` commit **directly to `integration`**, marked `***NO_CI***` so
|
|
188
|
-
Azure skips it (no re-trigger). This needs the Project Build Service to have
|
|
189
|
-
**"Bypass policies when pushing"** on the repo (set in the Git Repositories
|
|
190
|
-
security namespace). Previously this bump ran on the `feat/*`/`fix/*` source
|
|
191
|
-
branch pre-merge, but pushing the bump there updated the PR source and forced a
|
|
192
|
-
second PR validation build (a wasteful double-trigger) — moving it to the
|
|
193
|
-
post-merge integration build removes that. (The bump is one patch per merged PR.)
|
|
194
|
-
- Minor/major bumps are set manually by the repo owner; no changeset tooling.
|
|
195
|
-
- **`integration → main` promotion + publish are owner-gated**: automation
|
|
196
|
-
opens/updates the `integration → main` PR; the owner approves the merge, which
|
|
197
|
-
triggers the versioned publish on `main`.
|
|
198
|
-
- Exception: packages whose version lives in a non-npm file (e.g. Python —
|
|
199
|
-
enact-observe/gateway/voice) disable the auto-bump and bump manually.
|
|
200
|
-
|
|
201
|
-
## Pipeline trigger config (all packages)
|
|
202
|
-
|
|
203
|
-
```yaml
|
|
204
|
-
trigger:
|
|
205
|
-
branches:
|
|
206
|
-
include:
|
|
207
|
-
- integration
|
|
208
|
-
- main
|
|
209
|
-
|
|
210
|
-
pr:
|
|
211
|
-
branches:
|
|
212
|
-
include:
|
|
213
|
-
- integration
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
`feat/*` and `fix/*` are intentionally excluded — local Docker CI is the only
|
|
217
|
-
branch gate before opening a PR to `integration`.
|
|
218
|
-
|
|
219
|
-
Publish stage condition:
|
|
220
|
-
|
|
221
|
-
```yaml
|
|
222
|
-
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## Version pins for local CI scripts
|
|
226
|
-
|
|
227
|
-
Tool versions for all `ci-local-*.sh` scripts are pinned in
|
|
228
|
-
`scripts/ci-versions.env`:
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
NODE_IMAGE="node:22-bookworm"
|
|
232
|
-
ZIG_VERSION="0.14.0"
|
|
233
|
-
PYTHON_IMAGE="python:3.12-bookworm"
|
|
234
|
-
UV_VERSION="0.11.8" # must match enact-observe/pyproject.toml [tool.uv]
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
When upgrading a tool version: (1) update `scripts/ci-versions.env`, **then**
|
|
238
|
-
(2) update the `variables:` block in the relevant `azure-pipelines.yml` — Azure
|
|
239
|
-
Pipelines does NOT read this file; keep the two in sync manually.
|
|
240
|
-
|
|
241
|
-
## Version-skip pattern
|
|
242
|
-
|
|
243
|
-
All publish steps must handle already-published versions gracefully:
|
|
244
|
-
|
|
245
|
-
- **npm public**: check `npm view <pkg> version`, skip if matches local.
|
|
246
|
-
- **Azure Artifacts**: catch `403|409|already exist|upstream sources`, exit 0.
|
|
247
|
-
- **cargo**: check the Azure Artifacts sparse index or crates.io API, skip if
|
|
248
|
-
the version already exists.
|
|
249
|
-
|
|
250
|
-
## Examples
|
|
251
|
-
|
|
252
|
-
**"Open a PR for my fix branch."**
|
|
253
|
-
→ Run the step-0 gate (no open integration PR), then `az repos pr create` to
|
|
254
|
-
`integration` with `--auto-complete true --delete-source-branch true`.
|
|
255
|
-
→ Result: PR opens, CI runs, and on green it auto-merges — no reviewer needed.
|
|
256
|
-
|
|
257
|
-
**"Promote integration to main."**
|
|
258
|
-
→ Create/update the `integration → main` PR (NO `--auto-complete`,
|
|
259
|
-
`references/cli-reference.md`). → Result: PR awaits the owner's approval; merging
|
|
260
|
-
it triggers the versioned publish.
|
|
261
|
-
|
|
262
|
-
**"Why didn't CI run on my PR?"**
|
|
263
|
-
→ Follow the diagnosis in `references/build-failures.md`: push an empty commit,
|
|
264
|
-
confirm the build-validation policy is enabled, ensure the PR is open and
|
|
265
|
-
targets `integration`. → Result: the pipeline re-queues on the next push event.
|
|
266
|
-
|
|
267
|
-
**"The pipeline is red — what failed?"**
|
|
268
|
-
→ Pull the build timeline via token + curl (`references/build-failures.md`) while
|
|
269
|
-
logs are still live. → Result: a printed list of failed Task/Job/Stage records
|
|
270
|
-
with their first error messages.
|
|
271
|
-
|
|
272
|
-
## Reference files
|
|
273
|
-
|
|
274
|
-
Detailed command catalogs live under `references/` and load on demand. They all
|
|
275
|
-
assume the [Variables](#variables) above are set.
|
|
276
|
-
|
|
277
|
-
- **`references/cli-reference.md`** — az command catalog (PRs, work items,
|
|
278
|
-
pipelines, repos), the full PR workflow, the auto-complete gotcha, common flags.
|
|
279
|
-
- **`references/policies-and-pipelines.md`** — REST recipes for merge-strategy
|
|
280
|
-
and build-validation policies, registering a pipeline, variable-group
|
|
281
|
-
authorization.
|
|
282
|
-
- **`references/build-failures.md`** — pull failing-build timelines/logs via
|
|
283
|
-
token + curl; diagnose why CI did not trigger.
|
|
284
|
-
- **`references/troubleshooting.md`** — `msrestazure` fix, `az repos` vs
|
|
285
|
-
`az devops`, pipeline bootstrap gotchas, first-run checklist.
|
|
286
|
-
|
|
287
|
-
## Local branch maintenance (`git-maintain`)
|
|
288
|
-
|
|
289
|
-
Local clones are kept tidy by a developer-machine LaunchAgent — you do not prune
|
|
290
|
-
branches by hand. It is local-only (never deletes remote branches, never touches
|
|
291
|
-
a working tree).
|
|
292
|
-
|
|
293
|
-
- Script `~/.local/bin/git-maintain.sh`, agent `com.enact.git-maintain` (every
|
|
294
|
-
3 h + at login), log `~/.enact/logs/git-maintain.log`.
|
|
295
|
-
- Per `enact-*` repo: `fetch --prune` → fast-forward local `integration` without
|
|
296
|
-
disturbing the working tree → **safe-only** prune (keeps `integration`/`main` +
|
|
297
|
-
current `HEAD` + latest 3; deletes only `[gone]`-upstream via `-D` and true
|
|
298
|
-
`--merged` via `-d`; squash-merged branches with a live remote are kept as
|
|
299
|
-
`unconfirmed merged`).
|
|
300
|
-
- Preview: `GIT_MAINTAIN_DRY=1 ~/.local/bin/git-maintain.sh`. Disable:
|
|
301
|
-
`launchctl bootout gui/$(id -u)/com.enact.git-maintain`.
|
|
302
|
-
|
|
303
|
-
This is why **`--delete-source-branch true` on every PR matters**: it lets a
|
|
304
|
-
squash-merged branch's remote go away, which is the signal the agent prunes on.
|
|
305
|
-
Full detail in the canonical doc below.
|
|
306
|
-
|
|
307
|
-
## Canonical doc
|
|
308
|
-
|
|
309
|
-
`enact-docs/05-operations/cross-package/git-branching-strategy.md`
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# Reading build failures & diagnosing CI
|
|
2
|
-
|
|
3
|
-
Assumes the **Variables** block from `../SKILL.md` is set (`$ORG_URL`,
|
|
4
|
-
`$PROJECT`, `$AZDO_RESOURCE`).
|
|
5
|
-
|
|
6
|
-
## Reading build failure output
|
|
7
|
-
|
|
8
|
-
AzDO pipeline logs expire quickly (timeline returns HTTP 204 after ~24h). Get
|
|
9
|
-
them while the run is fresh. **`az rest` does NOT work for AzDO URLs** — it
|
|
10
|
-
cannot derive the right AAD scope; use a bearer token + `curl`.
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
TOKEN=$(az account get-access-token \
|
|
14
|
-
--resource "$AZDO_RESOURCE" \
|
|
15
|
-
--query accessToken -o tsv)
|
|
16
|
-
|
|
17
|
-
# Failure summary from the build timeline (works while logs are live)
|
|
18
|
-
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
19
|
-
"$ORG_URL/$PROJECT/_apis/build/builds/<buildId>/timeline?api-version=7.1" \
|
|
20
|
-
| python3 -c "
|
|
21
|
-
import sys, json
|
|
22
|
-
d = json.load(sys.stdin)
|
|
23
|
-
failed = [r for r in d.get('records', [])
|
|
24
|
-
if r.get('result') == 'failed' and r.get('type') in ('Task','Job','Stage')]
|
|
25
|
-
for r in sorted(failed, key=lambda x: x.get('order', 0)):
|
|
26
|
-
print(r.get('type'), '|', r.get('name'))
|
|
27
|
-
for i in (r.get('issues') or [])[:3]:
|
|
28
|
-
print(' !', i.get('message', '')[:300])
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
# Logs container URL from a run
|
|
32
|
-
az pipelines runs show --id <run-id> --output json \
|
|
33
|
-
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['logs']['url'])"
|
|
34
|
-
|
|
35
|
-
# Fetch a specific log entry (<logId> from the logs index)
|
|
36
|
-
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
37
|
-
"$ORG_URL/$PROJECT/_apis/build/builds/<buildId>/logs/<logId>?api-version=7.1"
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Timeline returns HTTP 204 (empty) once logs expire — check the AzDO web UI then.
|
|
41
|
-
|
|
42
|
-
## Diagnosing why CI did not trigger on a PR
|
|
43
|
-
|
|
44
|
-
CI should trigger automatically when commits land on a PR source branch. If it
|
|
45
|
-
doesn't, do NOT manually queue a run:
|
|
46
|
-
|
|
47
|
-
1. **Push a new commit** (even empty) to the source branch:
|
|
48
|
-
```bash
|
|
49
|
-
git commit --allow-empty -m "ci: re-trigger pipeline"
|
|
50
|
-
git push
|
|
51
|
-
```
|
|
52
|
-
2. Check the PR's **build-validation policy** is enabled (pipeline registered and
|
|
53
|
-
the policy references the correct pipeline ID — see
|
|
54
|
-
`policies-and-pipelines.md`).
|
|
55
|
-
3. Check the PR is open and targeting `integration`. Closed/draft PRs don't
|
|
56
|
-
trigger CI.
|
|
57
|
-
|
|
58
|
-
For bootstrap PRs introducing `azure-pipelines.yml` for the first time, use
|
|
59
|
-
`git push --force-with-lease` to force a new push event (see
|
|
60
|
-
`troubleshooting.md` → pipeline bootstrap gotchas).
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# Azure DevOps CLI reference
|
|
2
|
-
|
|
3
|
-
Command catalog for the enact-os workflow. Assumes the **Variables** block from
|
|
4
|
-
`../SKILL.md` is set (`$ORG_URL`, `$PROJECT`, `$AZDO_RESOURCE`). For anything not
|
|
5
|
-
listed here, run `az <group> --help`.
|
|
6
|
-
|
|
7
|
-
## Most-used commands
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# My PRs
|
|
11
|
-
az repos pr list --creator "$(az account show --query user.name -o tsv)"
|
|
12
|
-
az repos pr list --reviewer "$(az account show --query user.name -o tsv)"
|
|
13
|
-
az repos pr show --id <pr-id>
|
|
14
|
-
az repos pr checkout --id <pr-id>
|
|
15
|
-
|
|
16
|
-
# My work items
|
|
17
|
-
az boards query --wiql "SELECT [System.Id], [System.Title], [System.State] FROM WorkItems WHERE [System.AssignedTo] = @Me AND [System.State] <> 'Closed' ORDER BY [System.ChangedDate] DESC"
|
|
18
|
-
az boards work-item show --id <work-item-id>
|
|
19
|
-
az boards work-item create --title "Task title" --type "Task"
|
|
20
|
-
az boards work-item update --id <id> --state "In Progress"
|
|
21
|
-
|
|
22
|
-
# Pipelines
|
|
23
|
-
az pipelines list
|
|
24
|
-
az pipelines runs list --top 10
|
|
25
|
-
az pipelines runs show --id <run-id>
|
|
26
|
-
|
|
27
|
-
# Repositories
|
|
28
|
-
az repos list
|
|
29
|
-
az repos show --repository <repo-name>
|
|
30
|
-
az repos create --name "new-repo"
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Pull request workflow
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# Create PR to integration — always auto-complete + delete-source-branch
|
|
37
|
-
az repos pr create \
|
|
38
|
-
--source-branch feat/my-branch \
|
|
39
|
-
--target-branch integration \
|
|
40
|
-
--title "feat: description" \
|
|
41
|
-
--auto-complete true \
|
|
42
|
-
--delete-source-branch true \
|
|
43
|
-
--detect
|
|
44
|
-
# CI passes → PR auto-merges. No reviewer required on integration.
|
|
45
|
-
|
|
46
|
-
# Promotion PR to main (integration→main) — created/updated by automation,
|
|
47
|
-
# merge stays MANUAL. Owner approval on this PR is the release gate.
|
|
48
|
-
az repos pr create \
|
|
49
|
-
--source-branch integration \
|
|
50
|
-
--target-branch main \
|
|
51
|
-
--title "release: promote integration → main" \
|
|
52
|
-
--detect
|
|
53
|
-
# NO --auto-complete ← merge of the main PR is the manual release gate
|
|
54
|
-
# NO --delete-source-branch ← integration is permanent
|
|
55
|
-
|
|
56
|
-
# Enable auto-complete on an existing integration PR (e.g. opened without flags)
|
|
57
|
-
az repos pr update --id <pr-id> --auto-complete true --delete-source-branch true
|
|
58
|
-
|
|
59
|
-
# Reviewers / votes / manual completion
|
|
60
|
-
az repos pr update --id <pr-id> --reviewers user@email.com
|
|
61
|
-
az repos pr set-vote --id <pr-id> --vote 10 # 10 approve · 5 approve-w/-suggestions · -5 wait · -10 reject
|
|
62
|
-
az repos pr update --id <pr-id> --status completed
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Auto-complete gotcha (CLI/REST PRs)
|
|
66
|
-
|
|
67
|
-
The project setting **"Set PRs to auto-complete on creation by default"**
|
|
68
|
-
(Project settings → Repositories → Settings) is enabled, **but it applies only
|
|
69
|
-
to PRs created in the web UI** — PRs created via `az repos pr create` / REST do
|
|
70
|
-
NOT inherit it (verified: a CLI-created PR had auto-complete OFF despite the
|
|
71
|
-
default). So for the CLI workflow, always pass **both** `--auto-complete true`
|
|
72
|
-
and `--delete-source-branch true` explicitly. AzDO has no repo-level policy to
|
|
73
|
-
force-delete branches on merge — enforce it at PR creation. Fix a PR opened
|
|
74
|
-
without the flags after the fact:
|
|
75
|
-
|
|
76
|
-
```bash
|
|
77
|
-
az repos pr update --id <N> --auto-complete true --delete-source-branch true
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Common flags
|
|
81
|
-
|
|
82
|
-
| Flag | Description |
|
|
83
|
-
| ------------------- | --------------------------------------------------- |
|
|
84
|
-
| `--org` | Organization URL (or set via `az devops configure`) |
|
|
85
|
-
| `--project` | Project name (or set via `az devops configure`) |
|
|
86
|
-
| `--detect` | Auto-detect org/project from the git remote |
|
|
87
|
-
| `-o json/table/tsv` | Output format |
|
package/extensions/enact-factory/skills/azdo-ci-strategy/references/policies-and-pipelines.md
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
# Branch policies, pipelines & variable groups (REST)
|
|
2
|
-
|
|
3
|
-
Assumes the **Variables** block from `../SKILL.md` is set (`$ORG_URL`,
|
|
4
|
-
`$PROJECT`, `$AZDO_RESOURCE`).
|
|
5
|
-
|
|
6
|
-
## Enforcing merge strategy on a branch
|
|
7
|
-
|
|
8
|
-
> **Do NOT use `az repos policy merge-strategy create`** — it warns
|
|
9
|
-
> `This command is from the following extension: azure-devops`. Use the REST API
|
|
10
|
-
> directly (bearer token + curl). Policy type id:
|
|
11
|
-
> `fa4e907d-c16b-4a4c-9dfa-4916e5d171ab`.
|
|
12
|
-
|
|
13
|
-
**integration — squash only** (1 clean commit per PR, linear history):
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
TOKEN=$(az account get-access-token \
|
|
17
|
-
--resource "$AZDO_RESOURCE" --query accessToken -o tsv)
|
|
18
|
-
|
|
19
|
-
curl -s -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
20
|
-
"$ORG_URL/$PROJECT/_apis/policy/configurations?api-version=7.1" \
|
|
21
|
-
-d '{
|
|
22
|
-
"isEnabled": true, "isBlocking": true,
|
|
23
|
-
"type": {"id": "fa4e907d-c16b-4a4c-9dfa-4916e5d171ab"},
|
|
24
|
-
"settings": {
|
|
25
|
-
"allowSquash": true, "allowNoFastForward": false,
|
|
26
|
-
"allowRebase": false, "allowRebaseMerge": false,
|
|
27
|
-
"scope": [{"repositoryId": "<repo-id>", "refName": "refs/heads/integration", "matchKind": "exact"}]
|
|
28
|
-
}
|
|
29
|
-
}'
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
**main — basic merge or fast-forward, no squash** (preserves full integration
|
|
33
|
-
history on promotion):
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
# POST (new) uses the URL above with these settings; if a policy already exists,
|
|
37
|
-
# PUT to .../policy/configurations/<policy-id>?api-version=7.1 instead.
|
|
38
|
-
curl -s -X PUT -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
39
|
-
"$ORG_URL/$PROJECT/_apis/policy/configurations/<policy-id>?api-version=7.1" \
|
|
40
|
-
-d '{
|
|
41
|
-
"isEnabled": true, "isBlocking": true,
|
|
42
|
-
"type": {"id": "fa4e907d-c16b-4a4c-9dfa-4916e5d171ab"},
|
|
43
|
-
"settings": {
|
|
44
|
-
"allowSquash": false, "allowNoFastForward": true,
|
|
45
|
-
"allowRebase": true, "allowRebaseMerge": false,
|
|
46
|
-
"scope": [{"repositoryId": "<repo-id>", "refName": "refs/heads/main", "matchKind": "exact"}]
|
|
47
|
-
}
|
|
48
|
-
}'
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
POST fails with "rejected by policy" if a merge-strategy policy already exists on
|
|
52
|
-
that branch — use PUT with the existing policy ID. Find existing IDs:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
curl -s -H "Authorization: Bearer $TOKEN" \
|
|
56
|
-
"$ORG_URL/$PROJECT/_apis/policy/configurations?api-version=7.1" \
|
|
57
|
-
| python3 -c "
|
|
58
|
-
import sys,json
|
|
59
|
-
MERGE_TYPE='fa4e907d-c16b-4a4c-9dfa-4916e5d171ab'
|
|
60
|
-
for p in json.load(sys.stdin).get('value',[]):
|
|
61
|
-
if p.get('type',{}).get('id') == MERGE_TYPE:
|
|
62
|
-
for s in p['settings'].get('scope',[]):
|
|
63
|
-
print(p['id'], s.get('repositoryId'), s.get('refName'))
|
|
64
|
-
"
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Register a pipeline
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
# Run from inside the repo directory — --detect infers org/project/repo
|
|
71
|
-
az pipelines create \
|
|
72
|
-
--name "<package-name> CI" \
|
|
73
|
-
--repository <repo-name> \
|
|
74
|
-
--repository-type tfsgit \
|
|
75
|
-
--branch <default-branch> \
|
|
76
|
-
--yml-path azure-pipelines.yml \
|
|
77
|
-
--skip-first-run \
|
|
78
|
-
--detect
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Build-validation policy (blocking CI gate)
|
|
82
|
-
|
|
83
|
-
```bash
|
|
84
|
-
az repos policy build create \
|
|
85
|
-
--repository-id <repo-id> \
|
|
86
|
-
--branch integration \
|
|
87
|
-
--build-definition-id <pipeline-id> \
|
|
88
|
-
--queue-on-source-update-only false \
|
|
89
|
-
--manual-queue-only false \
|
|
90
|
-
--valid-duration 0 \
|
|
91
|
-
--blocking true \
|
|
92
|
-
--enabled true \
|
|
93
|
-
--display-name "CI must pass before merge" \
|
|
94
|
-
--detect
|
|
95
|
-
|
|
96
|
-
# List / delete policies for a repo
|
|
97
|
-
az repos policy list --repository-id <repo-id> --detect -o table
|
|
98
|
-
az repos policy delete --id <policy-id> --detect
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Get `--repository-id` via `az repos show --repository <repo-name> --query id -o tsv --detect`.
|
|
102
|
-
Policies for the enact-os packages were created 2026-05-19 with the above.
|
|
103
|
-
|
|
104
|
-
## Variable-group authorization (first run)
|
|
105
|
-
|
|
106
|
-
A pipeline referencing a variable group (e.g. `enact-dev-secrets`) for the first
|
|
107
|
-
time queues but stays `notStarted` until authorized. Two ways:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
# UI: open the stuck run and click "Permit" on the variable group.
|
|
111
|
-
az pipelines runs list --pipeline-id <id> --output table
|
|
112
|
-
# $ORG_URL/$PROJECT/_build/results?buildId=<run-id>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
# REST (no UI):
|
|
117
|
-
TOKEN=$(az account get-access-token \
|
|
118
|
-
--resource "$AZDO_RESOURCE" --query accessToken -o tsv)
|
|
119
|
-
az pipelines variable-group list --output table # get <groupId>
|
|
120
|
-
|
|
121
|
-
# Authorize specific pipelines:
|
|
122
|
-
curl -s -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
123
|
-
"$ORG_URL/$PROJECT/_apis/pipelines/pipelinePermissions/variablegroup/<groupId>?api-version=7.1-preview.1" \
|
|
124
|
-
-d '{"pipelines": [{"id": 9, "authorized": true}, {"id": 10, "authorized": true}]}'
|
|
125
|
-
|
|
126
|
-
# …or all pipelines at once:
|
|
127
|
-
curl -s -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
|
|
128
|
-
"$ORG_URL/$PROJECT/_apis/pipelines/pipelinePermissions/variablegroup/<groupId>?api-version=7.1-preview.1" \
|
|
129
|
-
-d '{"allPipelines": {"authorized": true}}'
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
The authorization persists for that pipeline permanently.
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Troubleshooting & bootstrap gotchas
|
|
2
|
-
|
|
3
|
-
Assumes the **Variables** block from `../SKILL.md` is set where commands use it.
|
|
4
|
-
|
|
5
|
-
## Quick checks
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
az devops configure --list # current config
|
|
9
|
-
az account show # verify auth
|
|
10
|
-
az extension show --name azure-devops
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## PR commands live under `az repos`, not `az devops`
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
az devops pr create ... # WRONG — 'pr' is not a subcommand of az devops
|
|
17
|
-
az repos pr create --source-branch feature/x --target-branch integration --detect # CORRECT
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Extension fails with `No module named 'msrestazure'`
|
|
21
|
-
|
|
22
|
-
The `azure-devops` extension depends on `msrestazure`, not bundled in newer
|
|
23
|
-
Homebrew `azure-cli` installs. Install it into az's own Python:
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
az --version 2>&1 | grep "Python location" # e.g. .../azure-cli/2.76.0/libexec/bin/python
|
|
27
|
-
/opt/homebrew/Cellar/azure-cli/<version>/libexec/bin/python -m pip install msrestazure
|
|
28
|
-
|
|
29
|
-
# If the extension directory is corrupt, remove and reinstall:
|
|
30
|
-
rm -rf ~/.azure/cliextensions/azure-devops
|
|
31
|
-
az extension add --name azure-devops
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Pipeline bootstrap gotchas
|
|
35
|
-
|
|
36
|
-
### First PR that adds `azure-pipelines.yml` will not trigger CI
|
|
37
|
-
|
|
38
|
-
AzDO evaluates the `pr:` trigger using the YAML **in the target branch**
|
|
39
|
-
(`integration`). If `azure-pipelines.yml` doesn't exist in `integration` yet
|
|
40
|
-
(because the PR adding it hasn't merged), the trigger never fires. Merge the
|
|
41
|
-
bootstrap PR manually once — subsequent PRs auto-trigger.
|
|
42
|
-
|
|
43
|
-
### First-run checklist (new pipeline bootstrap)
|
|
44
|
-
|
|
45
|
-
1. **Validate YAML locally:**
|
|
46
|
-
`python3 -c "import yaml; yaml.safe_load(open('azure-pipelines.yml')); print('OK')"`
|
|
47
|
-
2. **Check tool versions exist:** e.g. Zig at
|
|
48
|
-
`https://ziglang.org/download/<version>/zig-linux-x86_64-<version>.tar.xz`
|
|
49
|
-
(`curl -sI`, expect 200).
|
|
50
|
-
3. **Variable group authorized:** see `policies-and-pipelines.md` →
|
|
51
|
-
variable-group authorization.
|
|
52
|
-
4. **Multi-checkout repos accessible:** if `resources: repositories` is used,
|
|
53
|
-
confirm the service connection has read access to each sibling repo.
|