@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.17
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 +21 -1
- package/bin/aiwg.mjs +349 -0
- package/dist/src/a2a/agent-card.js +145 -0
- package/dist/src/a2a/client.js +411 -0
- package/dist/src/a2a/hitl-cli.js +171 -0
- package/dist/src/a2a/hitl-driver.js +370 -0
- package/dist/src/a2a/hitl.js +181 -0
- package/dist/src/a2a/http.js +193 -0
- package/dist/src/a2a/jcs.js +128 -0
- package/dist/src/a2a/jws.js +187 -0
- package/dist/src/a2a/types.js +24 -0
- package/dist/src/a2a/webhook.js +240 -0
- package/dist/src/activity-log/cli.js +348 -0
- package/dist/src/activity-log/parser.js +81 -0
- package/dist/src/activity-log/types.js +50 -0
- package/dist/src/agents/agent-deployer.js +367 -0
- package/dist/src/agents/agent-packager.js +271 -0
- package/dist/src/agents/agent-validator.js +271 -0
- package/dist/src/agents/grounding/knowledge-base.js +161 -0
- package/dist/src/agents/grounding/types.js +12 -0
- package/dist/src/agents/index.js +10 -0
- package/dist/src/agents/packaged-agent-inventory.js +75 -0
- package/dist/src/agents/types.js +7 -0
- package/dist/src/api/index.d.ts +10 -0
- package/dist/src/api/index.js +10 -0
- package/dist/src/artifacts/address-parser.js +73 -0
- package/dist/src/artifacts/audit/cli.js +183 -0
- package/dist/src/artifacts/audit/drift.js +122 -0
- package/dist/src/artifacts/audit/types.js +12 -0
- package/dist/src/artifacts/backends/graphology-backend.js +160 -0
- package/dist/src/artifacts/backends/json-backend.js +129 -0
- package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
- package/dist/src/artifacts/browser-export.js +622 -0
- package/dist/src/artifacts/capability-resolver.js +94 -0
- package/dist/src/artifacts/checksum-manifest.js +91 -0
- package/dist/src/artifacts/citation-parser.js +162 -0
- package/dist/src/artifacts/cli.js +1462 -0
- package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
- package/dist/src/artifacts/corpus-tools/cli.js +393 -0
- package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
- package/dist/src/artifacts/corpus-tools/curator.js +186 -0
- package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
- package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
- package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
- package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
- package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
- package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
- package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
- package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
- package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
- package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
- package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
- package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
- package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
- package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
- package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
- package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
- package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
- package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
- package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
- package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
- package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
- package/dist/src/artifacts/corpus-views/build.js +126 -0
- package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
- package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
- package/dist/src/artifacts/corpus-views/renderers.js +353 -0
- package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
- package/dist/src/artifacts/dep-graph.js +173 -0
- package/dist/src/artifacts/discover-facets.js +375 -0
- package/dist/src/artifacts/embedding-index.js +354 -0
- package/dist/src/artifacts/enrichment/cli.js +240 -0
- package/dist/src/artifacts/enrichment/prompt.js +47 -0
- package/dist/src/artifacts/enrichment/store.js +90 -0
- package/dist/src/artifacts/enrichment/types.js +12 -0
- package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
- package/dist/src/artifacts/fortemi-core-sync.js +251 -0
- package/dist/src/artifacts/fortemi-shard-export.js +44 -0
- package/dist/src/artifacts/fulltext.js +108 -0
- package/dist/src/artifacts/graph-backend.js +51 -0
- package/dist/src/artifacts/graph-query.js +247 -0
- package/dist/src/artifacts/hybrid-query.js +225 -0
- package/dist/src/artifacts/index-builder.js +1089 -0
- package/dist/src/artifacts/index-reader.js +112 -0
- package/dist/src/artifacts/index-status.js +193 -0
- package/dist/src/artifacts/legacy-index-migration.js +169 -0
- package/dist/src/artifacts/move.js +154 -0
- package/dist/src/artifacts/operational-state.js +239 -0
- package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
- package/dist/src/artifacts/query-engine.js +1955 -0
- package/dist/src/artifacts/source-graph.js +529 -0
- package/dist/src/artifacts/stats.js +169 -0
- package/dist/src/artifacts/types.js +606 -0
- package/dist/src/artifacts/views/cli.js +293 -0
- package/dist/src/artifacts/views/definition.js +170 -0
- package/dist/src/artifacts/views/store.js +149 -0
- package/dist/src/artifacts/views/types.js +8 -0
- package/dist/src/artifacts/watcher.js +255 -0
- package/dist/src/catalog/builtin-models.json +636 -0
- package/dist/src/catalog/cli.js +228 -0
- package/dist/src/catalog/cli.mjs +289 -0
- package/dist/src/catalog/index.js +15 -0
- package/dist/src/catalog/loader.js +217 -0
- package/dist/src/catalog/loader.mjs +251 -0
- package/dist/src/catalog/sources.json +41 -0
- package/dist/src/catalog/types.js +8 -0
- package/dist/src/channel/manager.mjs +504 -0
- package/dist/src/cli/agent-spawn.js +178 -0
- package/dist/src/cli/cli-extension-loader.js +245 -0
- package/dist/src/cli/command-log.js +275 -0
- package/dist/src/cli/config-loader.js +232 -0
- package/dist/src/cli/env.js +82 -0
- package/dist/src/cli/errors.js +150 -0
- package/dist/src/cli/find-package-root.js +40 -0
- package/dist/src/cli/git-hooks.js +250 -0
- package/dist/src/cli/handlers/agentcard.js +206 -0
- package/dist/src/cli/handlers/artifacts.js +76 -0
- package/dist/src/cli/handlers/best-practices-audit.js +280 -0
- package/dist/src/cli/handlers/cockpit.js +137 -0
- package/dist/src/cli/handlers/command-log.js +37 -0
- package/dist/src/cli/handlers/daemon.js +59 -0
- package/dist/src/cli/handlers/diagnose.js +300 -0
- package/dist/src/cli/handlers/execution-mode.js +105 -0
- package/dist/src/cli/handlers/feedback.js +341 -0
- package/dist/src/cli/handlers/help.js +147 -0
- package/dist/src/cli/handlers/index.js +302 -0
- package/dist/src/cli/handlers/init.js +179 -0
- package/dist/src/cli/handlers/install.js +129 -0
- package/dist/src/cli/handlers/issues.js +46 -0
- package/dist/src/cli/handlers/lint.js +42 -0
- package/dist/src/cli/handlers/local-executor.js +315 -0
- package/dist/src/cli/handlers/marketplace.js +168 -0
- package/dist/src/cli/handlers/mc.js +1010 -0
- package/dist/src/cli/handlers/models.js +352 -0
- package/dist/src/cli/handlers/packages.js +155 -0
- package/dist/src/cli/handlers/ralph-launcher.js +717 -0
- package/dist/src/cli/handlers/ralph.js +575 -0
- package/dist/src/cli/handlers/refresh.js +432 -0
- package/dist/src/cli/handlers/regenerate.js +336 -0
- package/dist/src/cli/handlers/repo-access.js +109 -0
- package/dist/src/cli/handlers/run.js +165 -0
- package/dist/src/cli/handlers/runtime-info.js +301 -0
- package/dist/src/cli/handlers/sandbox.js +197 -0
- package/dist/src/cli/handlers/scaffolding.js +149 -0
- package/dist/src/cli/handlers/script-runner.js +121 -0
- package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
- package/dist/src/cli/handlers/serve.js +1835 -0
- package/dist/src/cli/handlers/session.js +348 -0
- package/dist/src/cli/handlers/setup.js +440 -0
- package/dist/src/cli/handlers/skill-lint.js +367 -0
- package/dist/src/cli/handlers/skill-usage.js +74 -0
- package/dist/src/cli/handlers/steward.js +567 -0
- package/dist/src/cli/handlers/subcommands.js +1702 -0
- package/dist/src/cli/handlers/team.js +337 -0
- package/dist/src/cli/handlers/types.js +11 -0
- package/dist/src/cli/handlers/use.js +2772 -0
- package/dist/src/cli/handlers/utilities.js +703 -0
- package/dist/src/cli/handlers/version.js +134 -0
- package/dist/src/cli/handlers/workspace-context.js +93 -0
- package/dist/src/cli/handlers/workspace.js +126 -0
- package/dist/src/cli/help-generator.js +178 -0
- package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
- package/dist/src/cli/hooks/executor.js +96 -0
- package/dist/src/cli/hooks/index.js +15 -0
- package/dist/src/cli/hooks/registry.js +143 -0
- package/dist/src/cli/hooks/types.js +13 -0
- package/dist/src/cli/log.js +492 -0
- package/dist/src/cli/project-isolation/detect.js +70 -0
- package/dist/src/cli/project-isolation/index.js +7 -0
- package/dist/src/cli/project-isolation/signals.js +17 -0
- package/dist/src/cli/project-isolation/warning.js +102 -0
- package/dist/src/cli/prompt-utils.js +155 -0
- package/dist/src/cli/provider-deployment-plan.js +126 -0
- package/dist/src/cli/provider-resolution.js +119 -0
- package/dist/src/cli/router.js +305 -0
- package/dist/src/cli/scope-resolver.js +392 -0
- package/dist/src/cli/skill-usage.js +616 -0
- package/dist/src/cli/ui.js +224 -0
- package/dist/src/cli/watch-service.js +203 -0
- package/dist/src/cli/workflow-orchestrator.js +478 -0
- package/dist/src/cli/workspace-signals.js +321 -0
- package/dist/src/community/footer.js +14 -0
- package/dist/src/community/links.js +123 -0
- package/dist/src/community/milestones.js +46 -0
- package/dist/src/community/nudge-policy.js +93 -0
- package/dist/src/config/aiwg-config.js +883 -0
- package/dist/src/config/cli.js +703 -0
- package/dist/src/config/gitignore.js +156 -0
- package/dist/src/config/project-artifacts.js +76 -0
- package/dist/src/config/user-config.js +428 -0
- package/dist/src/config/user-registry.js +127 -0
- package/dist/src/config/workspace.js +276 -0
- package/dist/src/contributors/detect.js +39 -0
- package/dist/src/contributors/discover.js +172 -0
- package/dist/src/contributors/heuristic.js +186 -0
- package/dist/src/contributors/index.js +11 -0
- package/dist/src/contributors/types.js +13 -0
- package/dist/src/contributors/validation.js +116 -0
- package/dist/src/data/community.schema.json +43 -0
- package/dist/src/data/community.yaml +16 -0
- package/dist/src/extensions/capability-index.js +270 -0
- package/dist/src/extensions/claude-hooks-installer.js +268 -0
- package/dist/src/extensions/commands/definitions.js +3485 -0
- package/dist/src/extensions/deployment-registration.js +463 -0
- package/dist/src/extensions/index.js +22 -0
- package/dist/src/extensions/loader.js +132 -0
- package/dist/src/extensions/managed-marker.js +100 -0
- package/dist/src/extensions/manifest.js +196 -0
- package/dist/src/extensions/project-local-activity.js +114 -0
- package/dist/src/extensions/project-local-discovery.js +261 -0
- package/dist/src/extensions/project-local-doctor.js +281 -0
- package/dist/src/extensions/project-local-gitignore.js +176 -0
- package/dist/src/extensions/project-local-paths.js +121 -0
- package/dist/src/extensions/project-local-promote.js +218 -0
- package/dist/src/extensions/project-local-remove.js +373 -0
- package/dist/src/extensions/project-local-scaffold.js +252 -0
- package/dist/src/extensions/project-quickref.js +291 -0
- package/dist/src/extensions/registry.js +368 -0
- package/dist/src/extensions/shadow-resolver.js +271 -0
- package/dist/src/extensions/types.js +86 -0
- package/dist/src/extensions/upstream-registry.js +195 -0
- package/dist/src/extensions/validation.js +631 -0
- package/dist/src/features/catalog.js +88 -0
- package/dist/src/features/cli.js +197 -0
- package/dist/src/features/installer.js +57 -0
- package/dist/src/features/paths.js +14 -0
- package/dist/src/features/runtime.js +21 -0
- package/dist/src/features/status.js +134 -0
- package/dist/src/hooks/laziness-detection.js +532 -0
- package/dist/src/intake/git-history-analyzer.js +486 -0
- package/dist/src/intake/index.js +9 -0
- package/dist/src/issues/cli.js +327 -0
- package/dist/src/issues/index.js +5 -0
- package/dist/src/issues/live.js +154 -0
- package/dist/src/issues/local.js +666 -0
- package/dist/src/issues/sync.js +143 -0
- package/dist/src/issues/types.js +2 -0
- package/dist/src/issues/workflows.js +164 -0
- package/dist/src/kb/cli.js +173 -0
- package/dist/src/lint/cli.js +171 -0
- package/dist/src/lint/loader.js +225 -0
- package/dist/src/lint/reporters.js +141 -0
- package/dist/src/lint/runner.js +364 -0
- package/dist/src/lint/types.js +10 -0
- package/dist/src/marketplace/cache.js +110 -0
- package/dist/src/marketplace/identifier.js +63 -0
- package/dist/src/marketplace/registry.js +36 -0
- package/dist/src/marketplace/sources/clawhub.js +53 -0
- package/dist/src/marketplace/sources/git.js +45 -0
- package/dist/src/marketplace/types.js +9 -0
- package/dist/src/mcp/adapters/codex-runtime.js +224 -0
- package/dist/src/mcp/cli.mjs +1197 -0
- package/dist/src/mcp/elicitation.mjs +149 -0
- package/dist/src/mcp/helpers.mjs +287 -0
- package/dist/src/mcp/index.mjs +11 -0
- package/dist/src/mcp/profiles.js +263 -0
- package/dist/src/mcp/profiles.mjs +360 -0
- package/dist/src/mcp/registry.js +376 -0
- package/dist/src/mcp/registry.mjs +387 -0
- package/dist/src/mcp/server.mjs +633 -0
- package/dist/src/mcp/test-simple.mjs +271 -0
- package/dist/src/mcp/tools/command-run.mjs +101 -0
- package/dist/src/mcp/tools/discovery.mjs +291 -0
- package/dist/src/mcp/tools/interaction.mjs +87 -0
- package/dist/src/mcp/tools/orchestration.mjs +320 -0
- package/dist/src/mcp/tools/subsystems.mjs +640 -0
- package/dist/src/memory/cli.js +166 -0
- package/dist/src/memory/project-registry.js +282 -0
- package/dist/src/metrics/artifact-metrics.js +184 -0
- package/dist/src/metrics/context-budget.js +174 -0
- package/dist/src/metrics/token-counter.js +133 -0
- package/dist/src/models/config-loader.js +228 -0
- package/dist/src/models/index.js +22 -0
- package/dist/src/models/model-capabilities.v1.json +120 -0
- package/dist/src/models/model-catalog.v1.json +96 -0
- package/dist/src/models/model-discovery.js +521 -0
- package/dist/src/models/provider-models.js +73 -0
- package/dist/src/models/provider-policy.js +273 -0
- package/dist/src/models/resolver.js +245 -0
- package/dist/src/models/router.js +70 -0
- package/dist/src/models/types.js +8 -0
- package/dist/src/models/wrapper-deployment.js +178 -0
- package/dist/src/models/wrapper-route.js +54 -0
- package/dist/src/ops/cli.js +268 -0
- package/dist/src/ops/registry.js +623 -0
- package/dist/src/packages/adapters/clawhub.js +113 -0
- package/dist/src/packages/adapters/git.js +153 -0
- package/dist/src/packages/adapters/gitea.js +93 -0
- package/dist/src/packages/adapters/github.js +69 -0
- package/dist/src/packages/adapters/local-cache.js +89 -0
- package/dist/src/packages/package-registry.js +143 -0
- package/dist/src/packages/registry.js +238 -0
- package/dist/src/packages/types.js +11 -0
- package/dist/src/plugin/cross-framework-ops.js +475 -0
- package/dist/src/plugin/framework-config-loader.js +235 -0
- package/dist/src/plugin/framework-detector.js +186 -0
- package/dist/src/plugin/framework-isolator.js +341 -0
- package/dist/src/plugin/framework-migration.js +371 -0
- package/dist/src/plugin/metadata-validator.js +906 -0
- package/dist/src/plugin/plugin-installer.js +436 -0
- package/dist/src/plugin/plugin-status.js +369 -0
- package/dist/src/plugin/plugin-uninstaller.js +473 -0
- package/dist/src/plugin/registry-validator.js +344 -0
- package/dist/src/plugin/skill-command-translator.js +415 -0
- package/dist/src/plugin/workspace-creator.js +189 -0
- package/dist/src/plugin/workspace-migrator.js +821 -0
- package/dist/src/policy/authorization.js +390 -0
- package/dist/src/policy/repo-access.js +215 -0
- package/dist/src/provenance/cli.js +16 -0
- package/dist/src/providers/capability-matrix.js +300 -0
- package/dist/src/providers/capability-matrix.yaml +514 -0
- package/dist/src/providers/provider-definitions.js +977 -0
- package/dist/src/providers/provider-definitions.mjs +159 -0
- package/dist/src/providers/provider-inventory.js +169 -0
- package/dist/src/quality/feedback-ab.js +174 -0
- package/dist/src/quality/feedback-collector.js +176 -0
- package/dist/src/quality/feedback-tracker.js +123 -0
- package/dist/src/quality/patterns/adr.json +24 -0
- package/dist/src/quality/patterns/sad.json +24 -0
- package/dist/src/quality/patterns/test-plan.json +24 -0
- package/dist/src/quality/patterns/use-case.json +24 -0
- package/dist/src/quality/scoring.js +157 -0
- package/dist/src/reflections/cli.js +15 -0
- package/dist/src/release/plan.js +139 -0
- package/dist/src/research/cache/manager.js +227 -0
- package/dist/src/research/clients/arxiv.js +156 -0
- package/dist/src/research/clients/base.js +197 -0
- package/dist/src/research/clients/crossref.js +112 -0
- package/dist/src/research/clients/semantic-scholar.js +126 -0
- package/dist/src/research/clients/unpaywall.js +87 -0
- package/dist/src/research/index.js +14 -0
- package/dist/src/research/query-cli.js +336 -0
- package/dist/src/research/services/acquisition.js +313 -0
- package/dist/src/research/services/archival.js +225 -0
- package/dist/src/research/services/citation.js +279 -0
- package/dist/src/research/services/discovery.js +243 -0
- package/dist/src/research/services/documentation.js +269 -0
- package/dist/src/research/services/index.js +14 -0
- package/dist/src/research/services/provenance.js +279 -0
- package/dist/src/research/services/quality.js +370 -0
- package/dist/src/research/services/types.js +7 -0
- package/dist/src/research/storage-cli.js +20 -0
- package/dist/src/research/types.js +47 -0
- package/dist/src/resources/index.d.ts +2 -0
- package/dist/src/resources/index.js +2 -0
- package/dist/src/resources/web-release.d.ts +89 -0
- package/dist/src/resources/web-release.js +882 -0
- package/dist/src/rlm/cache/cli.js +162 -0
- package/dist/src/rlm/cache/hash.js +35 -0
- package/dist/src/rlm/cache/store.js +170 -0
- package/dist/src/rlm/cache/types.js +8 -0
- package/dist/src/rlm/cli.js +650 -0
- package/dist/src/serve/a2a-terminal-observer.js +120 -0
- package/dist/src/serve/agent-router.js +205 -0
- package/dist/src/serve/dispatch-router.js +171 -0
- package/dist/src/serve/executor-registry.js +715 -0
- package/dist/src/serve/mission-conductor.js +177 -0
- package/dist/src/serve/orchestrator-adapter.js +113 -0
- package/dist/src/serve/orchestrator-override.js +94 -0
- package/dist/src/serve/orchestrator-pty.js +133 -0
- package/dist/src/serve/pty-bridge.js +799 -0
- package/dist/src/serve/sandbox-registry.js +832 -0
- package/dist/src/serve/screen-reader.js +228 -0
- package/dist/src/serve/stack-adapters.js +68 -0
- package/dist/src/serve/telemetry.js +143 -0
- package/dist/src/skills/adapters/clawhub.js +250 -0
- package/dist/src/skills/adapters/local.js +335 -0
- package/dist/src/skills/adapters/openclaw.js +316 -0
- package/dist/src/skills/cli.js +334 -0
- package/dist/src/skills/registry.js +117 -0
- package/dist/src/skills/run.js +259 -0
- package/dist/src/skills/runtime.js +94 -0
- package/dist/src/skills/types.js +10 -0
- package/dist/src/smiths/agentsmith/demo.js +116 -0
- package/dist/src/smiths/agentsmith/examples.js +300 -0
- package/dist/src/smiths/agentsmith/generator.js +503 -0
- package/dist/src/smiths/agentsmith/index.js +11 -0
- package/dist/src/smiths/agentsmith/types.js +8 -0
- package/dist/src/smiths/commandsmith/example.js +220 -0
- package/dist/src/smiths/commandsmith/generator.js +288 -0
- package/dist/src/smiths/commandsmith/index.js +41 -0
- package/dist/src/smiths/commandsmith/templates.js +296 -0
- package/dist/src/smiths/commandsmith/types.js +7 -0
- package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
- package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
- package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
- package/dist/src/smiths/context-pipeline/discovery.js +187 -0
- package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
- package/dist/src/smiths/context-pipeline/finalization.js +147 -0
- package/dist/src/smiths/context-pipeline/generator.js +477 -0
- package/dist/src/smiths/context-pipeline/index.js +30 -0
- package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
- package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
- package/dist/src/smiths/context-pipeline/overflow.js +212 -0
- package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
- package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
- package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
- package/dist/src/smiths/context-pipeline/types.js +23 -0
- package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
- package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
- package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
- package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
- package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
- package/dist/src/smiths/hook-bridge/index.js +79 -0
- package/dist/src/smiths/hook-bridge/loader.js +116 -0
- package/dist/src/smiths/hook-bridge/shim.js +89 -0
- package/dist/src/smiths/hook-bridge/types.js +31 -0
- package/dist/src/smiths/index.js +39 -0
- package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
- package/dist/src/smiths/mcpsmith/example.js +119 -0
- package/dist/src/smiths/mcpsmith/generator.js +236 -0
- package/dist/src/smiths/mcpsmith/index.js +17 -0
- package/dist/src/smiths/mcpsmith/types.js +10 -0
- package/dist/src/smiths/platform-paths.js +101 -0
- package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
- package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
- package/dist/src/smiths/skillsmith/demo.js +83 -0
- package/dist/src/smiths/skillsmith/examples.js +161 -0
- package/dist/src/smiths/skillsmith/generator.js +316 -0
- package/dist/src/smiths/skillsmith/index.js +12 -0
- package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
- package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
- package/dist/src/smiths/skillsmith/types.js +9 -0
- package/dist/src/smiths/toolsmith/index.js +10 -0
- package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
- package/dist/src/smiths/toolsmith/types.js +8 -0
- package/dist/src/storage/backends/fortemi.js +227 -0
- package/dist/src/storage/backends/fs.js +134 -0
- package/dist/src/storage/backends/logseq.js +309 -0
- package/dist/src/storage/backends/obsidian.js +233 -0
- package/dist/src/storage/cli.js +468 -0
- package/dist/src/storage/config.js +272 -0
- package/dist/src/storage/index.js +108 -0
- package/dist/src/storage/subsystem-cli.js +201 -0
- package/dist/src/storage/types.js +33 -0
- package/dist/src/testing/corpus/corpus-builder.js +383 -0
- package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
- package/dist/src/testing/corpus/index.js +10 -0
- package/dist/src/testing/fixtures/index.js +9 -0
- package/dist/src/testing/fixtures/test-data-factory.js +472 -0
- package/dist/src/testing/generators/index.js +11 -0
- package/dist/src/testing/generators/test-case-generator.js +393 -0
- package/dist/src/testing/generators/test-code-generator.js +384 -0
- package/dist/src/testing/generators/use-case-parser.js +325 -0
- package/dist/src/testing/index.js +11 -0
- package/dist/src/tracker/capability-protocol.js +118 -0
- package/dist/src/update/checker.mjs +396 -0
- package/dist/src/update/notifier.mjs +235 -0
- package/dist/src/writing/content-diversifier.js +804 -0
- package/dist/src/writing/example-generator.js +959 -0
- package/dist/src/writing/example-templates.js +99 -0
- package/dist/src/writing/pattern-library.js +486 -0
- package/dist/src/writing/patterns/banned-phrases.json +4413 -0
- package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
- package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
- package/dist/src/writing/patterns/hedging-language.json +2096 -0
- package/dist/src/writing/patterns/transition-words.json +1285 -0
- package/dist/src/writing/patterns/weak-verbs.json +1112 -0
- package/dist/src/writing/prompt-optimizer.js +660 -0
- package/dist/src/writing/prompt-templates.js +583 -0
- package/dist/src/writing/scoring-config-loader.js +168 -0
- package/dist/src/writing/validation-engine.js +595 -0
- package/dist/src/writing/validation-rules.js +380 -0
- package/dist/src/writing/voice-analyzer.js +439 -0
- package/dist/src/writing/voice-calibration.js +661 -0
- package/dist/src/writing/voice-profiles.json +588 -0
- package/package.json +64 -9
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Deployment Collision Detector
|
|
3
|
+
*
|
|
4
|
+
* Scans target platform directories before `aiwg use` to identify name conflicts
|
|
5
|
+
* between skills being deployed and existing skills already present.
|
|
6
|
+
*
|
|
7
|
+
* Severity levels:
|
|
8
|
+
* - none — target path does not exist, deploy silently
|
|
9
|
+
* - info — target exists and is owned by the same namespace, overwrite silently
|
|
10
|
+
* - warn — target exists and is owned by a different namespace or user, prompt user
|
|
11
|
+
* - error — name matches a known platform built-in or AIWG CLI command, block deployment
|
|
12
|
+
*
|
|
13
|
+
* @see adr-skill-namespace-strategy.md
|
|
14
|
+
* @implements #698
|
|
15
|
+
* @implements #804
|
|
16
|
+
*/
|
|
17
|
+
import { promises as fs } from 'fs';
|
|
18
|
+
import { createHash } from 'crypto';
|
|
19
|
+
import * as path from 'path';
|
|
20
|
+
// ============================================
|
|
21
|
+
// Platform Built-in Blocklists
|
|
22
|
+
// ============================================
|
|
23
|
+
/**
|
|
24
|
+
* Platform built-in commands that must never be overwritten.
|
|
25
|
+
* Attempting to deploy a skill with one of these names is an ERROR.
|
|
26
|
+
*/
|
|
27
|
+
const PLATFORM_BUILTINS = {
|
|
28
|
+
'claude': [
|
|
29
|
+
'help', 'clear', 'compact', 'review', 'init', 'doctor',
|
|
30
|
+
'memory', 'settings', 'logout', 'login', 'mcp', 'migrate',
|
|
31
|
+
],
|
|
32
|
+
'cursor': ['settings', 'chat', 'edit'],
|
|
33
|
+
'codex': ['help', 'run', 'exec'],
|
|
34
|
+
'copilot': ['help', 'explain', 'fix', 'tests', 'review'],
|
|
35
|
+
'windsurf': ['help', 'settings'],
|
|
36
|
+
'opencode': ['help', 'run'],
|
|
37
|
+
'warp': ['help', 'settings'],
|
|
38
|
+
'hermes': [],
|
|
39
|
+
'openclaw': [],
|
|
40
|
+
'openhuman': [],
|
|
41
|
+
'factory': [],
|
|
42
|
+
'generic': [],
|
|
43
|
+
};
|
|
44
|
+
// Note: previously this module also blocked `aiwg-{cliCommand}` slugs (e.g.
|
|
45
|
+
// `aiwg-doctor`) as "shadowing" the AIWG CLI. That check was removed because
|
|
46
|
+
// it directly contradicted the namespace migration strategy: `/aiwg-doctor`
|
|
47
|
+
// IS the canonical slug for the doctor skill (the bare `doctor` collides with
|
|
48
|
+
// Claude's built-in). Slash commands and shell CLI commands live on different
|
|
49
|
+
// surfaces and do not actually conflict at runtime.
|
|
50
|
+
// See: docs/migration/skill-namespace-migration.md, .aiwg/architecture/adr-skill-namespace-strategy.md
|
|
51
|
+
// ============================================
|
|
52
|
+
// Ownership Attribution
|
|
53
|
+
// ============================================
|
|
54
|
+
/**
|
|
55
|
+
* Determine if an existing skill directory is owned by the given namespace.
|
|
56
|
+
*
|
|
57
|
+
* A skill is owned by `namespace` when ANY of:
|
|
58
|
+
* 1. Its SKILL.md frontmatter contains `namespace: {namespace}`
|
|
59
|
+
* 2. Its parent directory is named after the namespace (e.g. `.claude/skills/aiwg/`)
|
|
60
|
+
*
|
|
61
|
+
* This generalises the original AIWG-only check to support any package namespace,
|
|
62
|
+
* enabling correct cross-namespace collision severity for third-party packages (#804).
|
|
63
|
+
*
|
|
64
|
+
* @param skillPath - Absolute path to the skill directory
|
|
65
|
+
* @param namespace - Namespace to test ownership against (default: 'aiwg')
|
|
66
|
+
*/
|
|
67
|
+
export async function isOwnedByNamespace(skillPath, namespace = 'aiwg') {
|
|
68
|
+
// Check 1: namespace in SKILL.md frontmatter
|
|
69
|
+
const skillFile = path.join(skillPath, 'SKILL.md');
|
|
70
|
+
try {
|
|
71
|
+
const content = await fs.readFile(skillFile, 'utf-8');
|
|
72
|
+
// Match `namespace: <value>` line where value equals the queried namespace
|
|
73
|
+
const nsMatch = content.match(/^namespace:\s*(.+?)\s*$/m);
|
|
74
|
+
if (nsMatch && nsMatch[1] === namespace) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// file doesn't exist or unreadable — not owned
|
|
80
|
+
}
|
|
81
|
+
// Check 2: deployed under a namespace subdirectory
|
|
82
|
+
const parentDir = path.basename(path.dirname(skillPath));
|
|
83
|
+
if (parentDir === namespace) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
// ============================================
|
|
89
|
+
// Content Hash Comparison
|
|
90
|
+
// ============================================
|
|
91
|
+
/**
|
|
92
|
+
* Compute MD5 hash of a file's content. Returns null if unreadable.
|
|
93
|
+
*/
|
|
94
|
+
async function fileHash(filePath) {
|
|
95
|
+
try {
|
|
96
|
+
const content = await fs.readFile(filePath);
|
|
97
|
+
return createHash('md5').update(content).digest('hex');
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if the source skill SKILL.md matches the deployed SKILL.md by content hash.
|
|
105
|
+
* Returns true when both exist and have identical content (no update needed).
|
|
106
|
+
*/
|
|
107
|
+
async function skillContentUnchanged(sourceDir, deployedDir) {
|
|
108
|
+
const srcFile = path.join(sourceDir, 'SKILL.md');
|
|
109
|
+
const dstFile = path.join(deployedDir, 'SKILL.md');
|
|
110
|
+
const [srcHash, dstHash] = await Promise.all([fileHash(srcFile), fileHash(dstFile)]);
|
|
111
|
+
if (!srcHash || !dstHash)
|
|
112
|
+
return false;
|
|
113
|
+
return srcHash === dstHash;
|
|
114
|
+
}
|
|
115
|
+
// ============================================
|
|
116
|
+
// Collision Check
|
|
117
|
+
// ============================================
|
|
118
|
+
/**
|
|
119
|
+
* Check for deployment collisions before writing skills to a platform directory.
|
|
120
|
+
*
|
|
121
|
+
* Ownership comparison uses the deploying package's namespace:
|
|
122
|
+
* - Same namespace overwrites → `info` severity (silent upgrade)
|
|
123
|
+
* - Cross-namespace or user-owned overwrites → `warn` severity (user confirmation)
|
|
124
|
+
*
|
|
125
|
+
* @param options - Collision check parameters
|
|
126
|
+
* @returns Array of collision results, one per skill name. Only non-`none` results
|
|
127
|
+
* are returned (clean deployments are omitted).
|
|
128
|
+
*/
|
|
129
|
+
export async function checkCollisions(options) {
|
|
130
|
+
const { platform, projectPath, skillNames, skillsBaseDir, sourceSkillsDir, namespace = 'aiwg' } = options;
|
|
131
|
+
const platformBuiltins = new Set(PLATFORM_BUILTINS[platform] ?? []);
|
|
132
|
+
const results = [];
|
|
133
|
+
for (const skillName of skillNames) {
|
|
134
|
+
const targetPath = skillsBaseDir
|
|
135
|
+
? path.join(skillsBaseDir, skillName)
|
|
136
|
+
: path.join(projectPath, `.${platform}/skills`, skillName);
|
|
137
|
+
// Check 1: Platform built-in collision (literal slug only).
|
|
138
|
+
//
|
|
139
|
+
// The namespaced canonical slug (e.g. `aiwg-doctor`) is the actual command
|
|
140
|
+
// registered with the platform — it does NOT collide with the platform's bare
|
|
141
|
+
// built-in (`doctor`). The whole point of the `aiwg-` prefix per
|
|
142
|
+
// `docs/migration/skill-namespace-migration.md` is to side-step platform built-ins.
|
|
143
|
+
//
|
|
144
|
+
// Only check the literal skillName here. Bare names like `doctor` (no prefix)
|
|
145
|
+
// are still caught and blocked.
|
|
146
|
+
if (platformBuiltins.has(skillName)) {
|
|
147
|
+
results.push({
|
|
148
|
+
skillName,
|
|
149
|
+
targetPath,
|
|
150
|
+
severity: 'error',
|
|
151
|
+
reason: `'${skillName}' matches a ${platform} platform built-in command`,
|
|
152
|
+
blocksDeployment: true,
|
|
153
|
+
});
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
// Check 2: Target path existence
|
|
157
|
+
let exists = false;
|
|
158
|
+
try {
|
|
159
|
+
await fs.access(targetPath);
|
|
160
|
+
exists = true;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// doesn't exist — no collision
|
|
164
|
+
}
|
|
165
|
+
if (!exists) {
|
|
166
|
+
// No collision, don't add to results
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
// Check 3: Ownership of existing skill
|
|
170
|
+
// Same-namespace overwrites are silent upgrades (info).
|
|
171
|
+
// Cross-namespace or unowned overwrites require user confirmation (warn).
|
|
172
|
+
const ownedBySameNamespace = await isOwnedByNamespace(targetPath, namespace);
|
|
173
|
+
if (ownedBySameNamespace) {
|
|
174
|
+
// Check if content is actually unchanged — skip silently if identical
|
|
175
|
+
if (sourceSkillsDir) {
|
|
176
|
+
const sourceDir = path.join(sourceSkillsDir, skillName);
|
|
177
|
+
const unchanged = await skillContentUnchanged(sourceDir, targetPath);
|
|
178
|
+
if (unchanged) {
|
|
179
|
+
// Identical content — no collision, no output needed
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
results.push({
|
|
184
|
+
skillName,
|
|
185
|
+
targetPath,
|
|
186
|
+
severity: 'info',
|
|
187
|
+
reason: `'${skillName}' updating`,
|
|
188
|
+
blocksDeployment: false,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
results.push({
|
|
193
|
+
skillName,
|
|
194
|
+
targetPath,
|
|
195
|
+
severity: 'warn',
|
|
196
|
+
reason: `'${skillName}' already exists at ${targetPath} and is not owned by namespace '${namespace}' — will overwrite existing skill`,
|
|
197
|
+
blocksDeployment: false,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return results;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Format collision results as a human-readable warning block.
|
|
205
|
+
*
|
|
206
|
+
* @param results - Collision results from `checkCollisions()`
|
|
207
|
+
* @param options - Formatting options
|
|
208
|
+
* @param options.verbose - When false, suppress info-level messages (same-namespace updates)
|
|
209
|
+
* @returns Formatted string for CLI output, or empty string if no results
|
|
210
|
+
*/
|
|
211
|
+
export function formatCollisionReport(results, options = {}) {
|
|
212
|
+
if (results.length === 0)
|
|
213
|
+
return '';
|
|
214
|
+
const { verbose = false } = options;
|
|
215
|
+
const errors = results.filter((r) => r.severity === 'error');
|
|
216
|
+
const warnings = results.filter((r) => r.severity === 'warn');
|
|
217
|
+
const infos = results.filter((r) => r.severity === 'info');
|
|
218
|
+
const lines = [];
|
|
219
|
+
if (errors.length > 0) {
|
|
220
|
+
lines.push('');
|
|
221
|
+
lines.push('ERROR: Deployment blocked for the following skills:');
|
|
222
|
+
for (const r of errors) {
|
|
223
|
+
lines.push(` ✗ ${r.skillName}: ${r.reason}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (warnings.length > 0) {
|
|
227
|
+
lines.push('');
|
|
228
|
+
lines.push('WARNING: The following skills will overwrite content from a different namespace:');
|
|
229
|
+
for (const r of warnings) {
|
|
230
|
+
lines.push(` ⚠ ${r.skillName}: ${r.reason}`);
|
|
231
|
+
}
|
|
232
|
+
lines.push('');
|
|
233
|
+
lines.push(' Use --force to overwrite, or --skip-conflicts to skip these skills.');
|
|
234
|
+
}
|
|
235
|
+
// Info-level (same-namespace updates) only shown in verbose mode
|
|
236
|
+
if (verbose && infos.length > 0 && errors.length === 0 && warnings.length === 0) {
|
|
237
|
+
for (const r of infos) {
|
|
238
|
+
lines.push(` ℹ ${r.skillName}: ${r.reason}`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return lines.join('\n');
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Check if any collision results block deployment.
|
|
245
|
+
*/
|
|
246
|
+
export function hasBlockingCollisions(results) {
|
|
247
|
+
return results.some((r) => r.blocksDeployment);
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=collision-detector.js.map
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* SkillSmith Demo
|
|
4
|
+
*
|
|
5
|
+
* Demonstrates SkillSmith functionality.
|
|
6
|
+
* Run: node --loader ts-node/esm src/smiths/skillsmith/demo.ts
|
|
7
|
+
*
|
|
8
|
+
* @module smiths/skillsmith/demo
|
|
9
|
+
*/
|
|
10
|
+
import { generateSkill, deploySkill } from './generator.js';
|
|
11
|
+
import { PlatformSkillResolver } from './platform-resolver.js';
|
|
12
|
+
// SkillOptions type used inline in generateSkill calls
|
|
13
|
+
async function demo() {
|
|
14
|
+
console.log('=== SkillSmith Demo ===\n');
|
|
15
|
+
// Example 1: Generate a basic skill
|
|
16
|
+
console.log('1. Generating basic skill...');
|
|
17
|
+
const basicSkill = await generateSkill({
|
|
18
|
+
name: 'hello-world',
|
|
19
|
+
description: 'A simple hello world skill',
|
|
20
|
+
platform: 'claude',
|
|
21
|
+
projectPath: '/tmp/demo',
|
|
22
|
+
triggerPhrases: ['hello', 'say hello', 'greet'],
|
|
23
|
+
});
|
|
24
|
+
console.log(` Generated: ${basicSkill.name}`);
|
|
25
|
+
console.log(` Platform: ${basicSkill.platform}`);
|
|
26
|
+
console.log(` Deploy path: ${basicSkill.path}\n`);
|
|
27
|
+
// Example 2: Generate skill with tools
|
|
28
|
+
console.log('2. Generating skill with tools...');
|
|
29
|
+
const toolSkill = await generateSkill({
|
|
30
|
+
name: 'file-analyzer',
|
|
31
|
+
description: 'Analyzes file structure and content',
|
|
32
|
+
platform: 'claude',
|
|
33
|
+
projectPath: '/tmp/demo',
|
|
34
|
+
tools: ['Read', 'Glob', 'Grep'],
|
|
35
|
+
triggerPhrases: ['analyze files', 'check structure', 'review files'],
|
|
36
|
+
createReferences: true,
|
|
37
|
+
});
|
|
38
|
+
console.log(` Generated: ${toolSkill.name}`);
|
|
39
|
+
console.log(` Tools: ${toolSkill.content.match(/tools: (.+)/)?.[1] || 'none'}`);
|
|
40
|
+
console.log(` References: ${toolSkill.references?.length || 0} files\n`);
|
|
41
|
+
// Example 3: Platform-specific paths
|
|
42
|
+
console.log('3. Platform-specific deployment paths:');
|
|
43
|
+
const platforms = ['claude', 'factory', 'cursor'];
|
|
44
|
+
platforms.forEach((platform) => {
|
|
45
|
+
const basePath = PlatformSkillResolver.getBaseDir(platform, '/project');
|
|
46
|
+
const supports = PlatformSkillResolver.supportsSkills(platform);
|
|
47
|
+
const alternative = PlatformSkillResolver.getAlternativeStrategy(platform);
|
|
48
|
+
console.log(` ${platform}:`);
|
|
49
|
+
console.log(` Base: ${basePath}`);
|
|
50
|
+
console.log(` Native support: ${supports}`);
|
|
51
|
+
if (!supports && alternative) {
|
|
52
|
+
console.log(` Alternative: ${alternative}`);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
console.log();
|
|
56
|
+
// Example 4: Skill name validation
|
|
57
|
+
console.log('4. Skill name validation:');
|
|
58
|
+
const names = ['valid-skill', 'Invalid_Name', 'also-valid', '-invalid'];
|
|
59
|
+
names.forEach((name) => {
|
|
60
|
+
const result = PlatformSkillResolver.validateSkillName(name);
|
|
61
|
+
console.log(` "${name}": ${result.valid ? '✓ valid' : '✗ ' + result.error}`);
|
|
62
|
+
});
|
|
63
|
+
console.log();
|
|
64
|
+
// Example 5: Dry run deployment
|
|
65
|
+
console.log('5. Dry run deployment...');
|
|
66
|
+
const result = await deploySkill(basicSkill, '/tmp/demo', true);
|
|
67
|
+
console.log(` Success: ${result.success}`);
|
|
68
|
+
console.log(` Deploy path: ${result.deployPath}`);
|
|
69
|
+
console.log(` Files created: ${result.filesCreated.length}\n`);
|
|
70
|
+
// Example 6: Show generated content
|
|
71
|
+
console.log('6. Sample generated content:');
|
|
72
|
+
console.log(' ---');
|
|
73
|
+
const lines = basicSkill.content.split('\n').slice(0, 20);
|
|
74
|
+
lines.forEach((line) => console.log(` ${line}`));
|
|
75
|
+
console.log(' ...\n');
|
|
76
|
+
console.log('=== Demo Complete ===');
|
|
77
|
+
}
|
|
78
|
+
// Run demo if executed directly
|
|
79
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
80
|
+
demo().catch(console.error);
|
|
81
|
+
}
|
|
82
|
+
export { demo };
|
|
83
|
+
//# sourceMappingURL=demo.js.map
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SkillSmith Usage Examples
|
|
3
|
+
*
|
|
4
|
+
* Demonstrates how to use SkillSmith to generate skills.
|
|
5
|
+
*
|
|
6
|
+
* @module smiths/skillsmith/examples
|
|
7
|
+
*/
|
|
8
|
+
import { generateSkill, deploySkill } from './generator.js';
|
|
9
|
+
/**
|
|
10
|
+
* Example 1: Generate a basic voice application skill
|
|
11
|
+
*/
|
|
12
|
+
export async function generateVoiceApplySkill(projectPath) {
|
|
13
|
+
const options = {
|
|
14
|
+
name: 'voice-apply',
|
|
15
|
+
description: 'Applies voice profiles to transform content',
|
|
16
|
+
platform: 'claude',
|
|
17
|
+
projectPath,
|
|
18
|
+
triggerPhrases: [
|
|
19
|
+
'apply voice',
|
|
20
|
+
'use voice',
|
|
21
|
+
'write in voice',
|
|
22
|
+
'transform to voice',
|
|
23
|
+
],
|
|
24
|
+
tools: ['Read', 'Write'],
|
|
25
|
+
createReferences: true,
|
|
26
|
+
version: '1.0.0',
|
|
27
|
+
};
|
|
28
|
+
const skill = await generateSkill(options);
|
|
29
|
+
const result = await deploySkill(skill, projectPath);
|
|
30
|
+
console.log(`Deployed voice-apply skill to: ${result.deployPath}`);
|
|
31
|
+
console.log(`Files created: ${result.filesCreated.length}`);
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Example 2: Generate a code analysis skill
|
|
36
|
+
*/
|
|
37
|
+
export async function generateCodeAnalyzerSkill(projectPath) {
|
|
38
|
+
const options = {
|
|
39
|
+
name: 'code-analyzer',
|
|
40
|
+
description: 'Analyzes code quality, patterns, and potential issues',
|
|
41
|
+
platform: 'claude',
|
|
42
|
+
projectPath,
|
|
43
|
+
triggerPhrases: [
|
|
44
|
+
'analyze code',
|
|
45
|
+
'check code quality',
|
|
46
|
+
'review code',
|
|
47
|
+
'find code issues',
|
|
48
|
+
],
|
|
49
|
+
tools: ['Read', 'Glob', 'Grep', 'Bash'],
|
|
50
|
+
createReferences: true,
|
|
51
|
+
};
|
|
52
|
+
const skill = await generateSkill(options);
|
|
53
|
+
const result = await deploySkill(skill, projectPath);
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Example 3: Generate a test generation skill
|
|
58
|
+
*/
|
|
59
|
+
export async function generateTestGeneratorSkill(projectPath) {
|
|
60
|
+
const options = {
|
|
61
|
+
name: 'test-generator',
|
|
62
|
+
description: 'Generates comprehensive test suites from code',
|
|
63
|
+
platform: 'claude',
|
|
64
|
+
projectPath,
|
|
65
|
+
triggerPhrases: ['generate tests', 'create test suite', 'write tests for'],
|
|
66
|
+
tools: ['Read', 'Write', 'Glob', 'Grep'],
|
|
67
|
+
guidance: 'Focus on edge cases and integration scenarios',
|
|
68
|
+
};
|
|
69
|
+
const skill = await generateSkill(options);
|
|
70
|
+
return deploySkill(skill, projectPath);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Example 4: Generate skill with dry-run
|
|
74
|
+
*/
|
|
75
|
+
export async function previewSkillGeneration(projectPath) {
|
|
76
|
+
const skill = await generateSkill({
|
|
77
|
+
name: 'example-skill',
|
|
78
|
+
description: 'An example skill',
|
|
79
|
+
platform: 'claude',
|
|
80
|
+
projectPath,
|
|
81
|
+
triggerPhrases: ['example', 'demo skill'],
|
|
82
|
+
});
|
|
83
|
+
// Preview without writing files
|
|
84
|
+
const result = await deploySkill(skill, projectPath, true);
|
|
85
|
+
console.log('Dry run result:', result);
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Example 5: Generate skill for multiple platforms
|
|
90
|
+
*/
|
|
91
|
+
export async function generateMultiPlatformSkill(projectPath) {
|
|
92
|
+
const platforms = ['claude', 'factory', 'cursor'];
|
|
93
|
+
const results = [];
|
|
94
|
+
for (const platform of platforms) {
|
|
95
|
+
const skill = await generateSkill({
|
|
96
|
+
name: 'multi-platform-skill',
|
|
97
|
+
description: 'A skill that works across platforms',
|
|
98
|
+
platform,
|
|
99
|
+
projectPath,
|
|
100
|
+
triggerPhrases: ['multi platform', 'cross platform'],
|
|
101
|
+
});
|
|
102
|
+
const result = await deploySkill(skill, projectPath);
|
|
103
|
+
results.push(result);
|
|
104
|
+
console.log(`Deployed to ${platform}: ${result.deployPath}`);
|
|
105
|
+
}
|
|
106
|
+
return results;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Example 6: Generate skill with custom version
|
|
110
|
+
*/
|
|
111
|
+
export async function generateVersionedSkill(projectPath) {
|
|
112
|
+
const skill = await generateSkill({
|
|
113
|
+
name: 'versioned-skill',
|
|
114
|
+
description: 'A skill with version control',
|
|
115
|
+
platform: 'claude',
|
|
116
|
+
projectPath,
|
|
117
|
+
version: '2.1.0',
|
|
118
|
+
triggerPhrases: ['versioned example'],
|
|
119
|
+
});
|
|
120
|
+
return deploySkill(skill, projectPath);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Example 7: Batch generate skills from configuration
|
|
124
|
+
*/
|
|
125
|
+
export async function batchGenerateSkills(projectPath, skillConfigs) {
|
|
126
|
+
const results = [];
|
|
127
|
+
for (const config of skillConfigs) {
|
|
128
|
+
const skill = await generateSkill({
|
|
129
|
+
...config,
|
|
130
|
+
projectPath,
|
|
131
|
+
});
|
|
132
|
+
const result = await deploySkill(skill, projectPath);
|
|
133
|
+
results.push(result);
|
|
134
|
+
}
|
|
135
|
+
console.log(`Generated ${results.length} skills`);
|
|
136
|
+
return results;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Example usage in a CLI or script
|
|
140
|
+
*/
|
|
141
|
+
export async function exampleCliUsage() {
|
|
142
|
+
const projectPath = process.cwd();
|
|
143
|
+
// Generate a single skill
|
|
144
|
+
await generateVoiceApplySkill(projectPath);
|
|
145
|
+
// Generate multiple skills
|
|
146
|
+
await batchGenerateSkills(projectPath, [
|
|
147
|
+
{
|
|
148
|
+
name: 'skill-one',
|
|
149
|
+
description: 'First skill',
|
|
150
|
+
platform: 'claude',
|
|
151
|
+
triggerPhrases: ['skill one'],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: 'skill-two',
|
|
155
|
+
description: 'Second skill',
|
|
156
|
+
platform: 'claude',
|
|
157
|
+
triggerPhrases: ['skill two'],
|
|
158
|
+
},
|
|
159
|
+
]);
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=examples.js.map
|