skill-map spec
Vendor-neutral specification for mapping, inspecting, and managing collections of interrelated markdown files — skills, agents, commands, hooks, and notes.
https://skill-map.dev/spec/v0/<path>.schema.json
Pre-1.0. v0 throughout the unstable lifecycle; becomes v1 at first stable cut.
Top-level schemas
-
execution-record.schema.jsonExecutionRecordA single row in the execution history (`state_executions`). One record per action or audit invocation — regardless of whether the runner was CLI, Skill, or in-process.
-
issue.schema.jsonIssueDeterministic finding emitted by a rule when evaluating the graph. Not to be confused with `Finding`, which is probabilistic (LLM-produced).
-
job.schema.jsonJobRow in `state_jobs`. Non-terminal state until it reaches `completed` or `failed`, at which point an `ExecutionRecord` is also written.
-
link.schema.jsonLinkDirected relation between two nodes, produced by one or more detectors during a scan.
-
node.schema.jsonNodeA single markdown file in the graph (skill, agent, command, hook, note). Identified by its relative path from the scope root.
-
plugins-registry.schema.jsonPluginsRegistryTwo shapes in one file: (1) the per-plugin manifest that authors ship as `plugin.json` (see `$defs/PluginManifest`); (2) the aggregate registry the implementation produces on disk (e.g. `~/.skill-map/plugins.json`), which lists all discovered plugins with their compat status. Both shapes are normative. camelCase keys throughout.
-
project-config.schema.jsonProjectConfigShape of `.skill-map.json` at the project root. All fields optional; defaults apply when absent. camelCase keys throughout — consistent with the rest of the spec.
-
report-base.schema.jsonReportBaseBase shape for any probabilistic report produced by an LLM-backed action (summarizers, `sm what`, `sm cluster-triggers`, etc.). All per-kind summary schemas under `summaries/` extend this. Kernel validates the `confidence` and `safety` fields regardless of action-specific extensions.
-
scan-result.schema.jsonScanResultCanonical output of `sm scan --json` (and the data shape sent over WebSocket scan events). Self-describing and versioned; consumers MUST check `schemaVersion` before parsing.
Frontmatter schemas
-
frontmatter/agent.schema.jsonFrontmatterAgentFrontmatter shape for nodes classified as `agent`. Extends `base.schema.json`. Kind-specific fields: `model`, `tools`. Color, when needed, lives in `metadata.color` (inherited from base).
-
frontmatter/base.schema.jsonFrontmatterBaseBase shape of the YAML frontmatter block on every node, across all kinds. Kind-specific schemas (`skill`, `agent`, `command`, `hook`, `note`) extend this via `allOf`. camelCase keys throughout. `additionalProperties` is intentionally permissive; the deterministic `unknown-field` rule emits warnings for keys outside the catalog so that the JSON Schema remains shape-only and policy lives in rules.
-
frontmatter/command.schema.jsonFrontmatterCommandFrontmatter shape for nodes classified as `command`. Extends `base.schema.json`. Kind-specific fields: `args`, `shortcut`.
-
frontmatter/hook.schema.jsonFrontmatterHookFrontmatter shape for nodes classified as `hook`. Extends `base.schema.json`. Kind-specific fields: `event`, `condition`, `blocking`, `idempotent`.
-
frontmatter/note.schema.jsonFrontmatterNoteFrontmatter shape for nodes classified as `note`. Extends `base.schema.json` with no additional fields. Exists so that every kind has a matching schema for uniform routing.
-
frontmatter/skill.schema.jsonFrontmatterSkillFrontmatter shape for nodes classified as `skill`. Extends `base.schema.json`. Kind-specific fields: `inputs`, `outputs`. Stability: experimental — the parameter shape may tighten once summarizer needs emerge.
Summary schemas
-
summaries/agent.schema.jsonSummaryAgentReport produced by `agent-summarizer` for a single `agent` node. Extends `report-base.schema.json`. Stability: experimental.
-
summaries/command.schema.jsonSummaryCommandReport produced by `command-summarizer` for a single `command` node. Extends `report-base.schema.json`. Stability: experimental.
-
summaries/hook.schema.jsonSummaryHookReport produced by `hook-summarizer` for a single `hook` node. Extends `report-base.schema.json`. Stability: experimental.
-
summaries/note.schema.jsonSummaryNoteReport produced by `note-summarizer` for a single `note` node. Extends `report-base.schema.json`. Stability: experimental.
-
summaries/skill.schema.jsonSummarySkillReport produced by `skill-summarizer` for a single `skill` node. Extends `report-base.schema.json`. Stability: experimental — field set may tighten as real summarizer output stabilizes.
Prose contracts
Rendered on GitHub. The spec on this site is the schemas; the prose below is what they enforce.
-
README.mdREADMEOverview of the spec and what it defines.
-
versioning.mdVersioningEvolution policy, stability tags, deprecation window.
-
CHANGELOG.mdChangelogNormative history of spec changes.
-
architecture.mdArchitectureHexagonal ports & adapters, 6 extension kinds.
-
cli-contract.mdCLI contractVerbs, flags, exit codes, JSON introspection.
-
dispatch-lifecycle.mdDispatch lifecycleJob state machine, atomic claim, TTL, reap.
-
job-events.mdJob eventsCanonical event stream emitted during execution.
-
prompt-preamble.mdPrompt preambleVerbatim injection-mitigation text prepended to every job.
-
db-schema.mdDB schemaZoned table catalog, naming conventions, migrations.
-
plugin-kv-api.mdPlugin KV APIctx.store contract for mode A + mode B dedicated rules.
-
interfaces/security-scanner.mdSecurity scanner interfaceConvention for third-party security scanners.