Skip to content

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

@efenocchi

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions