Skip to content

plugin-container-v2: full-skin plugin container for multi-skill bundles #75

Description

@chitcommit

Work key: chittymarket/plugin-container-v2

Corrected 2026-07-30. The first version of this issue claimed plugins "cannot state that they ship hooks, MCP servers, commands, an output style". That is wrong — the official manifest supports all of those. Corrected problem statement below; the real gap is narrower and different.

What the official format already gives us

.claude-plugin/plugin.json (plugins-reference) already supports:

{
  "name", "displayName", "version", "description",
  "author": { "name", "email", "url" },
  "homepage", "repository", "license", "keywords",
  "skills": "./custom/skills/",
  "commands": ["./custom/commands/special.md"],
  "agents": ["./custom/agents/reviewer.md"],
  "hooks": "./config/hooks.json",
  "mcpServers": "./mcp-config.json",
  "outputStyles": "./styles/",
  "lspServers": "./.lsp.json",
  "experimental": { "themes": "./themes/", "monitors": "./monitors.json" },
  "dependencies": ["helper-lib", { "name": "secrets-vault", "version": "~2.1.0" }]
}

Components auto-discover from skills/, commands/, agents/, hooks/; the manifest is only needed for metadata or custom paths. claude plugin validate ./my-plugin already validates manifest + skill/agent/command frontmatter + hooks/hooks.json.

The actual gap

1. ChittyOS plugins under-use the schema that exists. chittyos-core's entry is name/description/version/source/strict/category/keywords — no dependencies, no hooks, no mcpServers, no author/license/repository. MCP servers ship as separate plugins (chittyos-mcp, neon-mcp) rather than as mcpServers on the plugin that needs them. This is the cheapest, highest-value fix and needs no new spec — just adoption.

2. claude plugin validate is not in CI. Nothing catches a malformed manifest or bad frontmatter before it reaches the marketplace.

3. Multi-runtime projection is genuinely outside the official spec. codex-skills/, openclaw-agents/, chatgpt-apps/ exist in some plugins with no schema declaring which runtimes a plugin targets or which artifact projects where. chittyagent-dispatch does the projecting but has no declared contract to project from. This is the part that actually needs new design.

4. No requires for backend services. A plugin can depend on another plugin (dependencies), but cannot express "requires ChittyConnect broker reachable" or "needs binding X" (by reference, never value). Ecosystem-specific, not covered upstream.

5. No conflicts. Two plugins defining /checkpoint collide silently. Skills are namespaced by plugin (/commit-commands:commit), which mitigates but does not declare intent.

6. statusline is not a plugin component — it is settings-level. The original issue wrongly listed it. themes/monitors exist but only under experimental.

Scope

  1. Adopt the existing schema first. Audit all 16 plugins; populate dependencies, hooks, mcpServers, outputStyles, author, license, repository where artifacts already exist on disk. No new spec required.
  2. Add claude plugin validate to CI across every plugin in plugins/.
  3. Design the ChittyOS extension layer — additive keys the upstream loader ignores:
    • chitty.runtimes: target runtimes + per-artifact projection map, consumed by chittyagent-dispatch
    • chitty.requires: backend services (health/version contract), bindings by reference
    • chitty.conflicts: declared namespace collisions
    • chitty.profile: linkage to profiles.json lens model
  4. Validator for the extension layer: fails closed on undeclared-on-disk, declared-but-missing, cross-plugin collisions, unresolvable requires.
  5. Reference migration: chittyos-core, proving both validators.

Non-goals

  • Do not fork or replace the upstream manifest. Extensions live under a chitty.* namespace so upstream tooling keeps working.
  • Not changing marketplace transport or install flow.
  • No secret values in manifests — requires names a binding; the broker resolves it.

Acceptance criteria

  • All 16 plugins audited; existing-schema fields populated where artifacts exist
  • claude plugin validate green for every plugin, running in CI
  • JSON Schema for the chitty.* extension layer, referenced from CHARTER.md
  • Extension validator fails on each of the four fault classes, with a test per class
  • chittyos-core migrated as reference
  • chittyagent-dispatch projects from chitty.runtimes for ≥2 runtimes without per-plugin branching
  • v1 plugins still install (regression test)
  • Triad docs updated

Notes

Prior art in-repo: chittyagent-dispatch (projection), profiles.json (lens model), capabilities.generated.json (generated inventory). Related: #70.

Marked for development — not started.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions