Skip to content

Centralize skillify command list in SKILL.md via build-step generator #175

Description

@efenocchi

Context

PR #129 introduced SKILLIFY_COMMANDS in src/cli/skillify-spec.ts — the single source of truth for the hivemind skillify ... command list. As part of #129 we centralized all TypeScript-side consumers of that list:

What remains hand-typed are the 3 shipped SKILL.md files:

These can't be solved the same way as the TS callers because SKILL.md is shipped Markdown — it can't import TypeScript at runtime. We need a build-step generator.

Proposed approach

  1. Markers in each SKILL.md — wrap the command block in HTML-comment markers so the generator can locate it deterministically without ambiguity:

    <!-- SKILLIFY_COMMANDS_START -->
    - `hivemind skillify` — show current scope...
    ...
    <!-- SKILLIFY_COMMANDS_END -->
  2. Generator script — add scripts/sync-md-commands.mjs that:

    • Imports the compiled SKILLIFY_COMMANDS from bundle/cli.js (or dist/skillify-spec.js)
    • Renders the block in the same bullet format the SKILL.md files use today
    • Rewrites the content between <!-- SKILLIFY_COMMANDS_START --> / END in all 3 files
  3. Wire into npm run build — append node scripts/sync-md-commands.mjs to the build pipeline so the markdown can't drift in CI.

  4. Drift detection test — under tests/, mirror the structure of tests/pi/skillify-spec-drift.test.ts: read each SKILL.md, parse the block between markers, assert it matches what renderSkillifyCommands() would produce. Fails CI if a developer edits the markdown by hand and skips the build.

  5. Same pattern for ORG_COMMANDS (optional, can be a separate sub-task) — the org/auth command list (hivemind login, whoami, org list, …) is hand-typed in the same 3 SKILL.md files plus the per-agent SessionStart hooks. Extracting an ORG_COMMANDS constant and applying the same generator closes the symmetric debt.

Why a separate PR

  • Scope: feat(skillify): one-shot local skill mining for non-auth users (mine-local) #129 ships the hivemind skillify mine-local user-facing feature. Wiring a Markdown generator + drift test would tangle the build pipeline with the feature work and expand the review surface significantly.
  • Risk surface: A scripts/sync-md-commands.mjs + npm run build change touches CI and can break the release flow. Worth landing on its own branch where it's the focus.
  • Independence: This change has zero behavior impact on the mine-local feature — it's pure documentation upkeep.

Acceptance criteria

  • All 3 SKILL.md files have the skillify command block generated from SKILLIFY_COMMANDS
  • npm run build regenerates the blocks deterministically
  • Drift test fails if a SKILL.md block is edited by hand and not regenerated
  • Optionally: same applied to org/auth commands via ORG_COMMANDS

Reference

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions