chore(cloud): enable the default-off plugins cloud lanes call in the bootstrap (slice 49)
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Start in .claude/cloud-bootstrap.sh to see how plugins are installed and where a lane_plugins array would go, then read .claude/settings.json for the default-off entries. Write the red cases first in .claude/hooks/cloud-bootstrap-plugins.test.sh, and finish when that test and shellcheck pass and docs/cloud-sessions.md documents the repo-agnostic effect. The plugin list depends on cloud lanes from #6202 and on a live cloud session, which are user gates.
由索引模型根据 Issue 内容生成。
描述
Why
The 2,000-PRs talk Brief (Q101, Q102) wants cloud lane sessions to load the default-off plugins their stage skills call on the normal path. A cloud session neither installs nor loads plugins that only the repository's settings turn on, so those stages lose their skills in cloud. This slice (49) was planned in the integration branch's WS-H plan, Phase 5, and deferred out of the integration PR.
Two changes since the plan:
mcp-toolsandharness-memoryare default-on since #6465, so the plan's step "add harness-ops and mcp-tools" no longer needsmcp-tools; re-derive the list at the current head.- The work waits on cloud lanes existing: #6202 (slice 125) holds the pipeline lanes. Derive the list from the lane stages that actually run in cloud once those lanes are deployed.
What
Derive, from each cloud lane stage's skills, the default-off plugins it calls; enable them at user scope in .claude/cloud-bootstrap.sh (lane_plugins array) with red tests first; document the account-scoped, repo-agnostic effect in docs/cloud-sessions.md; and confirm with one live cloud session that every listed plugin loads. HITL: a pushed branch, a forced snapshot rebuild and a live cloud session are user gates.
Deferred plan text
Copied from the integration branch's local plan (WS-H.md Phase 5), which is not in the repository. <S> was the local work folder. "record cloud-runtime ..." and "record hooks-settings ..." refer to local research records; recheck against current docs. "WS-M Phases 9-14" and "Phase 6" (inventory lists instruction files, slice 50) are merged.
### Phase 5: plugins for cloud lanes in the bootstrap (slice 49) [TODO]
Q101 (superseded-by-plan), Q102; settlement 1; H8, H8.1 (c). HITL (bootstrap; a pushed branch, a forced
snapshot rebuild and one live cloud session). Runs after WS-M Phases 9-14 merge, so the list reflects the
final stage skills [EXEC-SHAPE], and after Phase 6 (the live check runs the new inventory).
- [ ] Derive the list: for each lane stage (work-loop and work, verify, babysit-prs and pull-request,
post-merge confirm, triage, scheduled drain), the default-off plugins its skills call on their
normal path in this repo, by reading each stage skill's gates at the merged head; add harness-ops and
mcp-tools (Q102). Write the list and the reason for each id into the commit body. Count first: state
the number of ids before editing (user CLAUDE.md, Bulk mutation). Where the derivation differs from
the required-plugin table in `docs/conventions/execution-target/README.md`, update that table.
- [ ] State in `docs/cloud-sessions.md`: cloud environments are account-scoped and repo-agnostic
(`docs/cloud-fleet-setup.md:30-33`), the snapshot bakes whichever repo's bootstrap built it, so these
enables apply to every repo's sessions on that environment; a cloud session neither installs nor loads
plugins the repository's settings turn on (record cloud-runtime A1), so settings-only default-off
plugins stay off in cloud; plugin versions stay fixed until the cache rebuilds (record cloud-runtime
R3).
- [ ] Red cases first in `.claude/hooks/cloud-bootstrap-plugins.test.sh`: a listed id is installed and
enabled at user scope and must end `enabled: true`; a settings-only default-off id keeps today's
disabled end state; no listed id carries a `false` key in `.claude/settings.json` (a project or local
`false` beats a user-scope enable, record hooks-settings 4b).
- [ ] `.claude/cloud-bootstrap.sh`: a `lane_plugins` array; install then `plugin enable --scope user`
for each (record hooks-settings 4a; record cloud-runtime A2); end-state check per the cases. No
official-marketplace install (no lane stage calls one at HEAD). `.claude/settings.json` unchanged.
- [ ] Live check (user gates, in order): push the slice branch to `origin`; force a snapshot rebuild with a
trivial edit to the environment's script field (`docs/cloud-fleet-setup.md:174-176`); start one cloud
session on that branch that records the snapshot stamp (`/opt/melodic-env-setup.done`) and whether
the session resumed, lists its loaded plugins, runs `/harness-ops:inventory --out <file>` and pushes
the report to the throwaway branch `ws-h-probe/cloud-inventory`; locally, fetch it and run the
inventory with `--diff` against a local run (Q102); the coordinator deletes the throwaway branch.
Record `<S>/probes/cloud-plugin-load.md` with `snapshot: <stamp>`, `resumed: yes|no`,
`result: all-loaded` or `result: missing: <ids>`, and `inventory-diff: <summary>`. If ids are
missing, stop before the coordinator merge and ask the user [FALLBACK].
- [ ] Commit `chore(cloud): enable the default-off plugins cloud lanes call`.
**Sanity Check:** after the coordinator merge,
`bash .claude/hooks/cloud-bootstrap-plugins.test.sh` exits 0;
`shellcheck .claude/cloud-bootstrap.sh` exits 0;
`comm -12 <(sed -n '/^lane_plugins=(/,/)/p' .claude/cloud-bootstrap.sh | grep -oE '[a-z0-9-]+@melodic-software' | sort) <(jq -r '.enabledPlugins | to_entries[] | select(.value == false) | .key' .claude/settings.json | sort)` prints nothing;
`for p in harness-ops mcp-tools; do sed -n '/^lane_plugins=(/,/)/p' .claude/cloud-bootstrap.sh | grep -q "$p@melodic-software" || echo "MISSING $p"; done` prints nothing;
`git diff origin/main -- .claude/settings.json` prints nothing;
`for k in snapshot resumed result inventory-diff; do grep -qE "^$k: " <S>/probes/cloud-plugin-load.md || echo "MISSING $k"; done` prints nothing;
`grep -c 'repo-agnostic' docs/cloud-sessions.md` is at least `1`;
`npx markdownlint-cli2 docs/cloud-sessions.md docs/conventions/execution-target/README.md` exits 0;
`git -C <worktree> merge-base --is-ancestor slice/49-cloud-lane-plugins HEAD` exits 0.
Acceptance
- The id count is stated before editing, and each id's reason is in the commit body.
-
.claude/hooks/cloud-bootstrap-plugins.test.shpasses, with the red cases written first. - No listed id carries a
falsekey in.claude/settings.json, and.claude/settings.jsonis unchanged. - One live cloud session records
result: all-loaded, or the missing ids go to the user before merge.
Refs: #6085
Refs: #6202
- 主要语言
- Shell
- 星标
- 22
- 派生
- 2
- 平均合并
- 8 小时 27 分钟
- 30 天内合并 PR
- 957
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
melodic-software/claude-code-plugins 的其他 Issue
-
priority: medium
难度 2/5 1-3 小时 新手友好度 68/100
melodic-software/claude-code-plugins#7351 · 2 条评论 ·
维护者通常 1 天内回复
-
agent-ready priority: high work-class: scoped
难度 2/5 1-3 小时 新手友好度 74/100
melodic-software/claude-code-plugins#7312 · 3 条评论 ·
维护者通常 1 天内回复
-
priority: medium
难度 2/5 1-3 小时 新手友好度 76/100
melodic-software/claude-code-plugins#7288 · 2 条评论 ·
维护者通常 1 天内回复
-
knowledge: docpage-digest dual verification defines no verdict vocabulary or pass/fail threshold未关闭needs-human
难度 2/5 1-3 小时 新手友好度 78/100
melodic-software/claude-code-plugins#7286 · 2 条评论 ·
维护者通常 1 天内回复
-
priority: low
难度 2/5 1-3 小时 新手友好度 76/100
melodic-software/claude-code-plugins#7282 · 2 条评论 ·
维护者通常 1 天内回复
查看 melodic-software/claude-code-plugins 的全部 Issue
相似的 Issue
-
e2e-failure ready-to-code
难度 2/5 1-3 小时 新手友好度 72/100
redhat-developer/rhdh-plugin-export-overlays#4391 · 1 条评论 ·
维护者通常 1 天内回复
-
documentation good first issue
难度 2/5 1-3 小时 新手友好度 72/100
graygarbage/HermesKey#20 ·
-
check-unsafe: source read errors become successful zero counts可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭review-bot
难度 2/5 1-3 小时 新手友好度 72/100
midagedev/bloomery#151 · 1 条评论 ·
维护者通常 1 天内回复
-
needs-triage
难度 1/5 1 小时以内 新手友好度 85/100
mattpocock/skills#1269 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
维护者通常 2 天内回复