@shrkcrft/cli 0.1.0-alpha.2
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/LICENSE +21 -0
- package/README.md +15 -0
- package/dist/asset-preview/apply-action-hint-stub.d.ts +28 -0
- package/dist/asset-preview/apply-action-hint-stub.d.ts.map +1 -0
- package/dist/asset-preview/apply-action-hint-stub.js +170 -0
- package/dist/asset-preview/apply-asset-preview.d.ts +31 -0
- package/dist/asset-preview/apply-asset-preview.d.ts.map +1 -0
- package/dist/asset-preview/apply-asset-preview.js +210 -0
- package/dist/asset-preview/apply-knowledge-stale-fix.d.ts +37 -0
- package/dist/asset-preview/apply-knowledge-stale-fix.d.ts.map +1 -0
- package/dist/asset-preview/apply-knowledge-stale-fix.js +344 -0
- package/dist/asset-preview/apply-missing-barrel.d.ts +15 -0
- package/dist/asset-preview/apply-missing-barrel.d.ts.map +1 -0
- package/dist/asset-preview/apply-missing-barrel.js +65 -0
- package/dist/asset-preview/apply-template-drift-fix.d.ts +21 -0
- package/dist/asset-preview/apply-template-drift-fix.d.ts.map +1 -0
- package/dist/asset-preview/apply-template-drift-fix.js +125 -0
- package/dist/asset-preview/apply-template-update.d.ts +43 -0
- package/dist/asset-preview/apply-template-update.d.ts.map +1 -0
- package/dist/asset-preview/apply-template-update.js +257 -0
- package/dist/asset-preview/entry-mutator.d.ts +106 -0
- package/dist/asset-preview/entry-mutator.d.ts.map +1 -0
- package/dist/asset-preview/entry-mutator.js +428 -0
- package/dist/authoring/authoring-kit.d.ts +36 -0
- package/dist/authoring/authoring-kit.d.ts.map +1 -0
- package/dist/authoring/authoring-kit.js +106 -0
- package/dist/command-registry.d.ts +158 -0
- package/dist/command-registry.d.ts.map +1 -0
- package/dist/command-registry.js +348 -0
- package/dist/commands/apply.command.d.ts +3 -0
- package/dist/commands/apply.command.d.ts.map +1 -0
- package/dist/commands/apply.command.js +879 -0
- package/dist/commands/architecture.command.d.ts +5 -0
- package/dist/commands/architecture.command.d.ts.map +1 -0
- package/dist/commands/architecture.command.js +141 -0
- package/dist/commands/ask.command.d.ts +3 -0
- package/dist/commands/ask.command.d.ts.map +1 -0
- package/dist/commands/ask.command.js +58 -0
- package/dist/commands/audit.command.d.ts +3 -0
- package/dist/commands/audit.command.d.ts.map +1 -0
- package/dist/commands/audit.command.js +141 -0
- package/dist/commands/biome.command.d.ts +7 -0
- package/dist/commands/biome.command.d.ts.map +1 -0
- package/dist/commands/biome.command.js +350 -0
- package/dist/commands/boundaries.command.d.ts +9 -0
- package/dist/commands/boundaries.command.d.ts.map +1 -0
- package/dist/commands/boundaries.command.js +314 -0
- package/dist/commands/brief.command.d.ts +3 -0
- package/dist/commands/brief.command.d.ts.map +1 -0
- package/dist/commands/brief.command.js +206 -0
- package/dist/commands/bundle.command.d.ts +3 -0
- package/dist/commands/bundle.command.d.ts.map +1 -0
- package/dist/commands/bundle.command.js +1183 -0
- package/dist/commands/changes.command.d.ts +3 -0
- package/dist/commands/changes.command.d.ts.map +1 -0
- package/dist/commands/changes.command.js +155 -0
- package/dist/commands/check.command.d.ts +3 -0
- package/dist/commands/check.command.d.ts.map +1 -0
- package/dist/commands/check.command.js +553 -0
- package/dist/commands/checks.command.d.ts +29 -0
- package/dist/commands/checks.command.d.ts.map +1 -0
- package/dist/commands/checks.command.js +521 -0
- package/dist/commands/ci.command.d.ts +3 -0
- package/dist/commands/ci.command.d.ts.map +1 -0
- package/dist/commands/ci.command.js +680 -0
- package/dist/commands/codemod.command.d.ts +3 -0
- package/dist/commands/codemod.command.d.ts.map +1 -0
- package/dist/commands/codemod.command.js +130 -0
- package/dist/commands/command-catalog.d.ts +265 -0
- package/dist/commands/command-catalog.d.ts.map +1 -0
- package/dist/commands/command-catalog.js +3242 -0
- package/dist/commands/commands.command.d.ts +92 -0
- package/dist/commands/commands.command.d.ts.map +1 -0
- package/dist/commands/commands.command.js +1208 -0
- package/dist/commands/constructs.command.d.ts +15 -0
- package/dist/commands/constructs.command.d.ts.map +1 -0
- package/dist/commands/constructs.command.js +669 -0
- package/dist/commands/context.command.d.ts +3 -0
- package/dist/commands/context.command.d.ts.map +1 -0
- package/dist/commands/context.command.js +120 -0
- package/dist/commands/contract-gate.command.d.ts +5 -0
- package/dist/commands/contract-gate.command.d.ts.map +1 -0
- package/dist/commands/contract-gate.command.js +208 -0
- package/dist/commands/contract-templates.command.d.ts +8 -0
- package/dist/commands/contract-templates.command.d.ts.map +1 -0
- package/dist/commands/contract-templates.command.js +151 -0
- package/dist/commands/contract.command.d.ts +3 -0
- package/dist/commands/contract.command.d.ts.map +1 -0
- package/dist/commands/contract.command.js +105 -0
- package/dist/commands/conventions.command.d.ts +8 -0
- package/dist/commands/conventions.command.d.ts.map +1 -0
- package/dist/commands/conventions.command.js +169 -0
- package/dist/commands/coverage.command.d.ts +3 -0
- package/dist/commands/coverage.command.d.ts.map +1 -0
- package/dist/commands/coverage.command.js +56 -0
- package/dist/commands/daily.commands.d.ts +5 -0
- package/dist/commands/daily.commands.d.ts.map +1 -0
- package/dist/commands/daily.commands.js +224 -0
- package/dist/commands/dashboard-export.command.d.ts +4 -0
- package/dist/commands/dashboard-export.command.d.ts.map +1 -0
- package/dist/commands/dashboard-export.command.js +86 -0
- package/dist/commands/dashboard.command.d.ts +3 -0
- package/dist/commands/dashboard.command.d.ts.map +1 -0
- package/dist/commands/dashboard.command.js +106 -0
- package/dist/commands/dev.command.d.ts +3 -0
- package/dist/commands/dev.command.d.ts.map +1 -0
- package/dist/commands/dev.command.js +1392 -0
- package/dist/commands/diagnostics.command.d.ts +5 -0
- package/dist/commands/diagnostics.command.d.ts.map +1 -0
- package/dist/commands/diagnostics.command.js +97 -0
- package/dist/commands/docs.command.d.ts +4 -0
- package/dist/commands/docs.command.d.ts.map +1 -0
- package/dist/commands/docs.command.js +34 -0
- package/dist/commands/doctor.command.d.ts +7 -0
- package/dist/commands/doctor.command.d.ts.map +1 -0
- package/dist/commands/doctor.command.js +681 -0
- package/dist/commands/drift.command.d.ts +3 -0
- package/dist/commands/drift.command.d.ts.map +1 -0
- package/dist/commands/drift.command.js +124 -0
- package/dist/commands/eslint.command.d.ts +7 -0
- package/dist/commands/eslint.command.d.ts.map +1 -0
- package/dist/commands/eslint.command.js +423 -0
- package/dist/commands/explore.command.d.ts +3 -0
- package/dist/commands/explore.command.d.ts.map +1 -0
- package/dist/commands/explore.command.js +65 -0
- package/dist/commands/export-bundle.command.d.ts +6 -0
- package/dist/commands/export-bundle.command.d.ts.map +1 -0
- package/dist/commands/export-bundle.command.js +96 -0
- package/dist/commands/export.command.d.ts +3 -0
- package/dist/commands/export.command.d.ts.map +1 -0
- package/dist/commands/export.command.js +83 -0
- package/dist/commands/feedback-dispatch.command.d.ts +12 -0
- package/dist/commands/feedback-dispatch.command.d.ts.map +1 -0
- package/dist/commands/feedback-dispatch.command.js +63 -0
- package/dist/commands/feedback.command.d.ts +11 -0
- package/dist/commands/feedback.command.d.ts.map +1 -0
- package/dist/commands/feedback.command.js +336 -0
- package/dist/commands/fix.command.d.ts +3 -0
- package/dist/commands/fix.command.d.ts.map +1 -0
- package/dist/commands/fix.command.js +776 -0
- package/dist/commands/gen.command.d.ts +3 -0
- package/dist/commands/gen.command.d.ts.map +1 -0
- package/dist/commands/gen.command.js +136 -0
- package/dist/commands/git.command.d.ts +6 -0
- package/dist/commands/git.command.d.ts.map +1 -0
- package/dist/commands/git.command.js +81 -0
- package/dist/commands/graph.command.d.ts +3 -0
- package/dist/commands/graph.command.d.ts.map +1 -0
- package/dist/commands/graph.command.js +287 -0
- package/dist/commands/grounding.command.d.ts +7 -0
- package/dist/commands/grounding.command.d.ts.map +1 -0
- package/dist/commands/grounding.command.js +54 -0
- package/dist/commands/help.command.d.ts +20 -0
- package/dist/commands/help.command.d.ts.map +1 -0
- package/dist/commands/help.command.js +127 -0
- package/dist/commands/helper.command.d.ts +6 -0
- package/dist/commands/helper.command.d.ts.map +1 -0
- package/dist/commands/helper.command.js +170 -0
- package/dist/commands/ide.command.d.ts +6 -0
- package/dist/commands/ide.command.d.ts.map +1 -0
- package/dist/commands/ide.command.js +340 -0
- package/dist/commands/impact.command.d.ts +3 -0
- package/dist/commands/impact.command.d.ts.map +1 -0
- package/dist/commands/impact.command.js +819 -0
- package/dist/commands/import.command.d.ts +3 -0
- package/dist/commands/import.command.d.ts.map +1 -0
- package/dist/commands/import.command.js +115 -0
- package/dist/commands/infer.command.d.ts +3 -0
- package/dist/commands/infer.command.d.ts.map +1 -0
- package/dist/commands/infer.command.js +227 -0
- package/dist/commands/ingest.command.d.ts +6 -0
- package/dist/commands/ingest.command.d.ts.map +1 -0
- package/dist/commands/ingest.command.js +532 -0
- package/dist/commands/init.command.d.ts +3 -0
- package/dist/commands/init.command.d.ts.map +1 -0
- package/dist/commands/init.command.js +301 -0
- package/dist/commands/inspect.command.d.ts +3 -0
- package/dist/commands/inspect.command.d.ts.map +1 -0
- package/dist/commands/inspect.command.js +122 -0
- package/dist/commands/knowledge-author.command.d.ts +22 -0
- package/dist/commands/knowledge-author.command.d.ts.map +1 -0
- package/dist/commands/knowledge-author.command.js +366 -0
- package/dist/commands/knowledge-propose.command.d.ts +3 -0
- package/dist/commands/knowledge-propose.command.d.ts.map +1 -0
- package/dist/commands/knowledge-propose.command.js +125 -0
- package/dist/commands/knowledge.command.d.ts +18 -0
- package/dist/commands/knowledge.command.d.ts.map +1 -0
- package/dist/commands/knowledge.command.js +538 -0
- package/dist/commands/languages.command.d.ts +3 -0
- package/dist/commands/languages.command.d.ts.map +1 -0
- package/dist/commands/languages.command.js +300 -0
- package/dist/commands/lint.command.d.ts +15 -0
- package/dist/commands/lint.command.d.ts.map +1 -0
- package/dist/commands/lint.command.js +194 -0
- package/dist/commands/mcp.command.d.ts +3 -0
- package/dist/commands/mcp.command.d.ts.map +1 -0
- package/dist/commands/mcp.command.js +74 -0
- package/dist/commands/memory.command.d.ts +11 -0
- package/dist/commands/memory.command.d.ts.map +1 -0
- package/dist/commands/memory.command.js +264 -0
- package/dist/commands/onboard.command.d.ts +3 -0
- package/dist/commands/onboard.command.d.ts.map +1 -0
- package/dist/commands/onboard.command.js +650 -0
- package/dist/commands/orchestrate.command.d.ts +3 -0
- package/dist/commands/orchestrate.command.d.ts.map +1 -0
- package/dist/commands/orchestrate.command.js +49 -0
- package/dist/commands/owners.command.d.ts +5 -0
- package/dist/commands/owners.command.d.ts.map +1 -0
- package/dist/commands/owners.command.js +113 -0
- package/dist/commands/ownership.command.d.ts +5 -0
- package/dist/commands/ownership.command.d.ts.map +1 -0
- package/dist/commands/ownership.command.js +117 -0
- package/dist/commands/pack-author.command.d.ts +30 -0
- package/dist/commands/pack-author.command.d.ts.map +1 -0
- package/dist/commands/pack-author.command.js +242 -0
- package/dist/commands/packs-new.d.ts +27 -0
- package/dist/commands/packs-new.d.ts.map +1 -0
- package/dist/commands/packs-new.js +805 -0
- package/dist/commands/packs.command.d.ts +15 -0
- package/dist/commands/packs.command.d.ts.map +1 -0
- package/dist/commands/packs.command.js +958 -0
- package/dist/commands/paths.command.d.ts +6 -0
- package/dist/commands/paths.command.d.ts.map +1 -0
- package/dist/commands/paths.command.js +97 -0
- package/dist/commands/pipelines.command.d.ts +9 -0
- package/dist/commands/pipelines.command.d.ts.map +1 -0
- package/dist/commands/pipelines.command.js +308 -0
- package/dist/commands/plan-check.command.d.ts +27 -0
- package/dist/commands/plan-check.command.d.ts.map +1 -0
- package/dist/commands/plan-check.command.js +150 -0
- package/dist/commands/plan-simulate.command.d.ts +3 -0
- package/dist/commands/plan-simulate.command.d.ts.map +1 -0
- package/dist/commands/plan-simulate.command.js +60 -0
- package/dist/commands/plan.command.d.ts +8 -0
- package/dist/commands/plan.command.d.ts.map +1 -0
- package/dist/commands/plan.command.js +139 -0
- package/dist/commands/playbooks.command.d.ts +10 -0
- package/dist/commands/playbooks.command.d.ts.map +1 -0
- package/dist/commands/playbooks.command.js +296 -0
- package/dist/commands/plugin.command.d.ts +11 -0
- package/dist/commands/plugin.command.d.ts.map +1 -0
- package/dist/commands/plugin.command.js +394 -0
- package/dist/commands/policy.command.d.ts +8 -0
- package/dist/commands/policy.command.d.ts.map +1 -0
- package/dist/commands/policy.command.js +451 -0
- package/dist/commands/pr.command.d.ts +3 -0
- package/dist/commands/pr.command.d.ts.map +1 -0
- package/dist/commands/pr.command.js +132 -0
- package/dist/commands/preflight.command.d.ts +3 -0
- package/dist/commands/preflight.command.d.ts.map +1 -0
- package/dist/commands/preflight.command.js +102 -0
- package/dist/commands/presets.command.d.ts +17 -0
- package/dist/commands/presets.command.d.ts.map +1 -0
- package/dist/commands/presets.command.js +647 -0
- package/dist/commands/profiles.command.d.ts +7 -0
- package/dist/commands/profiles.command.d.ts.map +1 -0
- package/dist/commands/profiles.command.js +151 -0
- package/dist/commands/provenance.command.d.ts +26 -0
- package/dist/commands/provenance.command.d.ts.map +1 -0
- package/dist/commands/provenance.command.js +237 -0
- package/dist/commands/quality.command.d.ts +5 -0
- package/dist/commands/quality.command.d.ts.map +1 -0
- package/dist/commands/quality.command.js +69 -0
- package/dist/commands/recommend.command.d.ts +4 -0
- package/dist/commands/recommend.command.d.ts.map +1 -0
- package/dist/commands/recommend.command.js +270 -0
- package/dist/commands/registrations.command.d.ts +3 -0
- package/dist/commands/registrations.command.d.ts.map +1 -0
- package/dist/commands/registrations.command.js +300 -0
- package/dist/commands/registry.command.d.ts +4 -0
- package/dist/commands/registry.command.d.ts.map +1 -0
- package/dist/commands/registry.command.js +37 -0
- package/dist/commands/release.command.d.ts +4 -0
- package/dist/commands/release.command.d.ts.map +1 -0
- package/dist/commands/release.command.js +639 -0
- package/dist/commands/repo.command.d.ts +3 -0
- package/dist/commands/repo.command.d.ts.map +1 -0
- package/dist/commands/repo.command.js +24 -0
- package/dist/commands/report.command.d.ts +3 -0
- package/dist/commands/report.command.d.ts.map +1 -0
- package/dist/commands/report.command.js +511 -0
- package/dist/commands/reposet.command.d.ts +6 -0
- package/dist/commands/reposet.command.d.ts.map +1 -0
- package/dist/commands/reposet.command.js +120 -0
- package/dist/commands/review.command.d.ts +3 -0
- package/dist/commands/review.command.d.ts.map +1 -0
- package/dist/commands/review.command.js +354 -0
- package/dist/commands/risk.command.d.ts +3 -0
- package/dist/commands/risk.command.d.ts.map +1 -0
- package/dist/commands/risk.command.js +56 -0
- package/dist/commands/rounds.command.d.ts +8 -0
- package/dist/commands/rounds.command.d.ts.map +1 -0
- package/dist/commands/rounds.command.js +180 -0
- package/dist/commands/rules.command.d.ts +49 -0
- package/dist/commands/rules.command.d.ts.map +1 -0
- package/dist/commands/rules.command.js +435 -0
- package/dist/commands/runtime.command.d.ts +3 -0
- package/dist/commands/runtime.command.d.ts.map +1 -0
- package/dist/commands/runtime.command.js +56 -0
- package/dist/commands/safety.command.d.ts +3 -0
- package/dist/commands/safety.command.d.ts.map +1 -0
- package/dist/commands/safety.command.js +117 -0
- package/dist/commands/scaffolds.command.d.ts +5 -0
- package/dist/commands/scaffolds.command.d.ts.map +1 -0
- package/dist/commands/scaffolds.command.js +122 -0
- package/dist/commands/schemas.command.d.ts +21 -0
- package/dist/commands/schemas.command.d.ts.map +1 -0
- package/dist/commands/schemas.command.js +296 -0
- package/dist/commands/search.command.d.ts +12 -0
- package/dist/commands/search.command.d.ts.map +1 -0
- package/dist/commands/search.command.js +275 -0
- package/dist/commands/self-config.command.d.ts +7 -0
- package/dist/commands/self-config.command.d.ts.map +1 -0
- package/dist/commands/self-config.command.js +156 -0
- package/dist/commands/self.command.d.ts +3 -0
- package/dist/commands/self.command.d.ts.map +1 -0
- package/dist/commands/self.command.js +117 -0
- package/dist/commands/simulate.command.d.ts +3 -0
- package/dist/commands/simulate.command.d.ts.map +1 -0
- package/dist/commands/simulate.command.js +54 -0
- package/dist/commands/spec.command.d.ts +29 -0
- package/dist/commands/spec.command.d.ts.map +1 -0
- package/dist/commands/spec.command.js +985 -0
- package/dist/commands/start-here.command.d.ts +3 -0
- package/dist/commands/start-here.command.d.ts.map +1 -0
- package/dist/commands/start-here.command.js +35 -0
- package/dist/commands/stats.command.d.ts +3 -0
- package/dist/commands/stats.command.d.ts.map +1 -0
- package/dist/commands/stats.command.js +88 -0
- package/dist/commands/surface.command.d.ts +15 -0
- package/dist/commands/surface.command.d.ts.map +1 -0
- package/dist/commands/surface.command.js +328 -0
- package/dist/commands/task-context.command.d.ts +7 -0
- package/dist/commands/task-context.command.d.ts.map +1 -0
- package/dist/commands/task-context.command.js +646 -0
- package/dist/commands/task.command.d.ts +3 -0
- package/dist/commands/task.command.d.ts.map +1 -0
- package/dist/commands/task.command.js +301 -0
- package/dist/commands/template-quality.command.d.ts +5 -0
- package/dist/commands/template-quality.command.d.ts.map +1 -0
- package/dist/commands/template-quality.command.js +128 -0
- package/dist/commands/templates.command.d.ts +26 -0
- package/dist/commands/templates.command.d.ts.map +1 -0
- package/dist/commands/templates.command.js +964 -0
- package/dist/commands/test.command.d.ts +3 -0
- package/dist/commands/test.command.d.ts.map +1 -0
- package/dist/commands/test.command.js +262 -0
- package/dist/commands/tests.command.d.ts +5 -0
- package/dist/commands/tests.command.d.ts.map +1 -0
- package/dist/commands/tests.command.js +97 -0
- package/dist/commands/trace.command.d.ts +3 -0
- package/dist/commands/trace.command.d.ts.map +1 -0
- package/dist/commands/trace.command.js +121 -0
- package/dist/commands/upgrade.command.d.ts +4 -0
- package/dist/commands/upgrade.command.d.ts.map +1 -0
- package/dist/commands/upgrade.command.js +43 -0
- package/dist/commands/version.command.d.ts +3 -0
- package/dist/commands/version.command.d.ts.map +1 -0
- package/dist/commands/version.command.js +10 -0
- package/dist/commands/why.command.d.ts +24 -0
- package/dist/commands/why.command.d.ts.map +1 -0
- package/dist/commands/why.command.js +119 -0
- package/dist/dashboard/dashboard-api-server.d.ts +21 -0
- package/dist/dashboard/dashboard-api-server.d.ts.map +1 -0
- package/dist/dashboard/dashboard-api-server.js +410 -0
- package/dist/dashboard/live-session-server.d.ts +18 -0
- package/dist/dashboard/live-session-server.d.ts.map +1 -0
- package/dist/dashboard/live-session-server.js +133 -0
- package/dist/diff/collect-changed-paths.d.ts +27 -0
- package/dist/diff/collect-changed-paths.d.ts.map +1 -0
- package/dist/diff/collect-changed-paths.js +68 -0
- package/dist/doctor/doctor-tags.d.ts +63 -0
- package/dist/doctor/doctor-tags.d.ts.map +1 -0
- package/dist/doctor/doctor-tags.js +146 -0
- package/dist/export/export-formats.d.ts +22 -0
- package/dist/export/export-formats.d.ts.map +1 -0
- package/dist/export/export-formats.js +135 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/init/detected-block.d.ts +57 -0
- package/dist/init/detected-block.d.ts.map +1 -0
- package/dist/init/detected-block.js +197 -0
- package/dist/init/gitignore.d.ts +30 -0
- package/dist/init/gitignore.d.ts.map +1 -0
- package/dist/init/gitignore.js +110 -0
- package/dist/init/init-templates.d.ts +6 -0
- package/dist/init/init-templates.d.ts.map +1 -0
- package/dist/init/init-templates.js +413 -0
- package/dist/main.d.ts +18 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +699 -0
- package/dist/output/failure-hints.d.ts +55 -0
- package/dist/output/failure-hints.d.ts.map +1 -0
- package/dist/output/failure-hints.js +159 -0
- package/dist/output/format-output.d.ts +9 -0
- package/dist/output/format-output.d.ts.map +1 -0
- package/dist/output/format-output.js +26 -0
- package/dist/output/print-error.d.ts +3 -0
- package/dist/output/print-error.d.ts.map +1 -0
- package/dist/output/print-error.js +14 -0
- package/dist/output/watch-loop.d.ts +37 -0
- package/dist/output/watch-loop.d.ts.map +1 -0
- package/dist/output/watch-loop.js +115 -0
- package/dist/schemas/json-schemas.d.ts +1630 -0
- package/dist/schemas/json-schemas.d.ts.map +1 -0
- package/dist/schemas/json-schemas.js +811 -0
- package/dist/surface/about.d.ts +10 -0
- package/dist/surface/about.d.ts.map +1 -0
- package/dist/surface/about.js +53 -0
- package/dist/surface/load-surface-context.d.ts +34 -0
- package/dist/surface/load-surface-context.d.ts.map +1 -0
- package/dist/surface/load-surface-context.js +100 -0
- package/dist/surface/no-args-landing.d.ts +7 -0
- package/dist/surface/no-args-landing.d.ts.map +1 -0
- package/dist/surface/no-args-landing.js +36 -0
- package/dist/surface/not-enabled-error.d.ts +24 -0
- package/dist/surface/not-enabled-error.d.ts.map +1 -0
- package/dist/surface/not-enabled-error.js +36 -0
- package/dist/surface/profiles.d.ts +37 -0
- package/dist/surface/profiles.d.ts.map +1 -0
- package/dist/surface/profiles.js +151 -0
- package/dist/surface/shape-defaults.d.ts +21 -0
- package/dist/surface/shape-defaults.d.ts.map +1 -0
- package/dist/surface/shape-defaults.js +50 -0
- package/dist/surface/spine-extractor.d.ts +38 -0
- package/dist/surface/spine-extractor.d.ts.map +1 -0
- package/dist/surface/spine-extractor.js +100 -0
- package/dist/surface/surface-config-writer.d.ts +59 -0
- package/dist/surface/surface-config-writer.d.ts.map +1 -0
- package/dist/surface/surface-config-writer.js +135 -0
- package/dist/surface/surface-summary.d.ts +66 -0
- package/dist/surface/surface-summary.d.ts.map +1 -0
- package/dist/surface/surface-summary.js +162 -0
- package/dist/surface/tier.d.ts +100 -0
- package/dist/surface/tier.d.ts.map +1 -0
- package/dist/surface/tier.js +172 -0
- package/dist/task-next/apply-batch-runner.d.ts +42 -0
- package/dist/task-next/apply-batch-runner.d.ts.map +1 -0
- package/dist/task-next/apply-batch-runner.js +192 -0
- package/dist/task-next/task-next-ranker.d.ts +75 -0
- package/dist/task-next/task-next-ranker.d.ts.map +1 -0
- package/dist/task-next/task-next-ranker.js +179 -0
- package/dist/usage/usage-log.d.ts +54 -0
- package/dist/usage/usage-log.d.ts.map +1 -0
- package/dist/usage/usage-log.js +105 -0
- package/dist/validation/run-validation-loop.d.ts +38 -0
- package/dist/validation/run-validation-loop.d.ts.map +1 -0
- package/dist/validation/run-validation-loop.js +100 -0
- package/package.json +73 -0
|
@@ -0,0 +1,3242 @@
|
|
|
1
|
+
export var SafetyLevel;
|
|
2
|
+
(function (SafetyLevel) {
|
|
3
|
+
SafetyLevel["ReadOnly"] = "read-only";
|
|
4
|
+
SafetyLevel["WritesSessionOnly"] = "writes-session";
|
|
5
|
+
SafetyLevel["WritesDraftsOnly"] = "writes-drafts";
|
|
6
|
+
SafetyLevel["WritesSource"] = "writes-source";
|
|
7
|
+
SafetyLevel["RunsShell"] = "runs-shell";
|
|
8
|
+
SafetyLevel["RequiresReview"] = "requires-review";
|
|
9
|
+
})(SafetyLevel || (SafetyLevel = {}));
|
|
10
|
+
/**
|
|
11
|
+
* Surface classification for "which command should I reach for first?"
|
|
12
|
+
*
|
|
13
|
+
* Distinct axis from {@link SafetyLevel}. Many `read-only` commands are
|
|
14
|
+
* machine-oriented or legacy; many `writes-source` commands are the canonical
|
|
15
|
+
* generate path.
|
|
16
|
+
*/
|
|
17
|
+
export var CommandSurface;
|
|
18
|
+
(function (CommandSurface) {
|
|
19
|
+
CommandSurface["Primary"] = "primary";
|
|
20
|
+
CommandSurface["Common"] = "common";
|
|
21
|
+
CommandSurface["Advanced"] = "advanced";
|
|
22
|
+
CommandSurface["Machine"] = "machine";
|
|
23
|
+
CommandSurface["Internal"] = "internal";
|
|
24
|
+
CommandSurface["Legacy"] = "legacy";
|
|
25
|
+
})(CommandSurface || (CommandSurface = {}));
|
|
26
|
+
/** Who is the command for? */
|
|
27
|
+
export var CommandAudience;
|
|
28
|
+
(function (CommandAudience) {
|
|
29
|
+
CommandAudience["Human"] = "human";
|
|
30
|
+
CommandAudience["Agent"] = "agent";
|
|
31
|
+
CommandAudience["Ci"] = "ci";
|
|
32
|
+
CommandAudience["PackAuthor"] = "pack-author";
|
|
33
|
+
CommandAudience["Maintainer"] = "maintainer";
|
|
34
|
+
})(CommandAudience || (CommandAudience = {}));
|
|
35
|
+
/**
|
|
36
|
+
* User-journey role. Distinct from {@link SafetyLevel} and from the
|
|
37
|
+
* domain-grouping `category` field.
|
|
38
|
+
*
|
|
39
|
+
* Existing entries that don't set
|
|
40
|
+
* {@link ICommandCatalogEntry.taskRole} are unaffected.
|
|
41
|
+
*/
|
|
42
|
+
export var CommandTaskRole;
|
|
43
|
+
(function (CommandTaskRole) {
|
|
44
|
+
CommandTaskRole["Start"] = "start";
|
|
45
|
+
CommandTaskRole["Context"] = "context";
|
|
46
|
+
CommandTaskRole["Search"] = "search";
|
|
47
|
+
CommandTaskRole["Explain"] = "explain";
|
|
48
|
+
CommandTaskRole["Generate"] = "generate";
|
|
49
|
+
CommandTaskRole["Review"] = "review";
|
|
50
|
+
CommandTaskRole["Validate"] = "validate";
|
|
51
|
+
CommandTaskRole["Release"] = "release";
|
|
52
|
+
CommandTaskRole["Diagnose"] = "diagnose";
|
|
53
|
+
CommandTaskRole["Inspect"] = "inspect";
|
|
54
|
+
CommandTaskRole["Apply"] = "apply";
|
|
55
|
+
CommandTaskRole["Config"] = "config";
|
|
56
|
+
})(CommandTaskRole || (CommandTaskRole = {}));
|
|
57
|
+
/**
|
|
58
|
+
* Lifecycle axis (orthogonal to {@link CommandSurface}). Captures
|
|
59
|
+
* whether a command is the current canonical answer, an alias, deprecated,
|
|
60
|
+
* or retired.
|
|
61
|
+
*
|
|
62
|
+
* Defaults to {@link CommandLifecycle.Active} when omitted.
|
|
63
|
+
*/
|
|
64
|
+
export var CommandLifecycle;
|
|
65
|
+
(function (CommandLifecycle) {
|
|
66
|
+
CommandLifecycle["Active"] = "active";
|
|
67
|
+
CommandLifecycle["Preferred"] = "preferred";
|
|
68
|
+
CommandLifecycle["Alias"] = "alias";
|
|
69
|
+
CommandLifecycle["Deprecated"] = "deprecated";
|
|
70
|
+
CommandLifecycle["Retired"] = "retired";
|
|
71
|
+
})(CommandLifecycle || (CommandLifecycle = {}));
|
|
72
|
+
/**
|
|
73
|
+
* Tier axis. Orthogonal to {@link CommandSurface} and
|
|
74
|
+
* {@link CommandLifecycle}.
|
|
75
|
+
*
|
|
76
|
+
* - `Core` — always visible, always callable. Bootstrap commands +
|
|
77
|
+
* anything referenced from the spine pipelines. Cannot be hidden
|
|
78
|
+
* or disabled by config.
|
|
79
|
+
* - `Extended` — visible in `--help` (subject to
|
|
80
|
+
* {@link defaultShowInHelp}), always callable. Default for the
|
|
81
|
+
* bulk of catalog entries. Can be hidden via
|
|
82
|
+
* `sharkcraft.config.ts surface.hidden`.
|
|
83
|
+
* - `Experimental` — visible only in `shrk surface list`; refuses
|
|
84
|
+
* invocation with a structured not-enabled error unless added to
|
|
85
|
+
* `sharkcraft.config.ts surface.enabled`. Default for
|
|
86
|
+
* pack-contributed commands and any catalog entry with the
|
|
87
|
+
* catalog override `tier: CommandTier.Experimental`.
|
|
88
|
+
*
|
|
89
|
+
* The tier of any given command is computed by the resolver in
|
|
90
|
+
* `packages/cli/src/surface/tier-resolver.ts` — the catalog field
|
|
91
|
+
* `tier?:` is an override for narrow corner cases only. Mechanical
|
|
92
|
+
* derivation (bootstrap ∪ spine) wins over any override that would
|
|
93
|
+
* downgrade a core command.
|
|
94
|
+
*/
|
|
95
|
+
export var CommandTier;
|
|
96
|
+
(function (CommandTier) {
|
|
97
|
+
CommandTier["Core"] = "core";
|
|
98
|
+
CommandTier["Extended"] = "extended";
|
|
99
|
+
CommandTier["Experimental"] = "experimental";
|
|
100
|
+
})(CommandTier || (CommandTier = {}));
|
|
101
|
+
/**
|
|
102
|
+
* Static catalog of `shrk` commands. The metadata is curated rather than
|
|
103
|
+
* derived so that it stays accurate even when commands evolve. Tests check
|
|
104
|
+
* the structural invariants (no duplicate commands, every entry has a
|
|
105
|
+
* non-empty description).
|
|
106
|
+
*/
|
|
107
|
+
export const COMMAND_CATALOG = Object.freeze([
|
|
108
|
+
entry({
|
|
109
|
+
command: 'doctor',
|
|
110
|
+
description: 'Workspace doctor: config + entry validation.',
|
|
111
|
+
category: 'core',
|
|
112
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
113
|
+
mcpAvailable: true,
|
|
114
|
+
surface: CommandSurface.Primary,
|
|
115
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent, CommandAudience.Ci],
|
|
116
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
117
|
+
}),
|
|
118
|
+
entry({
|
|
119
|
+
command: 'context',
|
|
120
|
+
description: 'Focused context for a task (rules / paths / templates). For "what should I do?" prefer `shrk recommend "<task>"`.',
|
|
121
|
+
category: 'core',
|
|
122
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
123
|
+
mcpAvailable: true,
|
|
124
|
+
surface: CommandSurface.Primary,
|
|
125
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
126
|
+
taskRole: CommandTaskRole.Context,
|
|
127
|
+
preferredCommand: 'shrk recommend "<task>"',
|
|
128
|
+
overlapsWith: ['recommend', 'task'],
|
|
129
|
+
}),
|
|
130
|
+
entry({
|
|
131
|
+
command: 'task',
|
|
132
|
+
description: 'Machine task packet (rules + templates + pipelines + commands). Primary consumer is agents / JSON pipes — humans usually want `shrk recommend "<task>"`.',
|
|
133
|
+
category: 'core',
|
|
134
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
135
|
+
mcpAvailable: true,
|
|
136
|
+
surface: CommandSurface.Machine,
|
|
137
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Ci],
|
|
138
|
+
taskRole: CommandTaskRole.Context,
|
|
139
|
+
preferredCommand: 'shrk recommend "<task>"',
|
|
140
|
+
overlapsWith: ['recommend', 'context'],
|
|
141
|
+
machineOnly: true,
|
|
142
|
+
}),
|
|
143
|
+
entry({
|
|
144
|
+
command: 'inspect',
|
|
145
|
+
description: 'Aggregate inspection of registries + packs.',
|
|
146
|
+
category: 'core',
|
|
147
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
148
|
+
mcpAvailable: true,
|
|
149
|
+
surface: CommandSurface.Common,
|
|
150
|
+
taskRole: CommandTaskRole.Inspect,
|
|
151
|
+
}),
|
|
152
|
+
// Adaptive surface tier introspection + management.
|
|
153
|
+
entry({
|
|
154
|
+
command: 'surface',
|
|
155
|
+
description: 'Inspect / change the adaptive command surface. Subcommands: list, enable, disable, hide, unhide, reset, explain.',
|
|
156
|
+
category: 'core',
|
|
157
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
158
|
+
writesFiles: true,
|
|
159
|
+
mcpAvailable: false,
|
|
160
|
+
surface: CommandSurface.Primary,
|
|
161
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
162
|
+
taskRole: CommandTaskRole.Config,
|
|
163
|
+
}),
|
|
164
|
+
// `surface` subcommands. The top-level `surface` is Primary
|
|
165
|
+
// and visible; the verbs are Advanced so they don't bloat the default
|
|
166
|
+
// --help. Users discover them via `shrk surface --help` (the trie
|
|
167
|
+
// dispatcher renders the group's verbs there).
|
|
168
|
+
entry({
|
|
169
|
+
command: 'surface list',
|
|
170
|
+
description: 'List every command grouped by tier (core / extended / experimental).',
|
|
171
|
+
category: 'core',
|
|
172
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
173
|
+
mcpAvailable: false,
|
|
174
|
+
surface: CommandSurface.Advanced,
|
|
175
|
+
taskRole: CommandTaskRole.Inspect,
|
|
176
|
+
}),
|
|
177
|
+
entry({
|
|
178
|
+
command: 'surface enable',
|
|
179
|
+
description: 'Enable an experimental command (preview-first; pass --write to apply).',
|
|
180
|
+
category: 'core',
|
|
181
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
182
|
+
writesFiles: true,
|
|
183
|
+
surface: CommandSurface.Advanced,
|
|
184
|
+
taskRole: CommandTaskRole.Config,
|
|
185
|
+
}),
|
|
186
|
+
entry({
|
|
187
|
+
command: 'surface disable',
|
|
188
|
+
description: 'Undo a prior `surface enable` (preview-first).',
|
|
189
|
+
category: 'core',
|
|
190
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
191
|
+
writesFiles: true,
|
|
192
|
+
surface: CommandSurface.Advanced,
|
|
193
|
+
taskRole: CommandTaskRole.Config,
|
|
194
|
+
}),
|
|
195
|
+
entry({
|
|
196
|
+
command: 'surface hide',
|
|
197
|
+
description: 'Hide an extended command from --help (still callable). Preview-first.',
|
|
198
|
+
category: 'core',
|
|
199
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
200
|
+
writesFiles: true,
|
|
201
|
+
surface: CommandSurface.Advanced,
|
|
202
|
+
taskRole: CommandTaskRole.Config,
|
|
203
|
+
}),
|
|
204
|
+
entry({
|
|
205
|
+
command: 'surface unhide',
|
|
206
|
+
description: 'Reverse a prior `surface hide` (preview-first).',
|
|
207
|
+
category: 'core',
|
|
208
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
209
|
+
writesFiles: true,
|
|
210
|
+
surface: CommandSurface.Advanced,
|
|
211
|
+
taskRole: CommandTaskRole.Config,
|
|
212
|
+
}),
|
|
213
|
+
entry({
|
|
214
|
+
command: 'surface reset',
|
|
215
|
+
description: 'Clear surface.enabled + surface.hidden in sharkcraft.config.ts (preview-first).',
|
|
216
|
+
category: 'core',
|
|
217
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
218
|
+
writesFiles: true,
|
|
219
|
+
surface: CommandSurface.Advanced,
|
|
220
|
+
taskRole: CommandTaskRole.Config,
|
|
221
|
+
}),
|
|
222
|
+
entry({
|
|
223
|
+
command: 'surface explain',
|
|
224
|
+
description: 'Explain why a command has its current tier (bootstrap / spine / pack / override).',
|
|
225
|
+
category: 'core',
|
|
226
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
227
|
+
surface: CommandSurface.Advanced,
|
|
228
|
+
taskRole: CommandTaskRole.Explain,
|
|
229
|
+
}),
|
|
230
|
+
entry({
|
|
231
|
+
command: 'surface profiles',
|
|
232
|
+
description: 'List or inspect named surface profiles (developer / small-app / monorepo / pack-author / ci / agent + pack-contributed).',
|
|
233
|
+
category: 'core',
|
|
234
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
235
|
+
surface: CommandSurface.Advanced,
|
|
236
|
+
taskRole: CommandTaskRole.Inspect,
|
|
237
|
+
}),
|
|
238
|
+
entry({
|
|
239
|
+
command: 'coverage',
|
|
240
|
+
description: 'Coverage report across knowledge axes.',
|
|
241
|
+
category: 'core',
|
|
242
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
243
|
+
mcpAvailable: true,
|
|
244
|
+
surface: CommandSurface.Primary,
|
|
245
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Ci],
|
|
246
|
+
taskRole: CommandTaskRole.Inspect,
|
|
247
|
+
}),
|
|
248
|
+
entry({
|
|
249
|
+
command: 'drift',
|
|
250
|
+
description: 'Stale-entry drift report.',
|
|
251
|
+
category: 'core',
|
|
252
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
253
|
+
mcpAvailable: true,
|
|
254
|
+
surface: CommandSurface.Common,
|
|
255
|
+
taskRole: CommandTaskRole.Validate,
|
|
256
|
+
}),
|
|
257
|
+
entry({
|
|
258
|
+
command: 'graph',
|
|
259
|
+
description: 'Knowledge graph — nodes, edges, and shortest-path explanations.',
|
|
260
|
+
category: 'core',
|
|
261
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
262
|
+
mcpAvailable: true,
|
|
263
|
+
surface: CommandSurface.Common,
|
|
264
|
+
taskRole: CommandTaskRole.Inspect,
|
|
265
|
+
}),
|
|
266
|
+
entry({
|
|
267
|
+
command: 'check',
|
|
268
|
+
description: 'Run validation checks across registries / packs / boundaries.',
|
|
269
|
+
category: 'core',
|
|
270
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
271
|
+
mcpAvailable: false,
|
|
272
|
+
surface: CommandSurface.Common,
|
|
273
|
+
taskRole: CommandTaskRole.Validate,
|
|
274
|
+
}),
|
|
275
|
+
// Changed-only preflight orchestrator.
|
|
276
|
+
entry({
|
|
277
|
+
command: 'preflight',
|
|
278
|
+
description: 'Changed-only preflight orchestrator. Picks read-only gates from the change-set; --explain prints the plan without executing.',
|
|
279
|
+
category: 'core',
|
|
280
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
281
|
+
mcpAvailable: false,
|
|
282
|
+
surface: CommandSurface.Common,
|
|
283
|
+
taskRole: CommandTaskRole.Validate,
|
|
284
|
+
}),
|
|
285
|
+
entry({
|
|
286
|
+
command: 'check boundaries',
|
|
287
|
+
description: 'Boundary enforcement against tsconfig aliases + import graph.',
|
|
288
|
+
category: 'core',
|
|
289
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
290
|
+
mcpAvailable: true,
|
|
291
|
+
surface: CommandSurface.Common,
|
|
292
|
+
taskRole: CommandTaskRole.Validate,
|
|
293
|
+
}),
|
|
294
|
+
entry({
|
|
295
|
+
command: 'review',
|
|
296
|
+
description: 'PR-review packet — changed files, affected rules, missing tests heuristic.',
|
|
297
|
+
category: 'review',
|
|
298
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
299
|
+
mcpAvailable: true,
|
|
300
|
+
}),
|
|
301
|
+
entry({
|
|
302
|
+
command: 'review render-comment',
|
|
303
|
+
description: 'Render PR-comment markdown from a review packet (--output writes file).',
|
|
304
|
+
category: 'review',
|
|
305
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
306
|
+
writesFiles: true,
|
|
307
|
+
}),
|
|
308
|
+
entry({
|
|
309
|
+
command: 'init',
|
|
310
|
+
description: 'Create the sharkcraft/ folder + config skeleton.',
|
|
311
|
+
category: 'core',
|
|
312
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
313
|
+
writesFiles: true,
|
|
314
|
+
writesSource: true,
|
|
315
|
+
surface: CommandSurface.Common,
|
|
316
|
+
taskRole: CommandTaskRole.Start,
|
|
317
|
+
}),
|
|
318
|
+
entry({
|
|
319
|
+
command: 'gen',
|
|
320
|
+
description: 'Generate from a template (dry-run by default, --save-plan/--write to apply).',
|
|
321
|
+
category: 'core',
|
|
322
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
323
|
+
writesFiles: true,
|
|
324
|
+
writesSource: true,
|
|
325
|
+
requiresReview: true,
|
|
326
|
+
surface: CommandSurface.Primary,
|
|
327
|
+
intendedAudience: [CommandAudience.Human],
|
|
328
|
+
taskRole: CommandTaskRole.Generate,
|
|
329
|
+
}),
|
|
330
|
+
entry({
|
|
331
|
+
command: 'apply',
|
|
332
|
+
description: 'Apply a saved plan — writes source files (the CLI is the only write path).',
|
|
333
|
+
category: 'core',
|
|
334
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
335
|
+
writesFiles: true,
|
|
336
|
+
writesSource: true,
|
|
337
|
+
requiresReview: true,
|
|
338
|
+
surface: CommandSurface.Common,
|
|
339
|
+
taskRole: CommandTaskRole.Apply,
|
|
340
|
+
}),
|
|
341
|
+
// `shrk spec` intent artifact over plan/review/apply.
|
|
342
|
+
entry({
|
|
343
|
+
command: 'spec',
|
|
344
|
+
description: 'Spec-driven development: scaffold, review, implement, verify intent artifacts under .sharkcraft/specs/.',
|
|
345
|
+
category: 'core',
|
|
346
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
347
|
+
surface: CommandSurface.Common,
|
|
348
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
349
|
+
taskRole: CommandTaskRole.Start,
|
|
350
|
+
}),
|
|
351
|
+
entry({
|
|
352
|
+
command: 'spec create',
|
|
353
|
+
description: 'Scaffold a grounded spec under .sharkcraft/specs/. Preview-only by default.',
|
|
354
|
+
category: 'core',
|
|
355
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
356
|
+
writesFiles: true,
|
|
357
|
+
surface: CommandSurface.Advanced,
|
|
358
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
359
|
+
taskRole: CommandTaskRole.Start,
|
|
360
|
+
}),
|
|
361
|
+
entry({
|
|
362
|
+
command: 'spec review',
|
|
363
|
+
description: 'Structural + cross-registry validation of a spec.',
|
|
364
|
+
category: 'core',
|
|
365
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
366
|
+
surface: CommandSurface.Advanced,
|
|
367
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
368
|
+
taskRole: CommandTaskRole.Inspect,
|
|
369
|
+
}),
|
|
370
|
+
entry({
|
|
371
|
+
command: 'spec implement',
|
|
372
|
+
description: 'Compose the spec\'s proposedTemplates into a signed combined plan (dry-run, --write-plan, --apply).',
|
|
373
|
+
category: 'core',
|
|
374
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
375
|
+
writesFiles: true,
|
|
376
|
+
requiresReview: true,
|
|
377
|
+
surface: CommandSurface.Advanced,
|
|
378
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
379
|
+
taskRole: CommandTaskRole.Generate,
|
|
380
|
+
}),
|
|
381
|
+
entry({
|
|
382
|
+
command: 'spec verify',
|
|
383
|
+
description: 'Run trusted verification commands + diff-aware boundary + scope-drift checks on a spec.',
|
|
384
|
+
category: 'core',
|
|
385
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
386
|
+
surface: CommandSurface.Advanced,
|
|
387
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
388
|
+
taskRole: CommandTaskRole.Validate,
|
|
389
|
+
}),
|
|
390
|
+
entry({
|
|
391
|
+
command: 'spec list',
|
|
392
|
+
description: 'List every spec in .sharkcraft/specs/.',
|
|
393
|
+
category: 'core',
|
|
394
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
395
|
+
surface: CommandSurface.Advanced,
|
|
396
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
397
|
+
taskRole: CommandTaskRole.Inspect,
|
|
398
|
+
}),
|
|
399
|
+
entry({
|
|
400
|
+
command: 'spec show',
|
|
401
|
+
description: 'Print a spec contents.',
|
|
402
|
+
category: 'core',
|
|
403
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
404
|
+
surface: CommandSurface.Advanced,
|
|
405
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
406
|
+
taskRole: CommandTaskRole.Inspect,
|
|
407
|
+
}),
|
|
408
|
+
entry({
|
|
409
|
+
command: 'spec status',
|
|
410
|
+
description: 'Read/transition a spec status (manual --set allowed only for "abandoned").',
|
|
411
|
+
category: 'core',
|
|
412
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
413
|
+
writesFiles: true,
|
|
414
|
+
surface: CommandSurface.Advanced,
|
|
415
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
416
|
+
taskRole: CommandTaskRole.Inspect,
|
|
417
|
+
}),
|
|
418
|
+
entry({
|
|
419
|
+
command: 'spec lint',
|
|
420
|
+
description: 'Fast structural-only lint of a spec (skips cross-registry resolution).',
|
|
421
|
+
category: 'core',
|
|
422
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
423
|
+
surface: CommandSurface.Advanced,
|
|
424
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
425
|
+
taskRole: CommandTaskRole.Inspect,
|
|
426
|
+
}),
|
|
427
|
+
entry({
|
|
428
|
+
command: 'dev',
|
|
429
|
+
description: 'Dev session workflow: start → plan → review → apply → validate → report.',
|
|
430
|
+
category: 'dev',
|
|
431
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
432
|
+
writesFiles: true,
|
|
433
|
+
}),
|
|
434
|
+
entry({
|
|
435
|
+
command: 'dev start',
|
|
436
|
+
description: 'Start a dev session under .sharkcraft/sessions/.',
|
|
437
|
+
category: 'dev',
|
|
438
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
439
|
+
writesFiles: true,
|
|
440
|
+
mcpAvailable: false,
|
|
441
|
+
surface: CommandSurface.Advanced,
|
|
442
|
+
intendedAudience: [CommandAudience.Human],
|
|
443
|
+
taskRole: CommandTaskRole.Start,
|
|
444
|
+
}),
|
|
445
|
+
entry({
|
|
446
|
+
command: 'dev plan',
|
|
447
|
+
description: 'Generate session plans + auto-review.',
|
|
448
|
+
category: 'dev',
|
|
449
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
450
|
+
writesFiles: true,
|
|
451
|
+
}),
|
|
452
|
+
entry({
|
|
453
|
+
command: 'dev validate',
|
|
454
|
+
description: 'Run configured verification commands and record validation in session.',
|
|
455
|
+
category: 'dev',
|
|
456
|
+
safetyLevel: SafetyLevel.RunsShell,
|
|
457
|
+
runsShell: true,
|
|
458
|
+
writesFiles: true,
|
|
459
|
+
}),
|
|
460
|
+
entry({
|
|
461
|
+
command: 'dev report',
|
|
462
|
+
description: 'Write the final audit-trail report for the session.',
|
|
463
|
+
category: 'dev',
|
|
464
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
465
|
+
writesFiles: true,
|
|
466
|
+
}),
|
|
467
|
+
entry({
|
|
468
|
+
command: 'dev mark-applied',
|
|
469
|
+
description: 'Metadata-only: mark a session plan applied. No source writes.',
|
|
470
|
+
category: 'dev',
|
|
471
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
472
|
+
writesFiles: true,
|
|
473
|
+
}),
|
|
474
|
+
entry({
|
|
475
|
+
command: 'dev mark-validated',
|
|
476
|
+
description: 'Metadata-only: record a validation outcome on a session.',
|
|
477
|
+
category: 'dev',
|
|
478
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
479
|
+
writesFiles: true,
|
|
480
|
+
}),
|
|
481
|
+
entry({
|
|
482
|
+
command: 'dev diff',
|
|
483
|
+
description: 'Diff two sessions on phase / plans / packet fields.',
|
|
484
|
+
category: 'dev',
|
|
485
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
486
|
+
}),
|
|
487
|
+
entry({
|
|
488
|
+
command: 'dev list',
|
|
489
|
+
description: 'List sessions with phase + next action.',
|
|
490
|
+
category: 'dev',
|
|
491
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
492
|
+
}),
|
|
493
|
+
entry({
|
|
494
|
+
command: 'dev archive',
|
|
495
|
+
description: 'Move a session to .sharkcraft/sessions-archive/.',
|
|
496
|
+
category: 'dev',
|
|
497
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
498
|
+
writesFiles: true,
|
|
499
|
+
}),
|
|
500
|
+
entry({
|
|
501
|
+
command: 'dev clean',
|
|
502
|
+
description: 'Clean old sessions (dry-run by default).',
|
|
503
|
+
category: 'dev',
|
|
504
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
505
|
+
writesFiles: true,
|
|
506
|
+
requiresReview: true,
|
|
507
|
+
}),
|
|
508
|
+
entry({
|
|
509
|
+
command: 'dev open',
|
|
510
|
+
description: 'Print the paths inside a session.',
|
|
511
|
+
category: 'dev',
|
|
512
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
513
|
+
}),
|
|
514
|
+
entry({
|
|
515
|
+
command: 'dev plans',
|
|
516
|
+
description: 'List plans in a session.',
|
|
517
|
+
category: 'dev',
|
|
518
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
519
|
+
}),
|
|
520
|
+
entry({
|
|
521
|
+
command: 'dev reports',
|
|
522
|
+
description: 'List reports in a session.',
|
|
523
|
+
category: 'dev',
|
|
524
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
525
|
+
}),
|
|
526
|
+
entry({
|
|
527
|
+
command: 'dev commands',
|
|
528
|
+
description: 'Print copy-pasteable command list for a session.',
|
|
529
|
+
category: 'dev',
|
|
530
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
531
|
+
}),
|
|
532
|
+
// `session` (legacy alias) hard-deleted. Use `dev start`.
|
|
533
|
+
entry({
|
|
534
|
+
command: 'onboard',
|
|
535
|
+
description: 'Onboard an existing repo (dry-run by default).',
|
|
536
|
+
category: 'onboarding',
|
|
537
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
538
|
+
mcpAvailable: true,
|
|
539
|
+
}),
|
|
540
|
+
entry({
|
|
541
|
+
command: 'onboard --write-drafts',
|
|
542
|
+
description: 'Write onboarding drafts under sharkcraft/onboarding/ — never overwrites live config.',
|
|
543
|
+
category: 'onboarding',
|
|
544
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
545
|
+
writesFiles: true,
|
|
546
|
+
requiresReview: true,
|
|
547
|
+
}),
|
|
548
|
+
entry({
|
|
549
|
+
command: 'onboard adopt',
|
|
550
|
+
description: 'Classify inferred items into safe-to-adopt / manual-review / low-confidence.',
|
|
551
|
+
category: 'onboarding',
|
|
552
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
553
|
+
mcpAvailable: true,
|
|
554
|
+
}),
|
|
555
|
+
entry({
|
|
556
|
+
command: 'onboard adopt --write-patch',
|
|
557
|
+
description: 'Write the adoption pseudo-patch under sharkcraft/onboarding/adoption/.',
|
|
558
|
+
category: 'onboarding',
|
|
559
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
560
|
+
writesFiles: true,
|
|
561
|
+
requiresReview: true,
|
|
562
|
+
}),
|
|
563
|
+
// Ingest + contradictions + generated + stability + task context
|
|
564
|
+
entry({
|
|
565
|
+
command: 'ingest repository',
|
|
566
|
+
description: 'Build a SharkCraft repository knowledge model (dry-run).',
|
|
567
|
+
category: 'ingestion',
|
|
568
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
569
|
+
mcpAvailable: true,
|
|
570
|
+
}),
|
|
571
|
+
entry({
|
|
572
|
+
command: 'ingest repository --write-drafts',
|
|
573
|
+
description: 'Write ingestion drafts under sharkcraft/ingestion/ — never overwrites live config.',
|
|
574
|
+
category: 'ingestion',
|
|
575
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
576
|
+
writesFiles: true,
|
|
577
|
+
requiresReview: true,
|
|
578
|
+
}),
|
|
579
|
+
// `ingest adopt --write-patch` hard-deleted. Use `onboard adopt --write-patch`.
|
|
580
|
+
entry({
|
|
581
|
+
command: 'ingest diff',
|
|
582
|
+
description: 'Show ingest adoption deltas (safe-append / manual-review / etc.). Read-only.',
|
|
583
|
+
category: 'ingestion',
|
|
584
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
585
|
+
mcpAvailable: true,
|
|
586
|
+
}),
|
|
587
|
+
entry({
|
|
588
|
+
command: 'ingest status',
|
|
589
|
+
description: 'Report whether ingest drafts / adoption files exist on disk. Read-only.',
|
|
590
|
+
category: 'ingestion',
|
|
591
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
592
|
+
mcpAvailable: true,
|
|
593
|
+
}),
|
|
594
|
+
entry({
|
|
595
|
+
command: 'ingest report',
|
|
596
|
+
description: 'Render the saved ingest knowledge model in text / markdown / html / json. Read-only.',
|
|
597
|
+
category: 'ingestion',
|
|
598
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
599
|
+
mcpAvailable: true,
|
|
600
|
+
}),
|
|
601
|
+
entry({
|
|
602
|
+
command: 'ingest clean --write',
|
|
603
|
+
description: 'Remove sharkcraft/ingestion/. Default is --dry-run.',
|
|
604
|
+
category: 'ingestion',
|
|
605
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
606
|
+
writesFiles: true,
|
|
607
|
+
requiresReview: true,
|
|
608
|
+
}),
|
|
609
|
+
entry({
|
|
610
|
+
command: 'contradictions',
|
|
611
|
+
description: 'Detect documentation vs code contradictions (missing paths, deprecated CLI usage). Read-only.',
|
|
612
|
+
category: 'ingestion',
|
|
613
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
614
|
+
mcpAvailable: true,
|
|
615
|
+
}),
|
|
616
|
+
entry({
|
|
617
|
+
command: 'generated report',
|
|
618
|
+
description: 'Classify generated vs hand-written code (@generated, DO NOT EDIT, openapi-generator, …). Read-only.',
|
|
619
|
+
category: 'ingestion',
|
|
620
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
621
|
+
mcpAvailable: true,
|
|
622
|
+
}),
|
|
623
|
+
entry({
|
|
624
|
+
command: 'generated protect --write-drafts',
|
|
625
|
+
description: 'Write recommended protect rules under sharkcraft/ingestion/. Never overwrites live policies.',
|
|
626
|
+
category: 'ingestion',
|
|
627
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
628
|
+
writesFiles: true,
|
|
629
|
+
requiresReview: true,
|
|
630
|
+
}),
|
|
631
|
+
entry({
|
|
632
|
+
command: 'understand-task "<task>"',
|
|
633
|
+
description: 'Task-specific context bundle (intent + relevant rules + risks + next safe command). Read-only unless --save.',
|
|
634
|
+
category: 'task-context',
|
|
635
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
636
|
+
mcpAvailable: true,
|
|
637
|
+
}),
|
|
638
|
+
entry({
|
|
639
|
+
command: 'validate-change',
|
|
640
|
+
description: 'Validate a proposed/staged change (boundaries, generated-file edits, missing tests, doc contradictions). Read-only.',
|
|
641
|
+
category: 'task-context',
|
|
642
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
643
|
+
mcpAvailable: true,
|
|
644
|
+
}),
|
|
645
|
+
entry({
|
|
646
|
+
command: 'context build',
|
|
647
|
+
description: 'Save a task-specific context bundle under .sharkcraft/context/task-contexts/<slug>.json|.md.',
|
|
648
|
+
category: 'task-context',
|
|
649
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
650
|
+
writesFiles: true,
|
|
651
|
+
}),
|
|
652
|
+
entry({
|
|
653
|
+
command: 'context refresh',
|
|
654
|
+
description: 'Rebuild the most recently saved task context. Writes only under .sharkcraft/context/.',
|
|
655
|
+
category: 'task-context',
|
|
656
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
657
|
+
writesFiles: true,
|
|
658
|
+
}),
|
|
659
|
+
entry({
|
|
660
|
+
command: 'context status',
|
|
661
|
+
description: 'Show the current task context status. Read-only.',
|
|
662
|
+
category: 'task-context',
|
|
663
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
664
|
+
}),
|
|
665
|
+
entry({
|
|
666
|
+
command: 'packs list',
|
|
667
|
+
description: 'List discovered packs.',
|
|
668
|
+
category: 'packs',
|
|
669
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
670
|
+
mcpAvailable: true,
|
|
671
|
+
surface: CommandSurface.Common,
|
|
672
|
+
}),
|
|
673
|
+
entry({
|
|
674
|
+
command: 'packs doctor',
|
|
675
|
+
description: 'Validate pack discovery.',
|
|
676
|
+
category: 'packs',
|
|
677
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
678
|
+
mcpAvailable: true,
|
|
679
|
+
surface: CommandSurface.Common,
|
|
680
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
681
|
+
}),
|
|
682
|
+
entry({
|
|
683
|
+
command: 'packs sign',
|
|
684
|
+
description: 'Sign a pack manifest.',
|
|
685
|
+
category: 'packs',
|
|
686
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
687
|
+
writesFiles: true,
|
|
688
|
+
requiresReview: true,
|
|
689
|
+
surface: CommandSurface.Common,
|
|
690
|
+
}),
|
|
691
|
+
entry({
|
|
692
|
+
command: 'packs signature-status',
|
|
693
|
+
description: 'Pack manifest signature freshness (verified / missing / invalid / stale).',
|
|
694
|
+
category: 'packs',
|
|
695
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
696
|
+
surface: CommandSurface.Common,
|
|
697
|
+
taskRole: CommandTaskRole.Validate,
|
|
698
|
+
}),
|
|
699
|
+
entry({
|
|
700
|
+
command: 'packs contributions',
|
|
701
|
+
description: 'Show what each discovered pack contributes (knowledge / rules / templates / boundaries).',
|
|
702
|
+
category: 'packs',
|
|
703
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
704
|
+
surface: CommandSurface.Common,
|
|
705
|
+
taskRole: CommandTaskRole.Inspect,
|
|
706
|
+
}),
|
|
707
|
+
entry({
|
|
708
|
+
command: 'packs verify',
|
|
709
|
+
description: 'Verify pack signatures.',
|
|
710
|
+
category: 'packs',
|
|
711
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
712
|
+
}),
|
|
713
|
+
entry({
|
|
714
|
+
command: 'packs new',
|
|
715
|
+
description: 'Scaffold a new SharkCraft pack package (dry-run by default).',
|
|
716
|
+
category: 'packs',
|
|
717
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
718
|
+
writesFiles: true,
|
|
719
|
+
requiresReview: true,
|
|
720
|
+
}),
|
|
721
|
+
entry({
|
|
722
|
+
command: 'packs test',
|
|
723
|
+
description: 'Validate a pack at the given path. Read-only.',
|
|
724
|
+
category: 'packs',
|
|
725
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
726
|
+
}),
|
|
727
|
+
// Knowledge authoring preview surface.
|
|
728
|
+
entry({
|
|
729
|
+
command: 'knowledge add',
|
|
730
|
+
description: 'Preview adding a new knowledge entry. Preview-only.',
|
|
731
|
+
category: 'knowledge',
|
|
732
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
733
|
+
surface: CommandSurface.Common,
|
|
734
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human, CommandAudience.PackAuthor],
|
|
735
|
+
taskRole: CommandTaskRole.Generate,
|
|
736
|
+
}),
|
|
737
|
+
entry({
|
|
738
|
+
command: 'knowledge update',
|
|
739
|
+
description: 'Preview an incremental update to a knowledge entry. Preview-only.',
|
|
740
|
+
category: 'knowledge',
|
|
741
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
742
|
+
surface: CommandSurface.Common,
|
|
743
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human, CommandAudience.PackAuthor],
|
|
744
|
+
taskRole: CommandTaskRole.Generate,
|
|
745
|
+
}),
|
|
746
|
+
entry({
|
|
747
|
+
command: 'knowledge remove',
|
|
748
|
+
description: 'Preview removal of a knowledge entry. Refuses if reverse references exist.',
|
|
749
|
+
category: 'knowledge',
|
|
750
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
751
|
+
surface: CommandSurface.Common,
|
|
752
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human, CommandAudience.PackAuthor],
|
|
753
|
+
taskRole: CommandTaskRole.Generate,
|
|
754
|
+
}),
|
|
755
|
+
entry({
|
|
756
|
+
command: 'knowledge lint',
|
|
757
|
+
description: 'Classify knowledge findings (safe stub / needs-human-wording / stale / advisory).',
|
|
758
|
+
category: 'knowledge',
|
|
759
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
760
|
+
surface: CommandSurface.Common,
|
|
761
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human, CommandAudience.PackAuthor],
|
|
762
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
763
|
+
}),
|
|
764
|
+
// AST-driven knowledge entry inference. Common surface — closes
|
|
765
|
+
// the authoring loop and is the verb an agent would reach for
|
|
766
|
+
// during normal work.
|
|
767
|
+
entry({
|
|
768
|
+
command: 'knowledge propose',
|
|
769
|
+
description: 'Propose stub knowledge entries for exported top-level constructs that lack coverage. Preview-first.',
|
|
770
|
+
category: 'knowledge',
|
|
771
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
772
|
+
surface: CommandSurface.Common,
|
|
773
|
+
intendedAudience: [CommandAudience.Agent, CommandAudience.Human, CommandAudience.PackAuthor],
|
|
774
|
+
taskRole: CommandTaskRole.Generate,
|
|
775
|
+
}),
|
|
776
|
+
// `knowledge author` (dispatcher alias) hard-deleted. Use `knowledge add|update|remove`.
|
|
777
|
+
// Pack asset authoring workflow.
|
|
778
|
+
entry({
|
|
779
|
+
command: 'pack author status',
|
|
780
|
+
description: 'Pack author status — kind-by-kind contribution inventory + pending drafts + signature state.',
|
|
781
|
+
category: 'pack-author',
|
|
782
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
783
|
+
surface: CommandSurface.Advanced,
|
|
784
|
+
intendedAudience: [CommandAudience.PackAuthor, CommandAudience.Agent],
|
|
785
|
+
taskRole: CommandTaskRole.Inspect,
|
|
786
|
+
}),
|
|
787
|
+
entry({
|
|
788
|
+
command: 'pack author preview',
|
|
789
|
+
description: 'Pack author preview (knowledge kind implemented; others deferred).',
|
|
790
|
+
category: 'pack-author',
|
|
791
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
792
|
+
surface: CommandSurface.Advanced,
|
|
793
|
+
intendedAudience: [CommandAudience.PackAuthor, CommandAudience.Agent],
|
|
794
|
+
taskRole: CommandTaskRole.Generate,
|
|
795
|
+
}),
|
|
796
|
+
entry({
|
|
797
|
+
command: 'pack author pending',
|
|
798
|
+
description: 'Pack pending state — modified files + drafts + signature + provenance + missing-secret hint.',
|
|
799
|
+
category: 'pack-author',
|
|
800
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
801
|
+
surface: CommandSurface.Advanced,
|
|
802
|
+
intendedAudience: [CommandAudience.PackAuthor, CommandAudience.Agent],
|
|
803
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
804
|
+
}),
|
|
805
|
+
entry({
|
|
806
|
+
command: 'pack author validate',
|
|
807
|
+
description: 'Recommended post-authoring validation commands. Read-only.',
|
|
808
|
+
category: 'pack-author',
|
|
809
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
810
|
+
surface: CommandSurface.Advanced,
|
|
811
|
+
intendedAudience: [CommandAudience.PackAuthor, CommandAudience.Agent],
|
|
812
|
+
taskRole: CommandTaskRole.Validate,
|
|
813
|
+
}),
|
|
814
|
+
// `pack` (legacy alias) hard-deleted.
|
|
815
|
+
// `pack-author <verb>` migrated to `pack author <verb>` (3-level).
|
|
816
|
+
entry({
|
|
817
|
+
command: 'packs pending',
|
|
818
|
+
description: 'Alias for `pack author pending`. Read-only.',
|
|
819
|
+
category: 'packs',
|
|
820
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
821
|
+
}),
|
|
822
|
+
// Asset provenance ledger.
|
|
823
|
+
entry({
|
|
824
|
+
command: 'provenance list',
|
|
825
|
+
description: 'List provenance ledger entries (most-recent first).',
|
|
826
|
+
category: 'provenance',
|
|
827
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
828
|
+
surface: CommandSurface.Advanced,
|
|
829
|
+
intendedAudience: [CommandAudience.PackAuthor, CommandAudience.Agent, CommandAudience.Human],
|
|
830
|
+
taskRole: CommandTaskRole.Inspect,
|
|
831
|
+
}),
|
|
832
|
+
entry({
|
|
833
|
+
command: 'provenance show',
|
|
834
|
+
description: 'Show all provenance entries for one asset id.',
|
|
835
|
+
category: 'provenance',
|
|
836
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
837
|
+
surface: CommandSurface.Advanced,
|
|
838
|
+
intendedAudience: [CommandAudience.PackAuthor, CommandAudience.Agent],
|
|
839
|
+
taskRole: CommandTaskRole.Inspect,
|
|
840
|
+
}),
|
|
841
|
+
entry({
|
|
842
|
+
command: 'provenance report',
|
|
843
|
+
description: 'Summary report of the asset provenance ledger.',
|
|
844
|
+
category: 'provenance',
|
|
845
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
846
|
+
surface: CommandSurface.Advanced,
|
|
847
|
+
intendedAudience: [CommandAudience.PackAuthor, CommandAudience.Agent, CommandAudience.Human],
|
|
848
|
+
taskRole: CommandTaskRole.Inspect,
|
|
849
|
+
}),
|
|
850
|
+
entry({
|
|
851
|
+
command: 'presets apply --write',
|
|
852
|
+
description: 'Apply a preset to sharkcraft/ config (writes drafts + may modify config).',
|
|
853
|
+
category: 'presets',
|
|
854
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
855
|
+
writesFiles: true,
|
|
856
|
+
requiresReview: true,
|
|
857
|
+
}),
|
|
858
|
+
entry({
|
|
859
|
+
command: 'quality',
|
|
860
|
+
description: 'Run the SharkCraft quality gate (doctor / boundaries / coverage / drift / tests / packs).',
|
|
861
|
+
category: 'gates',
|
|
862
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
863
|
+
mcpAvailable: true,
|
|
864
|
+
surface: CommandSurface.Advanced,
|
|
865
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Ci],
|
|
866
|
+
taskRole: CommandTaskRole.Validate,
|
|
867
|
+
}),
|
|
868
|
+
entry({
|
|
869
|
+
command: 'ci scaffold github-actions',
|
|
870
|
+
description: 'Scaffold a GitHub Actions workflow for SharkCraft (dry-run by default).',
|
|
871
|
+
category: 'gates',
|
|
872
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
873
|
+
writesFiles: true,
|
|
874
|
+
surface: CommandSurface.Common,
|
|
875
|
+
taskRole: CommandTaskRole.Generate,
|
|
876
|
+
}),
|
|
877
|
+
entry({
|
|
878
|
+
command: 'boundaries list',
|
|
879
|
+
description: 'List all boundary rules.',
|
|
880
|
+
category: 'boundaries',
|
|
881
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
882
|
+
mcpAvailable: true,
|
|
883
|
+
}),
|
|
884
|
+
entry({
|
|
885
|
+
command: 'boundaries infer',
|
|
886
|
+
description: 'Infer boundary candidates (dry-run by default).',
|
|
887
|
+
category: 'boundaries',
|
|
888
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
889
|
+
}),
|
|
890
|
+
entry({
|
|
891
|
+
command: 'boundaries explain',
|
|
892
|
+
description: 'Explain a boundary rule + suggested fix.',
|
|
893
|
+
category: 'boundaries',
|
|
894
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
895
|
+
mcpAvailable: true,
|
|
896
|
+
}),
|
|
897
|
+
entry({
|
|
898
|
+
command: 'test context',
|
|
899
|
+
description: 'Run context retrieval contract tests.',
|
|
900
|
+
category: 'tests',
|
|
901
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
902
|
+
mcpAvailable: true,
|
|
903
|
+
}),
|
|
904
|
+
entry({
|
|
905
|
+
command: 'test agent',
|
|
906
|
+
description: 'Run agent task-packet contract tests.',
|
|
907
|
+
category: 'tests',
|
|
908
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
909
|
+
mcpAvailable: true,
|
|
910
|
+
}),
|
|
911
|
+
entry({
|
|
912
|
+
command: 'test generate context',
|
|
913
|
+
description: 'Generate a context-test draft (dry-run by default).',
|
|
914
|
+
category: 'tests',
|
|
915
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
916
|
+
writesFiles: true,
|
|
917
|
+
}),
|
|
918
|
+
entry({
|
|
919
|
+
command: 'test generate agent',
|
|
920
|
+
description: 'Generate an agent-contract-test draft (dry-run by default).',
|
|
921
|
+
category: 'tests',
|
|
922
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
923
|
+
writesFiles: true,
|
|
924
|
+
}),
|
|
925
|
+
entry({
|
|
926
|
+
command: 'commands',
|
|
927
|
+
description: 'List all `shrk` commands with safety labels.',
|
|
928
|
+
category: 'meta',
|
|
929
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
930
|
+
mcpAvailable: true,
|
|
931
|
+
surface: CommandSurface.Common,
|
|
932
|
+
}),
|
|
933
|
+
entry({
|
|
934
|
+
command: 'mcp',
|
|
935
|
+
description: 'Start the read-only MCP server.',
|
|
936
|
+
category: 'meta',
|
|
937
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
938
|
+
}),
|
|
939
|
+
entry({
|
|
940
|
+
command: 'version',
|
|
941
|
+
description: 'Print the CLI version.',
|
|
942
|
+
category: 'meta',
|
|
943
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
944
|
+
surface: CommandSurface.Common,
|
|
945
|
+
}),
|
|
946
|
+
entry({
|
|
947
|
+
command: 'explain',
|
|
948
|
+
description: 'Universal explainer: knowledge entry, rule, template, command id, or stderr blob.',
|
|
949
|
+
category: 'core',
|
|
950
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
951
|
+
surface: CommandSurface.Common,
|
|
952
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
953
|
+
taskRole: CommandTaskRole.Explain,
|
|
954
|
+
}),
|
|
955
|
+
// `shrk watch` / `shrk watch integrity` removed.
|
|
956
|
+
// Use the per-command `--watch` flag on `shrk doctor` / `shrk lint` / etc. instead.
|
|
957
|
+
entry({
|
|
958
|
+
command: 'plan',
|
|
959
|
+
description: 'Inspect, review, sign, or verify a saved plan file.',
|
|
960
|
+
category: 'core',
|
|
961
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
962
|
+
surface: CommandSurface.Common,
|
|
963
|
+
taskRole: CommandTaskRole.Review,
|
|
964
|
+
}),
|
|
965
|
+
entry({
|
|
966
|
+
command: 'plan review',
|
|
967
|
+
description: 'Review a saved plan file (read-only).',
|
|
968
|
+
category: 'core',
|
|
969
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
970
|
+
surface: CommandSurface.Common,
|
|
971
|
+
taskRole: CommandTaskRole.Review,
|
|
972
|
+
}),
|
|
973
|
+
// Additive: validate any external plan/spec file against the
|
|
974
|
+
// live workspace. The input file is NEVER modified.
|
|
975
|
+
entry({
|
|
976
|
+
command: 'plan check',
|
|
977
|
+
description: 'Validate an external plan/spec file against the live workspace. Read-only. Two built-in extractors (sharkcraft.spec/v1, markdown-frontmatter-loose).',
|
|
978
|
+
category: 'core',
|
|
979
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
980
|
+
surface: CommandSurface.Advanced,
|
|
981
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
982
|
+
taskRole: CommandTaskRole.Review,
|
|
983
|
+
}),
|
|
984
|
+
// `shrk grounding "<task>"` — single-call context primer.
|
|
985
|
+
entry({
|
|
986
|
+
command: 'grounding',
|
|
987
|
+
description: 'Emit task-relevant rules / knowledge / paths / templates / verification IDs as JSON. Read-only; pure composition over the task-packet ranker.',
|
|
988
|
+
category: 'core',
|
|
989
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
990
|
+
surface: CommandSurface.Common,
|
|
991
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
992
|
+
taskRole: CommandTaskRole.Context,
|
|
993
|
+
}),
|
|
994
|
+
// feedback3 — `shrk why <file>`. Closes the dangling promise from
|
|
995
|
+
// ide.command.ts:112 which already suggests this verb.
|
|
996
|
+
entry({
|
|
997
|
+
command: 'why',
|
|
998
|
+
description: 'Explain the constraints that apply to a file: package / layer, path conventions, rules, boundary rules, related knowledge. Read-only.',
|
|
999
|
+
category: 'core',
|
|
1000
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1001
|
+
surface: CommandSurface.Common,
|
|
1002
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
1003
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1004
|
+
}),
|
|
1005
|
+
// Three top-level commands that existed without catalog entries.
|
|
1006
|
+
// The catalog needs to know about every registered primary verb so
|
|
1007
|
+
// `commands doctor` is honest.
|
|
1008
|
+
entry({
|
|
1009
|
+
command: 'profiles',
|
|
1010
|
+
description: 'List / inspect pack-contributed profiles (plugin-lifecycle, migration, conventions, …). Subcommands: list, get, doctor, search.',
|
|
1011
|
+
category: 'core',
|
|
1012
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1013
|
+
mcpAvailable: true,
|
|
1014
|
+
surface: CommandSurface.Common,
|
|
1015
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1016
|
+
}),
|
|
1017
|
+
entry({
|
|
1018
|
+
command: 'conventions',
|
|
1019
|
+
description: 'Generic conventions registry (naming / path / barrel / layout / command / validation / ownership / testing / release / safety). Subcommands: list, get, doctor, check, explain.',
|
|
1020
|
+
category: 'core',
|
|
1021
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1022
|
+
mcpAvailable: true,
|
|
1023
|
+
surface: CommandSurface.Common,
|
|
1024
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1025
|
+
}),
|
|
1026
|
+
entry({
|
|
1027
|
+
command: 'registrations',
|
|
1028
|
+
description: 'Inspect / preview / plan pack-contributed registration hints (downstream registration steps for generated constructs). Subcommands: list, get, doctor, preview, plan.',
|
|
1029
|
+
category: 'core',
|
|
1030
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1031
|
+
mcpAvailable: true,
|
|
1032
|
+
surface: CommandSurface.Advanced,
|
|
1033
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1034
|
+
}),
|
|
1035
|
+
entry({
|
|
1036
|
+
command: 'self-config doctor',
|
|
1037
|
+
description: 'Cross-reference integrity for self-config (rule wiring, action hints, verification commands).',
|
|
1038
|
+
category: 'core',
|
|
1039
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1040
|
+
mcpAvailable: true,
|
|
1041
|
+
surface: CommandSurface.Common,
|
|
1042
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
1043
|
+
}),
|
|
1044
|
+
entry({
|
|
1045
|
+
command: 'graph why',
|
|
1046
|
+
description: 'Shortest-path explanation between two graph nodes.',
|
|
1047
|
+
category: 'core',
|
|
1048
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1049
|
+
mcpAvailable: true,
|
|
1050
|
+
surface: CommandSurface.Common,
|
|
1051
|
+
taskRole: CommandTaskRole.Explain,
|
|
1052
|
+
}),
|
|
1053
|
+
entry({
|
|
1054
|
+
command: 'presets list',
|
|
1055
|
+
description: 'List discovered presets.',
|
|
1056
|
+
category: 'packs',
|
|
1057
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1058
|
+
mcpAvailable: true,
|
|
1059
|
+
surface: CommandSurface.Common,
|
|
1060
|
+
}),
|
|
1061
|
+
entry({
|
|
1062
|
+
command: 'presets get',
|
|
1063
|
+
description: 'Show one preset (composition chain, appliesTo, asset counts).',
|
|
1064
|
+
category: 'packs',
|
|
1065
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1066
|
+
mcpAvailable: true,
|
|
1067
|
+
surface: CommandSurface.Common,
|
|
1068
|
+
}),
|
|
1069
|
+
entry({
|
|
1070
|
+
command: 'presets explain',
|
|
1071
|
+
description: 'Explain a preset: composition + appliesTo + recommendation rank for current repo.',
|
|
1072
|
+
category: 'packs',
|
|
1073
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1074
|
+
surface: CommandSurface.Common,
|
|
1075
|
+
taskRole: CommandTaskRole.Explain,
|
|
1076
|
+
}),
|
|
1077
|
+
entry({
|
|
1078
|
+
command: 'ask',
|
|
1079
|
+
description: 'Render a prompt-shaped answer from local knowledge (no AI call).',
|
|
1080
|
+
category: 'core',
|
|
1081
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1082
|
+
}),
|
|
1083
|
+
entry({
|
|
1084
|
+
command: 'safety audit',
|
|
1085
|
+
description: 'Audit the SharkCraft safety model (commands, MCP, packs, plan signing).',
|
|
1086
|
+
category: 'meta',
|
|
1087
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1088
|
+
mcpAvailable: true,
|
|
1089
|
+
surface: CommandSurface.Primary,
|
|
1090
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Ci],
|
|
1091
|
+
taskRole: CommandTaskRole.Validate,
|
|
1092
|
+
}),
|
|
1093
|
+
entry({
|
|
1094
|
+
command: 'commands doctor',
|
|
1095
|
+
description: 'Check catalog completeness against the live command registry.',
|
|
1096
|
+
category: 'meta',
|
|
1097
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1098
|
+
surface: CommandSurface.Advanced,
|
|
1099
|
+
intendedAudience: [CommandAudience.Maintainer],
|
|
1100
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1101
|
+
}),
|
|
1102
|
+
entry({
|
|
1103
|
+
command: 'help',
|
|
1104
|
+
description: 'Print help for a command (or all commands).',
|
|
1105
|
+
category: 'meta',
|
|
1106
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1107
|
+
surface: CommandSurface.Common,
|
|
1108
|
+
}),
|
|
1109
|
+
entry({
|
|
1110
|
+
command: 'mcp serve',
|
|
1111
|
+
description: 'Start the read-only MCP server (stdio).',
|
|
1112
|
+
category: 'meta',
|
|
1113
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1114
|
+
}),
|
|
1115
|
+
entry({
|
|
1116
|
+
command: 'export',
|
|
1117
|
+
description: 'Export the workspace registries as a portable archive.',
|
|
1118
|
+
category: 'core',
|
|
1119
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1120
|
+
writesFiles: true,
|
|
1121
|
+
}),
|
|
1122
|
+
entry({
|
|
1123
|
+
command: 'import',
|
|
1124
|
+
description: 'Import an exported registry archive into the workspace.',
|
|
1125
|
+
category: 'core',
|
|
1126
|
+
safetyLevel: SafetyLevel.WritesSource,
|
|
1127
|
+
writesFiles: true,
|
|
1128
|
+
writesSource: true,
|
|
1129
|
+
requiresReview: true,
|
|
1130
|
+
}),
|
|
1131
|
+
entry({
|
|
1132
|
+
command: 'onboard adopt status',
|
|
1133
|
+
description: 'Adoption state + freshness summary (read-only).',
|
|
1134
|
+
category: 'onboarding',
|
|
1135
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1136
|
+
}),
|
|
1137
|
+
entry({
|
|
1138
|
+
command: 'onboard adopt regenerate',
|
|
1139
|
+
description: 'Regenerate adoption patch + state; archive previous outputs under history/.',
|
|
1140
|
+
category: 'onboarding',
|
|
1141
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1142
|
+
writesFiles: true,
|
|
1143
|
+
requiresReview: true,
|
|
1144
|
+
}),
|
|
1145
|
+
entry({
|
|
1146
|
+
command: 'onboard adopt merge-preview',
|
|
1147
|
+
description: 'Preview what a manual merge would require. Read-only.',
|
|
1148
|
+
category: 'onboarding',
|
|
1149
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1150
|
+
}),
|
|
1151
|
+
entry({
|
|
1152
|
+
command: 'onboard adopt check',
|
|
1153
|
+
description: 'Validate adoption patch applicability (git apply --check / internal). Read-only.',
|
|
1154
|
+
category: 'onboarding',
|
|
1155
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1156
|
+
}),
|
|
1157
|
+
entry({
|
|
1158
|
+
command: 'onboard adopt report',
|
|
1159
|
+
description: 'Render the adoption report (text|markdown|html|json). --output writes to a file.',
|
|
1160
|
+
category: 'onboarding',
|
|
1161
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1162
|
+
writesFiles: true,
|
|
1163
|
+
}),
|
|
1164
|
+
entry({
|
|
1165
|
+
command: 'infer templates',
|
|
1166
|
+
description: 'Inferred template candidates from pack scaffold patterns + optional AST analysis.',
|
|
1167
|
+
category: 'onboarding',
|
|
1168
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1169
|
+
}),
|
|
1170
|
+
entry({
|
|
1171
|
+
command: 'scaffolds list',
|
|
1172
|
+
description: 'List pack-contributed scaffold patterns.',
|
|
1173
|
+
category: 'packs',
|
|
1174
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1175
|
+
mcpAvailable: true,
|
|
1176
|
+
}),
|
|
1177
|
+
entry({
|
|
1178
|
+
command: 'scaffolds get',
|
|
1179
|
+
description: 'Show one scaffold pattern.',
|
|
1180
|
+
category: 'packs',
|
|
1181
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1182
|
+
mcpAvailable: true,
|
|
1183
|
+
}),
|
|
1184
|
+
entry({
|
|
1185
|
+
command: 'scaffolds doctor',
|
|
1186
|
+
description: 'Validate scaffold pattern definitions.',
|
|
1187
|
+
category: 'packs',
|
|
1188
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1189
|
+
mcpAvailable: true,
|
|
1190
|
+
}),
|
|
1191
|
+
entry({
|
|
1192
|
+
command: 'report adoption',
|
|
1193
|
+
description: 'Render adoption report in chosen format (--output writes).',
|
|
1194
|
+
category: 'reports',
|
|
1195
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1196
|
+
writesFiles: true,
|
|
1197
|
+
}),
|
|
1198
|
+
entry({
|
|
1199
|
+
command: 'report session',
|
|
1200
|
+
description: 'Render a dev-session report (html|markdown|json).',
|
|
1201
|
+
category: 'reports',
|
|
1202
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1203
|
+
writesFiles: true,
|
|
1204
|
+
}),
|
|
1205
|
+
entry({
|
|
1206
|
+
command: 'report quality',
|
|
1207
|
+
description: 'Render the quality report in chosen format.',
|
|
1208
|
+
category: 'reports',
|
|
1209
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1210
|
+
writesFiles: true,
|
|
1211
|
+
}),
|
|
1212
|
+
entry({
|
|
1213
|
+
command: 'report safety',
|
|
1214
|
+
description: 'Render the safety audit in chosen format.',
|
|
1215
|
+
category: 'reports',
|
|
1216
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1217
|
+
writesFiles: true,
|
|
1218
|
+
}),
|
|
1219
|
+
entry({
|
|
1220
|
+
command: 'report review',
|
|
1221
|
+
description: 'Render a review packet as html|markdown|json.',
|
|
1222
|
+
category: 'reports',
|
|
1223
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1224
|
+
writesFiles: true,
|
|
1225
|
+
}),
|
|
1226
|
+
entry({
|
|
1227
|
+
command: 'report coverage',
|
|
1228
|
+
description: 'Render coverage report.',
|
|
1229
|
+
category: 'reports',
|
|
1230
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1231
|
+
writesFiles: true,
|
|
1232
|
+
}),
|
|
1233
|
+
entry({
|
|
1234
|
+
command: 'report drift',
|
|
1235
|
+
description: 'Render drift report.',
|
|
1236
|
+
category: 'reports',
|
|
1237
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1238
|
+
writesFiles: true,
|
|
1239
|
+
}),
|
|
1240
|
+
entry({
|
|
1241
|
+
command: 'report graph',
|
|
1242
|
+
description: 'Render knowledge graph summary.',
|
|
1243
|
+
category: 'reports',
|
|
1244
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1245
|
+
writesFiles: true,
|
|
1246
|
+
}),
|
|
1247
|
+
entry({
|
|
1248
|
+
command: 'dev open --serve --live',
|
|
1249
|
+
description: 'Local SSE-enabled session server (127.0.0.1 by default; refuses non-GET).',
|
|
1250
|
+
category: 'dev',
|
|
1251
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1252
|
+
}),
|
|
1253
|
+
// ── R59: dashboard restored, plus shrk stats ──────────────────────────
|
|
1254
|
+
entry({
|
|
1255
|
+
command: 'dashboard',
|
|
1256
|
+
description: 'Start the local read-only dashboard (web UI + API). GET/HEAD only; 127.0.0.1 by default.',
|
|
1257
|
+
category: 'dev',
|
|
1258
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1259
|
+
surface: CommandSurface.Primary,
|
|
1260
|
+
intendedAudience: [CommandAudience.Human],
|
|
1261
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1262
|
+
}),
|
|
1263
|
+
entry({
|
|
1264
|
+
command: 'dashboard export',
|
|
1265
|
+
description: 'Export dashboard-ready JSON files into a directory (defaults to .sharkcraft/dashboard-data).',
|
|
1266
|
+
category: 'dev',
|
|
1267
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1268
|
+
writesFiles: true,
|
|
1269
|
+
surface: CommandSurface.Advanced,
|
|
1270
|
+
}),
|
|
1271
|
+
entry({
|
|
1272
|
+
command: 'dashboard diff',
|
|
1273
|
+
description: 'Diff two dashboard exports by directory.',
|
|
1274
|
+
category: 'dev',
|
|
1275
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1276
|
+
surface: CommandSurface.Advanced,
|
|
1277
|
+
}),
|
|
1278
|
+
entry({
|
|
1279
|
+
command: 'stats',
|
|
1280
|
+
description: 'Repository statistics — per-language file counts, lines of code, bytes, averages, largest files.',
|
|
1281
|
+
category: 'core',
|
|
1282
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1283
|
+
mcpAvailable: true,
|
|
1284
|
+
surface: CommandSurface.Primary,
|
|
1285
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Ci],
|
|
1286
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1287
|
+
}),
|
|
1288
|
+
// ── Backend feature expansion ─────────────────────────────────────────
|
|
1289
|
+
entry({
|
|
1290
|
+
command: 'bundle create',
|
|
1291
|
+
description: 'Create a feature workflow bundle (no source writes).',
|
|
1292
|
+
category: 'bundles',
|
|
1293
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1294
|
+
writesFiles: true,
|
|
1295
|
+
}),
|
|
1296
|
+
entry({
|
|
1297
|
+
command: 'bundle list',
|
|
1298
|
+
description: 'List feature workflow bundles.',
|
|
1299
|
+
category: 'bundles',
|
|
1300
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1301
|
+
mcpAvailable: true,
|
|
1302
|
+
}),
|
|
1303
|
+
entry({
|
|
1304
|
+
command: 'bundle show',
|
|
1305
|
+
description: 'Show a feature workflow bundle.',
|
|
1306
|
+
category: 'bundles',
|
|
1307
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1308
|
+
mcpAvailable: true,
|
|
1309
|
+
}),
|
|
1310
|
+
entry({
|
|
1311
|
+
command: 'bundle plan',
|
|
1312
|
+
description: 'Plan one or more templates inside a feature bundle.',
|
|
1313
|
+
category: 'bundles',
|
|
1314
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1315
|
+
writesFiles: true,
|
|
1316
|
+
}),
|
|
1317
|
+
entry({
|
|
1318
|
+
command: 'bundle graph',
|
|
1319
|
+
description: 'Plan dependency graph for a feature bundle.',
|
|
1320
|
+
category: 'bundles',
|
|
1321
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1322
|
+
}),
|
|
1323
|
+
entry({
|
|
1324
|
+
command: 'bundle apply-assist',
|
|
1325
|
+
description: 'Suggest a safe apply order (no auto-apply).',
|
|
1326
|
+
category: 'bundles',
|
|
1327
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1328
|
+
requiresReview: true,
|
|
1329
|
+
}),
|
|
1330
|
+
entry({
|
|
1331
|
+
command: 'bundle validate',
|
|
1332
|
+
description: 'Run scoped validation for a bundle.',
|
|
1333
|
+
category: 'bundles',
|
|
1334
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1335
|
+
}),
|
|
1336
|
+
entry({
|
|
1337
|
+
command: 'impact',
|
|
1338
|
+
description: 'Architecture impact analysis for a task / files / plan / bundle.',
|
|
1339
|
+
category: 'analysis',
|
|
1340
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1341
|
+
mcpAvailable: true,
|
|
1342
|
+
surface: CommandSurface.Primary,
|
|
1343
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
1344
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1345
|
+
}),
|
|
1346
|
+
entry({
|
|
1347
|
+
command: 'trace',
|
|
1348
|
+
description: 'Fuzzy trace — resolve any free-form query against the engine registries.',
|
|
1349
|
+
category: 'analysis',
|
|
1350
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1351
|
+
mcpAvailable: true,
|
|
1352
|
+
}),
|
|
1353
|
+
entry({
|
|
1354
|
+
command: 'feedback',
|
|
1355
|
+
description: 'Feedback ingestion (ingest|summarize|actions|convert-to-backlog). Read-only.',
|
|
1356
|
+
category: 'analysis',
|
|
1357
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1358
|
+
mcpAvailable: true,
|
|
1359
|
+
}),
|
|
1360
|
+
// `commands suggest` hard-deleted (folded into unknown-command did-you-mean).
|
|
1361
|
+
// `commands explain` hard-deleted (folded into `shrk explain`).
|
|
1362
|
+
// `doctor watch` removed (use `shrk doctor --watch`).
|
|
1363
|
+
entry({
|
|
1364
|
+
command: 'knowledge stale-check --watch',
|
|
1365
|
+
description: 'Watch flag on stale-check (debounced, --once supported).',
|
|
1366
|
+
category: 'analysis',
|
|
1367
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1368
|
+
}),
|
|
1369
|
+
entry({
|
|
1370
|
+
command: 'templates drift --watch',
|
|
1371
|
+
description: 'Watch flag on template drift (debounced, --once supported).',
|
|
1372
|
+
category: 'analysis',
|
|
1373
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1374
|
+
}),
|
|
1375
|
+
entry({
|
|
1376
|
+
command: 'test agent --watch',
|
|
1377
|
+
description: 'Watch flag on agent contract tests (debounced, --once supported).',
|
|
1378
|
+
category: 'tests',
|
|
1379
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1380
|
+
}),
|
|
1381
|
+
// `watch integrity` removed (compose `--watch` on the individual commands).
|
|
1382
|
+
entry({
|
|
1383
|
+
command: 'fix',
|
|
1384
|
+
description: 'Fix preview system — preview-only suggestions for action hints / stale knowledge / template drift.',
|
|
1385
|
+
category: 'fixes',
|
|
1386
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1387
|
+
mcpAvailable: true,
|
|
1388
|
+
}),
|
|
1389
|
+
entry({
|
|
1390
|
+
command: 'lint',
|
|
1391
|
+
description: 'Unified lint aggregator. Runs knowledge / rules / templates per-kind doctors in one pass. --kind, --strict, --fix-preview, --json.',
|
|
1392
|
+
category: 'fixes',
|
|
1393
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1394
|
+
mcpAvailable: false,
|
|
1395
|
+
}),
|
|
1396
|
+
entry({
|
|
1397
|
+
command: 'fix list',
|
|
1398
|
+
description: 'List supported fix kinds.',
|
|
1399
|
+
category: 'fixes',
|
|
1400
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1401
|
+
mcpAvailable: true,
|
|
1402
|
+
}),
|
|
1403
|
+
entry({
|
|
1404
|
+
command: 'fix doctor',
|
|
1405
|
+
description: 'Fix-system doctor — counts errors/warnings without writes.',
|
|
1406
|
+
category: 'fixes',
|
|
1407
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1408
|
+
mcpAvailable: true,
|
|
1409
|
+
}),
|
|
1410
|
+
entry({
|
|
1411
|
+
command: 'fix preview',
|
|
1412
|
+
description: 'Generate fix previews. `--write-preview` writes only under .sharkcraft/fixes/.',
|
|
1413
|
+
category: 'fixes',
|
|
1414
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1415
|
+
writesFiles: true,
|
|
1416
|
+
surface: CommandSurface.Common,
|
|
1417
|
+
taskRole: CommandTaskRole.Generate,
|
|
1418
|
+
}),
|
|
1419
|
+
entry({
|
|
1420
|
+
command: 'codemod',
|
|
1421
|
+
description: 'Codemod-assist (NOT a codemod engine). Inventory + risk grouping + checklist + project-script template. Never rewrites source.',
|
|
1422
|
+
category: 'fixes',
|
|
1423
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1424
|
+
writesFiles: true,
|
|
1425
|
+
mcpAvailable: false,
|
|
1426
|
+
}),
|
|
1427
|
+
// Universal adoption — ecosystem bridges + IDE data surface.
|
|
1428
|
+
entry({
|
|
1429
|
+
command: 'eslint',
|
|
1430
|
+
description: 'ESLint bridge — `eslint scaffold` emits a flat-config snippet that ignores SharkCraft generated paths; `eslint report` re-emits boundary violations in the ESLint result format.',
|
|
1431
|
+
category: 'integrations',
|
|
1432
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1433
|
+
writesFiles: true,
|
|
1434
|
+
mcpAvailable: false,
|
|
1435
|
+
}),
|
|
1436
|
+
entry({
|
|
1437
|
+
command: 'biome',
|
|
1438
|
+
description: 'Biome bridge — `biome scaffold` emits a minimal biome.json that ignores SharkCraft generated paths. Boundary discipline stays with `shrk check boundaries`.',
|
|
1439
|
+
category: 'integrations',
|
|
1440
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1441
|
+
writesFiles: true,
|
|
1442
|
+
mcpAvailable: false,
|
|
1443
|
+
}),
|
|
1444
|
+
entry({
|
|
1445
|
+
command: 'ide',
|
|
1446
|
+
description: 'IDE data surface — `ide file <path> --json` returns per-file applicable rules + relevant knowledge + suggested commands as one record. Read-only.',
|
|
1447
|
+
category: 'integrations',
|
|
1448
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1449
|
+
mcpAvailable: false,
|
|
1450
|
+
}),
|
|
1451
|
+
entry({
|
|
1452
|
+
command: 'rules lint',
|
|
1453
|
+
description: 'Lint rules — alias of `rules doctor` with strict defaults. `--fix-preview` materialises smallest-change patches under .sharkcraft/fixes/rules-lint/ (preview only).',
|
|
1454
|
+
category: 'quality',
|
|
1455
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1456
|
+
writesFiles: true,
|
|
1457
|
+
mcpAvailable: false,
|
|
1458
|
+
surface: CommandSurface.Common,
|
|
1459
|
+
taskRole: CommandTaskRole.Validate,
|
|
1460
|
+
}),
|
|
1461
|
+
entry({
|
|
1462
|
+
command: 'coverage scaffolds',
|
|
1463
|
+
description: 'Scaffold/template/playbook coverage gap report for a task or domain.',
|
|
1464
|
+
category: 'core',
|
|
1465
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1466
|
+
mcpAvailable: true,
|
|
1467
|
+
}),
|
|
1468
|
+
entry({
|
|
1469
|
+
command: 'changes',
|
|
1470
|
+
description: 'Changes summary (--since/--staged/--files). Grouped diff + risk + validation hints.',
|
|
1471
|
+
category: 'analysis',
|
|
1472
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1473
|
+
mcpAvailable: true,
|
|
1474
|
+
}),
|
|
1475
|
+
entry({
|
|
1476
|
+
command: 'changes summary',
|
|
1477
|
+
description: 'Grouped changes summary.',
|
|
1478
|
+
category: 'analysis',
|
|
1479
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1480
|
+
mcpAvailable: true,
|
|
1481
|
+
}),
|
|
1482
|
+
entry({
|
|
1483
|
+
command: 'pr summary',
|
|
1484
|
+
description: 'PR summary generator (markdown by default). `--output <file>` writes to disk.',
|
|
1485
|
+
category: 'review',
|
|
1486
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1487
|
+
mcpAvailable: true,
|
|
1488
|
+
}),
|
|
1489
|
+
entry({
|
|
1490
|
+
command: 'ci report',
|
|
1491
|
+
description: 'CI integrity report aggregator over .sharkcraft/reports. --fail-on error|warning|none.',
|
|
1492
|
+
category: 'ci',
|
|
1493
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1494
|
+
mcpAvailable: true,
|
|
1495
|
+
surface: CommandSurface.Common,
|
|
1496
|
+
taskRole: CommandTaskRole.Validate,
|
|
1497
|
+
}),
|
|
1498
|
+
entry({
|
|
1499
|
+
command: 'impact --symbol',
|
|
1500
|
+
description: 'Direct symbol impact — uses AST-backed symbol index.',
|
|
1501
|
+
category: 'analysis',
|
|
1502
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1503
|
+
}),
|
|
1504
|
+
entry({
|
|
1505
|
+
command: 'trace --symbol',
|
|
1506
|
+
description: 'Direct symbol trace — uses AST-backed symbol index.',
|
|
1507
|
+
category: 'analysis',
|
|
1508
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1509
|
+
}),
|
|
1510
|
+
entry({
|
|
1511
|
+
command: 'tests impact',
|
|
1512
|
+
description: 'Test impact analysis.',
|
|
1513
|
+
category: 'analysis',
|
|
1514
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1515
|
+
mcpAvailable: true,
|
|
1516
|
+
}),
|
|
1517
|
+
entry({
|
|
1518
|
+
command: 'tests suggest',
|
|
1519
|
+
description: 'Suggest a test path for a source file.',
|
|
1520
|
+
category: 'analysis',
|
|
1521
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1522
|
+
}),
|
|
1523
|
+
entry({
|
|
1524
|
+
command: 'tests missing',
|
|
1525
|
+
description: 'List missing test files.',
|
|
1526
|
+
category: 'analysis',
|
|
1527
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1528
|
+
}),
|
|
1529
|
+
entry({
|
|
1530
|
+
command: 'repo areas',
|
|
1531
|
+
description: 'Repository area map.',
|
|
1532
|
+
category: 'analysis',
|
|
1533
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1534
|
+
mcpAvailable: true,
|
|
1535
|
+
}),
|
|
1536
|
+
entry({
|
|
1537
|
+
command: 'owners list',
|
|
1538
|
+
description: 'List ownership rules.',
|
|
1539
|
+
category: 'ownership',
|
|
1540
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1541
|
+
mcpAvailable: true,
|
|
1542
|
+
}),
|
|
1543
|
+
entry({
|
|
1544
|
+
command: 'owners match',
|
|
1545
|
+
description: 'Match a file against ownership rules.',
|
|
1546
|
+
category: 'ownership',
|
|
1547
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1548
|
+
mcpAvailable: true,
|
|
1549
|
+
}),
|
|
1550
|
+
entry({
|
|
1551
|
+
command: 'owners impact',
|
|
1552
|
+
description: 'Ownership impact for files / plan / bundle.',
|
|
1553
|
+
category: 'ownership',
|
|
1554
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1555
|
+
}),
|
|
1556
|
+
entry({
|
|
1557
|
+
command: 'policy list',
|
|
1558
|
+
description: 'List policy checks.',
|
|
1559
|
+
category: 'policy',
|
|
1560
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1561
|
+
}),
|
|
1562
|
+
entry({
|
|
1563
|
+
command: 'policy check',
|
|
1564
|
+
description: 'Run the policy engine.',
|
|
1565
|
+
category: 'policy',
|
|
1566
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1567
|
+
mcpAvailable: true,
|
|
1568
|
+
}),
|
|
1569
|
+
entry({
|
|
1570
|
+
command: 'git changed',
|
|
1571
|
+
description: 'List changed files (read-only git diff).',
|
|
1572
|
+
category: 'git',
|
|
1573
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1574
|
+
}),
|
|
1575
|
+
entry({
|
|
1576
|
+
command: 'git root',
|
|
1577
|
+
description: 'Print the git repo root.',
|
|
1578
|
+
category: 'git',
|
|
1579
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1580
|
+
}),
|
|
1581
|
+
entry({
|
|
1582
|
+
command: 'git branch',
|
|
1583
|
+
description: 'Print the current git branch.',
|
|
1584
|
+
category: 'git',
|
|
1585
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1586
|
+
}),
|
|
1587
|
+
entry({
|
|
1588
|
+
command: 'git status-summary',
|
|
1589
|
+
description: 'Compact git status summary.',
|
|
1590
|
+
category: 'git',
|
|
1591
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1592
|
+
}),
|
|
1593
|
+
entry({
|
|
1594
|
+
command: 'graph imports',
|
|
1595
|
+
description: 'Import graph analysis (cycles/fan-in/out/orphans).',
|
|
1596
|
+
category: 'analysis',
|
|
1597
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1598
|
+
mcpAvailable: true,
|
|
1599
|
+
surface: CommandSurface.Common,
|
|
1600
|
+
taskRole: CommandTaskRole.Inspect,
|
|
1601
|
+
}),
|
|
1602
|
+
entry({
|
|
1603
|
+
command: 'templates lint',
|
|
1604
|
+
description: 'Lint registered templates.',
|
|
1605
|
+
category: 'quality',
|
|
1606
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1607
|
+
}),
|
|
1608
|
+
entry({
|
|
1609
|
+
command: 'templates test',
|
|
1610
|
+
description: 'Test template rendering with example variables.',
|
|
1611
|
+
category: 'quality',
|
|
1612
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1613
|
+
}),
|
|
1614
|
+
entry({
|
|
1615
|
+
command: 'boundaries suggest',
|
|
1616
|
+
description: 'Suggest fixes for boundary violations.',
|
|
1617
|
+
category: 'analysis',
|
|
1618
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1619
|
+
}),
|
|
1620
|
+
entry({
|
|
1621
|
+
command: 'export bundle',
|
|
1622
|
+
description: 'Export a feature bundle to a folder.',
|
|
1623
|
+
category: 'export',
|
|
1624
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1625
|
+
writesFiles: true,
|
|
1626
|
+
}),
|
|
1627
|
+
entry({
|
|
1628
|
+
command: 'export session',
|
|
1629
|
+
description: 'Export a dev session to a folder.',
|
|
1630
|
+
category: 'export',
|
|
1631
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1632
|
+
writesFiles: true,
|
|
1633
|
+
}),
|
|
1634
|
+
entry({
|
|
1635
|
+
command: 'task decompose',
|
|
1636
|
+
description: 'Deterministic task decomposition (no AI).',
|
|
1637
|
+
category: 'core',
|
|
1638
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1639
|
+
}),
|
|
1640
|
+
entry({
|
|
1641
|
+
command: 'review packet',
|
|
1642
|
+
description: 'Build a review packet (v1 default, --v2 for the enriched format).',
|
|
1643
|
+
category: 'review',
|
|
1644
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1645
|
+
mcpAvailable: true,
|
|
1646
|
+
surface: CommandSurface.Advanced,
|
|
1647
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent, CommandAudience.Ci],
|
|
1648
|
+
taskRole: CommandTaskRole.Review,
|
|
1649
|
+
}),
|
|
1650
|
+
entry({
|
|
1651
|
+
command: 'ci scaffold gitlab',
|
|
1652
|
+
description: 'Scaffold a GitLab CI configuration.',
|
|
1653
|
+
category: 'ci',
|
|
1654
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1655
|
+
writesFiles: true,
|
|
1656
|
+
}),
|
|
1657
|
+
// `ci scaffold circleci|azure-pipelines` hard-deleted. See docs/ci-providers.md.
|
|
1658
|
+
entry({
|
|
1659
|
+
command: 'ci scaffold bitbucket',
|
|
1660
|
+
description: 'Scaffold a Bitbucket Pipelines configuration.',
|
|
1661
|
+
category: 'ci',
|
|
1662
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1663
|
+
writesFiles: true,
|
|
1664
|
+
}),
|
|
1665
|
+
// ── Round 11: impact / search / brief / constructs / playbooks / replay ───
|
|
1666
|
+
entry({
|
|
1667
|
+
command: 'search',
|
|
1668
|
+
description: 'Unified registry search across knowledge, rules, paths, templates, pipelines, presets, packs, boundaries, docs, sessions, bundles, constructs, playbooks. For "what should I do?" prefer `shrk recommend`.',
|
|
1669
|
+
category: 'analysis',
|
|
1670
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1671
|
+
mcpAvailable: true,
|
|
1672
|
+
surface: CommandSurface.Primary,
|
|
1673
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
1674
|
+
taskRole: CommandTaskRole.Search,
|
|
1675
|
+
preferredCommand: 'shrk recommend "<query>"',
|
|
1676
|
+
overlapsWith: ['recommend', 'why'],
|
|
1677
|
+
}),
|
|
1678
|
+
entry({
|
|
1679
|
+
command: 'brief',
|
|
1680
|
+
description: 'Render a Markdown / JSON agent brief for a task or diff.',
|
|
1681
|
+
category: 'analysis',
|
|
1682
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1683
|
+
mcpAvailable: true,
|
|
1684
|
+
surface: CommandSurface.Primary,
|
|
1685
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
1686
|
+
taskRole: CommandTaskRole.Context,
|
|
1687
|
+
}),
|
|
1688
|
+
entry({
|
|
1689
|
+
command: 'constructs list',
|
|
1690
|
+
description: 'List registered constructs.',
|
|
1691
|
+
category: 'analysis',
|
|
1692
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1693
|
+
mcpAvailable: true,
|
|
1694
|
+
}),
|
|
1695
|
+
entry({
|
|
1696
|
+
command: 'constructs get',
|
|
1697
|
+
description: 'Show construct details.',
|
|
1698
|
+
category: 'analysis',
|
|
1699
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1700
|
+
mcpAvailable: true,
|
|
1701
|
+
}),
|
|
1702
|
+
entry({
|
|
1703
|
+
command: 'constructs trace',
|
|
1704
|
+
description: 'Trace files / publicApi / events / tokens of a construct.',
|
|
1705
|
+
category: 'analysis',
|
|
1706
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1707
|
+
mcpAvailable: true,
|
|
1708
|
+
}),
|
|
1709
|
+
entry({
|
|
1710
|
+
command: 'constructs api',
|
|
1711
|
+
description: 'Show public-API entries for a construct.',
|
|
1712
|
+
category: 'analysis',
|
|
1713
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1714
|
+
mcpAvailable: true,
|
|
1715
|
+
}),
|
|
1716
|
+
entry({
|
|
1717
|
+
command: 'constructs events',
|
|
1718
|
+
description: 'List events of a construct.',
|
|
1719
|
+
category: 'analysis',
|
|
1720
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1721
|
+
mcpAvailable: true,
|
|
1722
|
+
}),
|
|
1723
|
+
entry({
|
|
1724
|
+
command: 'constructs tokens',
|
|
1725
|
+
description: 'List tokens contributed by a construct.',
|
|
1726
|
+
category: 'analysis',
|
|
1727
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1728
|
+
mcpAvailable: true,
|
|
1729
|
+
}),
|
|
1730
|
+
entry({
|
|
1731
|
+
command: 'constructs facets',
|
|
1732
|
+
description: 'List facets of a construct.',
|
|
1733
|
+
category: 'analysis',
|
|
1734
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1735
|
+
mcpAvailable: true,
|
|
1736
|
+
}),
|
|
1737
|
+
entry({
|
|
1738
|
+
command: 'constructs search',
|
|
1739
|
+
description: 'Search constructs and facets.',
|
|
1740
|
+
category: 'analysis',
|
|
1741
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1742
|
+
mcpAvailable: true,
|
|
1743
|
+
}),
|
|
1744
|
+
entry({
|
|
1745
|
+
command: 'playbooks list',
|
|
1746
|
+
description: 'List registered playbooks.',
|
|
1747
|
+
category: 'analysis',
|
|
1748
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1749
|
+
mcpAvailable: true,
|
|
1750
|
+
}),
|
|
1751
|
+
entry({
|
|
1752
|
+
command: 'playbooks get',
|
|
1753
|
+
description: 'Show a playbook.',
|
|
1754
|
+
category: 'analysis',
|
|
1755
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1756
|
+
mcpAvailable: true,
|
|
1757
|
+
}),
|
|
1758
|
+
entry({
|
|
1759
|
+
command: 'playbooks recommend',
|
|
1760
|
+
description: 'Recommend playbooks for a task.',
|
|
1761
|
+
category: 'analysis',
|
|
1762
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1763
|
+
mcpAvailable: true,
|
|
1764
|
+
}),
|
|
1765
|
+
entry({
|
|
1766
|
+
command: 'playbooks runbook',
|
|
1767
|
+
description: 'Render a playbook as a structured runbook.',
|
|
1768
|
+
category: 'analysis',
|
|
1769
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1770
|
+
}),
|
|
1771
|
+
entry({
|
|
1772
|
+
command: 'playbooks brief',
|
|
1773
|
+
description: 'Render an agent brief from a playbook.',
|
|
1774
|
+
category: 'analysis',
|
|
1775
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1776
|
+
}),
|
|
1777
|
+
entry({
|
|
1778
|
+
command: 'bundle replay',
|
|
1779
|
+
description: 'Replay apply-audit.log and detect tampering / drift.',
|
|
1780
|
+
category: 'bundles',
|
|
1781
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1782
|
+
mcpAvailable: true,
|
|
1783
|
+
}),
|
|
1784
|
+
entry({
|
|
1785
|
+
command: 'bundle apply-assist --resume',
|
|
1786
|
+
description: 'Resume an apply-assist run, skipping already-applied plans.',
|
|
1787
|
+
category: 'bundles',
|
|
1788
|
+
safetyLevel: SafetyLevel.WritesSessionOnly,
|
|
1789
|
+
requiresReview: true,
|
|
1790
|
+
}),
|
|
1791
|
+
entry({
|
|
1792
|
+
command: 'policy test',
|
|
1793
|
+
description: 'Test policy checks with fixtures or inline input.',
|
|
1794
|
+
category: 'policy',
|
|
1795
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1796
|
+
}),
|
|
1797
|
+
entry({
|
|
1798
|
+
command: 'policy run',
|
|
1799
|
+
description: 'Run all policy checks.',
|
|
1800
|
+
category: 'policy',
|
|
1801
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1802
|
+
mcpAvailable: true,
|
|
1803
|
+
}),
|
|
1804
|
+
entry({
|
|
1805
|
+
command: 'report site --manifest',
|
|
1806
|
+
description: 'Emit a JSON manifest of the report site pages.',
|
|
1807
|
+
category: 'reports',
|
|
1808
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1809
|
+
writesFiles: true,
|
|
1810
|
+
mcpAvailable: true,
|
|
1811
|
+
}),
|
|
1812
|
+
entry({
|
|
1813
|
+
command: 'runtime doctor',
|
|
1814
|
+
description: 'Runtime compatibility doctor (Node / Bun version + compat-node summary).',
|
|
1815
|
+
category: 'meta',
|
|
1816
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1817
|
+
}),
|
|
1818
|
+
// ── Visualization / authoring / governance ──────────────────────────
|
|
1819
|
+
entry({
|
|
1820
|
+
command: 'impact --format',
|
|
1821
|
+
description: 'Render impact reports as text / markdown / html / json.',
|
|
1822
|
+
category: 'analysis',
|
|
1823
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1824
|
+
mcpAvailable: true,
|
|
1825
|
+
}),
|
|
1826
|
+
entry({
|
|
1827
|
+
command: 'report impact',
|
|
1828
|
+
description: 'Render a saved impact JSON in the chosen format.',
|
|
1829
|
+
category: 'reports',
|
|
1830
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1831
|
+
writesFiles: true,
|
|
1832
|
+
}),
|
|
1833
|
+
entry({
|
|
1834
|
+
command: 'report site --impact',
|
|
1835
|
+
description: 'Embed an impact JSON in the static report site.',
|
|
1836
|
+
category: 'reports',
|
|
1837
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1838
|
+
writesFiles: true,
|
|
1839
|
+
}),
|
|
1840
|
+
entry({
|
|
1841
|
+
command: 'constructs infer',
|
|
1842
|
+
description: 'Infer construct candidates from files / conventions / import graph.',
|
|
1843
|
+
category: 'analysis',
|
|
1844
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1845
|
+
mcpAvailable: true,
|
|
1846
|
+
}),
|
|
1847
|
+
entry({
|
|
1848
|
+
command: 'constructs infer --write-drafts',
|
|
1849
|
+
description: 'Write inferred constructs to sharkcraft/construct-drafts/ (review-only).',
|
|
1850
|
+
category: 'analysis',
|
|
1851
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1852
|
+
writesFiles: true,
|
|
1853
|
+
requiresReview: true,
|
|
1854
|
+
}),
|
|
1855
|
+
entry({
|
|
1856
|
+
command: 'playbooks script',
|
|
1857
|
+
description: 'Render a playbook as a bash-style preview script (no execution).',
|
|
1858
|
+
category: 'analysis',
|
|
1859
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1860
|
+
writesFiles: true,
|
|
1861
|
+
mcpAvailable: true,
|
|
1862
|
+
}),
|
|
1863
|
+
entry({
|
|
1864
|
+
command: 'playbooks preview',
|
|
1865
|
+
description: 'Show playbook preview (structured steps + recommendations).',
|
|
1866
|
+
category: 'analysis',
|
|
1867
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1868
|
+
mcpAvailable: true,
|
|
1869
|
+
}),
|
|
1870
|
+
entry({
|
|
1871
|
+
command: 'playbooks validate',
|
|
1872
|
+
description: 'Validate a playbook against registered templates / pipelines.',
|
|
1873
|
+
category: 'analysis',
|
|
1874
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1875
|
+
mcpAvailable: true,
|
|
1876
|
+
}),
|
|
1877
|
+
entry({
|
|
1878
|
+
command: 'policy snapshot',
|
|
1879
|
+
description: 'Capture / compare policy snapshots (writes under fixture dirs only).',
|
|
1880
|
+
category: 'policy',
|
|
1881
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1882
|
+
writesFiles: true,
|
|
1883
|
+
}),
|
|
1884
|
+
entry({
|
|
1885
|
+
command: 'policy test --update-snapshot',
|
|
1886
|
+
description: 'Update the saved snapshot for a policy fixture.',
|
|
1887
|
+
category: 'policy',
|
|
1888
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1889
|
+
writesFiles: true,
|
|
1890
|
+
}),
|
|
1891
|
+
entry({
|
|
1892
|
+
command: 'brief --chunk',
|
|
1893
|
+
description: 'Chunked brief output (00-index + per-section files).',
|
|
1894
|
+
category: 'analysis',
|
|
1895
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1896
|
+
writesFiles: true,
|
|
1897
|
+
mcpAvailable: true,
|
|
1898
|
+
}),
|
|
1899
|
+
entry({
|
|
1900
|
+
command: 'search tuning',
|
|
1901
|
+
description: 'List or doctor search-tuning entries contributed by packs / local config.',
|
|
1902
|
+
category: 'analysis',
|
|
1903
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1904
|
+
mcpAvailable: true,
|
|
1905
|
+
}),
|
|
1906
|
+
entry({
|
|
1907
|
+
command: 'bundle replay --all',
|
|
1908
|
+
description: 'Cross-bundle replay across every bundle (read-only).',
|
|
1909
|
+
category: 'bundles',
|
|
1910
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1911
|
+
mcpAvailable: true,
|
|
1912
|
+
}),
|
|
1913
|
+
// ── Adoption, CI gates, demo scaffolds ──────────────────────────────
|
|
1914
|
+
entry({
|
|
1915
|
+
command: 'impact --graph-format',
|
|
1916
|
+
description: 'Emit Mermaid / DOT dependency graph alongside the impact report.',
|
|
1917
|
+
category: 'analysis',
|
|
1918
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1919
|
+
mcpAvailable: true,
|
|
1920
|
+
}),
|
|
1921
|
+
entry({
|
|
1922
|
+
command: 'impact graph',
|
|
1923
|
+
description: 'Render a Mermaid / DOT graph from a saved impact report.',
|
|
1924
|
+
category: 'analysis',
|
|
1925
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1926
|
+
mcpAvailable: true,
|
|
1927
|
+
}),
|
|
1928
|
+
entry({
|
|
1929
|
+
command: 'report impact --include-graph',
|
|
1930
|
+
description: 'Embed a Mermaid / DOT graph in the rendered impact report.',
|
|
1931
|
+
category: 'reports',
|
|
1932
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1933
|
+
writesFiles: true,
|
|
1934
|
+
}),
|
|
1935
|
+
entry({
|
|
1936
|
+
command: 'policy snapshot --gate',
|
|
1937
|
+
description: 'CI gate for policy snapshots — exits non-zero on drift/missing.',
|
|
1938
|
+
category: 'policy',
|
|
1939
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1940
|
+
}),
|
|
1941
|
+
entry({
|
|
1942
|
+
command: 'policy snapshot --accept',
|
|
1943
|
+
description: 'Rewrite policy snapshots after human review (fixture-only writes).',
|
|
1944
|
+
category: 'policy',
|
|
1945
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1946
|
+
writesFiles: true,
|
|
1947
|
+
requiresReview: true,
|
|
1948
|
+
}),
|
|
1949
|
+
entry({
|
|
1950
|
+
command: 'constructs adopt',
|
|
1951
|
+
description: 'Classify construct drafts into safe / review / low / covered / conflict.',
|
|
1952
|
+
category: 'analysis',
|
|
1953
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1954
|
+
mcpAvailable: true,
|
|
1955
|
+
}),
|
|
1956
|
+
entry({
|
|
1957
|
+
command: 'constructs adopt --write-patch',
|
|
1958
|
+
description: 'Write construct-adoption files under construct-drafts/adoption/.',
|
|
1959
|
+
category: 'analysis',
|
|
1960
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1961
|
+
writesFiles: true,
|
|
1962
|
+
requiresReview: true,
|
|
1963
|
+
}),
|
|
1964
|
+
entry({
|
|
1965
|
+
command: 'constructs adopt status',
|
|
1966
|
+
description: 'Show construct-adoption plan status / age.',
|
|
1967
|
+
category: 'analysis',
|
|
1968
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1969
|
+
mcpAvailable: true,
|
|
1970
|
+
}),
|
|
1971
|
+
entry({
|
|
1972
|
+
command: 'constructs adopt review',
|
|
1973
|
+
description: 'Render the construct-adoption review as Markdown.',
|
|
1974
|
+
category: 'analysis',
|
|
1975
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1976
|
+
}),
|
|
1977
|
+
entry({
|
|
1978
|
+
command: 'search tuning explain',
|
|
1979
|
+
description: 'Explain how tuning affects a search query.',
|
|
1980
|
+
category: 'analysis',
|
|
1981
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
1982
|
+
mcpAvailable: true,
|
|
1983
|
+
}),
|
|
1984
|
+
entry({
|
|
1985
|
+
command: 'bundle replay scaffold github-actions',
|
|
1986
|
+
description: 'Scaffold a scheduled bundle-replay workflow (dry-run by default).',
|
|
1987
|
+
category: 'bundles',
|
|
1988
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1989
|
+
writesFiles: true,
|
|
1990
|
+
requiresReview: true,
|
|
1991
|
+
}),
|
|
1992
|
+
entry({
|
|
1993
|
+
command: 'ci scaffold github-actions --with-impact',
|
|
1994
|
+
description: 'CI scaffold v2: include impact-since-main step + artifact upload.',
|
|
1995
|
+
category: 'ci',
|
|
1996
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
1997
|
+
writesFiles: true,
|
|
1998
|
+
}),
|
|
1999
|
+
entry({
|
|
2000
|
+
command: 'ci scaffold github-actions --with-report-site',
|
|
2001
|
+
description: 'CI scaffold v2: include report site step + artifact upload.',
|
|
2002
|
+
category: 'ci',
|
|
2003
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2004
|
+
writesFiles: true,
|
|
2005
|
+
}),
|
|
2006
|
+
entry({
|
|
2007
|
+
command: 'ci scaffold github-actions --with-bundle-replay',
|
|
2008
|
+
description: 'CI scaffold v2: include bundle-replay step + artifact upload.',
|
|
2009
|
+
category: 'ci',
|
|
2010
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2011
|
+
writesFiles: true,
|
|
2012
|
+
}),
|
|
2013
|
+
entry({
|
|
2014
|
+
command: 'packs release-check',
|
|
2015
|
+
description: 'Run a deterministic release-readiness check on a pack.',
|
|
2016
|
+
category: 'packs',
|
|
2017
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2018
|
+
mcpAvailable: true,
|
|
2019
|
+
}),
|
|
2020
|
+
// ── Release-grade adoption, release gates, multi-provider CI, demo workflows ──
|
|
2021
|
+
entry({
|
|
2022
|
+
command: 'onboard adopt diff',
|
|
2023
|
+
description: 'Line-level diff of the proposed onboard adoption against live sharkcraft/*.ts.',
|
|
2024
|
+
category: 'onboard',
|
|
2025
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2026
|
+
mcpAvailable: true,
|
|
2027
|
+
}),
|
|
2028
|
+
entry({
|
|
2029
|
+
command: 'constructs adopt diff',
|
|
2030
|
+
description: 'Line-level diff of the proposed construct adoption against live constructs.ts.',
|
|
2031
|
+
category: 'constructs',
|
|
2032
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2033
|
+
mcpAvailable: true,
|
|
2034
|
+
}),
|
|
2035
|
+
entry({
|
|
2036
|
+
command: 'packs doctor --release',
|
|
2037
|
+
description: 'Pack doctor with the release-check gate folded into the report.',
|
|
2038
|
+
category: 'packs',
|
|
2039
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2040
|
+
mcpAvailable: true,
|
|
2041
|
+
}),
|
|
2042
|
+
entry({
|
|
2043
|
+
command: 'packs doctor --release --strict',
|
|
2044
|
+
description: 'Pack doctor + release-check in strict mode (warnings → errors).',
|
|
2045
|
+
category: 'packs',
|
|
2046
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2047
|
+
mcpAvailable: true,
|
|
2048
|
+
}),
|
|
2049
|
+
entry({
|
|
2050
|
+
command: 'packs compat',
|
|
2051
|
+
description: 'Detect pack backwards-compat issues (helper-missing imports).',
|
|
2052
|
+
category: 'packs',
|
|
2053
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2054
|
+
mcpAvailable: true,
|
|
2055
|
+
}),
|
|
2056
|
+
entry({
|
|
2057
|
+
command: 'ci scaffold gitlab --with-quality',
|
|
2058
|
+
description: 'Render a GitLab CI scaffold with the quality gate.',
|
|
2059
|
+
category: 'ci',
|
|
2060
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2061
|
+
mcpAvailable: true,
|
|
2062
|
+
}),
|
|
2063
|
+
entry({
|
|
2064
|
+
command: 'ci scaffold bitbucket --with-quality',
|
|
2065
|
+
description: 'Render a Bitbucket pipeline scaffold with the quality gate.',
|
|
2066
|
+
category: 'ci',
|
|
2067
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2068
|
+
mcpAvailable: true,
|
|
2069
|
+
}),
|
|
2070
|
+
entry({
|
|
2071
|
+
command: 'ci scaffold gitlab --with-policy-snapshot-gate',
|
|
2072
|
+
description: 'Add the policy-snapshot gate step to the GitLab scaffold.',
|
|
2073
|
+
category: 'ci',
|
|
2074
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2075
|
+
mcpAvailable: true,
|
|
2076
|
+
}),
|
|
2077
|
+
entry({
|
|
2078
|
+
command: 'ci scaffold bitbucket --with-policy-snapshot-gate',
|
|
2079
|
+
description: 'Add the policy-snapshot gate step to the Bitbucket scaffold.',
|
|
2080
|
+
category: 'ci',
|
|
2081
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2082
|
+
mcpAvailable: true,
|
|
2083
|
+
}),
|
|
2084
|
+
entry({
|
|
2085
|
+
command: 'report site --with-impact-graphs',
|
|
2086
|
+
description: 'Embed Mermaid + DOT impact graph source into the report site pages.',
|
|
2087
|
+
category: 'reports',
|
|
2088
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2089
|
+
writesFiles: true,
|
|
2090
|
+
mcpAvailable: false,
|
|
2091
|
+
}),
|
|
2092
|
+
// ── Release hardening, compatibility, visual reports, CI security ──────────
|
|
2093
|
+
entry({
|
|
2094
|
+
command: 'report site --render-impact-graphs',
|
|
2095
|
+
description: 'Optionally render impact graphs to SVG via local mmdc/dot (opt-in, runs a subprocess).',
|
|
2096
|
+
category: 'reports',
|
|
2097
|
+
safetyLevel: SafetyLevel.RunsShell,
|
|
2098
|
+
writesFiles: true,
|
|
2099
|
+
runsShell: true,
|
|
2100
|
+
mcpAvailable: false,
|
|
2101
|
+
}),
|
|
2102
|
+
entry({
|
|
2103
|
+
command: 'impact <input> --graph-format mermaid --graph-output <path> --render-svg',
|
|
2104
|
+
description: 'Render an impact graph to SVG via local mmdc/dot (opt-in subprocess).',
|
|
2105
|
+
category: 'review',
|
|
2106
|
+
safetyLevel: SafetyLevel.RunsShell,
|
|
2107
|
+
writesFiles: true,
|
|
2108
|
+
runsShell: true,
|
|
2109
|
+
mcpAvailable: false,
|
|
2110
|
+
}),
|
|
2111
|
+
entry({
|
|
2112
|
+
command: 'impact graph <impact.json> --render-svg',
|
|
2113
|
+
description: 'Render a previously-saved impact graph to SVG (opt-in subprocess).',
|
|
2114
|
+
category: 'review',
|
|
2115
|
+
safetyLevel: SafetyLevel.RunsShell,
|
|
2116
|
+
writesFiles: true,
|
|
2117
|
+
runsShell: true,
|
|
2118
|
+
mcpAvailable: false,
|
|
2119
|
+
}),
|
|
2120
|
+
entry({
|
|
2121
|
+
command: 'report site --title "<text>" --brand "<text>"',
|
|
2122
|
+
description: 'Add a banner/title and brand label to every page of the report site.',
|
|
2123
|
+
category: 'reports',
|
|
2124
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2125
|
+
writesFiles: true,
|
|
2126
|
+
mcpAvailable: false,
|
|
2127
|
+
}),
|
|
2128
|
+
entry({
|
|
2129
|
+
command: 'packs compat --consumer-root <path>',
|
|
2130
|
+
description: 'Diff a pack\'s @shrkcrft/plugin-api imports against the consumer\'s installed exports.',
|
|
2131
|
+
category: 'packs',
|
|
2132
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2133
|
+
mcpAvailable: true,
|
|
2134
|
+
}),
|
|
2135
|
+
entry({
|
|
2136
|
+
command: 'onboard adopt diff --record-checkpoint',
|
|
2137
|
+
description: 'Record an adoption checkpoint for the onboard workflow (drafts/targets/diff hashes).',
|
|
2138
|
+
category: 'onboard',
|
|
2139
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2140
|
+
writesFiles: true,
|
|
2141
|
+
mcpAvailable: true,
|
|
2142
|
+
}),
|
|
2143
|
+
entry({
|
|
2144
|
+
command: 'constructs adopt diff --record-checkpoint',
|
|
2145
|
+
description: 'Record an adoption checkpoint for the construct workflow.',
|
|
2146
|
+
category: 'constructs',
|
|
2147
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2148
|
+
writesFiles: true,
|
|
2149
|
+
mcpAvailable: true,
|
|
2150
|
+
}),
|
|
2151
|
+
entry({
|
|
2152
|
+
command: 'bundle diff <a> <b>',
|
|
2153
|
+
description: 'Diff two feature bundles (plans, deps, validations, targets). Read-only.',
|
|
2154
|
+
category: 'bundles',
|
|
2155
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2156
|
+
mcpAvailable: true,
|
|
2157
|
+
}),
|
|
2158
|
+
entry({
|
|
2159
|
+
command: 'ci permissions <workflow-file>',
|
|
2160
|
+
description: 'Audit a CI workflow for write permissions, comment posting, tokens, external actions.',
|
|
2161
|
+
category: 'ci',
|
|
2162
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2163
|
+
mcpAvailable: true,
|
|
2164
|
+
}),
|
|
2165
|
+
// `ci scaffold jenkins|azure` hard-deleted. See docs/ci-providers.md.
|
|
2166
|
+
entry({
|
|
2167
|
+
command: 'brief "<task>" --chunk --compare-with <dir>',
|
|
2168
|
+
description: 'Render a chunked brief and report which sections changed vs a previous brief directory.',
|
|
2169
|
+
category: 'briefs',
|
|
2170
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2171
|
+
mcpAvailable: false,
|
|
2172
|
+
}),
|
|
2173
|
+
entry({
|
|
2174
|
+
command: 'release readiness',
|
|
2175
|
+
description: 'Aggregated release-readiness gate (doctor + coverage + packs + docs + checklist). Read-only.',
|
|
2176
|
+
category: 'release',
|
|
2177
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2178
|
+
mcpAvailable: true,
|
|
2179
|
+
surface: CommandSurface.Advanced,
|
|
2180
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Ci],
|
|
2181
|
+
taskRole: CommandTaskRole.Release,
|
|
2182
|
+
}),
|
|
2183
|
+
entry({
|
|
2184
|
+
command: 'release readiness --strict',
|
|
2185
|
+
description: 'Strict readiness — escalate warnings to blockers; exit non-zero on any issue.',
|
|
2186
|
+
category: 'release',
|
|
2187
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2188
|
+
mcpAvailable: true,
|
|
2189
|
+
}),
|
|
2190
|
+
// Additions: human entrypoint, governance, smoke harness.
|
|
2191
|
+
entry({
|
|
2192
|
+
command: 'start-here',
|
|
2193
|
+
description: 'Human entry point — 30-second explanation + 5 primary flows + safety pledge.',
|
|
2194
|
+
category: 'onboarding',
|
|
2195
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2196
|
+
mcpAvailable: true,
|
|
2197
|
+
surface: CommandSurface.Advanced,
|
|
2198
|
+
intendedAudience: [CommandAudience.Human],
|
|
2199
|
+
taskRole: CommandTaskRole.Start,
|
|
2200
|
+
}),
|
|
2201
|
+
entry({
|
|
2202
|
+
command: 'commands primary',
|
|
2203
|
+
description: 'Show the curated primary command list.',
|
|
2204
|
+
category: 'meta',
|
|
2205
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2206
|
+
mcpAvailable: true,
|
|
2207
|
+
surface: CommandSurface.Primary,
|
|
2208
|
+
intendedAudience: [CommandAudience.Human],
|
|
2209
|
+
taskRole: CommandTaskRole.Start,
|
|
2210
|
+
}),
|
|
2211
|
+
entry({
|
|
2212
|
+
command: 'docs check',
|
|
2213
|
+
description: 'Verify docs/ and README content.',
|
|
2214
|
+
category: 'governance',
|
|
2215
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2216
|
+
mcpAvailable: true,
|
|
2217
|
+
}),
|
|
2218
|
+
entry({
|
|
2219
|
+
command: 'examples check',
|
|
2220
|
+
description: 'Verify examples/ tree integrity.',
|
|
2221
|
+
category: 'governance',
|
|
2222
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2223
|
+
mcpAvailable: true,
|
|
2224
|
+
}),
|
|
2225
|
+
entry({
|
|
2226
|
+
command: 'self audit',
|
|
2227
|
+
description: 'SharkCraft self-dogfood audit. Meaningful inside the SharkCraft repo.',
|
|
2228
|
+
category: 'release',
|
|
2229
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2230
|
+
mcpAvailable: true,
|
|
2231
|
+
}),
|
|
2232
|
+
entry({
|
|
2233
|
+
command: 'release smoke',
|
|
2234
|
+
description: 'Run a local smoke suite against canonical demo scenarios.',
|
|
2235
|
+
category: 'release',
|
|
2236
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2237
|
+
writesFiles: true,
|
|
2238
|
+
runsShell: true,
|
|
2239
|
+
mcpAvailable: true,
|
|
2240
|
+
}),
|
|
2241
|
+
entry({
|
|
2242
|
+
command: 'install smoke',
|
|
2243
|
+
description: 'Verify the installed CLI surface (shrk version / help / commands primary / runtime doctor).',
|
|
2244
|
+
category: 'release',
|
|
2245
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2246
|
+
runsShell: true,
|
|
2247
|
+
mcpAvailable: true,
|
|
2248
|
+
}),
|
|
2249
|
+
entry({
|
|
2250
|
+
command: 'ci permissions --fix-preview',
|
|
2251
|
+
description: 'Suggest a least-privilege fix for a CI workflow (never writes).',
|
|
2252
|
+
category: 'ci',
|
|
2253
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2254
|
+
mcpAvailable: true,
|
|
2255
|
+
}),
|
|
2256
|
+
entry({
|
|
2257
|
+
command: 'packs compat --dist-aware',
|
|
2258
|
+
description: 'Pack compat scan that also reads dist/*.js CJS/ESM export forms.',
|
|
2259
|
+
category: 'packs',
|
|
2260
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2261
|
+
mcpAvailable: true,
|
|
2262
|
+
}),
|
|
2263
|
+
entry({
|
|
2264
|
+
command: 'onboard adopt status --max-age-days',
|
|
2265
|
+
description: 'Adoption checkpoint status with custom max-age (default 30 days).',
|
|
2266
|
+
category: 'onboarding',
|
|
2267
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2268
|
+
mcpAvailable: true,
|
|
2269
|
+
}),
|
|
2270
|
+
entry({
|
|
2271
|
+
command: 'constructs adopt status --max-age-days',
|
|
2272
|
+
description: 'Construct adoption checkpoint status with custom max-age.',
|
|
2273
|
+
category: 'constructs',
|
|
2274
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2275
|
+
mcpAvailable: true,
|
|
2276
|
+
}),
|
|
2277
|
+
entry({
|
|
2278
|
+
command: 'release readiness --preflight auto',
|
|
2279
|
+
description: 'Auto-discover the newest release:preflight summary in .sharkcraft/reports/.',
|
|
2280
|
+
category: 'release',
|
|
2281
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2282
|
+
mcpAvailable: true,
|
|
2283
|
+
}),
|
|
2284
|
+
entry({
|
|
2285
|
+
command: 'release readiness --html',
|
|
2286
|
+
description: 'Emit the readiness verdict as JS-free HTML.',
|
|
2287
|
+
category: 'release',
|
|
2288
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2289
|
+
mcpAvailable: true,
|
|
2290
|
+
}),
|
|
2291
|
+
// `ci scaffold jenkins|azure --with-release-readiness` hard-deleted with their parents.
|
|
2292
|
+
entry({
|
|
2293
|
+
command: 'bundle diff (with rename detection)',
|
|
2294
|
+
description: 'Bundle diff with probable plan-rename detection.',
|
|
2295
|
+
category: 'bundle',
|
|
2296
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2297
|
+
mcpAvailable: true,
|
|
2298
|
+
}),
|
|
2299
|
+
entry({
|
|
2300
|
+
command: 'brief --chunk (with section hashes)',
|
|
2301
|
+
description: 'Chunked brief output now also writes section-hashes.json for delta detection.',
|
|
2302
|
+
category: 'brief',
|
|
2303
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2304
|
+
writesFiles: true,
|
|
2305
|
+
mcpAvailable: true,
|
|
2306
|
+
}),
|
|
2307
|
+
// Additions: smoke assertions / matrix / tarball + self-audit run.
|
|
2308
|
+
entry({
|
|
2309
|
+
command: 'release smoke --assertions',
|
|
2310
|
+
description: 'Smoke harness with per-step content assertions (default on).',
|
|
2311
|
+
category: 'release',
|
|
2312
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2313
|
+
writesFiles: true,
|
|
2314
|
+
runsShell: true,
|
|
2315
|
+
mcpAvailable: true,
|
|
2316
|
+
}),
|
|
2317
|
+
entry({
|
|
2318
|
+
command: 'release smoke --matrix',
|
|
2319
|
+
description: 'Run smoke scenarios across multiple repo targets (sharkcraft/dogfood/synthetic/adopter).',
|
|
2320
|
+
category: 'release',
|
|
2321
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2322
|
+
writesFiles: true,
|
|
2323
|
+
runsShell: true,
|
|
2324
|
+
mcpAvailable: true,
|
|
2325
|
+
}),
|
|
2326
|
+
entry({
|
|
2327
|
+
command: 'install smoke --tarball',
|
|
2328
|
+
description: 'Install-smoke that verifies the published npm tarball shape.',
|
|
2329
|
+
category: 'release',
|
|
2330
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2331
|
+
writesFiles: true,
|
|
2332
|
+
runsShell: true,
|
|
2333
|
+
mcpAvailable: true,
|
|
2334
|
+
}),
|
|
2335
|
+
entry({
|
|
2336
|
+
command: 'self audit --run',
|
|
2337
|
+
description: 'Run the bundled checks (commands doctor, runtime doctor, safety audit, packs doctor, demo validate) with timeouts.',
|
|
2338
|
+
category: 'release',
|
|
2339
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2340
|
+
runsShell: true,
|
|
2341
|
+
mcpAvailable: true,
|
|
2342
|
+
}),
|
|
2343
|
+
entry({
|
|
2344
|
+
command: 'diagnostics list',
|
|
2345
|
+
description: 'List every known SharkCraft failure diagnostic.',
|
|
2346
|
+
category: 'meta',
|
|
2347
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2348
|
+
mcpAvailable: true,
|
|
2349
|
+
}),
|
|
2350
|
+
// `diagnostics get` hard-deleted. Use `shrk explain <code>`.
|
|
2351
|
+
entry({
|
|
2352
|
+
command: 'commands ux-check',
|
|
2353
|
+
description: 'Audit catalog UX — descriptions, safety metadata, alias collisions.',
|
|
2354
|
+
category: 'meta',
|
|
2355
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2356
|
+
mcpAvailable: true,
|
|
2357
|
+
}),
|
|
2358
|
+
entry({
|
|
2359
|
+
command: 'report site --pack-compat',
|
|
2360
|
+
description: 'Embed a pack compatibility report as a `pack-compat.html` page in the report site.',
|
|
2361
|
+
category: 'release',
|
|
2362
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2363
|
+
writesFiles: true,
|
|
2364
|
+
mcpAvailable: true,
|
|
2365
|
+
}),
|
|
2366
|
+
entry({
|
|
2367
|
+
command: 'architecture map',
|
|
2368
|
+
description: 'Architecture map v2 — layers, public-API, boundary rules, risks.',
|
|
2369
|
+
category: 'analysis',
|
|
2370
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2371
|
+
mcpAvailable: true,
|
|
2372
|
+
}),
|
|
2373
|
+
entry({
|
|
2374
|
+
command: 'orchestrate',
|
|
2375
|
+
description: 'Read-only agent orchestration plan (no execution).',
|
|
2376
|
+
category: 'agent',
|
|
2377
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2378
|
+
mcpAvailable: true,
|
|
2379
|
+
}),
|
|
2380
|
+
entry({
|
|
2381
|
+
command: 'simulate',
|
|
2382
|
+
description: 'Predict what a workflow would do without executing it.',
|
|
2383
|
+
category: 'agent',
|
|
2384
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2385
|
+
mcpAvailable: true,
|
|
2386
|
+
}),
|
|
2387
|
+
entry({
|
|
2388
|
+
command: 'feedback rules',
|
|
2389
|
+
description: 'List + validate pack-contributed feedback rules. Read-only.',
|
|
2390
|
+
category: 'meta',
|
|
2391
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2392
|
+
mcpAvailable: true,
|
|
2393
|
+
}),
|
|
2394
|
+
entry({
|
|
2395
|
+
command: 'reposet init',
|
|
2396
|
+
description: 'Preview a reposet starter config (dry-run by default).',
|
|
2397
|
+
category: 'meta',
|
|
2398
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2399
|
+
writesFiles: true,
|
|
2400
|
+
mcpAvailable: false,
|
|
2401
|
+
}),
|
|
2402
|
+
entry({
|
|
2403
|
+
command: 'reposet list',
|
|
2404
|
+
description: 'List repos in the local reposet config.',
|
|
2405
|
+
category: 'meta',
|
|
2406
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2407
|
+
mcpAvailable: true,
|
|
2408
|
+
}),
|
|
2409
|
+
entry({
|
|
2410
|
+
command: 'reposet doctor',
|
|
2411
|
+
description: 'Sanity-check the reposet roots exist.',
|
|
2412
|
+
category: 'meta',
|
|
2413
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2414
|
+
mcpAvailable: false,
|
|
2415
|
+
}),
|
|
2416
|
+
entry({
|
|
2417
|
+
command: 'reposet map',
|
|
2418
|
+
description: 'Aggregate map across the reposet.',
|
|
2419
|
+
category: 'analysis',
|
|
2420
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2421
|
+
mcpAvailable: true,
|
|
2422
|
+
}),
|
|
2423
|
+
entry({
|
|
2424
|
+
command: 'recommend',
|
|
2425
|
+
description: 'Canonical human entrypoint for "what should I do?" — recommends commands for a query or stderr blob (deterministic, no AI).',
|
|
2426
|
+
category: 'agent',
|
|
2427
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2428
|
+
mcpAvailable: true,
|
|
2429
|
+
surface: CommandSurface.Primary,
|
|
2430
|
+
intendedAudience: [CommandAudience.Human],
|
|
2431
|
+
taskRole: CommandTaskRole.Start,
|
|
2432
|
+
overlapsWith: ['context', 'task', 'search'],
|
|
2433
|
+
}),
|
|
2434
|
+
// `diagnostics suggest` hard-deleted. Use `shrk explain <stderr>`.
|
|
2435
|
+
entry({
|
|
2436
|
+
command: 'upgrade check',
|
|
2437
|
+
description: 'Check for SharkCraft schema migrations.',
|
|
2438
|
+
category: 'meta',
|
|
2439
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2440
|
+
mcpAvailable: true,
|
|
2441
|
+
}),
|
|
2442
|
+
entry({
|
|
2443
|
+
command: 'upgrade plan',
|
|
2444
|
+
description: 'Plan a SharkCraft upgrade (alias for `upgrade check --json`).',
|
|
2445
|
+
category: 'meta',
|
|
2446
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2447
|
+
mcpAvailable: false,
|
|
2448
|
+
}),
|
|
2449
|
+
entry({
|
|
2450
|
+
command: 'safety audit --deep',
|
|
2451
|
+
description: 'Deep safety audit (report-site external JS, demo destructive lines, CI permissions).',
|
|
2452
|
+
category: 'safety',
|
|
2453
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2454
|
+
mcpAvailable: true,
|
|
2455
|
+
surface: CommandSurface.Primary,
|
|
2456
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Ci],
|
|
2457
|
+
taskRole: CommandTaskRole.Validate,
|
|
2458
|
+
}),
|
|
2459
|
+
entry({
|
|
2460
|
+
command: 'architecture violations',
|
|
2461
|
+
description: 'Boundary violations report.',
|
|
2462
|
+
category: 'analysis',
|
|
2463
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2464
|
+
mcpAvailable: true,
|
|
2465
|
+
}),
|
|
2466
|
+
entry({
|
|
2467
|
+
command: 'architecture area',
|
|
2468
|
+
description: 'Show members of an architecture area.',
|
|
2469
|
+
category: 'analysis',
|
|
2470
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2471
|
+
mcpAvailable: true,
|
|
2472
|
+
}),
|
|
2473
|
+
entry({
|
|
2474
|
+
command: 'orchestrate --risk-aware',
|
|
2475
|
+
description: 'Risk-aware orchestration plan (folds in boundary/policy/architecture signals).',
|
|
2476
|
+
category: 'agent',
|
|
2477
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2478
|
+
mcpAvailable: true,
|
|
2479
|
+
}),
|
|
2480
|
+
// `commands taxonomy` hard-deleted; the catalog already exposes
|
|
2481
|
+
// a `--taxonomy` filter on the parent `commands` command.
|
|
2482
|
+
entry({
|
|
2483
|
+
command: 'reposet map --parallel',
|
|
2484
|
+
description: 'Parallel reposet map with bounded concurrency.',
|
|
2485
|
+
category: 'analysis',
|
|
2486
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2487
|
+
mcpAvailable: false,
|
|
2488
|
+
}),
|
|
2489
|
+
entry({
|
|
2490
|
+
command: 'risk',
|
|
2491
|
+
description: 'Per-task risk report (intent + impact + boundaries + ownership + tests).',
|
|
2492
|
+
category: 'agent',
|
|
2493
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2494
|
+
mcpAvailable: true,
|
|
2495
|
+
}),
|
|
2496
|
+
// Agent contract, plan simulate, memory, heal, agent graph.
|
|
2497
|
+
entry({
|
|
2498
|
+
command: 'contract',
|
|
2499
|
+
description: 'Build an agent contract for a task. Read-only unless --save (writes only to .sharkcraft/contracts/).',
|
|
2500
|
+
category: 'agent',
|
|
2501
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2502
|
+
mcpAvailable: true,
|
|
2503
|
+
}),
|
|
2504
|
+
entry({
|
|
2505
|
+
command: 'plan simulate',
|
|
2506
|
+
description: 'Simulate a saved generation plan (v1/v2) without writing source. Read-only.',
|
|
2507
|
+
category: 'agent',
|
|
2508
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2509
|
+
mcpAvailable: true,
|
|
2510
|
+
surface: CommandSurface.Common,
|
|
2511
|
+
taskRole: CommandTaskRole.Review,
|
|
2512
|
+
}),
|
|
2513
|
+
entry({
|
|
2514
|
+
command: 'memory build',
|
|
2515
|
+
description: 'Build the local repository memory index. Writes only to .sharkcraft/memory/.',
|
|
2516
|
+
category: 'agent',
|
|
2517
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2518
|
+
writesFiles: true,
|
|
2519
|
+
mcpAvailable: false,
|
|
2520
|
+
}),
|
|
2521
|
+
entry({
|
|
2522
|
+
command: 'memory report',
|
|
2523
|
+
description: 'Render the repository memory report. Read-only.',
|
|
2524
|
+
category: 'agent',
|
|
2525
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2526
|
+
mcpAvailable: true,
|
|
2527
|
+
}),
|
|
2528
|
+
entry({
|
|
2529
|
+
command: 'memory risk',
|
|
2530
|
+
description: 'Combine task risk with historical memory signals. Read-only.',
|
|
2531
|
+
category: 'agent',
|
|
2532
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2533
|
+
mcpAvailable: true,
|
|
2534
|
+
}),
|
|
2535
|
+
entry({
|
|
2536
|
+
command: 'memory files',
|
|
2537
|
+
description: 'List historically risky files from the memory index. Read-only.',
|
|
2538
|
+
category: 'agent',
|
|
2539
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2540
|
+
mcpAvailable: true,
|
|
2541
|
+
}),
|
|
2542
|
+
entry({
|
|
2543
|
+
command: 'memory diagnostics',
|
|
2544
|
+
description: 'List recurring diagnostics from the memory index. Read-only.',
|
|
2545
|
+
category: 'agent',
|
|
2546
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2547
|
+
mcpAvailable: true,
|
|
2548
|
+
}),
|
|
2549
|
+
entry({
|
|
2550
|
+
command: 'memory reset',
|
|
2551
|
+
description: 'Reset the local repository memory. Dry-run default; --write deletes only .sharkcraft/memory.',
|
|
2552
|
+
category: 'agent',
|
|
2553
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2554
|
+
writesFiles: true,
|
|
2555
|
+
mcpAvailable: false,
|
|
2556
|
+
}),
|
|
2557
|
+
// `heal from-command|-error|-file|-report` hard-deleted. Use `shrk heal --from <source>`.
|
|
2558
|
+
entry({
|
|
2559
|
+
command: 'contract check',
|
|
2560
|
+
description: 'Validate an agent contract (gates, plan readiness, forbidden files, public-API touch, risk/memory approval). Read-only.',
|
|
2561
|
+
category: 'agent',
|
|
2562
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2563
|
+
mcpAvailable: true,
|
|
2564
|
+
}),
|
|
2565
|
+
entry({
|
|
2566
|
+
command: 'contract approve',
|
|
2567
|
+
description: 'Sign an approval for a contract; writes only to the supplied --output path.',
|
|
2568
|
+
category: 'agent',
|
|
2569
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2570
|
+
writesFiles: true,
|
|
2571
|
+
requiresReview: true,
|
|
2572
|
+
mcpAvailable: true,
|
|
2573
|
+
}),
|
|
2574
|
+
entry({
|
|
2575
|
+
command: 'contract status',
|
|
2576
|
+
description: 'Show contract hash, role, mode, and approval verification. Read-only.',
|
|
2577
|
+
category: 'agent',
|
|
2578
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2579
|
+
mcpAvailable: true,
|
|
2580
|
+
}),
|
|
2581
|
+
// Polyglot languages + memory drift + contract templates.
|
|
2582
|
+
entry({
|
|
2583
|
+
command: 'languages',
|
|
2584
|
+
description: 'Polyglot language support: detect / commands / deps / tests. Read-only.',
|
|
2585
|
+
category: 'polyglot',
|
|
2586
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2587
|
+
mcpAvailable: true,
|
|
2588
|
+
}),
|
|
2589
|
+
entry({
|
|
2590
|
+
command: 'languages detect',
|
|
2591
|
+
description: 'Detect language profiles (TS/JS/Java/C#/Python/Go/Rust). Read-only.',
|
|
2592
|
+
category: 'polyglot',
|
|
2593
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2594
|
+
mcpAvailable: true,
|
|
2595
|
+
}),
|
|
2596
|
+
entry({
|
|
2597
|
+
command: 'languages commands',
|
|
2598
|
+
description: 'Per-language install/test/typecheck/lint/build commands. Read-only.',
|
|
2599
|
+
category: 'polyglot',
|
|
2600
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2601
|
+
mcpAvailable: true,
|
|
2602
|
+
}),
|
|
2603
|
+
entry({
|
|
2604
|
+
command: 'languages deps',
|
|
2605
|
+
description: 'Polyglot dependency graph (Java/C#/Python/Go/Rust imports). Read-only.',
|
|
2606
|
+
category: 'polyglot',
|
|
2607
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2608
|
+
mcpAvailable: true,
|
|
2609
|
+
}),
|
|
2610
|
+
entry({
|
|
2611
|
+
command: 'languages tests',
|
|
2612
|
+
description: 'Predict per-language test files impacted by changed source files. Read-only.',
|
|
2613
|
+
category: 'polyglot',
|
|
2614
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2615
|
+
mcpAvailable: true,
|
|
2616
|
+
}),
|
|
2617
|
+
entry({
|
|
2618
|
+
command: 'memory diff',
|
|
2619
|
+
description: 'Compare two memory snapshots (or one snapshot vs the current index). Read-only.',
|
|
2620
|
+
category: 'agent',
|
|
2621
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2622
|
+
mcpAvailable: true,
|
|
2623
|
+
}),
|
|
2624
|
+
entry({
|
|
2625
|
+
command: 'memory drift',
|
|
2626
|
+
description: 'Compare the current memory index against the latest snapshot under .sharkcraft/memory/history/. Read-only.',
|
|
2627
|
+
category: 'agent',
|
|
2628
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2629
|
+
mcpAvailable: true,
|
|
2630
|
+
}),
|
|
2631
|
+
entry({
|
|
2632
|
+
command: 'memory snapshots',
|
|
2633
|
+
description: 'List archived memory snapshots. Read-only.',
|
|
2634
|
+
category: 'agent',
|
|
2635
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2636
|
+
mcpAvailable: false,
|
|
2637
|
+
}),
|
|
2638
|
+
entry({
|
|
2639
|
+
command: 'contract template',
|
|
2640
|
+
description: 'Reusable agent-contract templates (list/get/render/recommend). Read-only.',
|
|
2641
|
+
category: 'agent',
|
|
2642
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2643
|
+
mcpAvailable: true,
|
|
2644
|
+
}),
|
|
2645
|
+
entry({
|
|
2646
|
+
command: 'report language',
|
|
2647
|
+
description: 'Combined language profiles + commands + dependency graph report. Read-only.',
|
|
2648
|
+
category: 'reports',
|
|
2649
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2650
|
+
mcpAvailable: false,
|
|
2651
|
+
}),
|
|
2652
|
+
// Polyglot enforcement + safe runner + language cache + signed ingest apply.
|
|
2653
|
+
entry({
|
|
2654
|
+
command: 'languages boundaries',
|
|
2655
|
+
description: 'Polyglot boundary enforcement report. Read-only.',
|
|
2656
|
+
category: 'polyglot',
|
|
2657
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2658
|
+
mcpAvailable: true,
|
|
2659
|
+
}),
|
|
2660
|
+
entry({
|
|
2661
|
+
command: 'languages run',
|
|
2662
|
+
description: 'Plan or execute a per-language test/build/lint command. Dry-run by default; --execute to run; --allow-install to permit install/restore.',
|
|
2663
|
+
category: 'polyglot',
|
|
2664
|
+
safetyLevel: SafetyLevel.RunsShell,
|
|
2665
|
+
runsShell: true,
|
|
2666
|
+
requiresReview: true,
|
|
2667
|
+
mcpAvailable: true,
|
|
2668
|
+
}),
|
|
2669
|
+
entry({
|
|
2670
|
+
command: 'languages cache',
|
|
2671
|
+
description: 'Language profile cache (status / clear). Default dry-run.',
|
|
2672
|
+
category: 'polyglot',
|
|
2673
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2674
|
+
mcpAvailable: true,
|
|
2675
|
+
}),
|
|
2676
|
+
entry({
|
|
2677
|
+
command: 'boundaries enforce',
|
|
2678
|
+
description: 'Polyglot boundary enforcement (read-only). Exits non-zero on errors.',
|
|
2679
|
+
category: 'boundaries',
|
|
2680
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2681
|
+
mcpAvailable: true,
|
|
2682
|
+
}),
|
|
2683
|
+
entry({
|
|
2684
|
+
command: 'check boundaries --polyglot',
|
|
2685
|
+
description: 'Combined TS + polyglot boundary check. Read-only.',
|
|
2686
|
+
category: 'boundaries',
|
|
2687
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2688
|
+
mcpAvailable: true,
|
|
2689
|
+
}),
|
|
2690
|
+
entry({
|
|
2691
|
+
command: 'check boundaries --changed-only',
|
|
2692
|
+
description: 'Boundary check filtered to changes (working tree, --since <ref>, --staged, --files). Read-only.',
|
|
2693
|
+
category: 'boundaries',
|
|
2694
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2695
|
+
mcpAvailable: true,
|
|
2696
|
+
}),
|
|
2697
|
+
entry({
|
|
2698
|
+
command: 'boundaries enforce --changed-only',
|
|
2699
|
+
description: 'Polyglot boundary enforcement filtered to changes. Read-only.',
|
|
2700
|
+
category: 'boundaries',
|
|
2701
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2702
|
+
mcpAvailable: true,
|
|
2703
|
+
}),
|
|
2704
|
+
entry({
|
|
2705
|
+
command: 'architecture violations --changed-only',
|
|
2706
|
+
description: 'Architecture violations diff scoped to working-tree changes. Read-only.',
|
|
2707
|
+
category: 'boundaries',
|
|
2708
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2709
|
+
mcpAvailable: true,
|
|
2710
|
+
}),
|
|
2711
|
+
entry({
|
|
2712
|
+
command: 'plugin rename',
|
|
2713
|
+
description: 'Plan-only plugin rename (profile-driven) — emits replace ops + manual folder rename checklist.',
|
|
2714
|
+
category: 'lifecycle',
|
|
2715
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2716
|
+
mcpAvailable: true,
|
|
2717
|
+
}),
|
|
2718
|
+
entry({
|
|
2719
|
+
command: 'plugin remove',
|
|
2720
|
+
description: 'Plan-only destructive plugin remove (profile-driven) — destructive; requires human approval.',
|
|
2721
|
+
category: 'lifecycle',
|
|
2722
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2723
|
+
mcpAvailable: true,
|
|
2724
|
+
}),
|
|
2725
|
+
entry({
|
|
2726
|
+
command: 'plugin lifecycle list',
|
|
2727
|
+
description: 'List plugins detected under the active profile roots and key-table. Read-only.',
|
|
2728
|
+
category: 'lifecycle',
|
|
2729
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2730
|
+
mcpAvailable: false,
|
|
2731
|
+
}),
|
|
2732
|
+
entry({
|
|
2733
|
+
command: 'plugin lifecycle inspect',
|
|
2734
|
+
description: 'Inspect references to a plugin across the profile layers + key-table. Read-only.',
|
|
2735
|
+
category: 'lifecycle',
|
|
2736
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2737
|
+
mcpAvailable: false,
|
|
2738
|
+
}),
|
|
2739
|
+
entry({
|
|
2740
|
+
command: 'helper list',
|
|
2741
|
+
description: 'List available helper plan generators. Read-only.',
|
|
2742
|
+
category: 'lifecycle',
|
|
2743
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2744
|
+
mcpAvailable: true,
|
|
2745
|
+
}),
|
|
2746
|
+
entry({
|
|
2747
|
+
command: 'helper get',
|
|
2748
|
+
description: 'Show a helper definition. Read-only.',
|
|
2749
|
+
category: 'lifecycle',
|
|
2750
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2751
|
+
mcpAvailable: true,
|
|
2752
|
+
}),
|
|
2753
|
+
entry({
|
|
2754
|
+
command: 'helper plan',
|
|
2755
|
+
description: 'Generate a plan-only helper plan (dry-run by default).',
|
|
2756
|
+
category: 'lifecycle',
|
|
2757
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2758
|
+
mcpAvailable: true,
|
|
2759
|
+
}),
|
|
2760
|
+
entry({
|
|
2761
|
+
command: 'packs dev-status',
|
|
2762
|
+
description: 'Pack-author dev status. Read-only.',
|
|
2763
|
+
category: 'packs',
|
|
2764
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2765
|
+
mcpAvailable: true,
|
|
2766
|
+
}),
|
|
2767
|
+
entry({
|
|
2768
|
+
command: 'packs watch',
|
|
2769
|
+
description: 'Watch pack assets and re-run pack doctor on change. Never auto-signs.',
|
|
2770
|
+
category: 'packs',
|
|
2771
|
+
safetyLevel: SafetyLevel.RunsShell,
|
|
2772
|
+
runsShell: true,
|
|
2773
|
+
mcpAvailable: false,
|
|
2774
|
+
}),
|
|
2775
|
+
entry({
|
|
2776
|
+
command: 'check registry-lifecycle',
|
|
2777
|
+
description: 'register*/remove* symmetry rule. Read-only.',
|
|
2778
|
+
category: 'core',
|
|
2779
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2780
|
+
mcpAvailable: true,
|
|
2781
|
+
}),
|
|
2782
|
+
entry({
|
|
2783
|
+
command: 'registry lifecycle',
|
|
2784
|
+
description: 'register*/remove* symmetry rule (standalone command). Read-only.',
|
|
2785
|
+
category: 'core',
|
|
2786
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2787
|
+
mcpAvailable: true,
|
|
2788
|
+
}),
|
|
2789
|
+
// `ingest adopt plan|review|apply` hard-deleted. Use `onboard adopt`.
|
|
2790
|
+
// Schemas surfaces (catalog coverage).
|
|
2791
|
+
entry({
|
|
2792
|
+
command: 'schemas list',
|
|
2793
|
+
description: 'List hand-written JSON schemas exported by `shrk schemas write`.',
|
|
2794
|
+
category: 'schemas',
|
|
2795
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2796
|
+
mcpAvailable: true,
|
|
2797
|
+
}),
|
|
2798
|
+
entry({
|
|
2799
|
+
command: 'schemas get',
|
|
2800
|
+
description: 'Print one JSON schema by name.',
|
|
2801
|
+
category: 'schemas',
|
|
2802
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2803
|
+
mcpAvailable: true,
|
|
2804
|
+
}),
|
|
2805
|
+
entry({
|
|
2806
|
+
command: 'schemas inventory',
|
|
2807
|
+
description: 'Schema-id inventory: known versions, current, deprecated/back-compat status. Read-only.',
|
|
2808
|
+
category: 'schemas',
|
|
2809
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2810
|
+
mcpAvailable: true,
|
|
2811
|
+
}),
|
|
2812
|
+
entry({
|
|
2813
|
+
command: 'schemas write',
|
|
2814
|
+
description: 'Write all JSON schemas to a directory.',
|
|
2815
|
+
category: 'schemas',
|
|
2816
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2817
|
+
writesFiles: true,
|
|
2818
|
+
}),
|
|
2819
|
+
// Preview-first schema emit with INDEX.md + preflight drift check.
|
|
2820
|
+
entry({
|
|
2821
|
+
command: 'schemas emit',
|
|
2822
|
+
description: 'Emit every JSON schema to disk (default docs/schemas/) with an INDEX.md. Preview-first; --write applies; --check fails on drift.',
|
|
2823
|
+
category: 'schemas',
|
|
2824
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2825
|
+
writesFiles: true,
|
|
2826
|
+
surface: CommandSurface.Advanced,
|
|
2827
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.PackAuthor],
|
|
2828
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
2829
|
+
}),
|
|
2830
|
+
// Round snapshots + diff verb. Advanced surface — meta-tooling for
|
|
2831
|
+
// release engineers, not the default agent flow.
|
|
2832
|
+
entry({
|
|
2833
|
+
command: 'rounds capture',
|
|
2834
|
+
description: 'Capture a snapshot of the engine surface (commands, MCP tools, docs) at HEAD under .sharkcraft/rounds/<id>/.',
|
|
2835
|
+
category: 'meta',
|
|
2836
|
+
safetyLevel: SafetyLevel.WritesDraftsOnly,
|
|
2837
|
+
writesFiles: true,
|
|
2838
|
+
surface: CommandSurface.Advanced,
|
|
2839
|
+
intendedAudience: [CommandAudience.Human],
|
|
2840
|
+
taskRole: CommandTaskRole.Diagnose,
|
|
2841
|
+
}),
|
|
2842
|
+
entry({
|
|
2843
|
+
command: 'rounds list',
|
|
2844
|
+
description: 'List captured round snapshots.',
|
|
2845
|
+
category: 'meta',
|
|
2846
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2847
|
+
surface: CommandSurface.Advanced,
|
|
2848
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
2849
|
+
taskRole: CommandTaskRole.Inspect,
|
|
2850
|
+
}),
|
|
2851
|
+
entry({
|
|
2852
|
+
command: 'rounds show',
|
|
2853
|
+
description: 'Print one captured round snapshot.',
|
|
2854
|
+
category: 'meta',
|
|
2855
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2856
|
+
surface: CommandSurface.Advanced,
|
|
2857
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
2858
|
+
taskRole: CommandTaskRole.Inspect,
|
|
2859
|
+
}),
|
|
2860
|
+
entry({
|
|
2861
|
+
command: 'diff rounds',
|
|
2862
|
+
description: 'Diff two round snapshots: commands/MCP tools/docs added or removed between two captured rounds.',
|
|
2863
|
+
category: 'meta',
|
|
2864
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2865
|
+
surface: CommandSurface.Advanced,
|
|
2866
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
2867
|
+
taskRole: CommandTaskRole.Inspect,
|
|
2868
|
+
}),
|
|
2869
|
+
// Explore a directory (workspace-aware).
|
|
2870
|
+
entry({
|
|
2871
|
+
command: 'explore',
|
|
2872
|
+
description: 'Explore a directory: area kind, key modules, related commands/MCP tools, tests, conventions, risks. Read-only.',
|
|
2873
|
+
category: 'core',
|
|
2874
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2875
|
+
mcpAvailable: true,
|
|
2876
|
+
surface: CommandSurface.Advanced,
|
|
2877
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Agent],
|
|
2878
|
+
taskRole: CommandTaskRole.Inspect,
|
|
2879
|
+
}),
|
|
2880
|
+
// Round-aware acceptance replay.
|
|
2881
|
+
entry({
|
|
2882
|
+
command: 'changes acceptance-replay',
|
|
2883
|
+
description: 'Pick previous validation commands to re-run given a change set. Read-only, no shell execution.',
|
|
2884
|
+
category: 'analysis',
|
|
2885
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2886
|
+
mcpAvailable: true,
|
|
2887
|
+
}),
|
|
2888
|
+
// Command-surface views.
|
|
2889
|
+
entry({
|
|
2890
|
+
command: 'commands surface',
|
|
2891
|
+
description: 'Filter the command catalog by surface (primary | common | advanced | machine | internal | legacy).',
|
|
2892
|
+
category: 'meta',
|
|
2893
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2894
|
+
mcpAvailable: false,
|
|
2895
|
+
surface: CommandSurface.Common,
|
|
2896
|
+
intendedAudience: [CommandAudience.Human],
|
|
2897
|
+
taskRole: CommandTaskRole.Inspect,
|
|
2898
|
+
}),
|
|
2899
|
+
entry({
|
|
2900
|
+
command: 'commands machine',
|
|
2901
|
+
description: 'Show only machine-oriented commands (JSON pipes / agent surfaces).',
|
|
2902
|
+
category: 'meta',
|
|
2903
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2904
|
+
mcpAvailable: false,
|
|
2905
|
+
surface: CommandSurface.Advanced,
|
|
2906
|
+
intendedAudience: [CommandAudience.Maintainer, CommandAudience.Agent],
|
|
2907
|
+
taskRole: CommandTaskRole.Inspect,
|
|
2908
|
+
}),
|
|
2909
|
+
entry({
|
|
2910
|
+
command: 'commands legacy',
|
|
2911
|
+
description: 'Show only legacy / replaced commands and their replacedBy targets.',
|
|
2912
|
+
category: 'meta',
|
|
2913
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2914
|
+
mcpAvailable: false,
|
|
2915
|
+
surface: CommandSurface.Advanced,
|
|
2916
|
+
intendedAudience: [CommandAudience.Maintainer],
|
|
2917
|
+
taskRole: CommandTaskRole.Inspect,
|
|
2918
|
+
}),
|
|
2919
|
+
entry({
|
|
2920
|
+
command: 'commands overlaps',
|
|
2921
|
+
description: 'Show overlapping commands with their preferredCommand pointers (or `(none)` when missing).',
|
|
2922
|
+
category: 'meta',
|
|
2923
|
+
safetyLevel: SafetyLevel.ReadOnly,
|
|
2924
|
+
mcpAvailable: false,
|
|
2925
|
+
surface: CommandSurface.Common,
|
|
2926
|
+
intendedAudience: [CommandAudience.Human, CommandAudience.Maintainer],
|
|
2927
|
+
taskRole: CommandTaskRole.Inspect,
|
|
2928
|
+
}),
|
|
2929
|
+
]);
|
|
2930
|
+
/** Return every canonical command string in the catalog. */
|
|
2931
|
+
export function listCatalogCommandStrings() {
|
|
2932
|
+
const out = new Set();
|
|
2933
|
+
for (const e of COMMAND_CATALOG) {
|
|
2934
|
+
const base = `shrk ${e.command}`.replace(/\s+/g, ' ').trim();
|
|
2935
|
+
out.add(base);
|
|
2936
|
+
// First two tokens are also accepted as a known prefix (e.g. "shrk dev").
|
|
2937
|
+
const parts = base.split(' ');
|
|
2938
|
+
if (parts.length >= 2)
|
|
2939
|
+
out.add(parts.slice(0, 2).join(' '));
|
|
2940
|
+
if (parts.length >= 3)
|
|
2941
|
+
out.add(parts.slice(0, 3).join(' '));
|
|
2942
|
+
}
|
|
2943
|
+
return [...out].sort();
|
|
2944
|
+
}
|
|
2945
|
+
function entry(opts) {
|
|
2946
|
+
const out = {
|
|
2947
|
+
command: opts.command,
|
|
2948
|
+
description: opts.description,
|
|
2949
|
+
category: opts.category,
|
|
2950
|
+
safetyLevel: opts.safetyLevel,
|
|
2951
|
+
writesFiles: opts.writesFiles ?? false,
|
|
2952
|
+
writesSource: opts.writesSource ?? false,
|
|
2953
|
+
runsShell: opts.runsShell ?? false,
|
|
2954
|
+
requiresReview: opts.requiresReview ?? false,
|
|
2955
|
+
mcpAvailable: opts.mcpAvailable ?? false,
|
|
2956
|
+
aliases: opts.aliases ?? [],
|
|
2957
|
+
};
|
|
2958
|
+
if (opts.surface)
|
|
2959
|
+
out.surface = opts.surface;
|
|
2960
|
+
if (opts.intendedAudience)
|
|
2961
|
+
out.intendedAudience = opts.intendedAudience;
|
|
2962
|
+
if (opts.taskRole)
|
|
2963
|
+
out.taskRole = opts.taskRole;
|
|
2964
|
+
if (opts.preferredCommand)
|
|
2965
|
+
out.preferredCommand = opts.preferredCommand;
|
|
2966
|
+
if (opts.overlapsWith)
|
|
2967
|
+
out.overlapsWith = opts.overlapsWith;
|
|
2968
|
+
if (opts.replacedBy)
|
|
2969
|
+
out.replacedBy = opts.replacedBy;
|
|
2970
|
+
if (opts.machineOnly !== undefined)
|
|
2971
|
+
out.machineOnly = opts.machineOnly;
|
|
2972
|
+
if (opts.lifecycle)
|
|
2973
|
+
out.lifecycle = opts.lifecycle;
|
|
2974
|
+
if (opts.deprecatedSince)
|
|
2975
|
+
out.deprecatedSince = opts.deprecatedSince;
|
|
2976
|
+
if (opts.removeAfter)
|
|
2977
|
+
out.removeAfter = opts.removeAfter;
|
|
2978
|
+
if (opts.reason)
|
|
2979
|
+
out.reason = opts.reason;
|
|
2980
|
+
if (opts.showInDefaultHelp !== undefined)
|
|
2981
|
+
out.showInDefaultHelp = opts.showInDefaultHelp;
|
|
2982
|
+
if (opts.tier)
|
|
2983
|
+
out.tier = opts.tier;
|
|
2984
|
+
return out;
|
|
2985
|
+
}
|
|
2986
|
+
export const R46_OVERLAY = Object.freeze({
|
|
2987
|
+
// `dashboard serve` overlay removed: command is hard-deleted.
|
|
2988
|
+
// release / install smoke + self audit (kept executable for scripts).
|
|
2989
|
+
'install smoke': { verdict: 'hidden', reason: 'Publish-flow check; scripts call this directly.' },
|
|
2990
|
+
'install smoke --tarball': { verdict: 'hidden', reason: 'Publish-flow check; scripts call this directly.' },
|
|
2991
|
+
'release smoke': { verdict: 'hidden', reason: 'Publish-flow check; scripts call this directly.' },
|
|
2992
|
+
'release smoke --assertions': { verdict: 'hidden', reason: 'Publish-flow check; scripts call this directly.' },
|
|
2993
|
+
'release smoke --matrix': { verdict: 'hidden', reason: 'Publish-flow check; scripts call this directly.' },
|
|
2994
|
+
'self audit': { verdict: 'hidden', reason: 'Publish-flow check; scripts call this directly.' },
|
|
2995
|
+
'self audit --run': { verdict: 'hidden', reason: 'Publish-flow check; scripts call this directly.' },
|
|
2996
|
+
// feedback ingestion (kept executable; rules remain load-bearing).
|
|
2997
|
+
'feedback': { verdict: 'hidden', reason: 'Feedback belongs in GitHub issues; rules remain load-bearing.' },
|
|
2998
|
+
// catalog meta cleanup — `commands explain` / `commands suggest` hard-deleted.
|
|
2999
|
+
'commands legacy': { verdict: 'hidden', reason: 'Internal catalog tooling.' },
|
|
3000
|
+
'commands machine': { verdict: 'hidden', reason: 'Internal catalog tooling.' },
|
|
3001
|
+
'commands overlaps': { verdict: 'hidden', reason: 'Internal catalog tooling.' },
|
|
3002
|
+
'commands primary': { verdict: 'hidden', reason: '`shrk` already lists primary commands.' },
|
|
3003
|
+
'commands surface': { verdict: 'hidden', reason: 'Internal catalog tooling.' },
|
|
3004
|
+
'commands taxonomy': { verdict: 'hidden', reason: 'Internal catalog tooling.' },
|
|
3005
|
+
// aliases retained as catalog-meta entries (the CLI commands themselves were deleted; entry kept where it informs typo-correction).
|
|
3006
|
+
'packs pending': { verdict: 'hidden', replacedBy: 'shrk pack author pending', reason: 'Canonical 3-level path is `pack author pending`.' },
|
|
3007
|
+
// bundles / sessions / dev / context — `session` hard-deleted.
|
|
3008
|
+
'bundle apply-assist': { verdict: 'hidden', reason: 'Advanced apply-assist; agents have native session state.' },
|
|
3009
|
+
'bundle apply-assist --resume': { verdict: 'hidden', reason: 'Advanced apply-assist.' },
|
|
3010
|
+
'bundle create': { verdict: 'hidden', reason: 'Advanced bundle creation.' },
|
|
3011
|
+
'bundle diff <a> <b>': { verdict: 'hidden', reason: 'Bundle inspection is advanced.' },
|
|
3012
|
+
'bundle diff (with rename detection)': { verdict: 'hidden', reason: 'Bundle inspection is advanced.' },
|
|
3013
|
+
'bundle graph': { verdict: 'hidden', reason: 'Folded into `shrk graph`.' },
|
|
3014
|
+
'bundle list': { verdict: 'hidden', reason: 'Bundle namespace is advanced.' },
|
|
3015
|
+
'bundle plan': { verdict: 'hidden', reason: 'Bundle namespace is advanced.' },
|
|
3016
|
+
'bundle show': { verdict: 'hidden', reason: 'Bundle namespace is advanced.' },
|
|
3017
|
+
'context build': { verdict: 'hidden', reason: '`shrk context --task` is canonical.' },
|
|
3018
|
+
'context refresh': { verdict: 'hidden', reason: '`shrk context --task` is canonical.' },
|
|
3019
|
+
'context status': { verdict: 'hidden', reason: '`shrk context --task` is canonical.' },
|
|
3020
|
+
// ingest / generated — `ingest adopt apply|plan|review|--write-patch` hard-deleted.
|
|
3021
|
+
'ingest clean --write': { verdict: 'hidden', reason: 'Ingestion stays as advanced.' },
|
|
3022
|
+
'ingest diff': { verdict: 'hidden', reason: 'Ingestion stays as advanced.' },
|
|
3023
|
+
'ingest report': { verdict: 'hidden', reason: 'Ingestion stays as advanced.' },
|
|
3024
|
+
'ingest repository': { verdict: 'hidden', reason: 'Ingestion stays as advanced.' },
|
|
3025
|
+
'ingest repository --write-drafts': { verdict: 'hidden', reason: 'Ingestion stays as advanced.' },
|
|
3026
|
+
'ingest status': { verdict: 'hidden', reason: 'Ingestion stays as advanced.' },
|
|
3027
|
+
'generated protect --write-drafts': { verdict: 'hidden', reason: 'Generated-code report is advanced.' },
|
|
3028
|
+
'generated report': { verdict: 'hidden', reason: 'Generated-code report is advanced.' },
|
|
3029
|
+
// constructs / playbooks / helpers.
|
|
3030
|
+
'constructs adopt': { verdict: 'hidden', reason: 'Constructs adoption is advanced.' },
|
|
3031
|
+
'constructs adopt --write-patch': { verdict: 'hidden', reason: 'Constructs adoption is advanced.' },
|
|
3032
|
+
'constructs adopt diff': { verdict: 'hidden', reason: 'Constructs adoption is advanced.' },
|
|
3033
|
+
'constructs adopt diff --record-checkpoint': { verdict: 'hidden', reason: 'Constructs adoption is advanced.' },
|
|
3034
|
+
'constructs adopt review': { verdict: 'hidden', reason: 'Constructs adoption is advanced.' },
|
|
3035
|
+
'constructs adopt status': { verdict: 'hidden', reason: 'Constructs adoption is advanced.' },
|
|
3036
|
+
'constructs adopt status --max-age-days': { verdict: 'hidden', reason: 'Constructs adoption is advanced.' },
|
|
3037
|
+
'constructs api': { verdict: 'hidden', reason: 'Constructs reflection is advanced.' },
|
|
3038
|
+
'constructs events': { verdict: 'hidden', reason: 'Constructs reflection is advanced.' },
|
|
3039
|
+
'constructs facets': { verdict: 'hidden', reason: 'Constructs reflection is advanced.' },
|
|
3040
|
+
'constructs infer': { verdict: 'hidden', reason: 'Constructs inference is advanced.' },
|
|
3041
|
+
'constructs infer --write-drafts': { verdict: 'hidden', reason: 'Constructs inference is advanced.' },
|
|
3042
|
+
'constructs search': { verdict: 'hidden', replacedBy: 'shrk search', reason: 'Folded into `shrk search`.' },
|
|
3043
|
+
'constructs tokens': { verdict: 'hidden', reason: 'Constructs reflection is advanced.' },
|
|
3044
|
+
'playbooks brief': { verdict: 'hidden', reason: 'Playbooks advanced.' },
|
|
3045
|
+
'playbooks get': { verdict: 'hidden', reason: 'Playbooks advanced.' },
|
|
3046
|
+
'playbooks list': { verdict: 'hidden', reason: 'Playbooks advanced.' },
|
|
3047
|
+
'playbooks preview': { verdict: 'hidden', reason: 'Playbooks advanced.' },
|
|
3048
|
+
'playbooks recommend': { verdict: 'hidden', reason: '`shrk recommend` is canonical.' },
|
|
3049
|
+
'playbooks runbook': { verdict: 'hidden', reason: 'Playbooks advanced.' },
|
|
3050
|
+
'playbooks script': { verdict: 'hidden', reason: 'Playbooks advanced.' },
|
|
3051
|
+
'playbooks validate': { verdict: 'hidden', reason: 'Playbooks advanced.' },
|
|
3052
|
+
'helper get': { verdict: 'hidden', reason: 'Helpers advanced.' },
|
|
3053
|
+
'helper list': { verdict: 'hidden', reason: 'Helpers advanced.' },
|
|
3054
|
+
'helper plan': { verdict: 'hidden', reason: 'Helpers advanced.' },
|
|
3055
|
+
// memory.
|
|
3056
|
+
'memory diagnostics': { verdict: 'hidden', reason: 'Memory support tools are advanced.' },
|
|
3057
|
+
'memory diff': { verdict: 'hidden', reason: 'Memory support tools are advanced.' },
|
|
3058
|
+
'memory drift': { verdict: 'hidden', reason: 'Memory support tools are advanced.' },
|
|
3059
|
+
'memory files': { verdict: 'hidden', reason: 'Memory support tools are advanced.' },
|
|
3060
|
+
'memory risk': { verdict: 'hidden', reason: 'Memory support tools are advanced.' },
|
|
3061
|
+
'memory snapshots': { verdict: 'hidden', reason: 'Memory support tools are advanced.' },
|
|
3062
|
+
// graph / map.
|
|
3063
|
+
'architecture area': { verdict: 'hidden', reason: 'Folded into `shrk graph architecture`.' },
|
|
3064
|
+
'repo areas': { verdict: 'hidden', reason: 'Folded into `shrk graph`.' },
|
|
3065
|
+
'reposet map': { verdict: 'hidden', reason: 'Reposet is advanced.' },
|
|
3066
|
+
'reposet map --parallel': { verdict: 'hidden', reason: 'Reposet is advanced.' },
|
|
3067
|
+
// CI scaffold non-flagship providers — `circleci|azure|azure-pipelines|jenkins` (+ variants) hard-deleted.
|
|
3068
|
+
// heal / diagnostics — `heal from-*`, `diagnostics get|suggest` hard-deleted.
|
|
3069
|
+
'schemas get': { verdict: 'hidden', reason: 'Schema inventory is internal.' },
|
|
3070
|
+
'schemas inventory': { verdict: 'hidden', reason: 'Schema inventory is internal.' },
|
|
3071
|
+
'schemas list': { verdict: 'hidden', reason: 'Schema inventory is internal.' },
|
|
3072
|
+
'schemas write': { verdict: 'hidden', reason: 'Schema inventory is internal.' },
|
|
3073
|
+
// knowledge author / pack — both hard-deleted.
|
|
3074
|
+
// brief / handoff / review / pr — `handoff` hard-deleted.
|
|
3075
|
+
'review render-comment': { verdict: 'hidden', reason: 'Advanced PR rendering.' },
|
|
3076
|
+
// polyglot.
|
|
3077
|
+
'languages deps': { verdict: 'hidden', reason: 'Polyglot is advisory.' },
|
|
3078
|
+
'languages tests': { verdict: 'hidden', reason: 'Polyglot is advisory.' },
|
|
3079
|
+
'languages boundaries': { verdict: 'hidden', reason: 'Polyglot is advisory.' },
|
|
3080
|
+
'languages cache': { verdict: 'hidden', reason: 'Polyglot is advisory.' },
|
|
3081
|
+
'languages run': { verdict: 'hidden', reason: 'Polyglot is advisory.' },
|
|
3082
|
+
});
|
|
3083
|
+
/** Look up the pruning overlay for a command. */
|
|
3084
|
+
export function r46Overlay(command) {
|
|
3085
|
+
return R46_OVERLAY[command];
|
|
3086
|
+
}
|
|
3087
|
+
/**
|
|
3088
|
+
* Surface resolver. Default is `Advanced` (hidden) so the spine is
|
|
3089
|
+
* **opt-in**: only entries that set `surface: Primary | Common` explicitly
|
|
3090
|
+
* appear in default help.
|
|
3091
|
+
*
|
|
3092
|
+
* Without this flip, omitted `surface` fields would inherit Common and the
|
|
3093
|
+
* default help would balloon into hundreds of commands. With it, only the
|
|
3094
|
+
* curated spine (~32 commands) is visible by default; everything else
|
|
3095
|
+
* lands under `shrk commands --all` / `--advanced`.
|
|
3096
|
+
*/
|
|
3097
|
+
export function commandSurface(e) {
|
|
3098
|
+
if (e.surface)
|
|
3099
|
+
return e.surface;
|
|
3100
|
+
if (e.safetyLevel === SafetyLevel.RequiresReview)
|
|
3101
|
+
return CommandSurface.Advanced;
|
|
3102
|
+
return CommandSurface.Advanced;
|
|
3103
|
+
}
|
|
3104
|
+
/** Default audience: humans, plus agents if `mcpAvailable`. */
|
|
3105
|
+
export function commandAudience(e) {
|
|
3106
|
+
if (e.intendedAudience && e.intendedAudience.length > 0)
|
|
3107
|
+
return e.intendedAudience;
|
|
3108
|
+
return e.mcpAvailable
|
|
3109
|
+
? [CommandAudience.Human, CommandAudience.Agent]
|
|
3110
|
+
: [CommandAudience.Human];
|
|
3111
|
+
}
|
|
3112
|
+
/** Task role (or `undefined` when not classified). */
|
|
3113
|
+
export function commandTaskRole(e) {
|
|
3114
|
+
return e.taskRole;
|
|
3115
|
+
}
|
|
3116
|
+
/**
|
|
3117
|
+
* Lifecycle resolution. Inference order:
|
|
3118
|
+
* 1. Explicit `lifecycle` value.
|
|
3119
|
+
* 2. `replacedBy` set ⇒ {@link CommandLifecycle.Deprecated}.
|
|
3120
|
+
* 3. `surface=Legacy` ⇒ {@link CommandLifecycle.Deprecated}.
|
|
3121
|
+
* 4. Otherwise {@link CommandLifecycle.Active}.
|
|
3122
|
+
*
|
|
3123
|
+
* Aliases (synonyms for canonical verbs) and `Retired` (tombstone)
|
|
3124
|
+
* must be set explicitly — they're never inferred.
|
|
3125
|
+
*/
|
|
3126
|
+
export function commandLifecycle(e) {
|
|
3127
|
+
if (e.lifecycle)
|
|
3128
|
+
return e.lifecycle;
|
|
3129
|
+
const r46 = R46_OVERLAY[e.command];
|
|
3130
|
+
if (r46?.verdict === 'retired')
|
|
3131
|
+
return CommandLifecycle.Retired;
|
|
3132
|
+
if (r46?.verdict === 'deprecated')
|
|
3133
|
+
return CommandLifecycle.Deprecated;
|
|
3134
|
+
if (e.replacedBy)
|
|
3135
|
+
return CommandLifecycle.Deprecated;
|
|
3136
|
+
if (e.surface === CommandSurface.Legacy)
|
|
3137
|
+
return CommandLifecycle.Deprecated;
|
|
3138
|
+
return CommandLifecycle.Active;
|
|
3139
|
+
}
|
|
3140
|
+
/**
|
|
3141
|
+
* Default-help visibility rule. Honors an explicit
|
|
3142
|
+
* {@link ICommandCatalogEntry.showInDefaultHelp} when set; otherwise
|
|
3143
|
+
* primary + common are visible and advanced / machine / internal / legacy
|
|
3144
|
+
* are hidden. Deprecated and retired commands are always hidden by
|
|
3145
|
+
* default regardless of surface.
|
|
3146
|
+
*/
|
|
3147
|
+
export function defaultShowInHelp(e) {
|
|
3148
|
+
if (e.showInDefaultHelp !== undefined)
|
|
3149
|
+
return e.showInDefaultHelp;
|
|
3150
|
+
const r46 = R46_OVERLAY[e.command];
|
|
3151
|
+
if (r46)
|
|
3152
|
+
return false;
|
|
3153
|
+
const lc = commandLifecycle(e);
|
|
3154
|
+
if (lc === CommandLifecycle.Deprecated || lc === CommandLifecycle.Retired)
|
|
3155
|
+
return false;
|
|
3156
|
+
if (lc === CommandLifecycle.Alias)
|
|
3157
|
+
return false;
|
|
3158
|
+
const surface = commandSurface(e);
|
|
3159
|
+
return surface === CommandSurface.Primary || surface === CommandSurface.Common;
|
|
3160
|
+
}
|
|
3161
|
+
/**
|
|
3162
|
+
* Short "Use this when…" line derived from `surface`, `taskRole`,
|
|
3163
|
+
* `preferredCommand`, `replacedBy`, and `machineOnly`. Empty string when
|
|
3164
|
+
* no metadata-driven hint is available.
|
|
3165
|
+
*/
|
|
3166
|
+
export function commandUseWhen(e) {
|
|
3167
|
+
const lc = commandLifecycle(e);
|
|
3168
|
+
const r46 = R46_OVERLAY[e.command];
|
|
3169
|
+
if (lc === CommandLifecycle.Retired) {
|
|
3170
|
+
const dest = e.replacedBy ?? e.preferredCommand ?? r46?.replacedBy;
|
|
3171
|
+
const reason = r46?.reason ? ` ${r46.reason}` : '';
|
|
3172
|
+
return dest
|
|
3173
|
+
? `Retired — use \`${dest}\` instead.${reason}`.trim()
|
|
3174
|
+
: `Retired — no replacement; remove from scripts.${reason}`.trim();
|
|
3175
|
+
}
|
|
3176
|
+
if (lc === CommandLifecycle.Deprecated) {
|
|
3177
|
+
const dest = e.replacedBy ?? e.preferredCommand ?? r46?.replacedBy;
|
|
3178
|
+
const reason = e.reason ?? r46?.reason ?? '';
|
|
3179
|
+
const suffix = reason ? ` ${reason}` : '';
|
|
3180
|
+
if (dest)
|
|
3181
|
+
return `Deprecated — prefer \`${dest}\`.${suffix}`;
|
|
3182
|
+
return `Deprecated.${suffix}`.trim();
|
|
3183
|
+
}
|
|
3184
|
+
if (lc === CommandLifecycle.Alias) {
|
|
3185
|
+
const dest = e.replacedBy ?? e.preferredCommand;
|
|
3186
|
+
return dest
|
|
3187
|
+
? `Alias for \`${dest}\` — kept for compatibility.`
|
|
3188
|
+
: 'Alias — kept for compatibility.';
|
|
3189
|
+
}
|
|
3190
|
+
if (e.replacedBy) {
|
|
3191
|
+
return `Legacy — prefer \`${e.replacedBy}\`.`;
|
|
3192
|
+
}
|
|
3193
|
+
const surface = commandSurface(e);
|
|
3194
|
+
if (e.preferredCommand) {
|
|
3195
|
+
if (e.machineOnly || surface === CommandSurface.Machine) {
|
|
3196
|
+
return `Machine surface (JSON / pipes). For a human answer run \`${e.preferredCommand}\`.`;
|
|
3197
|
+
}
|
|
3198
|
+
return `For workflow guidance run \`${e.preferredCommand}\` first.`;
|
|
3199
|
+
}
|
|
3200
|
+
if (e.machineOnly || surface === CommandSurface.Machine) {
|
|
3201
|
+
return 'Machine surface (JSON / pipes).';
|
|
3202
|
+
}
|
|
3203
|
+
if (e.taskRole === CommandTaskRole.Start) {
|
|
3204
|
+
return 'Start here — canonical human entrypoint for "what should I do?".';
|
|
3205
|
+
}
|
|
3206
|
+
return '';
|
|
3207
|
+
}
|
|
3208
|
+
export function buildCommandSafetyMatrix() {
|
|
3209
|
+
return COMMAND_CATALOG.map((e) => {
|
|
3210
|
+
const writesSession = e.safetyLevel === SafetyLevel.WritesSessionOnly;
|
|
3211
|
+
const writesDrafts = e.safetyLevel === SafetyLevel.WritesDraftsOnly;
|
|
3212
|
+
const writesSource = e.writesSource || e.safetyLevel === SafetyLevel.WritesSource;
|
|
3213
|
+
const runsShell = e.runsShell || e.safetyLevel === SafetyLevel.RunsShell;
|
|
3214
|
+
const safeForCi = !writesSource && !runsShell && !e.requiresReview;
|
|
3215
|
+
const safeForMcp = e.safetyLevel === SafetyLevel.ReadOnly && e.mcpAvailable;
|
|
3216
|
+
return {
|
|
3217
|
+
command: e.command,
|
|
3218
|
+
category: e.category,
|
|
3219
|
+
readsFiles: true,
|
|
3220
|
+
writesDrafts,
|
|
3221
|
+
writesSession,
|
|
3222
|
+
writesSource,
|
|
3223
|
+
runsShell,
|
|
3224
|
+
mcpAvailable: e.mcpAvailable,
|
|
3225
|
+
requiresReview: e.requiresReview,
|
|
3226
|
+
safeForCi,
|
|
3227
|
+
safeForMcp,
|
|
3228
|
+
};
|
|
3229
|
+
});
|
|
3230
|
+
}
|
|
3231
|
+
export function renderCommandSafetyMatrixMarkdown(rows) {
|
|
3232
|
+
const lines = [];
|
|
3233
|
+
lines.push('# SharkCraft command safety matrix');
|
|
3234
|
+
lines.push('');
|
|
3235
|
+
lines.push('| Command | Category | Reads | Drafts | Session | Source | Shell | MCP | Review | CI-safe | MCP-safe |');
|
|
3236
|
+
lines.push('| --- | --- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |');
|
|
3237
|
+
for (const r of rows) {
|
|
3238
|
+
const f = (b) => (b ? '✓' : '');
|
|
3239
|
+
lines.push(`| \`${r.command}\` | ${r.category} | ${f(r.readsFiles)} | ${f(r.writesDrafts)} | ${f(r.writesSession)} | ${f(r.writesSource)} | ${f(r.runsShell)} | ${f(r.mcpAvailable)} | ${f(r.requiresReview)} | ${f(r.safeForCi)} | ${f(r.safeForMcp)} |`);
|
|
3240
|
+
}
|
|
3241
|
+
return lines.join('\n') + '\n';
|
|
3242
|
+
}
|