Feat/claude plugin - #1188
Conversation
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Extends the emit-plugin generator with emit_agents(), which renders the Claude-dialect Scout/Verify/Audit profiles via cbm_render_graph_profile and writes them verbatim to agents/<slug>.md. Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
…failure) Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
- rename local skills -> skill_list (was shadowing file-scope skills[]) - remove always-false !skills guard (cbm_get_skills never returns NULL) - clang-format-20 reflow of emit_agents/emit_mcp_json (no behavior change) Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
POSIX mkdir(path, mode) is 2-arg; MinGW/clang mkdir is 1-arg, breaking the Windows build. Use cbm_mkdir_p (compat_fs) like the other tests; drop the now-unused <sys/stat.h>. Signed-off-by: Kody <kaidi.shi.1121@gmail.com>
|
Thanks for this, and sorry for the slow first response. Queued for review. MERGEABLE with 21 checks green, +747 across 18 files. Flagging one thing early so the review outcome is not a surprise: a new plugin surface is a public-interface addition rather than a bug fix, so beyond correctness there is a question of whether it fits the project direction. That is a maintainer call and not a comment on the implementation. Worth knowing before you invest more time on top of it. |
|
@DeusData Thanks for the heads-up. Appreciate the context—I'll wait for the review |
|
Thank you for this — it is carefully built, and I want to be specific about what I verified before explaining what is holding it. The security review came back clean, and I checked the thing that actually worried me. A PR shipping skill and agent markdown is content an AI agent will read and follow, so it gets scanned as adversarial input rather than as documentation. Result: every file under No new dependencies, the The engineering is genuinely good. Single source of truth with a drift gate enforcing it is the right architecture — it is what stops the committed tree and the C source from silently diverging, which is exactly how this class of feature usually rots. Roughly 40% of the diff is tests, the wipe guard has a marker check and a test for it, and you fixed the Windows What is holding it is a direction decision, and it is the maintainer's, not mine. One thing that is time-sensitive and worth fixing regardless of that decision. Four defects worth fixing while the direction question is open:
One design divergence worth an explicit answer from you, since you may have reasoned about it already: None of this is a rejection. The build quality is not in question — the question is whether we want a second channel at all, and that answer is above my pay grade. I will come back to you as soon as I have it. |
What does this PR do?
What does this PR do?
Adds a Claude Code plugin for codebase-memory-mcp, distributed with this repo acting as its own plugin marketplace. Claude Code users install the full experience — MCP server, the codebase-memory skill, three graph agents (Scout/Verify/Audit), and the context hooks — in one step:
claude plugin marketplace add DeusData/codebase-memory-mcp
claude plugin install codebase-memory
Other clients (Codex, Gemini, Copilot, …) keep the existing codebase-memory-mcp install path unchanged; this is a Claude-Code-only additional distribution.
A new emit-plugin
[--version X] subcommand generates the whole plugin tree from the same embedded C strings the install subcommand already uses, so the plugin can never drift from the source of truth:.claude-plugin/marketplace.json is hand-written; the generated plugin/ tree is committed and regenerated idempotently. emit-plugin wholly owns out_dir (recursive clear + regenerate each run) and refuses to clear a directory that isn't already an emitted plugin tree, guarding against accidental data loss. scripts/check-plugin-drift.sh rebuilds, re-emits, and fails on any plugin/ difference (via git status --porcelain, catching new/untracked files too); it runs as a merge-gating plugin-drift job in .github/workflows/pr.yml. No new dependencies.
Checklist
git commit -s) — required, CI rejectsunsigned commits (DCO, see CONTRIBUTING.md)
make -f Makefile.cbm test)make -f Makefile.cbm lint-ci)