Skip to content

fix: CI enforcement for compile:context, skills index, and plugin registry tests#50

Merged
KailasMahavarkar merged 1 commit intomainfrom
fix/ci-enforcement-plugin-tests
Apr 14, 2026
Merged

fix: CI enforcement for compile:context, skills index, and plugin registry tests#50
KailasMahavarkar merged 1 commit intomainfrom
fix/ci-enforcement-plugin-tests

Conversation

@KailasMahavarkar
Copy link
Copy Markdown
Collaborator

Fixes 3 critical issues found in behaviour analysis.

Critical Issues Fixed

1. Stale bootstrap artifact ships to CI

  • generated/runtime-context/using-hyperstack.bootstrap.md was missing from repo
  • CI would fail on fresh checkout because sync test requires the artifact
  • Fix: Added bun run compile:context step to publish.yml before tests
  • Fix: Committed the generated artifact

2. skills/INDEX.md drifts silently

  • No CI step regenerated the index after skill changes
  • Agents using INDEX.md for skill discovery would miss new skills
  • Fix: Added bash scripts/generate-skills-index.sh step to publish.yml before tests

3. Plugin tool regressions invisible

  • No tests verified plugins register their tools correctly
  • A renamed/removed tool would break agent workflows silently
  • Fix: tests/plugin-registry-behaviour.test.ts

New Tests (29 total, all pass)

tests/skills-index-behaviour.test.ts

  • INDEX.md stays in sync with actual skill directories
  • Every skill has required frontmatter (name, category, description)
  • Every skill has valid category (core | domain | meta)
  • INDEX.md references every skill directory

tests/plugin-registry-behaviour.test.ts

  • All 11 plugins register at least one tool
  • Every tool has non-empty name and description
  • Tool names follow namespace convention (plugin_name_action)
  • designer + shadcn register all tools referenced in skills
  • No duplicate tool names across plugins

…istry tests

Critical issues from behaviour analysis:

1. CI: run compile:context before tests
   - bootstrap artifact was missing from repo (generated/ dir)
   - existing sync test would fail on fresh CI checkout
   - added compile step to publish.yml before bun test

2. CI: regenerate skills/INDEX.md before tests
   - index could drift silently when skills added/renamed
   - added generate-skills-index.sh step to publish.yml

3. tests/skills-index-behaviour.test.ts (new)
   - skills/INDEX.md stays in sync with actual skill dirs
   - every skill has required frontmatter (name, category, description)
   - every skill has valid category (core | domain | meta)
   - INDEX.md references every skill directory

4. tests/plugin-registry-behaviour.test.ts (new)
   - all 11 plugins register at least one tool
   - every tool has non-empty name and description
   - tool names follow namespace convention (plugin_name_action)
   - designer + shadcn register all tools referenced in skills
   - no duplicate tool names across plugins

29/29 tests pass
@KailasMahavarkar KailasMahavarkar merged commit d8a9e8d into main Apr 14, 2026
2 of 3 checks passed
@KailasMahavarkar KailasMahavarkar deleted the fix/ci-enforcement-plugin-tests branch April 14, 2026 16:24
KailasMahavarkar added a commit that referenced this pull request Apr 14, 2026
…istry tests (#50)

Critical issues from behaviour analysis:

1. CI: run compile:context before tests
   - bootstrap artifact was missing from repo (generated/ dir)
   - existing sync test would fail on fresh CI checkout
   - added compile step to publish.yml before bun test

2. CI: regenerate skills/INDEX.md before tests
   - index could drift silently when skills added/renamed
   - added generate-skills-index.sh step to publish.yml

3. tests/skills-index-behaviour.test.ts (new)
   - skills/INDEX.md stays in sync with actual skill dirs
   - every skill has required frontmatter (name, category, description)
   - every skill has valid category (core | domain | meta)
   - INDEX.md references every skill directory

4. tests/plugin-registry-behaviour.test.ts (new)
   - all 11 plugins register at least one tool
   - every tool has non-empty name and description
   - tool names follow namespace convention (plugin_name_action)
   - designer + shadcn register all tools referenced in skills
   - no duplicate tool names across plugins

29/29 tests pass
KailasMahavarkar added a commit that referenced this pull request Apr 14, 2026
…istry tests (#50)

Critical issues from behaviour analysis:

1. CI: run compile:context before tests
   - bootstrap artifact was missing from repo (generated/ dir)
   - existing sync test would fail on fresh CI checkout
   - added compile step to publish.yml before bun test

2. CI: regenerate skills/INDEX.md before tests
   - index could drift silently when skills added/renamed
   - added generate-skills-index.sh step to publish.yml

3. tests/skills-index-behaviour.test.ts (new)
   - skills/INDEX.md stays in sync with actual skill dirs
   - every skill has required frontmatter (name, category, description)
   - every skill has valid category (core | domain | meta)
   - INDEX.md references every skill directory

4. tests/plugin-registry-behaviour.test.ts (new)
   - all 11 plugins register at least one tool
   - every tool has non-empty name and description
   - tool names follow namespace convention (plugin_name_action)
   - designer + shadcn register all tools referenced in skills
   - no duplicate tool names across plugins

29/29 tests pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant