From 21e805cd3ab10cbc095ca34ac5efe77e7ace1e39 Mon Sep 17 00:00:00 2001 From: showxu <10173746+showxu@users.noreply.github.com> Date: Thu, 1 Oct 2026 02:03:49 +0800 Subject: [PATCH] Apply the canonical Computer MCP family presentation --- .github/brand/social.png | Bin 0 -> 26833 bytes .github/workflows/validate.yml | 1 + AGENTS.md | 8 ++++++++ Documentation/Brand/header.svg | 13 +++++++++++++ README.md | 7 ++++++- Scripts/check-brand.py | 31 +++++++++++++++++++++++++++++++ brand.lock.json | 16 ++++++++++++++++ 7 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 .github/brand/social.png create mode 100644 Documentation/Brand/header.svg create mode 100644 Scripts/check-brand.py create mode 100644 brand.lock.json diff --git a/.github/brand/social.png b/.github/brand/social.png new file mode 100644 index 0000000000000000000000000000000000000000..57ad2ffc391d8e5f1a1c9b3ebd2d63332622d25c GIT binary patch literal 26833 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 literal 0 HcmV?d00001 diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index c22aec0..62f6618 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -21,6 +21,7 @@ jobs: python-version: '3.13' - name: Validate exporter and declaration package run: | + python3 Scripts/check-brand.py /usr/bin/swift --version /usr/bin/swift package resolve git diff --exit-code -- Package.resolved diff --git a/AGENTS.md b/AGENTS.md index c1256b1..2a8ef2e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -147,3 +147,11 @@ source of truth instead of a literal value. ## Repository Guardrails Read Package.swift and computer-mcp-plugin.toml before editing. Keep the exporter separate from the vendor formatter. Generate cli-tree.json from verified native input; preserve upstream notices and never hand-edit generated output. Run swift build, swift test and swift-format lint before handoff. Do not install vendor binaries or change global PATH. + +## Brand delivery + +The main Computer MCP repository owns ProductIdentity and BRAND. Imported +`Documentation/Brand/header.svg` travels with the packaged manual; +`.github/brand/social.png` supplies the repository preview. `brand.lock.json` +binds both to canonical exports. Run `python3 Scripts/check-brand.py` locally +and in CI. Update imports with the main repository's `Scripts/brand.py sync`. diff --git a/Documentation/Brand/header.svg b/Documentation/Brand/header.svg new file mode 100644 index 0000000..bd12f8d --- /dev/null +++ b/Documentation/Brand/header.svg @@ -0,0 +1,13 @@ + + Computer MCP — Swift Format + + + + + First-party plugin + Computer MCP + Swift Format + + Verified Swift formatting and linting + + diff --git a/README.md b/README.md index 26a8493..429e89b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,9 @@ -# Swift Format Plugin +![Computer MCP — Swift Format](Documentation/Brand/header.svg) + +# Computer MCP — Swift Format + +Part of the [Computer MCP](https://computer-mcp.github.io/) family. +**Let ChatGPT use your local tools.** A Computer MCP plugin for the Swift Format supplied with Swift 6.3.1. It exposes formatting, linting, configuration output, and help through the Gateway's typed diff --git a/Scripts/check-brand.py b/Scripts/check-brand.py new file mode 100644 index 0000000..1cb6c74 --- /dev/null +++ b/Scripts/check-brand.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +"""Verify a repository's locked Computer MCP brand delivery without a source checkout.""" + +import hashlib +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +LOCK = ROOT / "brand.lock.json" +if not LOCK.exists(): + LOCK = ROOT / "public/brand/brand.lock.json" +record = json.loads(LOCK.read_text()) +assert record["schema_version"] == 1, "Unsupported brand lock" +assert record["source"] == "https://github.com/computer-mcp/computer-mcp", "Unexpected brand authority" +for name, expected in record["files"].items(): + path = ROOT / name + assert path.resolve().is_relative_to(ROOT), f"Invalid delivery path: {name}" + assert hashlib.sha256(path.read_bytes()).hexdigest() == expected, f"Brand delivery drift: {name}" +if record["consumer"] == "computer-mcp.github.io": + text = (ROOT / "index.html").read_text() + for promise in record["promise"].values(): + assert promise in text, "Website promise differs from the imported brand" + assert 'brand/social-en.png' in text, "Website sharing artwork differs" +else: + manual = ROOT / ("profile/README.md" if record["consumer"] == ".github" else "README.md") + text = manual.read_text() + assert record["name"] in text, "Master name missing from public entry point" + assert record["promise"]["en"] in text, "Master promise missing from public entry point" + header = "brand/header.svg" if record["consumer"] == ".github" else "Documentation/Brand/header.svg" + assert header in text, "Family header missing from public entry point" +print(f"Locked Computer MCP brand verified for {record['consumer']}") diff --git a/brand.lock.json b/brand.lock.json new file mode 100644 index 0000000..3ad9639 --- /dev/null +++ b/brand.lock.json @@ -0,0 +1,16 @@ +{ + "schema_version": 1, + "source": "https://github.com/computer-mcp/computer-mcp", + "revision": "3c498108b1b847ae126fd2593cd0d3ddb4d0d9858d0dae214b1439ff69226e50", + "consumer": "plugin-swift-format", + "name": "Computer MCP", + "promise": { + "en": "Let ChatGPT use your local tools.", + "zh-CN": "\u8ba9 ChatGPT\uff0c\u7528\u4e0a\u4f60\u7684\u672c\u673a\u5de5\u5177\u3002" + }, + "files": { + "Documentation/Brand/header.svg": "f9685cf010a4d26c959e03dc0d13782700eaf0930bc8967ba3df8e4866c57ca0", + ".github/brand/social.png": "218af71a6d56373f7bfe84ec0c401f9f0914a510bd23241643879be55c088dc9", + "Scripts/check-brand.py": "2ec3c64469774b48fbfa6fbfa7f6a35c6a172fe4de347beb1881766632fbfdde" + } +}