@skaile/workspaces 0.25.0 → 0.27.0
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/CHANGELOG.md +271 -0
- package/README.md +2 -2
- package/dist/{asset-feeds-77KLWCBP.js → asset-feeds-DGZO27M7.js} +20 -12
- package/dist/asset-feeds-DGZO27M7.js.map +1 -0
- package/dist/asset-manager/index.js +12 -11
- package/dist/asset-manager/installer.js +11 -10
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/asset-manager/src/index.d.ts +6 -7
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +14 -7
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +8 -34
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.d.ts +2 -0
- package/dist/bridge/drivers/continue.js +103 -0
- package/dist/bridge/drivers/continue.js.map +1 -0
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.d.ts +2 -0
- package/dist/bridge/drivers/gemini.js +10 -0
- package/dist/bridge/drivers/gemini.js.map +1 -0
- package/dist/bridge/drivers/goose.d.ts +2 -0
- package/dist/bridge/drivers/goose.js +88 -0
- package/dist/bridge/drivers/goose.js.map +1 -0
- package/dist/bridge/drivers/omp.js +64 -50
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.d.ts +2 -0
- package/dist/bridge/drivers/opencode.js +99 -0
- package/dist/bridge/drivers/opencode.js.map +1 -0
- package/dist/bridge/drivers/qwen.d.ts +2 -0
- package/dist/bridge/drivers/qwen.js +57 -0
- package/dist/bridge/drivers/qwen.js.map +1 -0
- package/dist/bridge/index.js +4 -4
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts +136 -0
- package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/continue.d.ts +43 -0
- package/dist/bridge/src/drivers/continue.d.ts.map +1 -0
- package/dist/bridge/src/drivers/gemini.d.ts +55 -0
- package/dist/bridge/src/drivers/gemini.d.ts.map +1 -0
- package/dist/bridge/src/drivers/goose.d.ts +42 -0
- package/dist/bridge/src/drivers/goose.d.ts.map +1 -0
- package/dist/bridge/src/drivers/omp.d.ts +20 -4
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/drivers/opencode.d.ts +43 -0
- package/dist/bridge/src/drivers/opencode.d.ts.map +1 -0
- package/dist/bridge/src/drivers/qwen.d.ts +39 -0
- package/dist/bridge/src/drivers/qwen.d.ts.map +1 -0
- package/dist/bridge/src/error-classifier.d.ts +17 -0
- package/dist/bridge/src/error-classifier.d.ts.map +1 -1
- package/dist/bridge/src/models.d.ts +1 -1
- package/dist/bridge/src/models.d.ts.map +1 -1
- package/dist/bridge/src/provider-endpoints.d.ts +16 -0
- package/dist/bridge/src/provider-endpoints.d.ts.map +1 -0
- package/dist/bridge/src/registry.d.ts.map +1 -1
- package/dist/bridge/src/validation.d.ts +1 -1
- package/dist/bridge/src/validation.d.ts.map +1 -1
- package/dist/{chunk-GL45UNVS.js → chunk-2FS4FPZ7.js} +3 -3
- package/dist/{chunk-GL45UNVS.js.map → chunk-2FS4FPZ7.js.map} +1 -1
- package/dist/{chunk-4FJE6BI6.js → chunk-2NOE4AGD.js} +3 -3
- package/dist/{chunk-4FJE6BI6.js.map → chunk-2NOE4AGD.js.map} +1 -1
- package/dist/{chunk-3QTZWPGH.js → chunk-3QQSSRYN.js} +168 -90
- package/dist/chunk-3QQSSRYN.js.map +1 -0
- package/dist/{chunk-4FADEVBN.js → chunk-3ZER5DST.js} +6 -6
- package/dist/chunk-3ZER5DST.js.map +1 -0
- package/dist/chunk-5RBPPBEK.js +110 -0
- package/dist/chunk-5RBPPBEK.js.map +1 -0
- package/dist/chunk-5V5KZQIC.js +445 -0
- package/dist/chunk-5V5KZQIC.js.map +1 -0
- package/dist/{chunk-LSGAYQ2E.js → chunk-5YO3H5Q4.js} +3 -3
- package/dist/{chunk-LSGAYQ2E.js.map → chunk-5YO3H5Q4.js.map} +1 -1
- package/dist/{chunk-JDX54X4Y.js → chunk-7GWYRVAX.js} +12 -9
- package/dist/chunk-7GWYRVAX.js.map +1 -0
- package/dist/{chunk-B4ZXBH57.js → chunk-A4ASAIKK.js} +59 -13
- package/dist/chunk-A4ASAIKK.js.map +1 -0
- package/dist/{chunk-M5TE6YI5.js → chunk-AKSR434V.js} +10 -52
- package/dist/chunk-AKSR434V.js.map +1 -0
- package/dist/{chunk-KOVLSBXK.js → chunk-BMQKMOQY.js} +81 -79
- package/dist/chunk-BMQKMOQY.js.map +1 -0
- package/dist/{chunk-FJFHJBGS.js → chunk-BUL5H6J7.js} +9 -9
- package/dist/chunk-BUL5H6J7.js.map +1 -0
- package/dist/{chunk-GZWJGNNN.js → chunk-DEYYRFQU.js} +3 -3
- package/dist/chunk-DEYYRFQU.js.map +1 -0
- package/dist/{chunk-SETTLPBD.js → chunk-DGM74UP4.js} +3 -3
- package/dist/{chunk-SETTLPBD.js.map → chunk-DGM74UP4.js.map} +1 -1
- package/dist/{chunk-UD4ZLXGS.js → chunk-FWHOU3CX.js} +67 -35
- package/dist/chunk-FWHOU3CX.js.map +1 -0
- package/dist/{chunk-WSZAFRQL.js → chunk-GYPA2Q7F.js} +6 -5
- package/dist/chunk-GYPA2Q7F.js.map +1 -0
- package/dist/{chunk-WIAHJOMG.js → chunk-IEJ5IOC3.js} +10 -2
- package/dist/chunk-IEJ5IOC3.js.map +1 -0
- package/dist/chunk-IERB3UXJ.js +215 -0
- package/dist/chunk-IERB3UXJ.js.map +1 -0
- package/dist/{chunk-FVTV7M76.js → chunk-IFGTRL2I.js} +3 -3
- package/dist/chunk-IFGTRL2I.js.map +1 -0
- package/dist/{chunk-KT3CK26V.js → chunk-JIQLLZ65.js} +203 -39
- package/dist/chunk-JIQLLZ65.js.map +1 -0
- package/dist/{chunk-XVL22AWE.js → chunk-M4KLIEIJ.js} +114 -63
- package/dist/chunk-M4KLIEIJ.js.map +1 -0
- package/dist/{chunk-6FNCZYJY.js → chunk-MBOR7D65.js} +3 -3
- package/dist/{chunk-6FNCZYJY.js.map → chunk-MBOR7D65.js.map} +1 -1
- package/dist/{chunk-BJWUSHC4.js → chunk-MZDXEFXF.js} +30 -20
- package/dist/chunk-MZDXEFXF.js.map +1 -0
- package/dist/{chunk-QAVZOJCV.js → chunk-OVRSNIKJ.js} +2 -2
- package/dist/chunk-OVRSNIKJ.js.map +1 -0
- package/dist/{chunk-DQWREFRQ.js → chunk-PAYAFNXG.js} +22 -3
- package/dist/chunk-PAYAFNXG.js.map +1 -0
- package/dist/{chunk-D3VO6WNC.js → chunk-PRLD7EXG.js} +3 -3
- package/dist/chunk-PRLD7EXG.js.map +1 -0
- package/dist/{chunk-NELZIQ2E.js → chunk-QDJKE557.js} +20 -3
- package/dist/chunk-QDJKE557.js.map +1 -0
- package/dist/{chunk-QXC62DOF.js → chunk-SF4GWVR5.js} +21 -9
- package/dist/chunk-SF4GWVR5.js.map +1 -0
- package/dist/{chunk-IPUYL6TD.js → chunk-TV72ZJYN.js} +8 -5
- package/dist/{chunk-IPUYL6TD.js.map → chunk-TV72ZJYN.js.map} +1 -1
- package/dist/{chunk-4QVFQEY2.js → chunk-UAW7VRAL.js} +2 -2
- package/dist/{chunk-4QVFQEY2.js.map → chunk-UAW7VRAL.js.map} +1 -1
- package/dist/chunk-UBCZVONU.js +28 -0
- package/dist/chunk-UBCZVONU.js.map +1 -0
- package/dist/{chunk-2XY6732A.js → chunk-UIZKIUC6.js} +6 -6
- package/dist/chunk-UIZKIUC6.js.map +1 -0
- package/dist/{chunk-ICS76R4T.js → chunk-W7W66MDZ.js} +10 -8
- package/dist/chunk-W7W66MDZ.js.map +1 -0
- package/dist/{chunk-DCAWIRD6.js → chunk-WRRYESHC.js} +152 -187
- package/dist/chunk-WRRYESHC.js.map +1 -0
- package/dist/{chunk-XMP6XTMF.js → chunk-XHBPQ7QP.js} +450 -207
- package/dist/chunk-XHBPQ7QP.js.map +1 -0
- package/dist/chunk-Z3XXKR5E.js +88 -0
- package/dist/chunk-Z3XXKR5E.js.map +1 -0
- package/dist/{chunk-KLNL7QHN.js → chunk-ZAP2BDHG.js} +30 -5
- package/dist/chunk-ZAP2BDHG.js.map +1 -0
- package/dist/{chunk-6VTG73UY.js → chunk-ZEKWHJBB.js} +52 -2
- package/dist/chunk-ZEKWHJBB.js.map +1 -0
- package/dist/{chunk-GCJXPUHG.js → chunk-ZONCCO5N.js} +9 -4
- package/dist/chunk-ZONCCO5N.js.map +1 -0
- package/dist/cli/index.js +618 -482
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/asset-feeds.d.ts +14 -1
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/connector.d.ts +7 -0
- package/dist/cli/src/commands/connector.d.ts.map +1 -1
- package/dist/cli/src/commands/flow.d.ts +3 -2
- package/dist/cli/src/commands/flow.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts +46 -23
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/npx.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/flow-discovery.d.ts +24 -0
- package/dist/cli/src/flow-discovery.d.ts.map +1 -0
- package/dist/cli/src/helpers.d.ts +10 -1
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/open-registry.d.ts +2 -2
- package/dist/cli/src/paths.d.ts +26 -9
- package/dist/cli/src/paths.d.ts.map +1 -1
- package/dist/cli/src/skill-walker.d.ts +9 -5
- package/dist/cli/src/skill-walker.d.ts.map +1 -1
- package/dist/connectors/config.js +9 -8
- package/dist/connectors/index.js +14 -13
- package/dist/connectors/rclone-config.js +1 -1
- package/dist/connectors/src/connector-manager.d.ts +24 -2
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/connectors/src/connector-registry.d.ts +3 -3
- package/dist/connectors/src/credential-helper-script.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +4 -2
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/connectors/src/mount-placeholder.d.ts +68 -0
- package/dist/connectors/src/mount-placeholder.d.ts.map +1 -0
- package/dist/connectors/src/rclone-config/googledrive.d.ts +1 -1
- package/dist/core/discovery.js +1 -1
- package/dist/core/index.js +8 -7
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.d.ts +2 -0
- package/dist/core/publish-manifest.js +5 -0
- package/dist/core/publish-manifest.js.map +1 -0
- package/dist/core/runtime-assets.js +5 -4
- package/dist/core/src/discovery.d.ts +27 -0
- package/dist/core/src/discovery.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +8 -5
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/manifest-yaml-editor.d.ts +62 -0
- package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -0
- package/dist/core/src/models.d.ts +6 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +160 -0
- package/dist/core/src/publish-manifest.d.ts.map +1 -0
- package/dist/core/src/repo-manager.d.ts +9 -1
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/runtime-assets.d.ts +80 -29
- package/dist/core/src/runtime-assets.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +19 -6
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +19 -37
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/src/workspace-yaml-editor.d.ts +1 -15
- package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -3
- package/dist/deploy/index.js +51 -80
- package/dist/deploy/index.js.map +1 -1
- package/dist/deploy/src/targets/container-runtime.d.ts +1 -1
- package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
- package/dist/deploy/src/targets/local.d.ts.map +1 -1
- package/dist/deploy/src/targets/nix.d.ts.map +1 -1
- package/dist/deploy/src/targets/process-handle.d.ts +7 -5
- package/dist/deploy/src/targets/process-handle.d.ts.map +1 -1
- package/dist/discovery/index.js +5 -4
- package/dist/discovery/src/discover-manifest.d.ts +3 -2
- package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
- package/dist/discovery/src/discover.d.ts +2 -2
- package/dist/discovery/src/discover.d.ts.map +1 -1
- package/dist/discovery/src/index.d.ts +1 -1
- package/dist/discovery/src/index.d.ts.map +1 -1
- package/dist/discovery/src/source-config.d.ts +53 -12
- package/dist/discovery/src/source-config.d.ts.map +1 -1
- package/dist/discovery/src/tree-entries.d.ts +2 -2
- package/dist/discovery/src/tree-entries.d.ts.map +1 -1
- package/dist/{ensure-sources-7MOOKY3K.js → ensure-sources-KQQEUDKM.js} +15 -13
- package/dist/ensure-sources-KQQEUDKM.js.map +1 -0
- package/dist/factory-assets/.skaile-source.yaml +6 -0
- package/dist/factory-assets/README.md +36 -0
- package/dist/factory-assets/bundles/workspaces-authoring/workspaces-authoring.bundle.yaml +9 -0
- package/dist/factory-assets/connectors/deploy/CONNECTOR.md +41 -0
- package/dist/{base-assets → factory-assets}/connectors/deploy/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/deploy.js +22 -0
- package/dist/factory-assets/connectors/devserver/CONNECTOR.md +44 -0
- package/dist/{base-assets → factory-assets}/connectors/devserver/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/devserver.js +22 -0
- package/dist/factory-assets/connectors/flow/CONNECTOR.md +47 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/adapter.js +22 -0
- package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-kind-provider.d.ts +1 -1
- package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/flow-manifest.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/loader.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/engine.js +15 -0
- package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.d.ts +5 -5
- package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js +1 -1
- package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.d.ts +8 -8
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/run-flow.js +25 -0
- package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.d.ts +2 -2
- package/dist/factory-assets/connectors/flow/stimulus-driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/flow/stimulus-driver.js +4 -0
- package/dist/factory-assets/connectors/flow.js +22 -0
- package/dist/factory-assets/connectors/git/CONNECTOR.md +145 -0
- package/dist/{base-assets → factory-assets}/connectors/git/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/git.js +22 -0
- package/dist/factory-assets/connectors/gmail/CONNECTOR.md +50 -0
- package/dist/{base-assets → factory-assets}/connectors/gmail/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/gmail.js +22 -0
- package/dist/factory-assets/connectors/googledrive/CONNECTOR.md +150 -0
- package/dist/{base-assets → factory-assets}/connectors/googledrive/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/googledrive/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/googledrive.js +22 -0
- package/dist/factory-assets/connectors/local/CONNECTOR.md +40 -0
- package/dist/{base-assets → factory-assets}/connectors/local/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/local.js +22 -0
- package/dist/factory-assets/connectors/mattermost/CONNECTOR.md +65 -0
- package/dist/{base-assets → factory-assets}/connectors/mattermost/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/mattermost/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/mattermost.js +22 -0
- package/dist/factory-assets/connectors/memory/CONNECTOR.md +40 -0
- package/dist/{base-assets → factory-assets}/connectors/memory/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/memory/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/memory.js +22 -0
- package/dist/factory-assets/connectors/minio/CONNECTOR.md +68 -0
- package/dist/{base-assets → factory-assets}/connectors/minio/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/minio.js +22 -0
- package/dist/factory-assets/connectors/postgres/CONNECTOR.md +46 -0
- package/dist/{base-assets → factory-assets}/connectors/postgres/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/postgres.js +22 -0
- package/dist/factory-assets/connectors/s3/CONNECTOR.md +76 -0
- package/dist/{base-assets → factory-assets}/connectors/s3/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/s3.js +22 -0
- package/dist/factory-assets/connectors/sharepoint/CONNECTOR.md +181 -0
- package/dist/{base-assets → factory-assets}/connectors/sharepoint/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/sharepoint.js +22 -0
- package/dist/factory-assets/connectors/sqlite/CONNECTOR.md +44 -0
- package/dist/{base-assets → factory-assets}/connectors/sqlite/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/sqlite.js +22 -0
- package/dist/factory-assets/connectors/static-server/CONNECTOR.md +41 -0
- package/dist/{base-assets → factory-assets}/connectors/static-server/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/static-server.js +22 -0
- package/dist/factory-assets/connectors/tunnel/CONNECTOR.md +40 -0
- package/dist/{base-assets → factory-assets}/connectors/tunnel/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/tunnel/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/tunnel.js +22 -0
- package/dist/factory-assets/connectors/webdav/CONNECTOR.md +139 -0
- package/dist/{base-assets → factory-assets}/connectors/webdav/driver.d.ts +2 -2
- package/dist/factory-assets/connectors/webdav/driver.d.ts.map +1 -0
- package/dist/factory-assets/connectors/webdav.js +22 -0
- package/dist/factory-assets/connectors/xstate/CONNECTOR.md +57 -0
- package/dist/{base-assets → factory-assets}/connectors/xstate/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/xstate-store/CONNECTOR.md +48 -0
- package/dist/{base-assets → factory-assets}/connectors/xstate-store/adapter.d.ts +2 -2
- package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -0
- package/dist/factory-assets/connectors/xstate-store.js +22 -0
- package/dist/factory-assets/connectors/xstate.js +22 -0
- package/dist/{base-assets → factory-assets}/index.d.ts +1 -1
- package/dist/factory-assets/index.d.ts.map +1 -0
- package/dist/{base-assets → factory-assets}/index.js +1 -1
- package/dist/factory-assets/index.js.map +1 -0
- package/dist/factory-assets/skaile.manifest.yaml +25 -0
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +176 -0
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +243 -0
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +197 -0
- package/dist/factory-assets/skills/manifest-compliance/SKILL.md +140 -0
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +239 -0
- package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +168 -0
- package/dist/{flows-DYFTPCPM.js → flows-L3GHQD7F.js} +4 -4
- package/dist/{flows-DYFTPCPM.js.map → flows-L3GHQD7F.js.map} +1 -1
- package/dist/helpers-F4NZ66VD.js +4 -0
- package/dist/{helpers-LTN3HMD3.js.map → helpers-F4NZ66VD.js.map} +1 -1
- package/dist/library/index.js +12 -10
- package/dist/library/install.d.ts +2 -0
- package/dist/library/install.js +16 -0
- package/dist/library/install.js.map +1 -0
- package/dist/library/src/install/index.d.ts +3 -0
- package/dist/library/src/install/index.d.ts.map +1 -0
- package/dist/library/src/library.d.ts +2 -0
- package/dist/library/src/library.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +2 -0
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts +2 -1
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/local/sidecar-paths.d.ts +4 -4
- package/dist/library/src/local/sidecar-paths.d.ts.map +1 -1
- package/dist/library/src/local/store-paths.d.ts +4 -3
- package/dist/library/src/local/store-paths.d.ts.map +1 -1
- package/dist/library/src/pin-resolver.d.ts.map +1 -1
- package/dist/library/src/preset/apply.d.ts.map +1 -1
- package/dist/library/src/preset/placeholders.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +7 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts +7 -0
- package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
- package/dist/library/src/sync/manifest-writeback.d.ts +1 -1
- package/dist/library/src/sync/manifest-writeback.d.ts.map +1 -1
- package/dist/open-library-I7YTADMD.js +23 -0
- package/dist/{open-library-GW7DWWNZ.js.map → open-library-I7YTADMD.js.map} +1 -1
- package/dist/paths-CE66L3AL.js +15 -0
- package/dist/{paths-FKKGS6BA.js.map → paths-CE66L3AL.js.map} +1 -1
- package/dist/{plugin-store-R32NH7JE.js → plugin-store-GL5VKYUA.js} +10 -9
- package/dist/plugin-store-GL5VKYUA.js.map +1 -0
- package/dist/plugins/src/asset-kind-provider.d.ts +1 -1
- package/dist/plugins/src/catalog-source.d.ts +13 -0
- package/dist/plugins/src/catalog-source.d.ts.map +1 -1
- package/dist/resolver/index.js +1 -1
- package/dist/resolver/src/parser.d.ts.map +1 -1
- package/dist/runner/index.js +20 -19
- package/dist/runner/src/capability-registry.d.ts +1 -1
- package/dist/runner/src/capability-registry.d.ts.map +1 -1
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/resources.d.ts +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/workspace-migration.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +12 -11
- package/dist/sdk/bridge.js +4 -4
- package/dist/sdk/core.js +8 -7
- package/dist/sdk/flow.js +12 -1
- package/dist/sdk/index.js +23 -22
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +1 -1
- package/dist/sdk/runner.js +20 -19
- package/dist/sdk/session.js +1 -1
- package/dist/sdk/src/flow/index.d.ts +1 -1
- package/dist/sdk/src/flow/index.d.ts.map +1 -1
- package/dist/sdk/src/workspace.d.ts +3 -2
- package/dist/sdk/src/workspace.d.ts.map +1 -1
- package/dist/sdk/telemetry.js +1 -1
- package/dist/secrets/index.js +1 -1
- package/dist/secrets/src/providers/env.d.ts.map +1 -1
- package/dist/secrets/src/providers/local.d.ts.map +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/src/mentions.d.ts.map +1 -1
- package/dist/{setup-SRPBQOHY.js → setup-4YMN2BDU.js} +14 -13
- package/dist/setup-4YMN2BDU.js.map +1 -0
- package/dist/skills-6HJ3WINN.js +7 -0
- package/dist/{skills-CRL3VJNN.js.map → skills-6HJ3WINN.js.map} +1 -1
- package/dist/store-client-BCP5LCAZ.js +15 -0
- package/dist/{store-client-INZD2RYD.js.map → store-client-BCP5LCAZ.js.map} +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/src/config.d.ts +0 -16
- package/dist/telemetry/src/config.d.ts.map +1 -1
- package/dist/tui/index.js +20 -19
- package/dist/tui/index.js.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/flow.d.ts +2 -2
- package/dist/types/src/manifests/index.d.ts +1 -1
- package/dist/types/src/manifests/skill.d.ts +21 -0
- package/dist/types/src/manifests/skill.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +4 -4
- package/dist/workspace-plugin/adapters/omp.js +7 -7
- package/dist/workspace-plugin/index.js +1 -1
- package/dist/workspace-plugin/src/tools/flows.d.ts.map +1 -1
- package/package.json +194 -151
- package/dist/asset-feeds-77KLWCBP.js.map +0 -1
- package/dist/base-assets/connectors/deploy/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/deploy.js +0 -21
- package/dist/base-assets/connectors/devserver/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/devserver.js +0 -21
- package/dist/base-assets/connectors/flow/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/adapter.js +0 -21
- package/dist/base-assets/connectors/flow/engine/engine.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/flow-manifest.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/index.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/loader.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine/types.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/engine.js +0 -4
- package/dist/base-assets/connectors/flow/index.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/prompt-fragments.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/run-flow.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/run-flow.js +0 -24
- package/dist/base-assets/connectors/flow/stimulus-driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/flow/stimulus-driver.js +0 -4
- package/dist/base-assets/connectors/flow.js +0 -21
- package/dist/base-assets/connectors/git/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/git.js +0 -21
- package/dist/base-assets/connectors/gmail/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/gmail.js +0 -21
- package/dist/base-assets/connectors/googledrive/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/googledrive.js +0 -21
- package/dist/base-assets/connectors/local/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/local.js +0 -21
- package/dist/base-assets/connectors/mattermost/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/mattermost.js +0 -21
- package/dist/base-assets/connectors/memory/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/memory.js +0 -21
- package/dist/base-assets/connectors/minio/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/minio.js +0 -21
- package/dist/base-assets/connectors/postgres/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/postgres.js +0 -21
- package/dist/base-assets/connectors/s3/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/s3.js +0 -21
- package/dist/base-assets/connectors/sharepoint/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/sharepoint.js +0 -21
- package/dist/base-assets/connectors/sqlite/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/sqlite.js +0 -21
- package/dist/base-assets/connectors/static-server/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/static-server.js +0 -21
- package/dist/base-assets/connectors/tunnel/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/tunnel.js +0 -21
- package/dist/base-assets/connectors/webdav/driver.d.ts.map +0 -1
- package/dist/base-assets/connectors/webdav.js +0 -21
- package/dist/base-assets/connectors/xstate/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/xstate-store/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/xstate-store.js +0 -21
- package/dist/base-assets/connectors/xstate.js +0 -21
- package/dist/base-assets/index.d.ts.map +0 -1
- package/dist/base-assets/index.js.map +0 -1
- package/dist/chunk-2M3XTMOL.js +0 -23
- package/dist/chunk-2M3XTMOL.js.map +0 -1
- package/dist/chunk-2XY6732A.js.map +0 -1
- package/dist/chunk-3QTZWPGH.js.map +0 -1
- package/dist/chunk-4FADEVBN.js.map +0 -1
- package/dist/chunk-6VTG73UY.js.map +0 -1
- package/dist/chunk-B4ZXBH57.js.map +0 -1
- package/dist/chunk-BJWUSHC4.js.map +0 -1
- package/dist/chunk-D3VO6WNC.js.map +0 -1
- package/dist/chunk-DCAWIRD6.js.map +0 -1
- package/dist/chunk-DQWREFRQ.js.map +0 -1
- package/dist/chunk-FJFHJBGS.js.map +0 -1
- package/dist/chunk-FVTV7M76.js.map +0 -1
- package/dist/chunk-GCJXPUHG.js.map +0 -1
- package/dist/chunk-GZWJGNNN.js.map +0 -1
- package/dist/chunk-ICS76R4T.js.map +0 -1
- package/dist/chunk-JDX54X4Y.js.map +0 -1
- package/dist/chunk-KLNL7QHN.js.map +0 -1
- package/dist/chunk-KOVLSBXK.js.map +0 -1
- package/dist/chunk-KT3CK26V.js.map +0 -1
- package/dist/chunk-M5TE6YI5.js.map +0 -1
- package/dist/chunk-NELZIQ2E.js.map +0 -1
- package/dist/chunk-QAVZOJCV.js.map +0 -1
- package/dist/chunk-QXC62DOF.js.map +0 -1
- package/dist/chunk-UD4ZLXGS.js.map +0 -1
- package/dist/chunk-WIAHJOMG.js.map +0 -1
- package/dist/chunk-WSZAFRQL.js.map +0 -1
- package/dist/chunk-XMP6XTMF.js.map +0 -1
- package/dist/chunk-XVL22AWE.js.map +0 -1
- package/dist/ensure-sources-7MOOKY3K.js.map +0 -1
- package/dist/helpers-LTN3HMD3.js +0 -4
- package/dist/open-library-GW7DWWNZ.js +0 -21
- package/dist/paths-FKKGS6BA.js +0 -4
- package/dist/plugin-store-R32NH7JE.js.map +0 -1
- package/dist/setup-SRPBQOHY.js.map +0 -1
- package/dist/skills-CRL3VJNN.js +0 -7
- package/dist/store-client-INZD2RYD.js +0 -14
- /package/dist/{base-assets → factory-assets}/connectors/deploy.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/deploy.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/devserver.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/devserver.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/adapter.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/engine.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-manifest.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/index.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/loader.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine/types.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/engine.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/index.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/flow.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/git.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/git.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/gmail.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/gmail.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/googledrive.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/googledrive.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/local.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/local.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/mattermost.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/mattermost.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/memory.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/memory.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/minio.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/minio.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/postgres.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/postgres.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/s3.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/s3.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/sharepoint.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/sharepoint.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/sqlite.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/sqlite.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/static-server.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/static-server.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/tunnel.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/tunnel.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/webdav.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/webdav.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/xstate-store.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/xstate-store.js.map +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/xstate.d.ts +0 -0
- /package/dist/{base-assets → factory-assets}/connectors/xstate.js.map +0 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: authoring-skaile-manifests
|
|
3
|
+
description: "Use when creating or fixing a skaile.yaml manifest for a new or existing skill / asset / MCP-server repo so it works with @skaile/workspaces and stores. Covers the publication half (publisher, version, assets[]), the consumption half (sources, stores, dependencies, overrides), the canonical dependency-ref grammar (kind:@publisher/name#version), the version waterfall, conflict resolution, and the v3 lock file. Also use to generate a manifest from an existing tree or migrate a legacy manifest."
|
|
4
|
+
metadata:
|
|
5
|
+
version: '0.1.0'
|
|
6
|
+
stage: alpha
|
|
7
|
+
tags:
|
|
8
|
+
- skaile
|
|
9
|
+
- workspaces
|
|
10
|
+
- manifest
|
|
11
|
+
- skaile.yaml
|
|
12
|
+
- dependencies
|
|
13
|
+
- mcp
|
|
14
|
+
- migrate
|
|
15
|
+
- lockfile
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Authoring `skaile.yaml` manifests
|
|
19
|
+
|
|
20
|
+
You are creating or repairing a `skaile.yaml` so a repo (skills, assets, or an
|
|
21
|
+
MCP server) resolves through `@skaile/workspaces` and any store. This skill owns
|
|
22
|
+
the manifest and the **latest dependency standard**. For file layout and asset
|
|
23
|
+
content, see **[authoring-skaile-assets]**.
|
|
24
|
+
|
|
25
|
+
Reference (canonical): the in-repo concept doc `docs/concepts/manifest-schema.md`
|
|
26
|
+
and the spec `_devlog/specs/2026-05-31-manifest-canonical-identity.md`.
|
|
27
|
+
The full dependency standard is in
|
|
28
|
+
[`references/dependency-standard.md`](./references/dependency-standard.md).
|
|
29
|
+
|
|
30
|
+
## One file, two halves
|
|
31
|
+
|
|
32
|
+
`skaile.yaml` lives at the repo root. A repo can be **source-only** (publication
|
|
33
|
+
half), **project-only** (consumption half), or both.
|
|
34
|
+
|
|
35
|
+
### Publication half — "this repo IS a source"
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
publisher: skaile-ai # optional; defaults to the source URL's GitHub org/user
|
|
39
|
+
version: 1.4.0 # optional; see Version waterfall
|
|
40
|
+
|
|
41
|
+
assets: # optional; when present it EXHAUSTIVELY lists publishable assets
|
|
42
|
+
- kind: skill
|
|
43
|
+
name: audit
|
|
44
|
+
root: skills/audit # recursive walk: every file under root joins the asset
|
|
45
|
+
- kind: bundle
|
|
46
|
+
name: skaile-development
|
|
47
|
+
root: bundles/skaile-development
|
|
48
|
+
version: 2.0.0 # per-asset override of the source version
|
|
49
|
+
- kind: skill
|
|
50
|
+
name: composite-skill
|
|
51
|
+
files: # explicit listing; supports fast-glob globs
|
|
52
|
+
- SKILL.md
|
|
53
|
+
- scripts/*.py
|
|
54
|
+
- references/audit-rules.md
|
|
55
|
+
- kind: mcp-server
|
|
56
|
+
name: excel
|
|
57
|
+
root: mcp-servers/excel
|
|
58
|
+
publisher: vendor-x # per-asset publisher: curator/mirror preserves original identity
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
- **`publisher`** — canonical, GitHub-shaped: ≤39 chars, alphanumeric + single
|
|
62
|
+
hyphens, no leading/trailing or double hyphen. Inherited from the source URL's
|
|
63
|
+
GitHub `<org-or-user>` when omitted. **Non-GitHub URLs (GitLab, self-hosted,
|
|
64
|
+
tarball) MUST set `publisher:` explicitly** — auto-derivation fails closed.
|
|
65
|
+
- **`assets[]`** — `{kind, name, root?|files?, version?, publisher?}`. `root:`
|
|
66
|
+
walks a directory recursively; `files:` lists explicit paths/globs.
|
|
67
|
+
- A content `name:` (e.g. `SKILL.md`) **MUST equal** its `assets[].name` — else
|
|
68
|
+
an index-time hard error. `metadata.version` in content is ignored.
|
|
69
|
+
|
|
70
|
+
> ⚠️ **Exhaustive-list footgun.** A **non-empty `assets:` is the complete set of
|
|
71
|
+
> resolvable assets.** Anything on disk but not listed is still browsable in
|
|
72
|
+
> `skaile manage` (the browse scan walks files) yet **fails at install** with
|
|
73
|
+
> `Asset not found`. When you add an agent/flow/skill to the tree, add it here
|
|
74
|
+
> too — or omit `assets:` entirely and let the convention walker find everything.
|
|
75
|
+
|
|
76
|
+
### Consumption half — "this repo IS a project"
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
sources: # absent → no direct git resolution
|
|
80
|
+
- url: https://github.com/skaile-ai/ai-assets
|
|
81
|
+
pin: v1.4.0 # optional: branch | tag | 40-char sha; defaults to default-branch HEAD
|
|
82
|
+
|
|
83
|
+
stores: # absent → no catalog fallback
|
|
84
|
+
- url: https://skaile.store
|
|
85
|
+
|
|
86
|
+
dependencies: # canonical refs only (grammar below)
|
|
87
|
+
- bundle:@skaile-ai/skaile-development#^2.0
|
|
88
|
+
- skill:@skaile-ai/use-exa#~1.0
|
|
89
|
+
- mcp:@skaile-ai/excel
|
|
90
|
+
|
|
91
|
+
overrides: # conflict resolution; reason: is REQUIRED
|
|
92
|
+
- ref: skill:@skaile-ai/audit#1.4.0
|
|
93
|
+
source: https://github.com/skaile-ai/ai-assets
|
|
94
|
+
reason: "vendored patch for issue #42; revert when upstream merges"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- `sources[]` is `{url, pin?}` **only** — no `name`, `publisher`, or `branch`;
|
|
98
|
+
the cache slug is derived from the URL.
|
|
99
|
+
- `stores[]` is `{url}` only.
|
|
100
|
+
- `overrides[]` is `{ref, source, reason}`; an empty/missing `reason:` is a parse
|
|
101
|
+
error.
|
|
102
|
+
- Legacy top-level keys `repositories:` and `ai_resources:` are **rejected at
|
|
103
|
+
parse time** — see Migration.
|
|
104
|
+
|
|
105
|
+
## The latest dependency standard (canonical-identity, 2026-05-31)
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
kind:@<publisher>/name[#version]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
`@` is the **scope sigil**, `#` the **version sigil** — `@publisher/name` reads
|
|
112
|
+
like an npm scoped package. `<publisher>` is canonical, global, GitHub-shaped,
|
|
113
|
+
and **required**; there is no project-local alias. `mcp:` is shorthand for
|
|
114
|
+
`mcp-server:`. The lock key is a fully-pinned ref of exactly this shape
|
|
115
|
+
(`kind:@<publisher>/name#version`).
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
skill:@skaile-ai/audit # resolver picks highest SemVer candidate
|
|
119
|
+
skill:@skaile-ai/audit#^1.4.0 # caret range
|
|
120
|
+
bundle:@skaile-ai/skaile-development#~2.0
|
|
121
|
+
mcp:@skaile-ai/excel # = mcp-server:@skaile-ai/excel
|
|
122
|
+
agent:@skaile-ai/reviewer#6a5266fdda9d1c697f537968532691f6d70c779a # exact commit SHA
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
| Pin form | Meaning |
|
|
126
|
+
|---|---|
|
|
127
|
+
| `#1.4.0` | exact SemVer |
|
|
128
|
+
| `#^1.4.0`, `#^1` | caret range |
|
|
129
|
+
| `#~1.4.0`, `#~1.4` | tilde range |
|
|
130
|
+
| `#1.x`, `#1.4.x` | wildcard |
|
|
131
|
+
| `#<40-char-sha>` | exact source-commit pin |
|
|
132
|
+
| absent | highest SemVer-sorted candidate |
|
|
133
|
+
| `#main`, `#latest`, `#HEAD`, any floating ref | **parse-time error** |
|
|
134
|
+
|
|
135
|
+
> 🛑 **The legacy `kind:name@<publisher>` grammar is GONE.** As of the
|
|
136
|
+
> "remove legacy asset-ref aliases" change it is a **hard error**
|
|
137
|
+
> (`publisher required in asset ref "…" — use kind:@<publisher>/name`), not a
|
|
138
|
+
> deprecation warning. The older docs that mention a one-release grace period are
|
|
139
|
+
> stale. Convert every ref and run the `migrate-skaile-manifest` skill on legacy
|
|
140
|
+
> manifests.
|
|
141
|
+
|
|
142
|
+
**`requires:` (content) is different and stays bare** — `kind:name`, no
|
|
143
|
+
publisher, resolved within the same source. Only **bundle `dependencies:`** and
|
|
144
|
+
**project `dependencies:`** use the full canonical grammar above. See
|
|
145
|
+
[references/dependency-standard.md](./references/dependency-standard.md) for the
|
|
146
|
+
complete rules, SHA-synthetic versions, and worked examples.
|
|
147
|
+
|
|
148
|
+
## Version waterfall
|
|
149
|
+
|
|
150
|
+
The version for an asset is the first of:
|
|
151
|
+
|
|
152
|
+
1. `assets[].version` (per-asset in the source `skaile.yaml`).
|
|
153
|
+
2. The source's top-level `version:`.
|
|
154
|
+
3. A SemVer-shaped git tag (`git describe --tags`), `v` stripped.
|
|
155
|
+
4. Synthetic `0.0.0-sha.<7char>` from the resolved commit.
|
|
156
|
+
|
|
157
|
+
SHA-synthetic versions resolve only against their **exact literal** pin or the
|
|
158
|
+
commit-SHA pin that minted them — never caret/tilde/wildcard. To get clean
|
|
159
|
+
ranged installs, **tag your releases**.
|
|
160
|
+
|
|
161
|
+
## Resolution + conflict detection (what authors must anticipate)
|
|
162
|
+
|
|
163
|
+
The resolver gathers candidates per dep across every source clone and every store,
|
|
164
|
+
filters by the pin, and picks the highest matching version. If two candidates for
|
|
165
|
+
the same `(publisher, kind, name, version)` disagree on content `sha256`, it is a
|
|
166
|
+
**hard error** with a dep-chain walk — unless an `overrides[]` entry pins one
|
|
167
|
+
source (with a `reason:`). When a source and a store both produce the chosen
|
|
168
|
+
version, a `catalog.getCanonicalDigest` probe cross-checks their `sha256`.
|
|
169
|
+
|
|
170
|
+
Implication for authors: **never republish the same `(publisher, kind, name,
|
|
171
|
+
version)` with different bytes.** Bump the version instead. Same coordinates must
|
|
172
|
+
mean identical content everywhere, or every downstream consumer breaks.
|
|
173
|
+
|
|
174
|
+
## Generate a manifest from an existing repo
|
|
175
|
+
|
|
176
|
+
For a new or existing skill/asset/MCP repo with no (or a stale) `skaile.yaml`:
|
|
177
|
+
|
|
178
|
+
1. **Enumerate assets on disk** — find every manifest file:
|
|
179
|
+
```bash
|
|
180
|
+
find . \( -name SKILL.md -o -name AGENT.md -o -name agent.yaml \
|
|
181
|
+
-o -name CONTRACT.md -o -name MCP.md -o -name CONNECTOR.md \
|
|
182
|
+
-o -name knowledge.yaml -o -name '*.prompt.md' \
|
|
183
|
+
-o -name '*.flow.yaml' -o -name '*.flow.json' -o -name '*.bundle.yaml' \) \
|
|
184
|
+
-not -path '*/node_modules/*' -not -path '*/.git/*'
|
|
185
|
+
```
|
|
186
|
+
2. **Read each `name:`** (frontmatter or `name:`/`id:` field). For a single-file
|
|
187
|
+
asset use `files:`; for a directory-scoped asset (skill/agent/contract/
|
|
188
|
+
mcp-server/connector/knowledge) use `root:` at its directory.
|
|
189
|
+
3. **Set `publisher:`** = the GitHub org if hosted there, else declare it.
|
|
190
|
+
4. **Set `version:`** or rely on git tags.
|
|
191
|
+
5. **Cross-check the count**: the number of `assets:` entries MUST equal the
|
|
192
|
+
number of manifest files found in step 1. A mismatch = the footgun. (This is
|
|
193
|
+
exactly the `assets:`-list-incomplete class of `Asset not found` bug.)
|
|
194
|
+
6. **For an MCP repo specifically**: each server is an `MCP.md` with frontmatter
|
|
195
|
+
carrying runtime defaults (`transport`, `command`, `args`, `env`, `url`,
|
|
196
|
+
`headers`). Those land on the catalog entry's `metadata` so a consumer can
|
|
197
|
+
`dependencies: [mcp:@<pub>/<name>]` and get a working server with no inline
|
|
198
|
+
config. List each as `kind: mcp-server`.
|
|
199
|
+
7. **Verify**: register the repo as a source in a scratch project and run
|
|
200
|
+
`skaile manage` + `skaile add` for a sampling of every kind (see
|
|
201
|
+
[authoring-skaile-assets] § Test a source locally).
|
|
202
|
+
|
|
203
|
+
## v3 lock file (`skaile.lock.yaml`)
|
|
204
|
+
|
|
205
|
+
Generated by `skaile install`; do not hand-edit. Keyed by canonical refs.
|
|
206
|
+
|
|
207
|
+
```yaml
|
|
208
|
+
locked_at: 2026-05-31T14:30:00Z
|
|
209
|
+
schema_version: 3
|
|
210
|
+
assets:
|
|
211
|
+
skill:@skaile-ai/audit#1.4.0:
|
|
212
|
+
sha256: 1da6294a...
|
|
213
|
+
source: { url: https://github.com/skaile-ai/ai-assets, commit: 6a5266fd... }
|
|
214
|
+
files:
|
|
215
|
+
- { path: skills/audit/SKILL.md, sha256: ... }
|
|
216
|
+
override_applied: false
|
|
217
|
+
sources:
|
|
218
|
+
- { url: https://github.com/skaile-ai/ai-assets, commit: 6a5266fd... }
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Old v1 lockfiles (`lockfile_version: 1`, `repositories:`) are rejected on read —
|
|
222
|
+
regenerate with `rm skaile.lock.yaml && skaile install`.
|
|
223
|
+
|
|
224
|
+
## Migration
|
|
225
|
+
|
|
226
|
+
There is no `skaile manifest migrate` command. The transform
|
|
227
|
+
(`repositories:`/`ai_resources:` → `sources:`/`dependencies:`, bare deps →
|
|
228
|
+
`@<publisher>`, `@skaile` → `@skaile-ai` rebrand, legacy `kind:name@pub` →
|
|
229
|
+
`kind:@pub/name`) is done by the **`migrate-skaile-manifest`** skill. Run it from
|
|
230
|
+
an AI session against each legacy `skaile.yaml`.
|
|
231
|
+
|
|
232
|
+
## Manifest checklist
|
|
233
|
+
|
|
234
|
+
- [ ] `publisher:` set (or auto-derivable from a GitHub URL).
|
|
235
|
+
- [ ] Every manifest file on disk has a matching `assets:` entry (or `assets:` omitted).
|
|
236
|
+
- [ ] Each content `name:` equals its `assets[].name`.
|
|
237
|
+
- [ ] Every `dependencies:`/bundle ref uses `kind:@publisher/name[#version]` — no legacy `@pub` suffix.
|
|
238
|
+
- [ ] Pins are SemVer/SHA — no `main`/`latest`/`HEAD`.
|
|
239
|
+
- [ ] Released versions are git-tagged so ranges resolve.
|
|
240
|
+
- [ ] `overrides[]` (if any) carry a non-empty `reason:`.
|
|
241
|
+
- [ ] `skaile add` succeeds for a sample of every kind in a scratch project.
|
|
242
|
+
|
|
243
|
+
[authoring-skaile-assets]: ../authoring-skaile-assets/SKILL.md
|
package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# The skaile dependency standard (canonical-identity)
|
|
2
|
+
|
|
3
|
+
Deep reference for the dependency grammar used by `@skaile/workspaces`. The
|
|
4
|
+
authoritative source is `docs/concepts/manifest-schema.md` and the spec
|
|
5
|
+
`_devlog/specs/2026-05-31-manifest-canonical-identity.md` (scoped-grammar follow-up:
|
|
6
|
+
`_devlog/specs/2026-06-02-scoped-asset-ref-grammar.md`). This file restates it for
|
|
7
|
+
asset authors and flags where the current code is **stricter than the older docs**.
|
|
8
|
+
|
|
9
|
+
## 1. Identity
|
|
10
|
+
|
|
11
|
+
Every asset has a global identity tuple:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
(publisher, kind, name, version)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- **Asset-intrinsic.** Declared in the *source's* `skaile.yaml`, never by the
|
|
18
|
+
consuming project. There is no project-local renaming.
|
|
19
|
+
- **publisher** — canonical, GitHub-shaped: 1–39 chars, alphanumeric + single
|
|
20
|
+
hyphens, no leading/trailing hyphen, no double hyphen. Auto-derived from a
|
|
21
|
+
GitHub source URL's org/user; **must be declared** for any non-GitHub URL.
|
|
22
|
+
- **kind** — one of: `skill`, `agent`, `prompt`, `bundle`, `flow`, `contract`,
|
|
23
|
+
`mcp-server`, `persona`, `ruleset`, `knowledge`, `connector`.
|
|
24
|
+
- **version** — SemVer (see § Version waterfall). Two assets with the same tuple
|
|
25
|
+
MUST be byte-identical.
|
|
26
|
+
|
|
27
|
+
## 2. The canonical reference grammar
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
kind:@<publisher>/name[#version]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
| Token | Role |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `kind:` | asset kind + colon. `mcp:` is shorthand for `mcp-server:`. |
|
|
36
|
+
| `@` | **scope sigil** — introduces the publisher, npm-style. |
|
|
37
|
+
| `<publisher>/` | publisher namespace + slash. |
|
|
38
|
+
| `name` | asset name. Permissive: anything except `/`, `#`, whitespace. |
|
|
39
|
+
| `#version` | optional **version sigil** + pin. |
|
|
40
|
+
|
|
41
|
+
Reads as an npm scoped package: `@skaile-ai/audit`.
|
|
42
|
+
|
|
43
|
+
### Examples
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
skill:@skaile-ai/audit
|
|
47
|
+
skill:@skaile-ai/audit#^1.4.0
|
|
48
|
+
bundle:@skaile-ai/skaile-development#~2.0
|
|
49
|
+
agent:@vercel-labs/reviewer
|
|
50
|
+
mcp:@skaile-ai/excel # == mcp-server:@skaile-ai/excel
|
|
51
|
+
contract:@skaile-ai/implementation-contract#1.0.0
|
|
52
|
+
skill:@skaile-ai/audit#6a5266fdda9d1c697f537968532691f6d70c779a # 40-char SHA pin
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## 3. Pins
|
|
56
|
+
|
|
57
|
+
| Pin form | Meaning |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `#1.4.0` | exact SemVer |
|
|
60
|
+
| `#^1.4.0`, `#^1` | caret range |
|
|
61
|
+
| `#~1.4.0`, `#~1.4` | tilde range |
|
|
62
|
+
| `#1.x`, `#1.4.x` | wildcard |
|
|
63
|
+
| `#<40-char-sha>` | exact source-commit pin |
|
|
64
|
+
| absent | resolver picks the highest SemVer-sorted candidate |
|
|
65
|
+
| `#main`, `#latest`, `#HEAD`, any floating ref | **parse-time error** |
|
|
66
|
+
|
|
67
|
+
Floating refs are rejected by design — resolution must be reproducible.
|
|
68
|
+
|
|
69
|
+
## 4. SHA-synthetic versions
|
|
70
|
+
|
|
71
|
+
When no version can be derived (no `assets[].version`, no source `version:`, no
|
|
72
|
+
SemVer git tag), the resolver mints `0.0.0-sha.<7char>` from the commit. These:
|
|
73
|
+
|
|
74
|
+
- participate in resolution,
|
|
75
|
+
- satisfy **only** their exact literal pin (`#0.0.0-sha.abc1234`) or the
|
|
76
|
+
commit-SHA pin that produced them,
|
|
77
|
+
- never match caret/tilde/wildcard ranges.
|
|
78
|
+
|
|
79
|
+
Consequence: an untagged source resolves only when pinned exactly. **Tag
|
|
80
|
+
releases** to enable ranged (`^`, `~`, `x`) installs.
|
|
81
|
+
|
|
82
|
+
## 5. `requires:` vs `dependencies:` — the split that trips authors
|
|
83
|
+
|
|
84
|
+
There are two distinct dependency channels. They use **different grammars**.
|
|
85
|
+
|
|
86
|
+
### `requires:` — content frontmatter, intra-source, bare `kind:name`
|
|
87
|
+
|
|
88
|
+
In a `SKILL.md` / `agent.yaml` / `MCP.md`, `requires:` lists peer assets the
|
|
89
|
+
asset needs. Form is **`kind:name`** — no `@publisher`, no `#version`. The
|
|
90
|
+
publisher is **inherited from the same source** (same-source assumption).
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
# SKILL.md frontmatter
|
|
94
|
+
metadata:
|
|
95
|
+
requires:
|
|
96
|
+
- contract:implementation-contract
|
|
97
|
+
- skill:use-exa
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Accepted as a comma-separated string or a YAML list. Read from either the
|
|
101
|
+
top level or under `metadata:`.
|
|
102
|
+
|
|
103
|
+
### `dependencies:` — bundle & project manifests, full canonical refs
|
|
104
|
+
|
|
105
|
+
A **bundle** (`*.bundle.yaml`) and a **project** `skaile.yaml` use
|
|
106
|
+
`dependencies:` with the **full canonical grammar** and can cross publishers and
|
|
107
|
+
pin versions:
|
|
108
|
+
|
|
109
|
+
```yaml
|
|
110
|
+
# a bundle, or a project skaile.yaml
|
|
111
|
+
dependencies:
|
|
112
|
+
- skill:@skaile-ai/audit#^1.4
|
|
113
|
+
- agent:@skaile-ai/impl-build-implement
|
|
114
|
+
- skill:@vercel-labs/agent-skills
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
> Putting a full canonical ref in a content `requires:` (or a bare `kind:name`
|
|
118
|
+
> in a project `dependencies:`) is the most common authoring mistake. Keep them
|
|
119
|
+
> in their lanes: **`requires:` = bare same-source; `dependencies:` = canonical
|
|
120
|
+
> cross-source.**
|
|
121
|
+
|
|
122
|
+
### Transitive expansion
|
|
123
|
+
|
|
124
|
+
Installing a bundle resolves every `dependencies:` ref, recursing into nested
|
|
125
|
+
bundles to arbitrary depth. A shared dep is de-duped; cycles are broken by a
|
|
126
|
+
`seen` set. A bare transitive ref inherits its parent candidate's publisher.
|
|
127
|
+
|
|
128
|
+
## 6. Resolution algorithm (per dep)
|
|
129
|
+
|
|
130
|
+
1. Gather **source candidates** from every cloned `sources[]` repo (provenance
|
|
131
|
+
index, keyed `<publisher>/<kind>:<name>`).
|
|
132
|
+
2. Optionally gather **store candidates** from every `stores[]` catalog.
|
|
133
|
+
3. Filter by the pin (SemVer range / SHA / exact).
|
|
134
|
+
4. Pick the **highest** matching version.
|
|
135
|
+
5. **Conflict check:** if ≥2 finalists at that version have divergent content
|
|
136
|
+
`sha256`, raise `CanonicalRefConflictError` with the dep chain — unless an
|
|
137
|
+
`overrides[]` entry selects one source.
|
|
138
|
+
6. Cross-check: when a source and a store both produced the chosen version,
|
|
139
|
+
probe `catalog.getCanonicalDigest` and compare `sha256`.
|
|
140
|
+
|
|
141
|
+
### Conflict error shape
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
error: divergent sha256 for skill:@skaile-ai/audit#1.4.0
|
|
145
|
+
pulled in via:
|
|
146
|
+
bundle:@skaile-ai/skaile-development#^2.0
|
|
147
|
+
skill:@skaile-ai/audit#~1.4
|
|
148
|
+
candidates:
|
|
149
|
+
https://github.com/skaile-ai/ai-assets @ 6a5266fd sha256: 1da6294a...
|
|
150
|
+
https://github.com/mortegro/ai-assets-fork @ ab12cd34 sha256: 9e3f7c01...
|
|
151
|
+
resolve by:
|
|
152
|
+
1. removing one source from skaile.yaml,
|
|
153
|
+
2. configuring a store and using its canonical digest, or
|
|
154
|
+
3. adding to overrides: (with a non-empty reason:)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## 7. Overrides
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
overrides:
|
|
161
|
+
- ref: skill:@skaile-ai/audit#1.4.0 # the canonical, fully-pinned ref
|
|
162
|
+
source: https://github.com/skaile-ai/ai-assets # which candidate wins
|
|
163
|
+
reason: "vendored patch for #42; revert when upstream merges" # REQUIRED, non-empty
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
`reason:` is mandatory — empty/missing is a parse error. Use overrides only to
|
|
167
|
+
break a genuine sha conflict; the right long-term fix is to stop publishing
|
|
168
|
+
divergent bytes under the same coordinates.
|
|
169
|
+
|
|
170
|
+
## 8. Version waterfall (recap)
|
|
171
|
+
|
|
172
|
+
1. `assets[].version` in the source `skaile.yaml`
|
|
173
|
+
2. source top-level `version:`
|
|
174
|
+
3. SemVer git tag (`git describe --tags`, `v` stripped)
|
|
175
|
+
4. synthetic `0.0.0-sha.<7char>`
|
|
176
|
+
|
|
177
|
+
## 9. What changed from legacy (migration cheatsheet)
|
|
178
|
+
|
|
179
|
+
| Legacy | Canonical (now) |
|
|
180
|
+
|---|---|
|
|
181
|
+
| `skill:audit@skaile-ai` | `skill:@skaile-ai/audit` |
|
|
182
|
+
| `skill:audit@skaile-ai#1.4.0` | `skill:@skaile-ai/audit#1.4.0` |
|
|
183
|
+
| bare `skill:audit` in a project dep | `skill:@<publisher>/audit` (publisher now required) |
|
|
184
|
+
| `@skaile` publisher | `@skaile-ai` (rebrand) |
|
|
185
|
+
| `repositories:` / `ai_resources:` top-level keys | `sources:` / `dependencies:` |
|
|
186
|
+
|
|
187
|
+
**The legacy `kind:name@<publisher>` grammar no longer parses** — it is a hard
|
|
188
|
+
error (`publisher required in asset ref`). The older `manifest-schema.md` line
|
|
189
|
+
about "still parses for one release with a deprecation warning" is stale; the
|
|
190
|
+
aliases were removed. Run the `migrate-skaile-manifest` skill to convert.
|
|
191
|
+
|
|
192
|
+
## 10. Lock key
|
|
193
|
+
|
|
194
|
+
The lock file (`skaile.lock.yaml`, schema v3) keys each entry by the
|
|
195
|
+
fully-pinned canonical ref `kind:@<publisher>/name#version` and records the
|
|
196
|
+
contributing source URL + commit and per-file `sha256`. Regenerate, never
|
|
197
|
+
hand-edit: `rm skaile.lock.yaml && skaile install`.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: manifest-compliance
|
|
3
|
+
description: "Use when an AI-asset repo has manifests or skaile.yaml refs that fail canonical-name rules — the symptom is a runtime hard error like `publisher required in asset ref \"flow:@skaile-ai/CLI Concept\"` or `invalid asset name \"…\"` thrown by parseAssetRef at install/apply time. Scans a repo with `skaile validate`, then fixes each non-compliant asset identity (skill/agent `name`, flow `id`) to lowercase kebab-case and rewrites every reference (skaile.yaml dependencies/overrides, flow node skill refs, directory names). Trigger when the user says 'fix asset names', 'my manifest is invalid', 'publisher required error', 'invalid asset name', 'make my assets compliant', or 'migrate legacy manifest names'."
|
|
4
|
+
metadata:
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
source: AUTHORED
|
|
7
|
+
stage: beta
|
|
8
|
+
tags: [asset-store, manifest, compliance, validation, naming, migration, repo-author]
|
|
9
|
+
prerequisites:
|
|
10
|
+
inputs_optional:
|
|
11
|
+
- id: repo_path
|
|
12
|
+
label: "Path to the asset repo / library to check"
|
|
13
|
+
type: text
|
|
14
|
+
default: "."
|
|
15
|
+
hint: "Repo root — the tree containing SKILL.md / *.flow.yaml / skaile.yaml files"
|
|
16
|
+
- id: write
|
|
17
|
+
label: "Apply fixes vs report only"
|
|
18
|
+
type: boolean
|
|
19
|
+
default: false
|
|
20
|
+
hint: "If false, only report violations; if true, rename + rewrite refs"
|
|
21
|
+
reads:
|
|
22
|
+
- path: skills/authoring-skaile-manifests/references/dependency-standard.md
|
|
23
|
+
description: "Canonical dependency grammar + asset-ref shape"
|
|
24
|
+
keywords: [manifest, compliance, asset-name, kebab-case, parseAssetRef, validate]
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Manifest Compliance
|
|
28
|
+
|
|
29
|
+
Detect and fix asset manifests that violate the **canonical asset-name rule**,
|
|
30
|
+
then rewrite every reference so the repo installs and applies without the
|
|
31
|
+
`parseAssetRef` hard error.
|
|
32
|
+
|
|
33
|
+
## The rule
|
|
34
|
+
|
|
35
|
+
A canonical asset **name** (and a flow's **id**) is **lowercase kebab-case**:
|
|
36
|
+
|
|
37
|
+
- allowed: `a-z`, `0-9`, single hyphens between segments
|
|
38
|
+
- forbidden: uppercase, spaces, underscores, dots, leading/trailing or double hyphens
|
|
39
|
+
|
|
40
|
+
A full reference is `kind:@<publisher>/name[#version]` — e.g.
|
|
41
|
+
`flow:@skaile-ai/cli-concept`. A name like `"CLI Concept"` (space + uppercase)
|
|
42
|
+
breaks the grammar; because the publisher is present, older builds reported the
|
|
43
|
+
*misleading* `publisher required …` error — the real fault is the name.
|
|
44
|
+
|
|
45
|
+
> A flow's `name:` frontmatter is a human-readable **display title** and may
|
|
46
|
+
> contain spaces/uppercase. The asset identity is the flow's `id:` field —
|
|
47
|
+
> that is what must be kebab-case. Fix `id`, leave `name` alone.
|
|
48
|
+
|
|
49
|
+
## Step 0: Confirm context
|
|
50
|
+
|
|
51
|
+
1. Resolve `repo_path` (default `.`).
|
|
52
|
+
2. Confirm it's a repo/library tree (has `SKILL.md`, `*.flow.yaml`, or
|
|
53
|
+
`skaile.yaml` files somewhere under it).
|
|
54
|
+
|
|
55
|
+
## Step 1: Detect (always run first)
|
|
56
|
+
|
|
57
|
+
Run the repo-wide compliance check:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
bun run cli validate <repo_path>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`skaile validate [path]` walks the tree and reports, per file:
|
|
64
|
+
|
|
65
|
+
- `invalid asset name "…"` / `invalid asset id "…"` — a manifest identity that
|
|
66
|
+
isn't kebab-case (skill/agent `name`, flow `id`).
|
|
67
|
+
- `[dependencies] / [overrides.ref] — …` — a `skaile.yaml` ref that fails
|
|
68
|
+
`parseAssetRef` (the exact path that hard-errors at runtime).
|
|
69
|
+
- `[assets] — invalid asset name "…"` — a published `assets[]` entry identity.
|
|
70
|
+
|
|
71
|
+
Exit code is `1` when any violation is found. Collect the full list before
|
|
72
|
+
fixing — there are usually several, and references are interlinked.
|
|
73
|
+
|
|
74
|
+
If validate is clean, report "compliant" and stop.
|
|
75
|
+
|
|
76
|
+
## Step 2: Plan the renames
|
|
77
|
+
|
|
78
|
+
For each violation, derive the compliant name and present the mapping to the
|
|
79
|
+
user **before** writing:
|
|
80
|
+
|
|
81
|
+
| Bad identity | Proposed kebab-case |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `CLI Concept` | `cli-concept` |
|
|
84
|
+
| `Test Echo Flow` | `test-echo-flow` |
|
|
85
|
+
| `my_audit` | `my-audit` |
|
|
86
|
+
|
|
87
|
+
Kebab-case derivation: lowercase, replace runs of non-`[a-z0-9]` with a single
|
|
88
|
+
hyphen, trim leading/trailing hyphens. Flag collisions (two assets mapping to
|
|
89
|
+
the same name) for the user to disambiguate — never auto-merge.
|
|
90
|
+
|
|
91
|
+
## Step 3: Apply fixes (`write = true`)
|
|
92
|
+
|
|
93
|
+
For each renamed asset, apply **all** of these so no dangling reference remains:
|
|
94
|
+
|
|
95
|
+
1. **Manifest identity** — edit the `name:` (or, for flows, `id:`) field in the
|
|
96
|
+
asset's own manifest (`SKILL.md` frontmatter, `agent.yaml`, `*.flow.yaml`,
|
|
97
|
+
`MCP.md`, `CONNECTOR.md`, `*.preset.yaml`, etc.).
|
|
98
|
+
2. **Directory name** — if the asset's folder is named after the old identity,
|
|
99
|
+
rename the directory to match (use `git mv` so history is preserved).
|
|
100
|
+
3. **Inbound references** — grep the whole tree for the old identity and update
|
|
101
|
+
every occurrence:
|
|
102
|
+
- `skaile.yaml` → `dependencies:`, `overrides[].ref`, `assets[].name`
|
|
103
|
+
- flow nodes → `data.skill` / node refs that name the asset
|
|
104
|
+
- any `kind:@publisher/<old-name>` ref string anywhere
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
grep -rn "<old-name>" <repo_path> --include="*.yaml" --include="*.md" --include="*.json"
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Review each hit — only rewrite genuine asset-ref occurrences, not prose.
|
|
111
|
+
|
|
112
|
+
## Step 4: Verify
|
|
113
|
+
|
|
114
|
+
Re-run the detector and confirm a clean tree:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
bun run cli validate <repo_path>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Expect `All manifests valid` and exit `0`. If violations remain, return to
|
|
121
|
+
Step 3 (a missed inbound reference, or a second-order collision).
|
|
122
|
+
|
|
123
|
+
## Step 5: Suggest commit
|
|
124
|
+
|
|
125
|
+
Summarize the renames applied (old → new) and the files touched, and suggest a
|
|
126
|
+
commit message, e.g.:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
fix(assets): make asset identities canonical kebab-case
|
|
130
|
+
|
|
131
|
+
- flow "CLI Concept" → cli-concept (+ refs)
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## CHECKLIST
|
|
135
|
+
|
|
136
|
+
- [ ] Ran `skaile validate <repo_path>` and collected every violation
|
|
137
|
+
- [ ] Proposed kebab-case mapping reviewed with the user (collisions flagged)
|
|
138
|
+
- [ ] Fixed flow identity in `id:`, not `name:` (display title left intact)
|
|
139
|
+
- [ ] Updated manifest identity, directory name, AND all inbound references
|
|
140
|
+
- [ ] Re-ran `skaile validate` to a clean (exit 0) tree before committing
|