From 9f51c95c2e7339a6617b6dd2dcd0878bb8ba689f Mon Sep 17 00:00:00 2001 From: Ryan Ghods Date: Thu, 30 Apr 2026 12:01:33 -0700 Subject: [PATCH] chore: align manifest with canonical Pinata schema MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cross-referenced PinataCloud/agent-templates. Two corrections: - Drop the template.version field I added in #2. The canonical manifest schema (documented inline in openclaw/basic/useful-assistant/manifest.json's _docs block) has no template.version. None of the shipped templates use it. Track template revisions through git tags instead. - Add the canonical "$schema" reference at the top of manifest.json. Every recent template (web-master, moonpay-defi-portfolio, moonpay-prediction-trader, useful-assistant) includes https://agents.pinata.cloud/schemas/manifest.v1.json — gives editors and CI a real schema to validate against. CI updated: enforce $schema is set, drop the template.version regex, and bound template.tags to ≤10 (per schema doc). CONTRIBUTING.md versioning section rewritten — no version field to bump, just tag releases. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/validate.yml | 8 ++++---- CONTRIBUTING.md | 17 ++++++++++------- manifest.json | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index a7c4366..ac98f0a 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -17,7 +17,8 @@ jobs: jq . manifest.json > /dev/null # Required top-level keys + types - jq -e '.version | type == "number"' manifest.json > /dev/null + jq -e '."$schema" == "https://agents.pinata.cloud/schemas/manifest.v1.json"' manifest.json > /dev/null + jq -e '.version == 1' manifest.json > /dev/null jq -e '.agent | type == "object"' manifest.json > /dev/null jq -e '.template | type == "object"' manifest.json > /dev/null jq -e '.skills | type == "array"' manifest.json > /dev/null @@ -30,11 +31,10 @@ jobs: jq -e '.agent.vibe | type == "string"' manifest.json > /dev/null jq -e '.agent.emoji | type == "string"' manifest.json > /dev/null - # Template shape + # Template shape — note: schema doesn't define template.version jq -e '.template.slug | type == "string" and test("^[a-z0-9-]+$")' manifest.json > /dev/null - jq -e '.template.version | type == "string" and test("^[0-9]+\\.[0-9]+\\.[0-9]+$")' manifest.json > /dev/null jq -e '.template.category | type == "string"' manifest.json > /dev/null - jq -e '.template.tags | type == "array" and length > 0' manifest.json > /dev/null + jq -e '.template.tags | type == "array" and length > 0 and length <= 10' manifest.json > /dev/null jq -e '.template.authorName | type == "string"' manifest.json > /dev/null # Skills shape — every entry needs clawhub_slug + name diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8133302..5dc6bb9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,15 +19,18 @@ See `README.md` → *Repository layout*. The short version: `manifest.json` defi ## Versioning -`manifest.json` has two version fields: +`manifest.json` has one version field — `version` (top-level integer) — which is the manifest **schema** version (currently `1`). Don't touch it unless the schema itself changes. -- `version` (top-level integer) — manifest **schema** version. Don't touch unless the schema itself changes. -- `template.version` (semver string) — this template's version. Bump on every change that ships to users: - - patch: doc tweaks, prompt fixes - - minor: new heartbeat steps, new memory schemas, new TOOLS.md fields - - major: breaking changes to memory layout, manifest shape, or env requirements +The template doesn't carry its own version field; track template revisions through git tags instead: -Tag releases on `main` after merge: `git tag v1.0.1 && git push --tags`. +```bash +git tag v1.0.1 && git push --tags +``` + +Use semver for tags: +- patch: doc tweaks, prompt fixes +- minor: new heartbeat steps, new memory schemas, new TOOLS.md fields +- major: breaking changes to memory layout, manifest shape, or env requirements ## Style diff --git a/manifest.json b/manifest.json index 40697c3..736ad5e 100644 --- a/manifest.json +++ b/manifest.json @@ -1,4 +1,5 @@ { + "$schema": "https://agents.pinata.cloud/schemas/manifest.v1.json", "version": 1, "agent": { "name": "NFT Collector Copilot", @@ -8,7 +9,6 @@ }, "template": { "slug": "nft-collector-copilot", - "version": "1.0.0", "category": "actions & transactions", "tags": ["nft", "opensea", "seaport", "privy", "collector", "defi"], "authorName": "OpenSea",