Skip to content

RFC: Claws#27

Open
giodl73-repo wants to merge 20 commits into
openclaw:mainfrom
giodl73-repo:capability-packs-rfc
Open

RFC: Claws#27
giodl73-repo wants to merge 20 commits into
openclaw:mainfrom
giodl73-repo:capability-packs-rfc

Conversation

@giodl73-repo

@giodl73-repo giodl73-repo commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Defines one Claw package as one complete new OpenClaw agent for one job.
  • Makes claws add create a new agents.list[] entry and workspace; existing agent/workspace collisions fail closed.
  • Uses grouped agent, workspace, packages, mcpServers, and cronJobs ownership boundaries.
  • Keeps skills, plugins, MCP servers, heartbeat, and Gateway cron on their existing OpenClaw owner surfaces.
  • Uses enclosing package.json plus authenticated publishing for package identity, version, and publisher ownership.
  • Excludes models, providers, credentials, channel bindings, agent.skills, and generic connectors from the portable contract.
  • Gates the draft CLI behind OPENCLAW_EXPERIMENTAL_CLAWS=1; when disabled, the command is unregistered and absent from help and completions.

Lifecycle and safety

The lifecycle is add, status, update, remove, and export. Read-only plans precede consented mutation. Unsupported, blocked, drifted, or ambiguous ownership fails closed.

Grouped update rebuilds its plan immediately before mutation, uses each owner's strongest compare-and-swap or convergence boundary, advances root provenance last, and compensates completed owners in reverse order. Uncertain config/Gateway calls and package installs without artifact rollback are reported as partial rather than cross-owner atomic.

Control UI alignment

openclaw/openclaw#103176 remains the Control UI surface for plugin inventory, installation, enablement/disablement, removal, and curated MCP connector discovery. Claws add package references to the shared lifecycle model; removing a Claw releases its reference and does not silently uninstall a shared plugin or skill. A global plugin pinned to another version by a different Claw fails update closed.

Portable MCP declarations remain direct validated mcp.servers configuration and do not create a feed-backed connector identity or replace the Control UI's curated connector shelf.

Implementation stack

The RFC now links the ordered eleven-PR OpenClaw stack:

  1. #101328 grouped schema and add planning
  2. #101755 agent/root install
  3. #101973 managed workspace files
  4. #102228 ClawHub packages and shared uninstall warnings
  5. #102296 status/remove
  6. #102306 export
  7. #102383 Gateway cron ownership
  8. #102406 stdio/remote MCP ownership
  9. #102427 lifecycle diagnostics
  10. #102959 grouped update planning
  11. #102982 consented grouped update apply

Validation

  • git diff --check
  • line-wrapping and rendered Markdown structure scan
  • all linked PR heads, bases, titles, and open state verified live
  • consistency review against Patrick Erichsen's product/schema boundaries and merged Control UI PR #103176

@clawsweeper

clawsweeper Bot commented Jul 3, 2026

Copy link
Copy Markdown

Codex review: needs changes before merge. Reviewed July 10, 2026, 4:13 PM ET / 20:13 UTC.

Summary
The PR adds a draft RFC defining a Claw as a portable complete-agent package with grouped ownership, provenance, and add/status/update/remove/export lifecycle semantics.

Reproducibility: not applicable. This PR proposes new product and package behavior rather than reporting broken existing behavior.

Review metrics: 2 noteworthy metrics.

  • RFC surface: 762 lines added in 1 file. The broad product contract needs the repository's standard organization to remain reviewable.
  • Implementation series: 11 linked open draft PRs. The RFC coordinates a large implementation stack whose permanent contract should be product-approved before adoption.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🦐 gold shrimp
Result: needs maintainer review before merge.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Restore the required top-level Motivation, Proposal, and Rationale sections without expanding scope.
  • [P2] After product approval, create the implementation issue and transition the frontmatter from draft to accepted before merge.

Risk before merge

  • [P1] Accepting the RFC establishes compatibility-sensitive CLI, manifest, provenance, shared-package ownership, and upgrade contracts that require explicit product approval rather than emerging implicitly from the implementation series.

Maintainer options:

  1. Repair, accept, then merge (recommended)
    Restore the required headings and complete the repository's accepted-status transition only after maintainers approve the durable compatibility contract.
  2. Keep the draft open
    Pause merge while the product contract continues to incubate and the linked implementation series supplies more upgrade evidence.

Next step before merge

  • [P2] The immediate blocker is a narrow Markdown structure repair that automation can perform; the subsequent RFC acceptance and status transition remain human-owned.

Maintainer decision needed

  • Question: After the required document structure is restored, should OpenClaw adopt the revised one-Claw-one-new-agent package and lifecycle contract?
  • Rationale: The proposal creates durable CLI, manifest, ownership, provenance, and upgrade surfaces; document correctness cannot determine whether those should become supported OpenClaw product contracts.
  • Likely owner: Patrick-Erichsen — They supplied the concrete product-model revision adopted by the current proposal and are the strongest visible discussion-based owner for the contract decision.
  • Options:
    • Accept after structure repair (recommended): Approve the revised contract, create the implementation issue, and transition the RFC to accepted before merge.
    • Narrow before acceptance: Accept a smaller initial package lifecycle and defer selected update, export, MCP, cron, or shared-package semantics.
    • Continue incubation: Keep the RFC in draft while implementation experience resolves remaining compatibility choices.

Security
Cleared: The Markdown-only patch adds no executable code, dependency source, workflow permission, secret handling, or supply-chain change.

Review findings

  • [P2] Restore the required RFC review structure — rfcs/0016-claws.md:37
Review details

Best possible solution:

Restore the standard RFC review sections without changing semantics, then have maintainers accept, narrow, or continue incubating the durable Claw package contract before changing the draft status and merging.

Do we have a high-confidence way to reproduce the issue?

Not applicable: this PR proposes new product and package behavior rather than reporting broken existing behavior.

Is this the best way to solve the issue?

No, not yet: the revised agent-centric model is coherent and responsive to review, but the document still needs the required RFC structure and the permanent compatibility contract needs explicit maintainer acceptance.

Full review comments:

  • [P2] Restore the required RFC review structure — rfcs/0016-claws.md:37
    Please organize the existing material under the repository-required top-level Motivation, Proposal, and Rationale sections. The current head still jumps from Summary to Product model and distributes normative and tradeoff material across custom headings, so reviewers cannot use the standard RFC shape; this is the same unresolved finding from the prior review cycle.
    Confidence: 0.99

Overall correctness: patch is incorrect
Overall confidence: 0.97

AGENTS.md: not found in the target repository.

Codex review notes: model internal, reasoning high; reviewed against a8e0ba2701d6.

Label changes

Label justifications:

  • P3: This is a speculative draft product RFC without a current user regression or urgent runtime impact.
  • merge-risk: 🚨 compatibility: Merging as an accepted design would endorse durable CLI, manifest, ownership, provenance, and upgrade behavior that future implementations and users may rely on.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (linked_artifact): For this RFC artifact, the PR provides rendered-Markdown validation, live verification of its linked implementation references, and an existing proof-sufficient review signal.
  • proof: sufficient: Contributor real behavior proof is sufficient. For this RFC artifact, the PR provides rendered-Markdown validation, live verification of its linked implementation references, and an existing proof-sufficient review signal.
Evidence reviewed

Acceptance criteria:

  • [P1] git diff --check.
  • [P1] rg -n '^## (Summary|Motivation|Goals|Non-[Gg]oals|Proposal|Rationale|Unresolved [Qq]uestions)$' rfcs/0016-claws.md.

What I checked:

  • Required RFC sections: The repository requires Summary, Motivation, Goals, Non-Goals, Proposal, Rationale, and Unresolved questions as the expected top-level review structure. (README.md:113, a8e0ba2701d6)
  • Current-head structure: The proposed RFC proceeds from Summary to Product model and has no top-level Motivation, Proposal, or Rationale headings. (rfcs/0016-claws.md:37, 845df5c1fca7)
  • Prior finding remains: The latest commit adds implementation-stack documentation but does not restore the top-level RFC structure reported in the previous review cycle. (rfcs/0016-claws.md:678, 845df5c1fca7)
  • RFC acceptance lifecycle: The repository says a draft RFC remains unmerged until acceptance, creation of an implementation issue, and a frontmatter transition to accepted status. (README.md:80, a8e0ba2701d6)
  • Responsive product revision: Patrick-Erichsen requested an agent-centric product and schema model, and the contributor revised the RFC around that feedback in commit 5829ce3. (rfcs/0016-claws.md:22, 5829ce30c152)
  • RFC process provenance: The current template and expected structure were introduced by kevinlin-openai, including the Motivation addition and later lifecycle documentation. (rfcs/0000-template.md:26, bbb4058da234)

Likely related people:

  • kevinlin-openai: Introduced the RFC template, required proposal structure, and repository acceptance lifecycle used to review this document. (role: RFC process author; confidence: high; commits: f4fdf38f4717, bbb4058da234, e366ea9825a4; files: README.md, rfcs/0000-template.md)
  • Patrick-Erichsen: Provided the detailed agent-centric product and schema revision now reflected in the current RFC. (role: product-model reviewer; confidence: medium; files: rfcs/0016-claws.md)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.
Review history (38 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-09T14:40:09.624Z sha 6365389 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T14:46:09.024Z sha 6365389 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T14:52:22.989Z sha 6365389 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T17:10:00.693Z sha 347b05a :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T17:19:15.609Z sha 347b05a :: needs maintainer review before merge. :: none
  • reviewed 2026-07-10T09:45:05.142Z sha 5829ce3 :: needs changes before merge. :: [P2] Restore the required RFC review structure
  • reviewed 2026-07-10T16:19:26.126Z sha fcc497d :: needs changes before merge. :: [P2] Restore the required RFC review structure
  • reviewed 2026-07-10T20:04:41.807Z sha 845df5c :: needs changes before merge. :: [P2] Restore the required RFC review structure

@giodl73-repo giodl73-repo force-pushed the capability-packs-rfc branch from 82394de to 97e4220 Compare July 3, 2026 15:41
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jul 3, 2026
@giodl73-repo giodl73-repo force-pushed the capability-packs-rfc branch 3 times, most recently from 9238395 to c063c27 Compare July 3, 2026 16:25
@giodl73-repo giodl73-repo changed the title RFC: Capability Packs RFC: OpenClaw Packs Jul 3, 2026
@giodl73-repo giodl73-repo force-pushed the capability-packs-rfc branch from c063c27 to e145b5d Compare July 6, 2026 20:53
@giodl73-repo giodl73-repo changed the title RFC: OpenClaw Packs RFC: Claws Jul 7, 2026
@giodl73-repo giodl73-repo force-pushed the capability-packs-rfc branch 3 times, most recently from 06c548e to 16fb475 Compare July 7, 2026 01:08
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. and removed merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jul 7, 2026
@giodl73-repo giodl73-repo force-pushed the capability-packs-rfc branch 2 times, most recently from 8741ab7 to 5506bba Compare July 7, 2026 01:29
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jul 7, 2026
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

RFC refreshed to make skills, MCP servers, connectors, and doctor diagnostics the remaining first-series completion track. Update lifecycle and automations stay as later tracks.

@clawsweeper

clawsweeper Bot commented Jul 9, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 9, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 9, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 9, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@Patrick-Erichsen

Copy link
Copy Markdown
Contributor

I would like to request a product-model and schema revision before accepting this RFC.

Mental model: a Claw is an employee you add

The current RFC treats a Claw primarily as a starter setup that is applied to a workspace. I think the clearer product model is:

A Claw represents one complete agent that a user is adding to OpenClaw for a particular job.

Adding a Claw should therefore always:

  1. Create one new agents.list[] entry.
  2. Create a new workspace for that agent.
  3. Install that agent's workspace skills and files.
  4. Add any declared plugin or MCP dependencies.
  5. Create cron jobs pinned to the new agent id.
  6. Record provenance so the complete installed Claw can be inspected, updated, exported, and removed.

It should never silently target, merge into, or update an existing agent. The local agent id should default from agent.id; collisions should fail unless the user explicitly supplies a different id.

For the CLI, I suggest renaming claws apply to claws add:

openclaw claws add @acme/github-triage --dry-run
openclaw claws add @acme/github-triage

add accurately communicates that this creates a new thing. apply sounds like a mutation of an existing target, while install is already used for downloading individual skill and plugin artifacts inside the operation. The lifecycle then reads naturally as add, status, update, remove, and export.

Proposed schema changes

  • Replace the public flat entries[] list with grouped fields: agent, packages, workspace, mcpServers, and cronJobs.
  • The implementation can still normalize those fields into flat lifecycle/provenance records internally. Stable addresses can be derived from package refs, file paths, MCP server names, and cron job ids.
  • Remove required. Every declared component is part of the complete Claw; if it cannot be applied, dry-run reports the blocker and add fails.
  • Remove connector. OpenClaw has channels and channel plugins, not a first-class connector installation/config concept.
  • Limit packages to actual installable skill and plugin packages.
  • Keep MCP server declarations under mcpServers, mapping to OpenClaw's top-level mcp.servers config.
  • Keep exact scheduled work under cronJobs; these become Gateway cron records rather than openclaw.json fields.
  • Distinguish canonical workspace bootstrap files from ordinary supporting files.
  • Do not allow agent.skills. Skills installed into this agent's workspace are already discovered naturally; setting agents.list[].skills would replace inherited allowlists and could unintentionally hide other skills.
  • Do not include model, provider, thinking-level, authentication, or runtime-specific settings. Those remain operator-controlled defaults inherited by the new agent.
  • Allow portable job-specific agent settings such as identity, description, mention patterns, sandbox boundaries, tool policy, heartbeat, and human delay.
  • Do not embed channel account ids, group ids, credentials, or bindings. The user can bind the new agent to Discord, Slack, WhatsApp, or another channel locally.

Package identity should follow the ClawHub plugin precedent

Current ClawHub plugins do not embed a publisher or registry slug in openclaw.plugin.json. Package identity and version come from package.json; publisher ownership comes from the authenticated ClawHub publish operation. A Claw should use the same model rather than duplicating publisher, slug, version, top-level name, or top-level description inside the Claw manifest.

Illustrative package metadata:

{
  "name": "@acme/github-triage",
  "version": "1.2.0",
  "type": "module",
  "openclaw": {
    "claw": "./openclaw.claw.json"
  }
}

Proposed kitchen-sink Claw

This is illustrative syntax, but it shows the ownership boundaries I am proposing:

{
  "schemaVersion": 1,
  "agent": {
    "id": "github-triage",
    "name": "GitHub Triage",
    "description": "Reviews incoming GitHub issues and prepares a daily triage summary.",
    "identity": {
      "name": "Triage",
      "emoji": "🔎"
    },
    "groupChat": {
      "mentionPatterns": [
        "@triage",
        "@github-triage"
      ]
    },
    "sandbox": {
      "mode": "all",
      "scope": "agent",
      "workspaceAccess": "rw"
    },
    "tools": {
      "allow": [
        "read",
        "write",
        "edit",
        "web_fetch",
        "memory_search",
        "memory_get",
        "github-triage-github__*"
      ],
      "deny": [
        "exec",
        "browser",
        "nodes"
      ]
    },
    "heartbeat": {
      "every": "30m",
      "activeHours": {
        "start": "08:00",
        "end": "18:00"
      },
      "lightContext": true,
      "isolatedSession": true,
      "skipWhenBusy": true,
      "timeoutSeconds": 120
    },
    "humanDelay": {
      "mode": "natural"
    }
  },
  "workspace": {
    "bootstrapFiles": {
      "AGENTS.md": {
        "source": "workspace/AGENTS.md"
      },
      "SOUL.md": {
        "source": "workspace/SOUL.md"
      },
      "IDENTITY.md": {
        "source": "workspace/IDENTITY.md"
      },
      "TOOLS.md": {
        "source": "workspace/TOOLS.md"
      },
      "HEARTBEAT.md": {
        "source": "workspace/HEARTBEAT.md"
      }
    },
    "files": [
      {
        "source": "workspace/reference/triage-policy.md",
        "path": "reference/triage-policy.md"
      },
      {
        "source": "workspace/templates/issue-response.md",
        "path": "templates/issue-response.md"
      }
    ]
  },
  "packages": [
    {
      "kind": "skill",
      "source": "clawhub",
      "ref": "@acme/issue-triage-playbook",
      "version": "1.4.0"
    },
    {
      "kind": "plugin",
      "source": "clawhub",
      "ref": "@acme/github-actions",
      "version": "2.1.0"
    }
  ],
  "mcpServers": {
    "github-triage-github": {
      "command": "npx",
      "args": [
        "-y",
        "@acme/github-mcp"
      ],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      },
      "toolFilter": {
        "include": [
          "issues_list",
          "issues_get",
          "issues_comment",
          "pull_requests_list"
        ],
        "exclude": [
          "repository_delete",
          "repository_admin_*"
        ]
      },
      "timeout": 30,
      "connectTimeout": 10
    }
  },
  "cronJobs": [
    {
      "id": "weekday-triage",
      "name": "Weekday GitHub triage",
      "schedule": {
        "cron": "0 9 * * 1-5",
        "timezone": "America/New_York"
      },
      "session": "isolated",
      "message": "Review new GitHub issues according to reference/triage-policy.md and prepare a concise triage summary.",
      "delivery": {
        "mode": "announce",
        "channel": "last"
      }
    }
  ]
}

agent.heartbeat controls when and how this agent wakes. workspace.bootstrapFiles["HEARTBEAT.md"] contains what it checks. cronJobs are separate exact schedules. Those are distinct existing OpenClaw concepts and should remain visibly distinct in the Claw format.

Resulting OpenClaw config

Assuming the local agent id remains github-triage, adding the Claw would append an entry like this while preserving the operator's existing defaults and agents:

{
  "agents": {
    "defaults": {},
    "list": [
      {
        "id": "main",
        "default": true
      },
      {
        "id": "github-triage",
        "name": "GitHub Triage",
        "description": "Reviews incoming GitHub issues and prepares a daily triage summary.",
        "workspace": "~/.openclaw/workspace-github-triage",
        "identity": {
          "name": "Triage",
          "emoji": "🔎"
        },
        "groupChat": {
          "mentionPatterns": [
            "@triage",
            "@github-triage"
          ]
        },
        "sandbox": {
          "mode": "all",
          "scope": "agent",
          "workspaceAccess": "rw"
        },
        "tools": {
          "allow": [
            "read",
            "write",
            "edit",
            "web_fetch",
            "memory_search",
            "memory_get",
            "github-triage-github__*"
          ],
          "deny": [
            "exec",
            "browser",
            "nodes"
          ]
        },
        "heartbeat": {
          "every": "30m",
          "activeHours": {
            "start": "08:00",
            "end": "18:00"
          },
          "lightContext": true,
          "isolatedSession": true,
          "skipWhenBusy": true,
          "timeoutSeconds": 120
        },
        "humanDelay": {
          "mode": "natural"
        }
      }
    ]
  },
  "plugins": {
    "entries": {
      "github-actions": {
        "enabled": true
      }
    }
  },
  "mcp": {
    "servers": {
      "github-triage-github": {
        "command": "npx",
        "args": [
          "-y",
          "@acme/github-mcp"
        ],
        "env": {
          "GITHUB_TOKEN": "${GITHUB_TOKEN}"
        },
        "toolFilter": {
          "include": [
            "issues_list",
            "issues_get",
            "issues_comment",
            "pull_requests_list"
          ],
          "exclude": [
            "repository_delete",
            "repository_admin_*"
          ]
        },
        "timeout": 30,
        "connectTimeout": 10
      }
    }
  }
}

The skill would be installed under ~/.openclaw/workspace-github-triage/skills/. The canonical and supporting files would be written into that workspace. The cron job would be stored separately in the Gateway scheduler and pinned to agentId: "github-triage"; cron jobs are not stored inside openclaw.json.

This gives the feature one simple invariant: one Claw package adds one complete new agent for one job, without replacing the user's operator defaults or modifying an agent they already built.

@giodl73-repo

Copy link
Copy Markdown
Contributor Author

Addressed in 5829ce3.

The RFC now uses the invariant one Claw package adds one complete new agent for one job. It specifies:

  • claws add rather than apply;
  • one new agents.list[] entry and one new workspace, with collisions failing unless an explicit unused local id/path is supplied;
  • grouped agent, workspace, packages, mcpServers, and cronJobs fields;
  • no public flat entries[], optional required components, or connector kind;
  • package identity/version from the enclosing package.json and authenticated publish operation;
  • workspace skills without setting agent.skills, existing plugin installers, top-level MCP config, portable heartbeat, and Gateway cron pinned to the final local agent id;
  • explicit exclusion of model/provider/auth/runtime settings, credentials, account/group ids, and channel bindings;
  • agent-centric provenance, status, update, remove, and export;
  • a concrete resulting OpenClaw config example plus rollout and acceptance criteria.

I also added an incubation boundary for internal iteration: while the RFC is draft, the entire CLI is gated by OPENCLAW_EXPERIMENTAL_CLAWS=1. Without it, claws is not registered and is absent from help/completions. Removing that gate requires a separate acceptance and compatibility decision.

The existing implementation PRs are now described as prototype evidence that must be rewritten/restacked around this model, not as the public contract.

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. labels Jul 10, 2026
@giodl73-repo giodl73-repo force-pushed the capability-packs-rfc branch from fcc497d to 845df5c Compare July 10, 2026 19:55

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 10, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

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

Labels

feature: ✨ showcase ClawSweeper spotlight: unusually compelling feature idea for maintainer attention. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants