Agent Skills › AnalyseDeCircuit/oxideterm › oxideterm-plugin-compatibility

oxideterm-plugin-compatibility

GitHub

确保 OxideTerm 插件在主机 API、运行时或语法加载变更时的兼容性,处理版本选择与安装检查。

.agents/skills/oxideterm-plugin-compatibility/SKILL.md AnalyseDeCircuit/oxideterm

Trigger Scenarios

修改主机插件 API 变更运行时或语法加载逻辑 调整目录版本选择策略 更改已安装插件的检查机制 将内置语言支持提取为插件

Install

npx skills add AnalyseDeCircuit/oxideterm --skill oxideterm-plugin-compatibility -g -y
More Options

Non-standard path

npx skills add https://github.com/AnalyseDeCircuit/oxideterm/tree/main/.agents/skills/oxideterm-plugin-compatibility -g -y

Use without installing

npx skills use AnalyseDeCircuit/oxideterm@oxideterm-plugin-compatibility

指定 Agent (Claude Code)

npx skills add AnalyseDeCircuit/oxideterm --skill oxideterm-plugin-compatibility -a claude-code -g -y

安装 repo 全部 skill

npx skills add AnalyseDeCircuit/oxideterm --all -g -y

预览 repo 内 skill

npx skills add AnalyseDeCircuit/oxideterm --list

SKILL.md

Frontmatter
{
    "name": "oxideterm-plugin-compatibility",
    "description": "Preserve OxideTerm plugin compatibility when changing host plugin APIs, runtime or grammar loading, catalog version selection, or installed-plugin checks. Also use when extracting built-in language support into plugins. Ordinary app version bumps or plugin-page styling alone do not require this workflow."
}

OxideTerm Plugin Compatibility

Read the relevant implementation before assigning a compatibility boundary:

  • crates/oxideterm-plugin-manifest/src/registry.rs: catalog release and correction data.
  • crates/oxideterm-plugin-registry/src/registry.rs and compatibility.rs: version selection, cached requirements, and startup discovery.
  • crates/oxideterm-plugin-registry/src/install.rs: package installation checks.
  • crates/oxideterm-gpui-app/src/workspace/plugin_entity.rs: refresh, activation gating, and task ownership.
  • The specific host API, runtime, or grammar loader affected by the change.
  • crates/oxideterm-editor-syntax/src/plugin.rs and crates/oxideterm-gpui-editor/src/languages.rs for lazy grammar loading and open-document refresh.

Host-side contract

Select the highest release supported by both the host and platform. Offer an update only when that compatible release is newer than the installed plugin; explain a higher incompatible version separately. Never silently downgrade.

Recheck installed plugins on startup after both app upgrades and downgrades. Apply the latest cached correction for the exact plugin ID and version without rewriting package files. Retain files, settings, and enable preferences while blocking incompatible activation. Keep the startup refresh bounded and owned by the plugin entity; offline startup uses the last valid cache.

The official client uses the v2 summary catalog and loads checksum-bound histories for installed plugins and the current marketplace page. A history must match its summary identity, latest version, effective host range, size, and SHA-256. Preserve the frozen v1 endpoint, exact historical snapshot, referenced assets, and v1 cache reader. All subsequent plugins, releases and corrections belong only to v2; existing clients must upgrade the host to receive them. New clients fetch only v2; on failure retain the last valid cache rather than replace it with frozen v1. Publish v2 before shipping a host that requires it. Save verified raw histories before replacing the compact root cache; startup and manual installation must resolve corrections for the exact installed version. Cancel obsolete page requests and discard results from another page or catalog snapshot. Catalog maintenance and generation belong to the marketplace's per-plugin source records and release automation.

For language extraction, verify the grammar loader, Tree-sitter ABI, and actual old-client behavior. A host range cannot replace those checks. Do not assign an upper bound to old plugins just because a new plugin or app version was released.

From 2.2.2, language manifests may declare displayName, grammarName, extensions and literal fileNames. New IDs are dynamic; do not extend the legacy enum or file-association tables for them. Published language packages retain their fallback associations. Catalog declarations are taken from verified archives and bound to v2 histories, with installed manifests preceding compatible catalog hints. New declarations require >=2.2.2; ordinary query fixes to legacy packages keep their existing host range. Keep open-document re-detection, missing-plugin routing and offline catalog hints consistent across IDE, local and SFTP previews.

From 2.2.2, a language package may bundle embedded grammars in injections. Verify each parser, highlight query and parent selector by its declared checksum; selectors capture injection.content. The document owns each embedded parser, its cancellation and disposal. Keep original byte coordinates across edits and restrict child highlights to included regions, replacing parent captures there so template captures cannot hide script tokens. Bundled grammars are private to their parent package and do not register separate file associations.

For ACP agent extraction, keep the ACP client, permission decisions and process ownership in the host. Published acp manifests remain supported and normalize into the common helper plan. New helper manifests declare feature acp, protocol acp and version 1. Agents speak ACP stdio directly; do not route their traffic through the ordinary plugin supervisor. Check registry.acp_agents, workspace/acp_plugins.rs, and workspace/acp_workspace.rs for startup gating, launch resolution and cleanup. Hosts through 2.2.1 cannot load this runtime. Preserve existing agent identities and user options when migrating bundled adapters to plugin bindings.

Published Mosh manifests use terminal-transport; new helper manifests declare feature terminal-transport, protocol oxideterm-mosh and version 1. Keep SSH bootstrap, terminal rendering and local prediction in the host; UDP, SSP and encryption belong to the engine plugin. Hosts through 2.2.1 cannot load it. Check oxideterm-mosh and its workspace-owned MoshPluginSessions for launch gating and process retirement before package replacement. Both pipe directions must remain independent under output backpressure. RDP, VNC and Mosh share the remote-connections catalog category.

Coordinate publication

Published remote desktop manifests use remote-desktop; new helper manifests declare feature remote-desktop, protocol oxideterm-remote-desktop and version 1. Both normalize into the common helper plan, outside the ordinary plugin supervisor. Keep the native viewer, input, credentials and SSH tunnel ownership in the host. Require a supported contributes.remoteDesktop.protocolVersion and resolve only trusted, enabled, compatible installed executables. Stop and reap helper processes before updating or removing their files; disable automatic reconnect until a compatible provider is available. Keep the existing binary stdio format unchanged when extracting helpers. Hosts through 2.2.1 cannot load this runtime.

Generic helper manifests require hosts from 2.2.2. Preserve published manifest kinds, capability approval boundaries and protocol payloads when normalizing them. Runtime-plan unification does not transfer child ownership to the plugin supervisor. FIDO declares feature ssh-authentication, protocol oxideterm-security-key and version 1; its authentication task owns cancellation and reaping.

Plugin creation, release records, and compatibility corrections belong in the AnalyseDeCircuit/oxideterm-plugins repository. Locate its actual checkout by repository identity rather than assuming a local directory name. Read its .agents/skills/oxideterm-plugin-release/SKILL.md and use its release scripts. The canonical skill is also available at:

https://github.com/AnalyseDeCircuit/oxideterm-plugins/blob/main/.agents/skills/oxideterm-plugin-release/SKILL.md

Use a local checkout when that skill or its scripts are not published yet. Do not invent an alternative publishing process when the required tooling is missing. Host implementation changes alone do not authorize publishing plugins.

For changed behavior, use the existing registry and plugin-entity tests at the boundary that owns it. Cover the affected risks: compatible-version selection, upgrade/downgrade rejection, correction recovery, or offline startup. Do not rerun unrelated suites merely because a plugin compatibility file changed.

Version History

  • 787e946 Current 2026-10-19 07:32

Same Skill Collection

.agents/skills/oxideterm-node-session-ownership/SKILL.md
.agents/skills/oxideterm-secret-zeroize/SKILL.md
.agents/skills/oxideterm-test-audit/SKILL.md
.agents/skills/split-crate-by-responsibility/SKILL.md
.agents/skills/oxideterm-release/SKILL.md

Metadata

Files
0
Version
787e946
Hash
9f7c8052
Indexed
2026-10-19 07:32

홈 - 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-10-24 03:30
浙ICP备14020137号-1