codemap.md 2.5 KB

src/skills/codemap/

Responsibility

  • Provide a command-style skill package that standardizes repository mapping workflows for unfamiliar codebases.
  • Define the task contract used by Orchestrator/fixer agents via SKILL.md and operational guidance via README.md.
  • Generate and evolve change-aware codemap state artifacts (.slim/codemap.json) and scaffold placeholders (codemap.md).

Design

  • Contract layer: SKILL.md (machine prompt contract) + README.md (human-facing operation notes).
  • Execution layer: scripts/codemap.mjs exports deterministic helper functions:
    • parseArgs(argv)
    • cmdInit, cmdChanges, cmdUpdate
    • selectFiles, computeFileHash, computeFolderHash, createEmptyCodemap
    • loadState, saveState, migrateLegacyState
  • Persistence model: JSON state at .slim/codemap.json with metadata, file_hashes, and folder_hashes.
  • Testing layer: scripts/codemap.test.ts validates pattern matching, hash determinism, and migration behavior.
  • The script intentionally avoids network and mutates only filesystem-local state and codemap templates.

Flow

  • Entry point main(argv) parses command and arguments (init|changes|update, --root, --include, --exclude, --exception) and dispatches via strict branches.
  • cmdInit() computes include/exclude candidate sets using selectFiles() and writes: 1) .slim/codemap.json via saveState() 2) one codemap.md per discovered folder via createEmptyCodemap().
  • cmdChanges() reloads state (loadState() + migrateLegacyState()), recomputes current hashes, emits added/removed/modified diffs and affected folder list, and exits non-zero if state is absent.
  • cmdUpdate() recomputes full state from existing metadata and persists it, used after targeted fixers finish updates.
  • codemap skill invocation path in SKILL workflow is explicit: Step 1 checks .slim/codemap.json or .slim/cartography.json, then Step 2/3 selects init or incremental path.

Integration

  • Installed under OpenCode through src/cli/custom-skills.ts as name: 'codemap', sourcePath: 'src/skills/codemap'.
  • src/cli/install.ts copies this directory into the user skill directory; OpenCode executes scripts/codemap.mjs from that context.
  • src/hooks/filter-available-skills/index.ts applies agent-level skill gating via names from getSkillPermissionsForAgent().
  • scripts/verify-release-artifact.ts includes codemap skill metadata and runtime checks as required packaged files.