activeloopai / activeloopai/hivemind
Centralize skillify command list in SKILL.md via build-step generator
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.6k
- Forks
- 107
- Merge medio
- 17 h 30 min
- PR fusionados (30 d)
- 6
Descripción
## Context
[PR #129](https://github.com/activeloopai/hivemind/pull/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:
- 4 per-agent SessionStart inject blocks (claude-code, codex, cursor, hermes) via `renderSkillifyCommands()`
- The pi inline mirror in `pi/extension-source/hivemind.ts` (guarded by a drift test in `tests/pi/skillify-spec-drift.test.ts`)
- `hivemind --help` top-level output in `src/cli/index.ts` *(centralized in #129 as part of the kaghni feedback)*
- `hivemind skillify --help` `usage()` in `src/commands/skillify.ts` *(centralized in #129)*
What remains hand-typed are the **3 shipped SKILL.md files**:
- `claude-code/skills/hivemind-memory/SKILL.md` — `## Skill Management (skillify)` section
- `codex/skills/deeplake-memory/SKILL.md` — same block
- `openclaw/skills/SKILL.md` — same block (pre-dates #129, on `main` since April)
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:
```md
- `hivemind skillify` — show current scope...
...
```
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 `` / `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**: #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
- Original observation: [PR #129 review comment by @kaghni](https://github.com/activeloopai/hivemind/pull/129#discussion_r3253393667)
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Evaluación
Este issue todavía no se ha evaluado.