Skip to content

feat: support Claude Code and Codex with upstream sync - #638

Closed
yxhta wants to merge 24 commits into
cursor:mainfrom
yxhta:fix/drop-shadowed-agents-dir
Closed

yxhta wants to merge 24 commits into
cursor:mainfrom
yxhta:fix/drop-shadowed-agents-dir

Conversation

@yxhta

@yxhta yxhta commented Oct 16, 2026 •

Copy link
Copy Markdown

Claude Code の /plugin Errors に、pstack が「Default agents/ folder is ignored because the manifest sets "agents"」と表示されていました。thermos も同じ構成です。

上流の agents/*.md は、すでに skills/poteto-mode/references/portable-agents/ (thermos は skills/thermos/references/agents/) にコピーされています。manifest には runtime-agents/ のラッパーが登録されているので、パッケージ直下の agents/ はどこからも読まれず、警告を出すだけでした。そこで prepare.py でコピーをやめて移動に変え、ガイド内の Comment Sicko へのリンクも移動先に向けました。

検証

  • claude --plugin-dir ./portable/pstack --debug-file を変更前後で実行しました。警告は 2 件から 1 件に減り、残った 1 件はインストール済みの旧キャッシュ版から出ています。ローカル版からは 12 個の runtime-agents が読み込まれました。
  • python3 tools/portable/validate.py は成功しました。
  • unittest の失敗は変更前の main と同じ 12 件 (mods_evidence、install、codex_discovery など、ローカル環境由来) です。今回の変更で増えた失敗はありません。

🤖 Generated with Claude Code


Note

Medium Risk
Large generated-plugin surface plus CI that can open PRs and Mods hooks that run Git/tests; mostly developer tooling, but incorrect packaging or evidence gates could mislead installs or block edits.

Overview
Turns the repo into the yxhta/pstack portable fork of Cursor’s pstack/Thermos: new Codex/Claude marketplaces (pstack, thermos, pstack-mods), install docs (README_PORTABLE.md), and a large tools/portable/ pipeline that generates portable/* from pristine upstream pins with runtime overlays (dispatch contracts, SessionStart hooks, runtime-agents wrappers, bundled deslop, plan/worktree helpers).

Adds automation and verification: scheduled/manual upstream sync workflow, a broad validate workflow (Python tests, pinned Claude 2.1.289 Mods checks, Skills CLI smoke installs), and extensive parity/maintenance docs. Optional pstack-mods adds opt-in Claude-only bug-fix evidence gates (snapshot + repro/verify + dual Thermos reviews).

Per the PR notes, packaging also stops leaving duplicate upstream agents/*.md at the package root (content lives under references/portable-agents/; manifests point at runtime-agents/ only), which addresses Claude’s “default agents folder ignored” plugin warning.

Reviewed by Cursor Bugbot for commit a57e1f0. Bugbot is set up for automated code reviews on this repo. Configure here.

yxhta and others added 24 commits October 3, 2026 17:32
Publish the reviewed cloud tree from local commit 5d6ac2fa3ff59aba6daf240464b413bb356bc8e7.
Upstream reference: cursor/plugins e43c7ee.

Includes upstream 0.15.9 source synchronization, portable runtime guidance,
installation and generation integrity, read-only worktree audit, and portable
plan validation with adversarial regressions. Original upstream source paths
are preserved. See docs/parity-report.md for evidence and host limitations.

This connector publication preserves the exact reviewed Git tree and file
modes; the local merge history remains in the delivered Git bundle.
Restore controlled test system configuration after production environment
sanitization. Preserve production read-only safeguards and exercise actual
system clean/process filters with positive execution controls.

Synthetic runner pollution reproduced 18 failing audit assertions before
this fix. All 65 tests pass normally and under the same pollution afterward.
Independent review verified wrapper ordering and sanitizer mutation coverage.

Reviewed local commit: 1051d98d7f4acf06fdc7cbea8ccc75ac29507587.
Preserve cursor/plugins e43c7ee as a
reachable parent of the published branch. The reviewed tree is unchanged.
Fresh clones must not depend on an unrelated sync branch retaining the
upstream Git object required by source-integrity validation.
Improve pstack upstream parity and portable verification.

Retain the pinned upstream ancestry required by source-integrity checks.
Independent review and PR validation passed; native CLI-host limitations
remain documented in docs/parity-report.md.
Preserve upstream Thermos rubrics in a portable package with native manifests, read-only Claude wrappers, and Codex dispatch guidance.

Independent review, 88 tests, both PR validation workflows, native installation, and Codex discovery checks passed. Authenticated Claude/Codex model-host inference limits remain documented.
Capture process evidence and bind verification and independent Thermos reviews to the current code snapshot. Add bounded lifecycle guards, visible status, native tests, and generated Claude-only packaging.

Preserve upstream sources and existing portable pstack, Thermos, and Codex behavior. Authenticated model execution remains unverified.
Compare raw file bytes and modes against immutable baseline objects. Keep native type declarations outside generated package freshness checks.

Add regressions for cached timestamps, replacement refs, diff transitions, and native sidecars. All 126 Python and 85 native Mods tests pass; independent re-review has no remaining findings.
Merge cursor/plugins at d0ef80d while keeping upstream source pristine. Preserve explicit poteto-help invocation on Claude Code and Codex, adapt its help guidance, and report blocked upstream updates as failed sync jobs.
chore(pstack): sync 0.15.15 and fix maintenance gates

Preserve upstream ancestry and the verified portable package tree.
Merge current main and regenerate the plugin version for the updated upstream pin.
Associate each guarded tool call with its pipeline epoch. Preserve the host catch handler while preventing failures from canceled calls from blocking a replacement pipeline.
feat(pstack): add opt-in Claude Mods bug-fix gates

Include current-main compatibility and the verified stale tool-error fix. Independent reviews, 131 Python tests, 89 native Mods tests, and exact-head CI passed.
Track the latest upstream monorepo revision and regenerate package metadata. The pstack release remains 0.15.15; its workflows and the Thermos and Mods implementations are unchanged.
chore(pstack): sync upstream marketplace additions

Import the upstream Salesforce Headless 360 marketplace plugin and refresh generated package metadata. Pstack remains 0.15.15. Local validation, independent reviews, and exact-head CI passed.
chore: sync pstack 0.15.21 and preserve portable invocation gates
Upstream 0.15.25 asks each spawn to pick its reasoning level and speed
for the job, computes the orchestrate frontier from the forge instead of
Graphite, and adds sharpen, in-your-own-words, and visual ketchup
replies. The fork's adaptation still required gt for orchestrate and had
no mapping for per-job effort, fast slugs, or /visualize.

Map per-job matching onto the Claude Agent effort argument (or the
native -<level> wrappers) starting from the sheet's level or budget
target, keep the role's model so panels stay diverse, and report fast
mode as unapplied because Claude Code only exposes it as a session
toggle. Codex gets the same rule on reasoning_effort.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
chore: sync pstack upstream e5136d8 and tune per-job effort for Claude
@yxhta

yxhta commented Oct 16, 2026

Copy link
Copy Markdown
Author

Opened by mistake against the wrong repository. Sorry for the noise.

@yxhta yxhta closed this Oct 16, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 3 potential issues.

Fix All in Cursor

Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.

Reviewed by Cursor Bugbot for commit a57e1f0. Configure here.

Comment thread tools/portable/prepare.py
target = 'skills/poteto-mode/references/portable-agents/' + Path(name).name
if target in overlay:
raise ValueError(f'Portable asset collides with generated agent: {target}')
overlay[target] = artifact

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agents folder is copied, not moved

Medium Severity · Logic Bug

render_package and render_thermos still assign upstream agents/*.md into skill references without removing those paths from the package tree, so portable/pstack/agents/ and portable/thermos/agents/ remain. Claude Code then warns that the default agents/ folder is ignored because the manifest already lists runtime-agents/, which is the /plugin Errors warning this change set out to eliminate.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit a57e1f0. Configure here.

{
"name": "thermos",
"source": "./portable/thermos",
"description": "Independent correctness and code-quality branch reviews."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thermos listing descriptions do not match

Medium Severity · Bugbot Rules

Plugin listing description must match verbatim across Claude listing surfaces. The marketplace Thermos entry says Independent correctness and code-quality branch reviews. while .claude-plugin/plugin.json (template and generated package) says Thermos correctness and code-quality reviews for Claude Code and Codex. That split listing copy leaves marketplace and install UI out of sync.

Additional Locations (1)
Fix in Cursor Fix in Web

Triggered by learned rule: Plugin listing copy must match plugin.json and marketplace.json

Reviewed by Cursor Bugbot for commit a57e1f0. Configure here.

{
"name": "pstack-mods",
"source": "./portable/pstack-mods",
"description": "Opt-in Claude Mods bug-fix evidence gates. Validated against Claude Code 2.1.289."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mods listing descriptions do not match

Medium Severity · Bugbot Rules

Plugin listing description must match verbatim across Claude listing surfaces. The marketplace pstack-mods entry says Opt-in Claude Mods bug-fix evidence gates. Validated against Claude Code 2.1.289. while .claude-plugin/plugin.json says Opt-in, snapshot-bound bug-fix evidence gates for Claude Code. Marketplace and installed plugin listings therefore disagree.

Additional Locations (1)
Fix in Cursor Fix in Web

Triggered by learned rule: Plugin listing copy must match plugin.json and marketplace.json

Reviewed by Cursor Bugbot for commit a57e1f0. Configure here.

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