feat(publish): ship capabilities to chatbot hosts (Claude .mcpb first) - #36
Merged
Conversation
Add the PUBLISH axis (D17) beside COMPLETE/REALIZE: package a capability (module:function refs, live callables, or a skill's coact:mcp block) as a deployable chatbot integration. - integration.py: target-neutral IntegrationSpec + integration_spec_from ingress - publish.py: open-closed publish-target Registry + dispatcher + PublishResult - publish_mcpb.py: claude-local-mcpb target builds a Claude Desktop .mcpb Desktop Extension (a local stdio MCP server, built by py2mcp); pure-stdlib build path - util.safe_filename: generalized CWE-22 path guard (agent_filename delegates) - CLI: coact publish; coact[mcpb] extra; skill .claude/skills/coact-publish - docs: misc/docs/CHATBOT_INTEGRATION_LANDSCAPE.md (research) + DECISIONS D17 Claude is one target on an open-closed registry; remote connectors, Claude Code plugins, ChatGPT Apps, and Gemini are planned targets. Hardened per adversarial review (bound-method/unrecognized-source rejection, duplicate-tool warning). Tests + doctests green; ruff clean.
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
Adds the PUBLISH axis (DECISIONS D17) beside COMPLETE/REALIZE: package a
capability (
module:functionrefs, live callables, or a skill'scoact: mcp:block) as a deployable chatbot integration. First target:
claude-local-mcpb→a Claude Desktop
.mcpbDesktop Extension (a local stdio MCP server, built bypy2mcp).What's included
coact/integration.py— target-neutralIntegrationSpec+integration_spec_fromcoact/publish.py— open-closed publish-target Registry +publish()+PublishResultcoact/publish_mcpb.py— theclaude-local-mcpbtarget (pure-stdlib build path)util.safe_filename— generalized CWE-22 path guard (agent_filenamedelegates)coact publish;coact[mcpb]extra; skill.claude/skills/coact-publishmisc/docs/CHATBOT_INTEGRATION_LANDSCAPE.md(research) + DECISIONS D17Design
Claude is one target on an open-closed registry — remote connectors, Claude
Code plugins, ChatGPT Apps, and Gemini are planned targets added without editing
the orchestrator. coact owns the spec + packaging; MCP-server construction is
delegated to
py2mcp(mirrors the existingmcprealize backend). The runtimestdio runner ships in py2mcp (
claude/stdio-serve).Tests
367 passed, 4 skipped; 12 doctests; ruff clean. Hardened per an adversarial
review pass: bound-method & unrecognized-source rejection, duplicate-tool-name
warnings, clean error on a missing bundled config.