@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
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# `aca` CLI reference
|
|
2
|
+
|
|
3
|
+
Full reference for the `aca` CLI, part 1 of 2: auth, help, global flags, environment variables, config, and `doctor`. See [reference-advanced.md](reference-advanced.md) for the YAML spec workflow, selectors, output formats, and verbose/debug.
|
|
4
|
+
|
|
5
|
+
> Verified against `aca 1.0.0-beta.1`.
|
|
6
|
+
|
|
7
|
+
## Contents
|
|
8
|
+
|
|
9
|
+
- [Auth](#auth)
|
|
10
|
+
- [Help commands](#help-commands)
|
|
11
|
+
- [Global flags and short forms](#global-flags-and-short-forms)
|
|
12
|
+
- [Environment variables](#environment-variables)
|
|
13
|
+
- [Config](#config)
|
|
14
|
+
- [`doctor`](#doctor)
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Auth
|
|
21
|
+
|
|
22
|
+
`aca` does not maintain its own credential store. Auth is delegated to
|
|
23
|
+
the Azure CLI — same identity, same MFA, same conditional-access policies.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
aca auth login # delegates to `az login`
|
|
27
|
+
aca auth status # shows current ARM + data-plane auth
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`aca auth status` output:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
✓ ARM authenticated via Azure CLI
|
|
34
|
+
✓ Data plane authenticated (https://dynamicsessions.io/.default)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Switching subscriptions
|
|
38
|
+
|
|
39
|
+
`aca` reads the active Azure CLI account by default. Switch it with `az`:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
az account set --subscription <SUB_ID>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Or override per-command:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
aca sandbox list -s <SUB_ID>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Or set a default in CLI config:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
aca config set -s <SUB_ID>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Managed identity (Azure-hosted)
|
|
58
|
+
|
|
59
|
+
When running inside Azure (App Service, Container Apps, VM, Functions),
|
|
60
|
+
use a managed identity:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
aca sandbox list --managed-identity system # system-assigned
|
|
64
|
+
aca sandbox list --managed-identity <CLIENT_ID_UUID> # user-assigned
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Available on every command. Also settable via
|
|
68
|
+
`ACA_SANDBOX_MANAGED_IDENTITY` or
|
|
69
|
+
`aca config sandbox set --managed-identity …`.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Help commands
|
|
74
|
+
|
|
75
|
+
Every command, group, and sub-group responds to `--help` (or `-h`). The
|
|
76
|
+
help text is the source of truth — examples, flags, env-var names, and
|
|
77
|
+
defaults are all there.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
aca --help # top-level: commands + global flags + quick start + scenarios
|
|
81
|
+
aca <group> --help # group: list of sub-commands
|
|
82
|
+
aca <group> <command> --help # command: arguments, env vars, defaults, examples
|
|
83
|
+
aca <group> <command> -h # short summary
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Top-level commands:
|
|
87
|
+
|
|
88
|
+
| Command | Purpose |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `aca auth` | Log in and check authentication status |
|
|
91
|
+
| `aca config` | Manage CLI configuration |
|
|
92
|
+
| `aca sandboxgroup` | Manage sandbox groups, disks, volumes, secrets, roles, regions |
|
|
93
|
+
| `aca sandbox` | Create and manage sandboxes (exec, shell, files, ports, egress, snapshots) |
|
|
94
|
+
| `aca version` | Show CLI version |
|
|
95
|
+
| `aca doctor` | Check prerequisites, config, and RBAC (8 checks) |
|
|
96
|
+
| `aca help` | Print help for any sub-command |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Global flags and short forms
|
|
101
|
+
|
|
102
|
+
Every command accepts these flags. Short forms are listed where they exist.
|
|
103
|
+
|
|
104
|
+
| Flag | Short | Env var | Description |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| `--subscription` | `-s` | `ACA_SUBSCRIPTION` | Azure subscription ID |
|
|
107
|
+
| `--resource-group` | `-g` | `ACA_RESOURCE_GROUP` | Resource group |
|
|
108
|
+
| `--sandbox-group` | | `ACA_SANDBOX_GROUP` | Default sandbox group (top-level commands) |
|
|
109
|
+
| `--group` | | | Sandbox group (on `sandbox` / `sandboxgroup` sub-commands) |
|
|
110
|
+
| `--region` | | `ACA_REGION` | Data plane region |
|
|
111
|
+
| `--output` | `-o` | | Output format: `table` (default) or `json` |
|
|
112
|
+
| `--managed-identity` | | `ACA_SANDBOX_MANAGED_IDENTITY` | `system` or a client-id UUID |
|
|
113
|
+
| `--verbose` | | | HTTP traces and resolved config |
|
|
114
|
+
| `--debug` | | | Verbose + transport details (may log secrets) |
|
|
115
|
+
| `--help` | `-h` | | Show help |
|
|
116
|
+
| `--version` | `-V` | | Print version (top-level only) |
|
|
117
|
+
|
|
118
|
+
Sandbox lookup flags (on commands that target a sandbox):
|
|
119
|
+
|
|
120
|
+
| Flag | Short | Description |
|
|
121
|
+
|---|---|---|
|
|
122
|
+
| `--id` | | Target by UUID |
|
|
123
|
+
| `--selector` | `-l` | Target by label selector `"k=v,k2=v2"` |
|
|
124
|
+
|
|
125
|
+
Other command-specific short forms:
|
|
126
|
+
|
|
127
|
+
| Flag | Short | Used by |
|
|
128
|
+
|---|---|---|
|
|
129
|
+
| `--command` | `-c` | `aca sandbox exec`, `aca sandbox shell` |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Environment variables
|
|
134
|
+
|
|
135
|
+
Every global flag has an env-var equivalent. Set them once in your shell
|
|
136
|
+
and skip the flags.
|
|
137
|
+
|
|
138
|
+
| Env var | Equivalent flag |
|
|
139
|
+
|---|---|
|
|
140
|
+
| `ACA_SUBSCRIPTION` | `-s`, `--subscription` |
|
|
141
|
+
| `ACA_RESOURCE_GROUP` | `-g`, `--resource-group` |
|
|
142
|
+
| `ACA_SANDBOX_GROUP` | `--sandbox-group` |
|
|
143
|
+
| `ACA_REGION` | `--region` |
|
|
144
|
+
| `ACA_SANDBOX_MANAGED_IDENTITY` | `--managed-identity` |
|
|
145
|
+
|
|
146
|
+
Env wins over CLI config but loses to an explicit flag. See
|
|
147
|
+
[Config → Precedence](#precedence) below.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Config
|
|
152
|
+
|
|
153
|
+
`aca` config lives at `~/.aca/config.json` and has two user-facing sections.
|
|
154
|
+
|
|
155
|
+
Stop typing `-s … -g … --sandbox-group …` on every command. Set once,
|
|
156
|
+
work for the rest of the session — with a precedence model that lets CI
|
|
157
|
+
override anything via env vars without editing files.
|
|
158
|
+
|
|
159
|
+
### Sections
|
|
160
|
+
|
|
161
|
+
| Section | What goes there |
|
|
162
|
+
|---|---|
|
|
163
|
+
| **Shared Defaults** | Subscription, resource group, region — used by every command that doesn't override them. |
|
|
164
|
+
| **Sandbox** | Sandbox-specific keys: sandbox group, auto-resume behavior, current sandbox, managed identity, audience, allowed regions, and per-section overrides for sub/RG/region. |
|
|
165
|
+
|
|
166
|
+
### See your current config
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
aca config show
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Sample output:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
Configuration:
|
|
176
|
+
Shared Defaults:
|
|
177
|
+
subscription a59d7183-…
|
|
178
|
+
resource_group my-rg
|
|
179
|
+
region westus2
|
|
180
|
+
|
|
181
|
+
Sandbox:
|
|
182
|
+
subscription (inherited)
|
|
183
|
+
resource_group (inherited)
|
|
184
|
+
region westus2
|
|
185
|
+
group my-sandbox-group
|
|
186
|
+
auto_resume true
|
|
187
|
+
current_sandbox (not set)
|
|
188
|
+
managed_identity (not set)
|
|
189
|
+
audience (not set)
|
|
190
|
+
|
|
191
|
+
Config file: ~/.aca/config.json
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
`(inherited)` means the Sandbox section inherits from Shared Defaults for that key.
|
|
195
|
+
|
|
196
|
+
### Set Shared Defaults
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
aca config set \
|
|
200
|
+
-s <SUB_ID> \
|
|
201
|
+
-g <RG> \
|
|
202
|
+
--sandbox-group <GROUP> \
|
|
203
|
+
--region westus2
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
| Flag | Effect |
|
|
207
|
+
|---|---|
|
|
208
|
+
| `-s`, `--subscription` | Default subscription for all commands |
|
|
209
|
+
| `-g`, `--resource-group` | Default resource group |
|
|
210
|
+
| `--region` | Default data-plane region |
|
|
211
|
+
| `--sandbox-group` | Default sandbox group name |
|
|
212
|
+
|
|
213
|
+
### Set Sandbox-specific config
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
aca config sandbox set \
|
|
217
|
+
--group my-sandbox-group \
|
|
218
|
+
--auto-resume true \
|
|
219
|
+
--sandbox <UUID>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
| Flag | Effect |
|
|
223
|
+
|---|---|
|
|
224
|
+
| `-s`, `--subscription` | Override Shared subscription for sandbox commands only |
|
|
225
|
+
| `-g`, `--resource-group` | Override Shared resource group for sandbox commands only |
|
|
226
|
+
| `--region` | Override Shared region for sandbox commands only |
|
|
227
|
+
| `--group` | Default sandbox group name |
|
|
228
|
+
| `--auto-resume true\|false` | Auto-resume a suspended sandbox before operations |
|
|
229
|
+
| `--managed-identity system\|<CLIENT_ID>` | Use a managed identity for auth |
|
|
230
|
+
| `--audience <URL>` | Override OAuth audience/scope |
|
|
231
|
+
| `--sandbox <UUID>` | "Current" sandbox ID. Pass `""` to clear |
|
|
232
|
+
| `--add-region <REGION>` / `--remove-region <REGION>` | Add/remove a region from the allowed list (repeatable) |
|
|
233
|
+
|
|
234
|
+
When `auto_resume` is `true`, suspended sandboxes resume automatically
|
|
235
|
+
when you `exec` into them.
|
|
236
|
+
|
|
237
|
+
### Precedence
|
|
238
|
+
|
|
239
|
+
For any setting, the CLI resolves in this order (highest wins):
|
|
240
|
+
|
|
241
|
+
1. **Command-line flag** (e.g. `-s <X>`)
|
|
242
|
+
2. **Environment variable** (e.g. `ACA_SUBSCRIPTION=<X>`)
|
|
243
|
+
3. **Sandbox-specific config**
|
|
244
|
+
4. **Shared Defaults config**
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## `doctor`
|
|
249
|
+
|
|
250
|
+
`aca doctor` runs 8 prerequisite/config/RBAC checks and tells you what's wrong.
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
aca doctor
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Sample output (all green):
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
✓ Azure CLI found
|
|
260
|
+
✓ Azure CLI logged in
|
|
261
|
+
✓ Subscription: a59d7183-… (config)
|
|
262
|
+
✓ Resource group: my-rg (config)
|
|
263
|
+
✓ Sandbox group: my-sandbox-group (config: sandbox)
|
|
264
|
+
✓ Region: westus2 (config: sandbox)
|
|
265
|
+
✓ Sandbox group 'my-sandbox-group' exists in Azure
|
|
266
|
+
✓ Container Apps SandboxGroup Data Owner role assigned
|
|
267
|
+
|
|
268
|
+
aca 1.0.0-beta.1 — all checks passed
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Each line shows **where the value came from** — `(config)`,
|
|
272
|
+
`(config: sandbox)`, `(env)`, `(flag)` — gold when debugging precedence.
|
|
273
|
+
|
|
274
|
+
### What each check verifies, and how to fix it
|
|
275
|
+
|
|
276
|
+
| Check | Means | Fix |
|
|
277
|
+
|---|---|---|
|
|
278
|
+
| Azure CLI found | `az` is on `PATH` | Install Azure CLI |
|
|
279
|
+
| Azure CLI logged in | `az account show` succeeds | `az login` |
|
|
280
|
+
| Subscription | Resolves a default subscription | `aca config set -s <ID>` or `az account set` |
|
|
281
|
+
| Resource group | Resolves a default RG | `aca config set -g <RG>` |
|
|
282
|
+
| Sandbox group | Resolves a default sandbox group | `aca config sandbox set --group <NAME>` |
|
|
283
|
+
| Region | Resolves a default region | `aca config sandbox set --region <REGION>` |
|
|
284
|
+
| Sandbox group exists | The group resource is found in Azure | `aca sandboxgroup create --name <NAME> --location <REGION> --set-config` |
|
|
285
|
+
| Data Owner role | Caller has `Container Apps SandboxGroup Data Owner` on the group | `aca sandboxgroup role create --role "Container Apps SandboxGroup Data Owner" --principal-id $(az ad signed-in-user show --query id -o tsv)` |
|
|
286
|
+
|
|
287
|
+
---
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Response cues and redirects
|
|
2
|
+
|
|
3
|
+
Non-negotiable guidance for shaping a response: what each user intent must include, when to refuse and redirect, and worked examples to try.
|
|
4
|
+
|
|
5
|
+
## Required cues per response type
|
|
6
|
+
|
|
7
|
+
Before composing your answer, identify the user's intent and ensure the
|
|
8
|
+
cues below are present. These are **acceptance criteria, not
|
|
9
|
+
suggestions** — a response is incomplete if it omits any cue for its
|
|
10
|
+
intent.
|
|
11
|
+
|
|
12
|
+
| User intent | Cues your response MUST include |
|
|
13
|
+
|---|---|
|
|
14
|
+
| **Install the `aca` CLI** (any OS) | (1) The curl/iwr one-liner from [install.md](install.md) — use the `https://aka.ms/aca-cli-install` (Linux/macOS) and `https://aka.ms/aca-cli-install-ps` (Windows) short URLs. (2) `aca --version` + **auth-aware sign-in** (`az account show -o none 2>$null; if ($LASTEXITCODE -ne 0) { az login }`, then `aca auth login` to acquire an `aca` token — never call `az login` or `aca auth login` unconditionally; gate both on a status check) + `aca doctor`. The CLI surface for auth is **`aca auth login`** (the top-level `aca` binary does not have a bare `login` subcommand). (3) The explicit sentence: **"this same install path is also used inside sandboxes and containers for agent-driven self-installs."** |
|
|
15
|
+
| **Bootstrap a sandbox group (one-time setup)** | The 4-step flow: **check auth first** (`az account show -o none 2>$null; if ($LASTEXITCODE -ne 0) { az login }`, then `aca auth login` if `aca` is not yet authenticated — *never* call `az login` or `aca auth login` unconditionally) → `aca sandboxgroup create --name <g> --location <region> --set-config` → `aca sandboxgroup role create --role "Container Apps SandboxGroup Data Owner" --principal-id $(az ad signed-in-user show --query id -o tsv)` → `aca doctor`. **`--set-config` is required** so subsequent `aca sandbox …` commands don't need `--group` on every call. Treat green `aca doctor` as the gate before doing anything else. **Heads-up:** `aca sandboxgroup create` already grants the Data Owner role to the calling principal, so the explicit `role create` is only needed when granting access to *additional* principals (use `--skip-role-check` on `create` if you want to defer). |
|
|
16
|
+
| **Create a sandbox (imperative)** | Minimum: `aca sandbox create --disk ubuntu`. Common knobs: `--cpu 2000m`, `--memory 4096Mi`, `--env "K=V"`, `--label name=dev --label role=worker` (repeatable; **not** `--labels`). Capture the printed ID into `SANDBOX_ID=$(aca sandbox create --disk ubuntu -o json \| jq -r .id)` for reuse. For config that should live in source control, use the manifest flow (see the row below) instead. |
|
|
17
|
+
| **Apply / deploy a sandbox manifest** | The full 3-command flow: `aca sandbox init` → `aca sandbox validate --file sandbox.yaml` → `aca sandbox apply --file sandbox.yaml`. Always `--file` (no `-f` short flag). State that **the manifest pattern is the recommended path for CI/CD and reproducibility**, in contrast to imperative `aca sandbox create`. If no manifest is present, run `aca sandbox init` — don't ask for a path. |
|
|
18
|
+
| **Scaffold / generate a sandbox manifest** | Run (or show) `aca sandbox init` to scaffold a starter `sandbox.yaml`. Mention the commonly edited fields (`disk`, `resources`, `lifecycle.autoSuspendPolicy`, `egressPolicy`, plus `ports`, `env`, `labels` as needed). Mention `aca sandbox schema` as the way to dump the JSON Schema for editor autocomplete. |
|
|
19
|
+
| **Run a command or open a shell in a sandbox** | Two distinct verbs: `aca sandbox exec --id "$SANDBOX_ID" -c "<command>"` for one-shot commands (returns stdout/stderr); `aca sandbox shell --id "$SANDBOX_ID"` for an interactive PTY. **Anti-cue:** `ssh` does not work — there is no SSH daemon inside the sandbox. `aca sandbox exec` / `shell` is the only path. |
|
|
20
|
+
| **Delete a sandbox** | `aca sandbox delete --id "$SANDBOX_ID" --yes`. **Always recommend snapshotting first** if there is any state worth preserving (`aca sandbox snapshot --id "$SANDBOX_ID" --name <snap>`) — delete is destructive. To delete by label selector: `aca sandbox list -l "name=<n>" -o json \| jq -r '.[].id' \| xargs -I{} aca sandbox delete --id {} --yes`. |
|
|
21
|
+
| **Read / write / copy files in a sandbox** | The `aca sandbox fs` family — `fs write --id "$SANDBOX_ID" --path /remote/p --file ./local` to upload, `fs cat --id "$SANDBOX_ID" --path /remote/p` to read, plus `fs ls / stat / mkdir / rm [--recursive]` for management. **Don't** suggest `scp` / `rsync` / shared filesystems — there is no SSH, and `fs` is the only data-plane file transport. |
|
|
22
|
+
| **Expose a port — public preview (anonymous)** | The two-step shape: `URL=$(aca sandbox port add --id "$SANDBOX_ID" --port <p> --anonymous -o json \| jq -r .url)`, then hit `$URL`. **State explicitly** that anonymous = anyone with the URL can reach it (public preview only). Remove with `aca sandbox port remove --id "$SANDBOX_ID" --port <p>`. For per-user gating use the Entra row below. |
|
|
23
|
+
| **Expose a port with Entra auth (per-user gating)** | `aca sandbox port add --id "$SANDBOX_ID" --port <p> --auth entra --allow-principal <user-object-id>`. Fetch the principal's object id with `az ad signed-in-user show --query id -o tsv` (or `az ad user show --id <upn> --query id -o tsv` for someone else). Pass `--allow-principal` once per principal you want to admit. **Anti-cue:** there is **no `--email` flag** — that's a stale shape; the supported gating is `--auth entra` + `--allow-principal <object-id>`. |
|
|
24
|
+
| **Mount a shared volume** | Two-step: (1) at the group: `aca sandboxgroup volume create --name <v> --type AzureBlob` (multi-attach, shared) or `--type DataDisk` (single-attach, high-perf block). (2) at the sandbox: `aca sandbox mount --id "$SANDBOX_ID" --volume <v> --path /mnt/<v>`. State that **the volume lives at the group level**; sandboxes attach it at runtime. |
|
|
25
|
+
| **Lock down network egress (deny-default + allow-list)** | The canonical form: `aca sandbox egress set --id "$SANDBOX_ID" --default Deny --rule "*.github.com:Allow" --traffic-inspection Full`. Multiple `--rule "<pattern>:Allow"` flags accumulate. Inspect current policy with `aca sandbox egress show --id "$SANDBOX_ID"`. For production agent code, **always recommend `--default Deny`** with an explicit `--rule` allow-list. **Anti-cue:** do not invent flags for individual IPs or block-lists, and **not** `--host-allow` — the only supported shape is `--default Deny|Allow` plus repeated `--rule "<pattern>:Allow|Deny"`. |
|
|
26
|
+
| **List / use a disk image** | The canonical "what disks are available?" verb is **`aca sandboxgroup disk list-public`** (NOT `aca disks list`, which does not exist). Common presets include `ubuntu`, `debian`, `alpine`, `python`, `node`, `dotnet`, and `playwright`. To bake your own from an OCI image: `aca sandboxgroup disk create --image docker.io/library/alpine:3.19 --name <my-disk>`, then `aca sandbox create --disk-id <id>`. **Flag distinction:** `--disk` takes the public preset name; `--disk-id` takes the resource ID of a private/committed disk. |
|
|
27
|
+
| **Suspend, resume, or set auto-suspend** | Manual: `aca sandbox stop --id "$SANDBOX_ID"` suspends (preserves memory + disk); `aca sandbox resume --id "$SANDBOX_ID"` does sub-second restore. Idle policy: `aca sandbox lifecycle set --id "$SANDBOX_ID" --auto-suspend <seconds>` (default 300s = 5 min). State that **suspended sandboxes incur storage cost only, no compute** — this is the primary cost lever. |
|
|
28
|
+
| **Snapshot / commit a sandbox** | Per-sandbox: `aca sandbox snapshot --id "$SANDBOX_ID" --name <snap-name>`, then boot replicas with `aca sandbox create --snapshot <snap-name>`. Group-level CRUD: `aca sandboxgroup snapshot list / get / delete --selector "name=<snap-name>"`. **Strongly recommend snapshotting BEFORE `aca sandbox delete`** to preserve state. Always use `--name <snap-name>`, **never `--image`** (that is the wrong flag and will be rejected). Disk-only baking is `aca sandbox commit --id "$SANDBOX_ID" --name <disk-name>`. |
|
|
29
|
+
| **Install the Python SDK** | The SDK is published on PyPI as [`azure-containerapps-sandbox`](https://pypi.org/project/azure-containerapps-sandbox/). **Always preflight `uv` first** — if it's missing, install it from the upstream installer, then install the SDK. Bash: `command -v uv >/dev/null 2>&1 \|\| curl -LsSf https://astral.sh/uv/install.sh \| sh; uv pip install azure-containerapps-sandbox`. PowerShell: `if (-not (Get-Command uv -ErrorAction SilentlyContinue)) { irm https://astral.sh/uv/install.ps1 \| iex }; uv pip install azure-containerapps-sandbox`. Import as `from azure_containerapps_sandbox import ...`. The SDK and the `aca` CLI are interchangeable surfaces over the same data plane — pick whichever fits your runtime (CLI for shells / agents, SDK for service code). |
|
|
30
|
+
| **Compare the `aca` CLI vs the Azure portal** | Both surfaces exist for sandbox groups. The portal lives at **`https://containerapps.azure.com/sandbox-groups`** and is good for visual inventory, role assignments, and ad-hoc inspection. The `aca` CLI is the authoritative scripting / automation surface — every `aca sandbox …` and `aca sandboxgroup …` verb is available there and is what CI/CD, agents, and reproducible workflows should use. Recommend **portal for discovery and one-off ops, CLI for everything programmable**. |
|
|
31
|
+
| **Compare ACA Sandboxes vs Dynamic Sessions** | **Different products.** ACA Sandboxes (`Microsoft.App/SandboxGroups`, the `aca` CLI) are hardware-isolated microVMs with snapshot/resume, shell/exec, port exposure, volumes, and egress policy — meant for long-running agent workloads, dev envs, MCP hosting, computer-use. Dynamic Sessions (`Microsoft.App/sessionPools`, the Sessions SDK) are short-lived Python/Node code-interpreter sandboxes meant for single-call LLM tool execution. If the user asks about Dynamic Sessions, redirect to those docs — do **not** answer with `aca` commands. |
|
|
32
|
+
| **Anything in the "Out of scope" table below** | A one-paragraph redirect to the right tool or official docs. **Do NOT** run the out-of-scope tool's commands. **Do NOT** walk through options. **Do NOT** ask follow-up questions about the out-of-scope tool. Bow out cleanly. |
|
|
33
|
+
| **Vague / single-word prompts** (`sandbox`, `microvm`, "I need a VM", "ephemeral VM for dev", "coding agent sandbox", "AI agent runtime") | **Ask one clarifying question first** before jumping into `aca sandbox create`. Disambiguate between: (a) coding agent / dev env in a sandbox, (b) AI agent runtime, (c) MCP hosting, (d) ephemeral VM-style dev box, (e) code interpreter. Then route to the matching row above. Premature commitment to `aca sandbox create` on a vague prompt is a failure. |
|
|
34
|
+
|
|
35
|
+
## Out of scope — hard reject + redirect
|
|
36
|
+
|
|
37
|
+
If the user's task is **not about ACA Sandboxes**, refuse and redirect
|
|
38
|
+
in one short reply — don't run any commands, don't walk through options,
|
|
39
|
+
don't ask clarifying questions about the out-of-scope tool. The skill
|
|
40
|
+
activated by mistake; bow out cleanly.
|
|
41
|
+
|
|
42
|
+
| User asks about… | Reply pattern |
|
|
43
|
+
|---|---|
|
|
44
|
+
| `azd init`, `azd up`, `azd deploy`, project scaffolding | "That's the Azure Developer CLI (`azd`), not ACA Sandboxes. See the [azd docs](https://learn.microsoft.com/azure/developer/azure-developer-cli/). Sandboxes don't have an `init`/`up`/`deploy` command and aren't a project bootstrapper." |
|
|
45
|
+
| `az acr build`, `docker build`, registry pushes | "That's Azure Container Registry / Docker, not ACA Sandboxes. See the [`az acr` docs](https://learn.microsoft.com/cli/azure/acr). Sandboxes consume disk images, not container images." |
|
|
46
|
+
| Cosmos / SQL / data-plane queries to other Azure services | "That's the relevant data service (Cosmos DB, Azure SQL, etc.), not ACA Sandboxes. Use that service's CLI / SDK / portal." |
|
|
47
|
+
| Listing Kubernetes pods, AKS cluster ops, `kubectl` | "That's AKS / Kubernetes, not ACA Sandboxes. Use `kubectl` or the AKS docs. Sandboxes are individual microVMs, not a Kubernetes cluster." |
|
|
48
|
+
| Deploying a Function App, App Service site, full Container App (Apps/Jobs) | "That's Azure Functions / App Service / Container Apps (apps and jobs), not Sandboxes. Use those products' deployment docs." |
|
|
49
|
+
|
|
50
|
+
**Never** start running the out-of-scope tool's commands "just to help." A one-paragraph redirect is the correct, complete answer.
|
|
51
|
+
|
|
52
|
+
## Try asking
|
|
53
|
+
|
|
54
|
+
Once the skill is loaded, paste any of these into your agent. Each one
|
|
55
|
+
exercises a different capability — together they show the canonical
|
|
56
|
+
shape for the most common sandbox tasks (and they double as a routing
|
|
57
|
+
smoke test if you're testing changes to this skill).
|
|
58
|
+
|
|
59
|
+
| Try saying | What you should get back |
|
|
60
|
+
|---|---|
|
|
61
|
+
| *"install the aca cli"* | the `aka.ms/aca-cli-install` one-liner + `aca --version` + **auth-aware** `az account show; az login *only* if it fails` + `aca doctor` |
|
|
62
|
+
| *"set up a sandbox group from scratch"* | the full 4-step bootstrap (group create + Data Owner role + `aca doctor` gate) |
|
|
63
|
+
| *"create an ubuntu sandbox and run uname -a in it"* | `aca sandbox create` with ID capture, then `aca sandbox exec` |
|
|
64
|
+
| *"how do I ssh into my sandbox?"* | corrective answer — no SSH daemon; use `aca sandbox shell` or `exec` |
|
|
65
|
+
| *"copy data.csv into my sandbox"* | `aca sandbox fs write --path … --file …` (and the anti-`scp` note) |
|
|
66
|
+
| *"expose port 8080 publicly"* | `aca sandbox port add --anonymous -o json \| jq -r .url` |
|
|
67
|
+
| *"mount a shared volume on two sandboxes"* | `aca sandboxgroup volume create --type AzureBlob` + `aca sandbox mount` |
|
|
68
|
+
| *"restrict outbound traffic to github.com only"* | `aca sandbox egress set --default Deny --rule "*.github.com:Allow"` |
|
|
69
|
+
| *"snapshot my sandbox before I tear it down"* | `aca sandbox snapshot --name <s>` followed by `aca sandbox delete --yes` |
|
|
70
|
+
| *"suspend my sandbox to save money"* | `aca sandbox stop`/`resume` plus `aca sandbox lifecycle set --auto-suspend` |
|
|
71
|
+
| *"give me a YAML manifest for a 2 vCPU sandbox"* | `aca sandbox init` → edit → `aca sandbox validate --file` → `aca sandbox apply --file` |
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Scenarios — when sandboxes shine
|
|
2
|
+
|
|
3
|
+
Composed patterns that combine multiple sandbox capabilities. Each
|
|
4
|
+
entry has a "when to use" and a minimal command sketch.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. Web apps
|
|
9
|
+
|
|
10
|
+
**When:** you have a web server and want a public URL in under a minute
|
|
11
|
+
without provisioning ingress, certs, or a load balancer.
|
|
12
|
+
|
|
13
|
+
**Sketch:**
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
SBX=$(aca sandbox create --disk ubuntu -o json | jq -r .id)
|
|
17
|
+
|
|
18
|
+
# Upload + start
|
|
19
|
+
aca sandbox fs write --id $SBX --path /app/server.py --file ./server.py
|
|
20
|
+
aca sandbox exec --id $SBX -c "nohup uv run /app/server.py > /tmp/srv.log 2>&1 &"
|
|
21
|
+
|
|
22
|
+
# Expose
|
|
23
|
+
URL=$(aca sandbox port add --id $SBX --port 8080 --anonymous -o json | jq -r .url)
|
|
24
|
+
echo "$URL"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Variants:
|
|
28
|
+
|
|
29
|
+
- **simple-anonymous** — open to the internet (above).
|
|
30
|
+
- **authenticated** — Entra-gated port (omit `--anonymous`).
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. Coding agents in a sandbox
|
|
35
|
+
|
|
36
|
+
**When:** you want to run Copilot CLI, Claude Code, Codex, or any other
|
|
37
|
+
coding agent in an isolated VM with deny-default egress, so the agent
|
|
38
|
+
can only reach the endpoints you allow.
|
|
39
|
+
|
|
40
|
+
**Sketch:**
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Per-task sandbox with deny-default egress + allow-list
|
|
44
|
+
SBX=$(aca sandbox create --disk ubuntu --label task=copilot-run -o json | jq -r .id)
|
|
45
|
+
aca sandbox egress set --id $SBX \
|
|
46
|
+
--default Deny \
|
|
47
|
+
--rule "api.githubcopilot.com:Allow" \
|
|
48
|
+
--rule "*.githubusercontent.com:Allow"
|
|
49
|
+
|
|
50
|
+
aca sandbox exec --id $SBX -c "curl -fsSL https://github.com/cli/cli/releases/.../gh.tar.gz | tar -xz && ./gh ..."
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Token-swap (inject the agent's auth header on egress, so the token
|
|
54
|
+
never lands in the sandbox filesystem) — via the YAML policy:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
aca sandbox egress init > egress-policy.yaml
|
|
58
|
+
# edit egress-policy.yaml: add a rule with host: api.githubcopilot.com
|
|
59
|
+
# and a header transform Authorization=Bearer <TOKEN>
|
|
60
|
+
aca sandbox egress apply --id $SBX --file egress-policy.yaml
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 3. Code interpreter
|
|
66
|
+
|
|
67
|
+
**When:** an LLM generates code in a loop — generate, run, observe,
|
|
68
|
+
iterate — and you need a fresh isolated environment per session.
|
|
69
|
+
|
|
70
|
+
**Sketch:**
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
SBX=$(aca sandbox create --disk ubuntu --label kind=interpreter -o json | jq -r .id)
|
|
74
|
+
|
|
75
|
+
# Loop:
|
|
76
|
+
# 1. LLM emits code
|
|
77
|
+
# 2. write -> exec -> capture stdout/stderr
|
|
78
|
+
# 3. feed back into prompt
|
|
79
|
+
aca sandbox fs write --id $SBX --path /tmp/step.py --file ./step.py
|
|
80
|
+
aca sandbox exec --id $SBX -c "uv run /tmp/step.py" -o json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Snapshot between turns so you can rewind:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
aca sandbox snapshot --id $SBX --name turn-3
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 4. Swarms
|
|
92
|
+
|
|
93
|
+
**When:** one orchestrator wants to fan work out across N worker
|
|
94
|
+
sandboxes (rendering, scraping, eval, batch inference).
|
|
95
|
+
|
|
96
|
+
**Sketch:**
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Orchestrator sandbox spawns workers in the same group via the
|
|
100
|
+
# group's managed identity (no secrets needed inside the sandbox).
|
|
101
|
+
BATCH_ID="batch-$(date +%s)"
|
|
102
|
+
for i in $(seq 1 10); do
|
|
103
|
+
aca sandbox create --disk ubuntu \
|
|
104
|
+
--label role=worker --label batch=$BATCH_ID \
|
|
105
|
+
--no-wait
|
|
106
|
+
done
|
|
107
|
+
|
|
108
|
+
# Fan-out work by selector
|
|
109
|
+
aca sandbox list -l "role=worker,batch=$BATCH_ID" -o json \
|
|
110
|
+
| jq -r '.[].id' \
|
|
111
|
+
| xargs -I{} -P 10 aca sandbox exec --id {} -c "./run-shard.sh"
|
|
112
|
+
|
|
113
|
+
# Clean up — selector delete only matches one sandbox; iterate.
|
|
114
|
+
aca sandbox list -l "role=worker,batch=$BATCH_ID" -o json \
|
|
115
|
+
| jq -r '.[].id' \
|
|
116
|
+
| xargs -I{} aca sandbox delete --id {} --yes
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Add a shared AzureBlob volume to the group for durable scratch space
|
|
120
|
+
across workers (`aca sandboxgroup volume …`).
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 5. Computer-use
|
|
125
|
+
|
|
126
|
+
**When:** an LLM with computer-use capability drives a real browser
|
|
127
|
+
inside a sandbox (form filling, web research, end-to-end tests). Watch
|
|
128
|
+
live via noVNC.
|
|
129
|
+
|
|
130
|
+
**Sketch:**
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
SBX=$(aca sandbox create --disk ubuntu --cpu 2000m --memory 4096Mi -o json | jq -r .id)
|
|
134
|
+
aca sandbox exec --id $SBX -c "apt-get install -y chromium x11vnc novnc && start-desktop.sh"
|
|
135
|
+
|
|
136
|
+
# Expose noVNC for the human to watch
|
|
137
|
+
aca sandbox port add --id $SBX --port 6080 --anonymous
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The LLM (Azure OpenAI `computer-use-preview` or similar) drives the
|
|
141
|
+
browser via screenshot + click/keys actions sent through `sandbox exec`.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 6. MCP hosting
|
|
146
|
+
|
|
147
|
+
**When:** you want to host a Model Context Protocol (MCP) server in a
|
|
148
|
+
sandbox for AI clients to connect to over HTTPS.
|
|
149
|
+
|
|
150
|
+
**Sketch (public via `port add`):**
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
SBX=$(aca sandbox create --disk ubuntu -o json | jq -r .id)
|
|
154
|
+
aca sandbox exec --id $SBX -c "npx -y @excalidraw/mcp-server &"
|
|
155
|
+
aca sandbox port add --id $SBX --port 3000 --anonymous
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Sketch (Dev Tunnels, no inbound port):**
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
SBX=$(aca sandbox create --disk ubuntu -o json | jq -r .id)
|
|
162
|
+
aca sandbox exec --id $SBX -c "npx -y @excalidraw/mcp-server &"
|
|
163
|
+
aca sandbox exec --id $SBX -c "devtunnel host -p 3000 --allow-anonymous"
|
|
164
|
+
# Tunnel URL is printed by devtunnel; share it with the MCP client.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 7. Data processing
|
|
170
|
+
|
|
171
|
+
**When:** producer/consumer pipelines that need shared scratch space
|
|
172
|
+
across short-lived sandboxes.
|
|
173
|
+
|
|
174
|
+
**Sketch:**
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Create a group-level shared volume (default type: AzureBlob)
|
|
178
|
+
aca sandboxgroup volume create --name shared --type AzureBlob
|
|
179
|
+
|
|
180
|
+
# Create the sandboxes, then mount the volume into each
|
|
181
|
+
SBX_P=$(aca sandbox create --disk ubuntu --label role=producer -o json | jq -r .id)
|
|
182
|
+
aca sandbox mount --id $SBX_P --volume shared --path /data
|
|
183
|
+
|
|
184
|
+
SBX_C=$(aca sandbox create --disk ubuntu --label role=consumer -o json | jq -r .id)
|
|
185
|
+
aca sandbox mount --id $SBX_C --volume shared --path /data
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Producers write to `/data/inbox/`, consumers drain it. Sandboxes
|
|
189
|
+
suspend when idle and pay nothing.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 8. Developer workflows
|
|
194
|
+
|
|
195
|
+
**When:** PR builds, ephemeral CI, on-demand dev environments. A fresh
|
|
196
|
+
sandbox per PR or per developer, deleted on close.
|
|
197
|
+
|
|
198
|
+
**Sketch:**
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
SBX=$(aca sandbox create --disk ubuntu \
|
|
202
|
+
--label pr=$PR_NUMBER --label kind=ci -o json | jq -r .id)
|
|
203
|
+
aca sandbox fs write --id $SBX --path /repo.tar.gz --file ./repo.tar.gz
|
|
204
|
+
aca sandbox exec --id $SBX -c "cd /tmp && tar xzf /repo.tar.gz && make test"
|
|
205
|
+
aca sandbox delete --id $SBX --yes
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## 9. Sandbox-backed agent frameworks
|
|
211
|
+
|
|
212
|
+
**When:** you're using an agent framework (OpenAI Agents SDK, Claude
|
|
213
|
+
Managed Agents, LangChain) and want sandboxes to be the tool-execution
|
|
214
|
+
backend instead of the local machine.
|
|
215
|
+
|
|
216
|
+
**Sketch:** the framework's "tool" implementation calls
|
|
217
|
+
`aca sandbox exec --id $SBX -c "<tool-cmd>"` (or the equivalent API)
|
|
218
|
+
and returns the stdout/stderr to the agent. Each conversation gets its
|
|
219
|
+
own sandbox, snapshotted between turns for rewind.
|