Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .github/brand/social.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
13 changes: 13 additions & 0 deletions Documentation/Brand/header.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
31 changes: 31 additions & 0 deletions Scripts/check-brand.py
Original file line number Diff line number Diff line change
@@ -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']}")
16 changes: 16 additions & 0 deletions brand.lock.json
Original file line number Diff line number Diff line change
@@ -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"
}
}
Loading