Skip to content

feat: package nous as a Claude Code plugin (#125)#147

Closed
sriumcp wants to merge 1 commit into
AI-native-Systems-Research:reflectivefrom
sriumcp:feat/125-plugin-package
Closed

feat: package nous as a Claude Code plugin (#125)#147
sriumcp wants to merge 1 commit into
AI-native-Systems-Research:reflectivefrom
sriumcp:feat/125-plugin-package

Conversation

@sriumcp
Copy link
Copy Markdown
Collaborator

@sriumcp sriumcp commented May 24, 2026

Summary

  • New `plugin/nous/` directory with `plugin.json` manifest and 6 skill markdown files.
  • Each skill is a CLI wrapper with frontmatter that helps Claude Code suggest it from the `/` palette: `nous-run`, `nous-status`, `nous-resume`, `nous-list`, `nous-bisect`, `nous-find-principle`.

Skill coverage

Skill Wraps Notes
nous-run `nous run` --auto-approve + Slack channels (#130) for unattended runs
nous-status `nous status --watch / --line` (#127) Pure read; free to call repeatedly
nous-resume `nous resume` Idempotent; resumes from state.json checkpoint (#91)
nous-list `campaign_index.list_campaigns` (#126) Filter by query / status / repo
nous-bisect `campaign_index.compare_iterations` (#126) Byte-deterministic delta
nous-find-principle `campaign_index.search_principles` (#126) Embedding search is Phase B of #126

Behavioral tests (7)

Group What's asserted
Manifest `plugin.json` has required fields; lists ≥ 5 skills (acceptance criterion); every listed file exists on disk
Frontmatter every skill has `name` + `description`; descriptions include "use when"/"when the user" cues so the harness can match user intent (vague descriptions = dead skills)
Coverage all six documented skills present

All assertions describe what's on disk and what Claude Code's discovery layer will read. None inspect implementation internals.

Out of scope (Phase B)

  • `claude plugin install` integration test (needs live Claude Code with plugin support).
  • Publishing to a plugin registry.
  • Typed skill input contracts (currently shell substitution).

Test plan

  • `pytest tests/test_plugin_package.py` — 7/7 pass
  • `pytest` (full suite) — 345/345 pass

Closes #125.
Refs #120, #126, #127.

🤖 Generated with Claude Code

…h#125)

Ship plugin/nous/ with plugin.json + 6 skill markdown files. Each skill
is a CLI wrapper — minimal frontmatter, clear "when to use" hints, and
a Run section that shells out to the existing nous CLI or imports the
campaign_index module from AI-native-Systems-Research#126.

What lands:

  * plugin/nous/plugin.json — manifest (name, version, description,
    license, skills list).

  * plugin/nous/skills/nous-run.md — wraps `nous run`. Notes
    --auto-approve + Slack channels for unattended runs.

  * plugin/nous/skills/nous-status.md — wraps `nous status` with
    --watch / --line / --interval (AI-native-Systems-Research#127). Free to call repeatedly.

  * plugin/nous/skills/nous-resume.md — wraps `nous resume` from
    state.json checkpoint (AI-native-Systems-Research#91).

  * plugin/nous/skills/nous-list.md — uses campaign_index.list_campaigns
    (AI-native-Systems-Research#126) with optional query / status / repo filters.

  * plugin/nous/skills/nous-bisect.md — uses
    campaign_index.compare_iterations (AI-native-Systems-Research#126). Output is byte-deterministic.

  * plugin/nous/skills/nous-find-principle.md — uses
    campaign_index.search_principles. Notes embedding-search as AI-native-Systems-Research#126
    Phase B.

Behavioral tests (7 in tests/test_plugin_package.py):

Manifest:
  - plugin.json exists with required fields (name, version, description,
    skills list)
  - at least 5 skills listed (acceptance criterion)
  - every listed skill file actually exists on disk

Frontmatter:
  - every skill has name + description in YAML frontmatter
  - descriptions include "use when" / "when the user" cues so Claude Code
    can match user intent — vague descriptions are dead skills
  - every skill body references either a nous command or campaign_index

Coverage:
  - all six documented skills present (nous-run, nous-status, nous-resume,
    nous-list, nous-bisect, nous-find-principle)

Out of scope (Phase B):
  - claude plugin install integration testing (requires a live Claude Code
    install with plugin support)
  - publishing to a plugin registry
  - skill argument templating (currently shell substitution; could move
    to typed inputs once plugin contract stabilizes)

Test suite: 338 baseline + 7 new = 345 passing.

Refs AI-native-Systems-Research#120, AI-native-Systems-Research#125. Depends on AI-native-Systems-Research#126 + AI-native-Systems-Research#127 (already in flight).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sriumcp
Copy link
Copy Markdown
Collaborator Author

sriumcp commented May 24, 2026

Superseded by #153 — the consolidated tracking-120 PR carrying all 17 commits in merge order. Closing this in favor of that single PR per project owner's request.

@sriumcp sriumcp closed this May 24, 2026
@sriumcp sriumcp deleted the feat/125-plugin-package branch May 25, 2026 00:01
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