Skip to content

Commit 13cab68

Browse files
authored
Merge pull request #5 from Clawdi-AI/chore/remove-builtin-clawdi-plugin
chore(store): remove built-in Clawdi plugin listing
2 parents 33e7cb2 + 5640ed4 commit 13cab68

11 files changed

Lines changed: 62 additions & 395 deletions

File tree

v2/README.md

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
This is the independent Store root for Agent Plugins 1.0.0 packages. It does
44
not change or share validation with the legacy `agents/` and `skills/` Stores.
5+
Clawdi's first-party Skill and MCP capabilities are built into its Cloud/runtime
6+
projection, not distributed as an installable Agent Plugin, and therefore do
7+
not appear in this Store catalog.
58

69
## Package layout
710

@@ -68,9 +71,9 @@ Store validation accepts all three standard transports independently of a
6871
runtime's connection capabilities. `compatibility.runtimes` names intended
6972
install targets; it is not a transport capability matrix or proof that every
7073
component can run there. Installers and runtimes must gate unsupported
71-
`streamable-http`, legacy `sse`, and secret-binding behavior without treating
72-
the portable package as invalid. In particular, this Store contract does not
73-
claim Hermes support for `sse` or `configuration.secretSlots`.
74+
`streamable-http` and legacy `sse` behavior without treating the portable
75+
package as invalid. In particular, this Store contract does not claim Hermes
76+
support for `sse`.
7477

7578
## Clawdi extension
7679

@@ -80,20 +83,16 @@ claim Hermes support for `sse` or `configuration.secretSlots`.
8083
- `display` requires `name`, `category`, and `languages`; `icon` is an optional
8184
in-package `./` file. The Store requires the standard top-level `keywords`
8285
field for search and discovery instead of duplicating tags in the extension.
83-
- `configuration.secretSlots` maps slot IDs to `label`, `description`,
84-
`required`, and one or more MCP bindings. Bindings target an existing stdio
85-
environment key or remote header and may add a bounded, non-secret header
86-
prefix.
8786
- `compatibility` may list only `openclaw` and `hermes` runtimes and bare
8887
`executables`. If either list is present, it must not be empty.
8988

9089
Secret values, trust or review state, featured ranking, install counts,
91-
arbitrary settings, install hooks, OAuth registration, and dependency
92-
installers are not author-controlled extension data. Literal credential-bearing
93-
MCP environment or header values are rejected; declare credentials as secret
94-
slots only for targets that implement this Clawdi extension. Agent Plugins
95-
1.0.0 defines no portable `secretRefs` field; authentication can instead remain
96-
entirely client-managed.
90+
arbitrary settings, configuration, install hooks, OAuth registration, and
91+
dependency installers are not author-controlled extension data. Values
92+
committed in standard MCP `env` or `headers` fields must be public and
93+
non-secret. For protected remote MCP servers, standard MCP Authorization is
94+
performed by the MCP client and managed by its host/runtime, not declared as
95+
Store package authentication metadata.
9796

9897
## Generated Store index
9998

@@ -111,26 +110,27 @@ declared `runtimes`; `path` and optional `icon`; the `sha256-tree-v1` `digest`;
111110
`hasConfiguration`; and a closed `components` summary. `components.skills`
112111
contains exact Skill names, while `components.mcpServers` maps exact server
113112
names to declared `stdio`, `streamable-http`, or `sse` transports. It contains
114-
no Skill bodies or descriptions and no MCP URLs, headers, commands, or config
115-
bindings. Catalog-facing human strings and array items cannot contain ASCII
116-
control characters or DEL.
113+
no Skill bodies or descriptions and no MCP URLs, headers, commands, or
114+
configuration data. Catalog-facing human strings and array items cannot
115+
contain ASCII control characters or DEL.
117116

118-
`hasConfiguration` is derived only from the presence of
119-
`extensions["ai.clawdi"].configuration`; it never copies secret slot bindings
120-
or values. The current Clawdi native adapter must not offer entries with
121-
`hasConfiguration: true` until it supports that object.
117+
`hasConfiguration` is retained for catalog schema compatibility and is always
118+
`false`. Packages cannot declare `extensions["ai.clawdi"].configuration`.
122119

123120
The index contains no Git commit. `path` is resolved relative to the directory
124-
containing `v2/catalog.json`, so `./plugins/clawdi` selects
125-
`v2/plugins/clawdi` in the same snapshot. A consumer resolves an external Store
126-
commit, verifies `digest`, and binds the install to that commit plus digest. The
127-
index exposes one current published version per plugin; it is not a
128-
multi-version registry. Existing installs remain pinned to their original
129-
commit and digest after a newer version replaces the listing.
121+
containing `v2/catalog.json`, so `./plugins/example-plugin` selects
122+
`v2/plugins/example-plugin` in the same snapshot. A consumer resolves an
123+
external Store commit, verifies `digest`, and binds the install to that commit
124+
plus digest. The index exposes one current published version per plugin; it is
125+
not a multi-version registry. Existing installs remain pinned to their original
126+
commit and digest after a newer version replaces or removes the listing; the
127+
package bytes remain fetchable from that historical commit.
130128

131129
CI rejects generated-file drift. Its separate baseline check also rejects a
132130
version regression or a changed digest for a `name` and `version` already
133-
present in the baseline catalog; changed package bytes require a newer version.
131+
present in both catalogs; changed package bytes require a newer version. A
132+
removed listing is intentionally absent from that comparison because it does
133+
not change the package identity at its historical commit.
134134

135135
## Validation and digest
136136

@@ -182,4 +182,5 @@ explicitly Clawdi-owned.
182182
- [MCP schema 1.0.0](https://agent-plugins.org/schemas/1.0.0/mcp.schema.json)
183183
- [Loading and discovery](https://agent-plugins.org/client-implementers/loading-and-discovery.md)
184184
- [MCP runtime](https://agent-plugins.org/client-implementers/mcp-runtime.md)
185+
- [MCP Authorization](https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization)
185186
- [Agent Skills specification](https://agentskills.io/specification.md)

v2/SECURITY.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
Never commit credentials, private keys, cookies, session data, populated local
44
profiles, or generated databases and logs. Secret values belong in
55
client-managed storage, not `plugin.json`, `mcp.json`, Skill content, or package
6-
assets. Targets that implement the Clawdi extension may inject them through
7-
`extensions["ai.clawdi"].configuration.secretSlots`; the extension is not a
8-
portable Agent Plugins credential-reference mechanism.
6+
assets. Values committed in standard MCP `env` and `headers` fields must be
7+
public and non-secret. Protected remote MCP authorization is performed by the
8+
MCP client and managed by its host/runtime.
99

1010
Review bundled executables and dependencies before publishing. Plugin packages
1111
cannot declare installers, install hooks, OAuth registration, trust state, or

v2/catalog.json

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,4 @@
11
{
2-
"plugins": [
3-
{
4-
"category": "productivity",
5-
"components": {
6-
"mcpServers": {
7-
"clawdi": "streamable-http"
8-
},
9-
"skills": [
10-
"clawdi"
11-
]
12-
},
13-
"description": "Clawdi Cloud memory, session, project, Vault metadata, and connected-service tools.",
14-
"digest": "sha256-tree-v1:6a9c13c187de7f8a2b9e59e3a9e1ef25b39e07ad6687f92d2d6dcaf2c12a27d3",
15-
"displayName": "Clawdi",
16-
"hasConfiguration": false,
17-
"keywords": [
18-
"clawdi",
19-
"memory",
20-
"sessions",
21-
"connectors"
22-
],
23-
"languages": [
24-
"en"
25-
],
26-
"name": "clawdi",
27-
"path": "./plugins/clawdi",
28-
"publisher": "Clawdi",
29-
"runtimes": [
30-
"openclaw",
31-
"hermes"
32-
],
33-
"version": "1.0.0"
34-
}
35-
],
2+
"plugins": [],
363
"schemaVersion": 1
374
}

v2/plugins/README.md

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,8 @@
33
Each immediate child directory is an Agent Plugins 1.0.0 package. The v2 Store
44
validator ignores this README and treats every other entry as a plugin package.
55

6-
`clawdi@1.0.0` is the first-party Clawdi package. Its package, Skill, MCP server,
7-
and `X-Clawdi-Agent-Plugin` marker use the canonical name `clawdi`. The package
8-
contains no credential configuration; Hosted
9-
authentication is applied through the existing explicit egress profile
10-
contract. Its canonical package identity is
11-
`sha256-tree-v1:6a9c13c187de7f8a2b9e59e3a9e1ef25b39e07ad6687f92d2d6dcaf2c12a27d3`.
12-
13-
Hosted activation must reference an exact commit in the public
14-
`https://github.com/Clawdi-AI/store` repository containing these bytes. A
15-
private review commit or mutable ref is not a deployable source identity.
16-
The generated Store index intentionally omits that commit; consumers bind it
17-
from the externally resolved snapshot.
6+
Clawdi's first-party Skill and MCP capabilities are built into its Cloud/runtime
7+
projection and are not installable Agent Plugin packages. Protected remote MCP
8+
servers use standard MCP Authorization through the MCP client; authorization
9+
and credentials are managed by the host/runtime rather than portable Store
10+
package metadata.

v2/plugins/clawdi/mcp.json

Lines changed: 0 additions & 12 deletions
This file was deleted.

v2/plugins/clawdi/plugin.json

Lines changed: 0 additions & 36 deletions
This file was deleted.

v2/plugins/clawdi/skills/clawdi/SKILL.md

Lines changed: 0 additions & 95 deletions
This file was deleted.

v2/scripts/catalog.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def _catalog_entry(report: PluginReport) -> dict[str, Any]:
9696
"keywords": list(manifest["keywords"]),
9797
"languages": list(display["languages"]),
9898
"runtimes": list(compatibility.get("runtimes", [])),
99-
"hasConfiguration": "configuration" in extension,
99+
"hasConfiguration": False,
100100
"path": f"./plugins/{report.key}",
101101
"digest": f"{DIGEST_PREFIX}{report.digest}",
102102
"components": {
@@ -268,8 +268,8 @@ def validate_catalog(catalog: Any) -> list[str]:
268268
f"{context}.runtimes contains unsupported values: "
269269
+ ", ".join(sorted(unknown_runtimes))
270270
)
271-
if type(entry.get("hasConfiguration")) is not bool:
272-
errors.append(f"{context}.hasConfiguration must be a boolean")
271+
if entry.get("hasConfiguration") is not False:
272+
errors.append(f"{context}.hasConfiguration must equal false")
273273
components = entry.get("components")
274274
if not isinstance(components, dict):
275275
errors.append(f"{context}.components must be an object")

0 commit comments

Comments
 (0)