draft: request feedback on install-managed plugin support direction#1596
draft: request feedback on install-managed plugin support direction#1596lgaudez wants to merge 5 commits into
Conversation
Extend the plugin install pipeline to support claudecode alongside codexcli: add ClaudecodePlugin* schemas to the manifest, widen the supported-targets filter, fetch each target's artifact path once (dedup by path), and deploy to ~/.claude/skills/ for claudecode installs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Thank you for your contribution! Unfortunately, this PR has 2027 added lines, which exceeds the limit of 1000 lines for external contributors. Please split your changes into smaller PRs. See CONTRIBUTING.md for details. |
|
@dyoshikawa I opened this as a draft primarily to get your feedback on the feature direction, not only on the implementation details. The main question for me is whether this new
If you think this direction is not something you want Rulesync to own long-term, that is completely valid and very useful feedback for me. Also, I saw the external contributor policy bot comment about PR size. If the direction itself makes sense to you, I can absolutely split this into smaller follow-up PRs. But before doing that, I wanted to check whether you even want this paradigm in the project. |
|
Thank you, let's proceed with this. However, please note that the install-related parts may undergo breaking changes in the future. |
|
Thank you, that makes sense. I understand your feedback as:
Given the external contributor size limit, I will split this into smaller follow-up PRs and keep the install-facing parts as minimal and flexible as possible. My current thought is to separate:
Thanks again for clarifying the direction. |
|
One more question on how you would like me to proceed from here. The external contributor limit is the main practical blocker now: even the foundational commit ( I see two realistic ways forward:
My concern with option 1 is that the first PR may feel infrastructure-heavy. Since you already said we can proceed with the direction, could you let me know which split you would prefer for external-contributor-sized PRs? If you want, I can also prepare a very small first PR focused only on the install-managed foundation and leave most docs and target expansions for follow-ups. |
Draft PR
This pull request is intentionally opened as a draft because I am primarily looking for feedback on the feature direction and maintenance model, not just code review.
The main question behind this PR is:
What this PR is trying to introduce
This branch introduces a new install-managed plugin model alongside the existing generate/fetch workflows.
Today, Rulesync already handles:
.rulesync/skills/.curated/This PR explores a new category:
rulesync.jsonc.rulesync/plugins/.curated/rulesync installrulesync-plugins.lock.yamlThis is why I consider it a new paradigm rather than a small feature addition.
The problem this is trying to solve
For some ecosystems, a generated project file is not the right delivery model. The useful artifact is instead a bundle that needs to be installed into a user-level tool directory.
Examples in this branch are skill-bundle style integrations for:
Without a first-class install model, that workflow stays ad hoc:
What is implemented in this draft
sources[].plugins[]declarations inrulesync.jsoncrulesync installskillsBundle -> userSkillsDiras the first install strategycodexcli,claudecode, andgeminiclitargets.rulesync/plugins/.curated/rulesync-plugins.lock.yamlConceptual model
1. Source declaration -> curated materialization -> user install
flowchart LR A["rulesync.jsonc\nplugin declarations in sources"] --> B["Resolve source and ref"] B --> C["Materialize curated plugin\n.rulesync/plugins/.curated/plugin-name/"] C --> D["rulesync install"] D --> E["Deploy artifact to user dir\n~/.codex/skills\n~/.claude/skills\n~/.gemini/skills"] D --> F["Record state in\nrulesync-plugins.lock.yaml"]2. Precedence model
flowchart TD A["Local plugin\n.rulesync/plugins/plugin-name/"] --> C{"Same plugin name?"} B["Curated plugin\n.rulesync/plugins/.curated/plugin-name/"] --> C C -->|yes| D["Local plugin wins"] C -->|no conflict| E["Use declared plugin as-is"]Why I thought this might fit Rulesync
My reasoning was:
But I do not want to assume that this is a good long-term product direction without your feedback.
Scope choices in this V1
This draft intentionally keeps the first version narrow:
skillsBundle -> userSkillsDirThe intent was to validate the model first before generalizing it.
The feedback I would especially like from you
I would really value your opinion on these points:
Does this belong in Rulesync at all?
Is install-managed plugin deployment aligned with the project vision, or does it make Rulesync responsible for too much lifecycle/state management?
Is the abstraction boundary reasonable?
Is
sources[].plugins[]the right place for this concept, or does it overload the currentsourcesmodel?Is the maintenance surface acceptable?
Even if the implementation works, do you want Rulesync to own ongoing support for per-tool plugin install semantics?
Is V1 scoped correctly?
Does starting with
skillsBundle -> userSkillsDirmake sense as an experiment, or is that already too specific or too tool-shaped?Should this move forward here, move elsewhere, or stop?
If your answer is “the feature works but I do not want Rulesync to go in this direction,” that is completely useful feedback for me.
Validation
pnpm cicheckpassed locally under Nodev22.22.2on this branchCI context
One GitHub Actions workflow seen on the fork (
E2E Tests on Cross-Platform) currently fails before this plugin code path is exercised because of pre-existing CI/tooling drift aroundmiseorpnpm latestand ignored build scripts. That issue reproduces on the fork main branch as well and does not appear to be introduced by this feature branch.Related context