@remixhq/claude-plugin 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +35 -0
- package/agents/remix-collab.md +6 -2
- package/dist/hook-post-collab.cjs +10 -3
- package/dist/hook-post-collab.cjs.map +1 -1
- package/dist/hook-pre-git.cjs +6 -6
- package/dist/hook-pre-git.cjs.map +1 -1
- package/dist/hook-stop-collab.cjs +2744 -637
- package/dist/hook-stop-collab.cjs.map +1 -1
- package/dist/hook-user-prompt.cjs +138 -25581
- package/dist/hook-user-prompt.cjs.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.cjs +40810 -38433
- package/dist/mcp-server.cjs.map +1 -1
- package/package.json +10 -3
- package/skills/identity-and-scope-routing/SKILL.md +1 -1
- package/skills/init-or-remix/SKILL.md +12 -2
- package/skills/safe-collab-workflow/SKILL.md +36 -7
- package/skills/submit-change-step/SKILL.md +62 -2
- package/skills/sync-and-reconcile/SKILL.md +3 -2
package/README.md
CHANGED
|
@@ -14,3 +14,38 @@ Claude Code plugin for Remix collaboration workflows.
|
|
|
14
14
|
```bash
|
|
15
15
|
/reload-plugins
|
|
16
16
|
```
|
|
17
|
+
|
|
18
|
+
### Subscription tier (plan) capture
|
|
19
|
+
|
|
20
|
+
When a Stop hook records a turn, the plugin attempts to resolve the user's
|
|
21
|
+
Claude Code subscription tier (e.g. `pro`, `max`, `team`, `enterprise`) and
|
|
22
|
+
attaches it to `agent.plan` on the recorded turn. The dashboard reads this
|
|
23
|
+
field to display "Charged on Max" alongside per-turn cost.
|
|
24
|
+
|
|
25
|
+
How it's resolved (no permission prompts):
|
|
26
|
+
|
|
27
|
+
- The plugin spawns `claude auth status --json` and parses
|
|
28
|
+
`subscriptionType` from the result. Because this command runs as the
|
|
29
|
+
`claude` binary itself, macOS treats it as the keychain entry's owner
|
|
30
|
+
and returns the data silently.
|
|
31
|
+
- The result is cached at
|
|
32
|
+
`${REMIX_COLLAB_STATE_ROOT:-~/.remix/collab-state}/claude-auth-cache.json`
|
|
33
|
+
for one hour (five minutes on failure), so most Stop hooks read the
|
|
34
|
+
cache file (~1 ms) rather than spawning `claude` (~150–500 ms).
|
|
35
|
+
- Failure modes (`claude` not on PATH, non-zero exit, malformed JSON,
|
|
36
|
+
API-key-only auth, logged-out account) all degrade to `agent.plan = null`
|
|
37
|
+
with no exception thrown.
|
|
38
|
+
|
|
39
|
+
Privacy posture:
|
|
40
|
+
|
|
41
|
+
- Only `subscriptionType` is captured. Email, organization, and account
|
|
42
|
+
IDs are intentionally NOT recorded, because `agent.plan` ships in the
|
|
43
|
+
per-turn `workspace_metadata` blob that's visible to every collaborator
|
|
44
|
+
who can view the project's timeline.
|
|
45
|
+
|
|
46
|
+
Configuration:
|
|
47
|
+
|
|
48
|
+
- `REMIX_CLAUDE_AUTH_TIMEOUT_MS` — override the spawn timeout (default
|
|
49
|
+
`5000`).
|
|
50
|
+
- `REMIX_COLLAB_STATE_ROOT` — override the cache directory (default
|
|
51
|
+
`~/.remix/collab-state`).
|
package/agents/remix-collab.md
CHANGED
|
@@ -15,10 +15,14 @@ Branch model:
|
|
|
15
15
|
- If the current branch is unbound, initialize or provision that branch lane before continuing. Do not assume another branch's binding is safe to reuse.
|
|
16
16
|
- If status reports a branch mismatch or missing branch binding, stop and resolve the branch state before recording or syncing.
|
|
17
17
|
|
|
18
|
+
Source-blind recording rule:
|
|
19
|
+
|
|
20
|
+
Any local content change since the last recorded turn — whether you typed it, the user typed it, a `git commit`, `git pull`, `git merge`, `git rebase`, or `git reset` produced it, or an IDE saved it — is recorded by exactly one `remix_collab_finalize_turn`. Do not pick a different command (`re-anchor`, `sync`, `reconcile`) based on what produced the change. Those commands are only correct when `remix_collab_status.recommendedAction` explicitly names them. `re-anchor` in particular is reserved for the narrow case where no local Remix baseline exists yet for this lane (status reports `re_anchor`); it is not a recovery for "the local content changed."
|
|
21
|
+
|
|
18
22
|
Operating rules:
|
|
19
23
|
|
|
20
24
|
1. Start with `remix_collab_status` for repo-bound collaboration tasks whenever the current state is unclear.
|
|
21
|
-
2. In a Remix-bound repo, Remix MCP tools are the required workflow layer for collaboration state and historical reasoning. Raw git
|
|
25
|
+
2. In a Remix-bound repo, Remix MCP tools are the required workflow layer for collaboration state and historical reasoning. Raw git mutations are allowed but never substitute for `remix_collab_finalize_turn`; after raw git mutations, run `remix_collab_status` and follow its `recommendedAction`. Raw git reads are only acceptable for exact repository facts such as specific commits, blame, ancestry, or raw patch details.
|
|
22
26
|
3. Use preview tools before apply tools whenever both exist.
|
|
23
27
|
4. Treat reconcile as a last-resort, high-risk path.
|
|
24
28
|
5. Prefer bounded merge request diffs first, then expand only when necessary.
|
|
@@ -43,7 +47,7 @@ When appropriate:
|
|
|
43
47
|
- use `remix_collab_init` to bind the current repo
|
|
44
48
|
- use `remix_collab_remix` to start from an existing app lineage
|
|
45
49
|
- use `remix_collab_checkout` to continue work on an existing app id without creating a fork
|
|
46
|
-
- when the user asks for
|
|
50
|
+
- when the user asks for any URL, link, dashboard, or web address of a Remix-bound repo or app (e.g. "what's the URL of this repo on Remix", "the link to this app", "where can I see this on the dashboard"), use `remix_collab_status` and answer with `binding.dashboardUrl` (already in the canonical `https://dashboard.remix.one/apps/<appId>` form). Do NOT answer with `binding.remoteUrl` — that is the git remote, not the Remix dashboard. If `binding.dashboardUrl` is null but `binding.currentAppId` is set, fall back to `https://dashboard.remix.one/apps/<currentAppId>`. Do not require an additional tool call beyond `remix_collab_status`.
|
|
47
51
|
- when helping the user choose an app, prefer scoped or membership-oriented discovery first: use `organizationId` / `projectId` when known, or use `ownership` with `accessScope="explicit_member"` when the user means “apps I can work on”
|
|
48
52
|
- reserve `accessScope="all_readable"` for explicit public or broad readable discovery, not as the default work-oriented app picker
|
|
49
53
|
- use memory summary/search/timeline tools before repo inspection when historical context or reasoning is needed
|
|
@@ -861,7 +861,7 @@ async function markPendingTurnConsultedMemory(sessionId) {
|
|
|
861
861
|
// package.json
|
|
862
862
|
var package_default = {
|
|
863
863
|
name: "@remixhq/claude-plugin",
|
|
864
|
-
version: "0.1.
|
|
864
|
+
version: "0.1.20",
|
|
865
865
|
description: "Claude Code plugin for Remix collaboration workflows",
|
|
866
866
|
homepage: "https://github.com/RemixDotOne/remix-claude-plugin",
|
|
867
867
|
license: "MIT",
|
|
@@ -884,16 +884,23 @@ var package_default = {
|
|
|
884
884
|
"hooks",
|
|
885
885
|
"agents"
|
|
886
886
|
],
|
|
887
|
+
exports: {
|
|
888
|
+
".": {
|
|
889
|
+
types: "./dist/index.d.ts",
|
|
890
|
+
import: "./dist/index.js"
|
|
891
|
+
}
|
|
892
|
+
},
|
|
887
893
|
scripts: {
|
|
888
894
|
build: "tsup",
|
|
889
895
|
postbuild: `node -e "const fs=require('node:fs'); for (const p of ['dist/mcp-server.cjs','dist/hook-pre-git.cjs','dist/hook-user-prompt.cjs','dist/hook-post-collab.cjs','dist/hook-stop-collab.cjs']) fs.chmodSync(p, 0o755);"`,
|
|
890
896
|
dev: "tsx src/mcp-server.ts",
|
|
891
897
|
typecheck: "tsc -p tsconfig.json --noEmit",
|
|
898
|
+
test: "node --import tsx --test src/**/*.test.ts",
|
|
892
899
|
prepack: "npm run build"
|
|
893
900
|
},
|
|
894
901
|
dependencies: {
|
|
895
|
-
"@remixhq/core": "^0.1.
|
|
896
|
-
"@remixhq/mcp": "^0.1.
|
|
902
|
+
"@remixhq/core": "^0.1.15",
|
|
903
|
+
"@remixhq/mcp": "^0.1.15"
|
|
897
904
|
},
|
|
898
905
|
devDependencies: {
|
|
899
906
|
"@types/node": "^25.4.0",
|