calm-artist-7206
08/06/2026, 6:03 PMlimited-student-10747
08/06/2026, 6:04 PMlimited-student-10747
08/06/2026, 6:04 PMcalm-artist-7206
08/06/2026, 6:04 PMmy-plugin/
├── plugin.json
├── skills/
│ └── summarize/
│ ├── SKILL.md
│ ├── scripts/
│ └── references/
├── mcp.json
└── com.example.client/
└── hooks/limited-student-10747
08/06/2026, 6:06 PMlimited-student-10747
08/06/2026, 6:06 PMfresh-machine-37269
08/06/2026, 6:06 PMfresh-machine-37269
08/06/2026, 6:10 PM.claude-plugin/plugin.json to root plugin.json with the closed Agent Plugins schema + $schema selection, fatal/non-fatal violation split, and backward-compat detection precedence.
• MCP: read mcp.json (not .mcp.json), support `stdio`/`streamable-http`/`sse`, implement `${PLUGIN_ROOT}`/`${PLUGIN_DATA}` variable expansion + persisted PLUGIN_DATA, and remote URL/header safety.
• Path containment & security: enforce that all package paths stay inside the plugin root, with the spec's narrow failure boundaries.
• Client extensions: claim a reverse-domain namespace (e.g., io.openhands) to carry our commands/agents/hooks/`entry_command` outside the portable core.
• Skills: already aligned, just tighten validation.
• Discovery/install/UX: client-owned — spec how it composes with our existing loader, marketplace, and security model.
It includes a deliverables checklist, open questions (incl. the CC backward-compat window you flagged), and links to the spec, schemas, conformance checklist, and example plugin. I labeled it plugin-system, mcp, enhancement, and Needs Design.limited-student-10747
08/06/2026, 6:13 PMfresh-machine-37269
08/06/2026, 6:14 PMopenhands.sdk.plugin) lives in the SDK repo. I've reopened it there:
**github.com/OpenHands/software-agent-sdk/issues/4405**
I also closed the one I'd created on OpenHands/OpenHands (#16368) with a comment pointing to the new location so nothing's orphaned. Same spec content, relabeled with the SDK repo's tags (plugins, mcp, skills, enhancement, Needs Design).calm-artist-7206
08/06/2026, 6:17 PMfresh-machine-37269
08/06/2026, 6:18 PMopenhands-ai Slack automation:
• Active LLM profile: glm
• Model: openhands/glm-5.2 (API key auth)
• Reasoning effort: high, with encrypted reasoning enabled and a 200k extended thinking budget
• Agent: CodeActAgent
• Other profiles available (not active): gpt-5.5 (openai/gpt-5.5) and gpt-5.6-sol (OpenAI subscription, gpt-5.6-sol)
So Slack automation in openhands-ai is currently running on the glm profile → openhands/glm-5.2. The active profile id is ff4c8b19-4cdd-46d4-9c40-3195db382eb1.calm-artist-7206
08/06/2026, 6:19 PMlimited-student-10747
08/06/2026, 6:19 PMcalm-artist-7206
08/06/2026, 6:20 PMcalm-artist-7206
08/06/2026, 6:20 PMfresh-machine-37269
08/06/2026, 6:20 PMskills/slack-channel-monitor/scripts/main.py (in the OpenHands/extensions repo):
Your response will be displayed in Slack, so format the links appropriately for Slack.
The change is applied locally and will take effect on the next triggered message. Note it's currently only a local edit — say the word and I'll commit/push it to the extensions repo so it's picked up everywhere.limited-student-10747
08/06/2026, 6:21 PMcalm-artist-7206
08/06/2026, 6:23 PMfresh-machine-37269
08/06/2026, 6:24 PMchore(slack-prompt-link-formatting → main — one-line change adding the "format links for Slack" reminder to the end of the Slack automation initial prompt in skills/slack-channel-monitor/scripts/main.py.limited-student-10747
08/06/2026, 6:24 PMcalm-artist-7206
08/06/2026, 6:24 PMcalm-artist-7206
08/06/2026, 6:25 PMlimited-student-10747
08/06/2026, 6:30 PMlimited-student-10747
08/06/2026, 6:30 PMcalm-artist-7206
08/06/2026, 6:48 PMmodern-fireman-99755
08/06/2026, 8:05 PMcalm-artist-7206
08/06/2026, 8:17 PM.git/, I think that shouldn’t normally lead to a leak?modern-fireman-99755
08/06/2026, 9:01 PMmodern-fireman-99755
08/06/2026, 9:01 PMcalm-artist-7206
08/06/2026, 9:09 PMcalm-artist-7206
08/06/2026, 9:15 PMmodern-fireman-99755
08/07/2026, 8:15 AMon the other hand,… If I tell my agent a token, and to save it in keyring, I’d kinda like that to work? or that a terrible idea?But then this will be an user msg and we can leave this secret unmasked. Because we know you wanted to share it
calm-artist-7206
08/07/2026, 8:36 AMmodern-fireman-99755
08/07/2026, 8:38 AMcurved-angle-80449
08/07/2026, 10:57 PMPluginFormat is now a base class with one implementation, ClaudeCodePluginFormat. The base owns everything format-agnostic (skills discovery + assembling the normalized Plugin), and detect_format() picks the strategy for a given plugin directory. Adding a new format is fill-in-the-blank and never touches the merge/apply path or any call site.
If the direction seems reasonable, appreciate a review on the PR. See this comment on the original issue for more on next steps.curved-angle-80449
08/10/2026, 12:53 PMcalm-artist-7206
08/10/2026, 1:24 PMlimited-student-10747
08/10/2026, 1:47 PMcurved-angle-80449
08/10/2026, 2:17 PMlimited-student-10747
08/10/2026, 2:25 PMmodern-fireman-99755
08/10/2026, 2:45 PMmodern-fireman-99755
08/10/2026, 3:23 PMsse (deprecated) in addition to stdio + streamable-http?
• Exact reverse-domain namespace to claim (io.openhands vs dev.openhands vs com.openhands)?
• How long is the Claude Code backward-compat window, and do we eventually deprecate .claude-plugin/ / .mcp.json?
• Should Agent Plugins be loaded ambiently (like `.skills`/project plugins) or require explicit opt-in given the path-containment + subprocess implications?
• Where does PLUGIN_DATA live on disk and what owns its lifecycle (creation, persistence across updates, cleanup on uninstall)? Analogous to ~/.openhands/plugins/installed/, but nothing today defines this. Blocks Agent Plugins: mcp.json loader + PLUGIN_ROOT/PLUGIN_DATA expansion #4451.
• MCPServer.headers is typed dict[str, SecretStr] (mcp/config.py:512), but Agent Plugins headers must be literal, visible, non-secret package data. Needs a load path that doesn't misrepresent plugin-declared headers as secrets. Blocks Agent Plugins: mcp.json loader + PLUGIN_ROOT/PLUGIN_DATA expansion #4451.
---
After that we can submit a request to agent-plugins.org/compatible-clients to be listed therecalm-artist-7206
08/10/2026, 3:26 PMdev.openhands, any reason not to?calm-artist-7206
08/10/2026, 3:33 PMcurved-angle-80449
08/10/2026, 3:55 PMcurved-angle-80449
08/10/2026, 3:58 PMmodern-fireman-99755
08/10/2026, 4:03 PM