v0.6.0: explicit layout, reliability fixes, and test matrix - #2
Merged
Conversation
…6.0)
Restructure the repo so every client loads exactly its intended bundle:
- components/{skills,agents,commands}: the canonical shared set
- clients/{cursor,claude}: client-native hooks and MCP configs
- Both plugin manifests declare every component path explicitly; root
default-discovery folders are gone, so Cursor no longer silently
ingests the Claude-shaped hook (it gets a Cursor-native sessionStart
hook with the flat response shape instead)
Reliability and truthfulness fixes in the same pass:
- Sign-in correctness: rule, skills, and subagent now state that an
authorization_url means sign-in required even when the response says
success: true (present link, stop, wait, retry once)
- App repair: managing-arcade-apps and /arcade:apps document
Arcade_ManageToolAuthorization (status/switch_account/reauthorize)
in apps language
- Outbound/destructive confirmation guidance moved into the shared
skill and Cursor rule, not just the operator subagent
- Both session hooks trimmed to two sentences; rule trimmed to
activation policy + non-negotiables
- OpenCode 0.6.0: pinned @opencode-ai/plugin (^1.17.18), package
exports, toast scoped to Arcade tools with structured
authorization_url parsing (regex fallback only)
- Docs: Cursor deeplink labeled tools-only with the full-plugin path
separate; four meta-tools documented; npm publication status
corrected; mcp-remote pinned (0.1.38); privacy note; remaining
"authorization link" copy renamed to "sign-in link"
…hecklist - scripts/check.mjs: JSON validity, per-manifest explicit component declarations with path existence, frontmatter requirements (kebab-case names, skill name/dir match), duplicate component names, version consistency across both manifests + the npm package + CHANGELOG, endpoint/server-key consistency, hook execution with client-native output shapes, and sign-in language rules. No dependencies. - scripts/opencode-smoke.ts (bun): config hook registers the arcade server and never overwrites a user entry; toast fires for structured authorization_url from Arcade tools (even with success: true), uses the regex fallback only for non-JSON Arcade output, and never fires for non-Arcade tools or link-free results. - .github/workflows/check.yml runs both plus npm pack --dry-run on every push/PR. - QA.md: manual release checklist for local client loads, the nine auth-flow scenarios, and release steps (model/client behavior that CI cannot honestly assert).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The full cross-client roadmap in one PR (this repo only): explicit shared layout, reliability/truthfulness fixes, and the automated test matrix + CI.
Layout
components/{skills,agents,commands}/— the canonical shared set (names unchanged:arcade,/arcade:*).clients/cursor/— rule, Cursor-nativesessionStarthook (flatadditional_contextshape), MCP config.clients/claude/— Claude-nativeSessionStarthook, MCP config.Reliability
authorization_urlin a result means sign-in required even whensuccess: true— stated identically in the rule, both skills, and the subagent (present link → stop → wait → retry once).managing-arcade-apps+/arcade:appsnow coverArcade_ManageToolAuthorization(status / switch account / sign in again) in apps language.OpenCode (
opencode-arcade@0.6.0)@opencode-ai/pluginpinned to^1.17.18;exportsfield added.authorization_urlparsing (depth-limited); regex fallback only. Unrelated OAuth-looking URLs no longer toast.Truthful docs
Arcade_ManageToolAuthorization); npm publication status corrected;mcp-remotepinned (0.1.38) for Claude Desktop; privacy note added; "authorization link" → "sign-in link"; GitHub repo description fixed.Test matrix + CI
scripts/check.mjs(no deps): JSON validity, explicit per-manifest component declarations + path existence, frontmatter rules, duplicate names, version consistency (manifests + npm + CHANGELOG), endpoint/server-key consistency, hook execution with client-native output shapes, sign-in language rules.scripts/opencode-smoke.ts(bun): config registration, no user-config overwrite, toast scoping incl. thesuccess: trueauth case and non-Arcade rejection..github/workflows/check.ymlruns both +npm pack --dry-runon every push/PR.QA.md: manual release checklist (local client loads, nine auth-flow scenarios, release steps).All plugin versions: 0.6.0.
Test plan
node scripts/check.mjspasses (11 JSON files, version 0.6.0)bun scripts/opencode-smoke.ts— all assertions passclaude plugin validatepasses (plugin + marketplace manifests)npm pack --dry-run→ 4 files,opencode-arcade-0.6.0.tgz