activeloopai / activeloopai/hivemind

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

Aberta
#175 0 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
TypeScript
Estrelas
1.6k
Forks
107
Merge médio
17h 30min
PRs com merge (30d)
6

Descrição

## 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)

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.