diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 42cd3cd..4256575 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -10,7 +10,7 @@ "name": "terraphim-skills-intro", "source": "./", "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", - "version": "0.2.2", + "version": "0.2.3", "category": "development", "homepage": "https://terraphim-skills.md/" } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 81adc68..fa222f7 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "terraphim-skills-intro", "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", - "version": "0.2.2", + "version": "0.2.3", "author": { "name": "Terraphim AI", "email": "engineering@terraphim.ai" diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 6cd46af..c7c9d5d 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "terraphim-skills-intro", "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", - "version": "0.2.2", + "version": "0.2.3", "author": { "name": "Terraphim AI", "email": "engineering@terraphim.ai" diff --git a/.zcode-plugin/plugin.json b/.zcode-plugin/plugin.json index 5e4adda..2c4fbc3 100644 --- a/.zcode-plugin/plugin.json +++ b/.zcode-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "terraphim-skills-intro", "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", - "version": "0.2.2", + "version": "0.2.3", "author": { "name": "Terraphim AI", "email": "engineering@terraphim.ai" diff --git a/README.md b/README.md index ffd5017..b0a9e24 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,10 @@ terraphim-agent memory --help ``` The formulae install the signed, checksummed Terraphim Clients v1.21.14 release. -See [dependency installation](docs/install-dependencies.md) for updates, removal, -non-Homebrew installation, signature checks, and PATH troubleshooting. The skills -never install dependencies automatically. +See the [non-technical installation guide](https://terraphim-skills.md/docs/non-technical/) +or the repository's [dependency installation](docs/install-dependencies.md) for +updates, removal, non-Homebrew installation, signature checks, and PATH +troubleshooting. The skills never install dependencies automatically. ## Install in your agent @@ -42,7 +43,7 @@ never install dependencies automatically. | Hermes Agent | Add `terraphim/terraphim-cursor-plugin` as a tap, then inspect and install the three skills. | | skills.sh | Run `npx skills add terraphim/terraphim-cursor-plugin`; use `DISABLE_TELEMETRY=1` to opt out of anonymous telemetry. | | Claude Code | Add the repository as a marketplace, then install the plugin as shown below. | -| Grok Build | The [xAI marketplace submission](https://github.com/xai-org/plugin-marketplace/pull/730) pins the signed v0.2.2 commit and is awaiting maintainer review. | +| Grok Build | The marketplace submission pins the signed public release and is awaiting maintainer review; see the [distribution guide](docs/distribution.md) for status. | Claude Code commands: @@ -90,6 +91,14 @@ The public introduction contains no proprietary instructions or entitlement toke Following a related-skill link never creates a checkout or transaction. Access and purchase decisions remain on Terraphim's authenticated site and MCP services. +For guided setup, see the [non-technical installation guide](https://terraphim-skills.md/docs/non-technical/). +For agent integration, see the [MCP guide](https://terraphim-skills.md/docs/mcp/). +Read the [privacy policy](https://terraphim-skills.md/legal/privacy/) and +[terms of service](https://terraphim-skills.md/legal/terms/). The engineering +approach is explained in the canonical +[Disciplined Engineering for AI Systems](https://terraphim.ai/posts/disciplined-engineering-ai-systems/) +article. + ## Development ```bash diff --git a/README_CN.md b/README_CN.md index b655a07..267bbac 100644 --- a/README_CN.md +++ b/README_CN.md @@ -25,8 +25,8 @@ terraphim-agent learn --help terraphim-agent memory --help ``` -技能不会自动安装软件。没有 Homebrew 时,请从 -[Terraphim Clients v1.21.14](https://github.com/terraphim/terraphim-clients/releases/tag/v1.21.14) +技能不会自动安装软件。没有 Homebrew 时,请按照 +[Terraphim 安装指南](https://terraphim-skills.md/docs/non-technical/) 下载适合平台的文件,并用 `SHA256SUMS` 验证。 ## 安装与使用 diff --git a/dist/autoclaw/SHA256SUMS b/dist/autoclaw/SHA256SUMS index 59c9131..690acce 100644 --- a/dist/autoclaw/SHA256SUMS +++ b/dist/autoclaw/SHA256SUMS @@ -1,3 +1,3 @@ -38d8f394d04aeec419cc52a1d146525b8357bc48df5b03b0f24970e5b37453d9 terraphim-grep-0.2.2.zip -69c2be81b8ff879fc7f9a62f5d48399be98e9a9934f3b17e2fcd657729590012 terraphim-agent-learn-0.2.2.zip -b0f9de6fa5eff647b92bd6a6aeabe825ed3f7e00d1f690ae4f0145a7489357e9 terraphim-agent-memory-0.2.2.zip +74e568511919fefa68c05ee81b7912f46f18798520dbcfc8e79fbf6c24fcfc6a terraphim-grep-0.2.3.zip +ed1b4bdd5a9236d67aabc5880e9bc59ad6557d9c393c9eb347882c0c6440b800 terraphim-agent-learn-0.2.3.zip +ad95e155c527f1120d54c5af7a7b09b2f4d774763307a599d83ad88357e73a54 terraphim-agent-memory-0.2.3.zip diff --git a/dist/autoclaw/terraphim-agent-learn-0.2.2.zip b/dist/autoclaw/terraphim-agent-learn-0.2.2.zip deleted file mode 100644 index 7e2b0e9..0000000 Binary files a/dist/autoclaw/terraphim-agent-learn-0.2.2.zip and /dev/null differ diff --git a/dist/autoclaw/terraphim-agent-learn-0.2.3.zip b/dist/autoclaw/terraphim-agent-learn-0.2.3.zip new file mode 100644 index 0000000..f941a7f Binary files /dev/null and b/dist/autoclaw/terraphim-agent-learn-0.2.3.zip differ diff --git a/dist/autoclaw/terraphim-agent-memory-0.2.2.zip b/dist/autoclaw/terraphim-agent-memory-0.2.2.zip deleted file mode 100644 index adc4533..0000000 Binary files a/dist/autoclaw/terraphim-agent-memory-0.2.2.zip and /dev/null differ diff --git a/dist/autoclaw/terraphim-agent-memory-0.2.3.zip b/dist/autoclaw/terraphim-agent-memory-0.2.3.zip new file mode 100644 index 0000000..a355cff Binary files /dev/null and b/dist/autoclaw/terraphim-agent-memory-0.2.3.zip differ diff --git a/dist/autoclaw/terraphim-grep-0.2.2.zip b/dist/autoclaw/terraphim-grep-0.2.2.zip deleted file mode 100644 index 97d7917..0000000 Binary files a/dist/autoclaw/terraphim-grep-0.2.2.zip and /dev/null differ diff --git a/dist/autoclaw/terraphim-grep-0.2.3.zip b/dist/autoclaw/terraphim-grep-0.2.3.zip new file mode 100644 index 0000000..2a4a50d Binary files /dev/null and b/dist/autoclaw/terraphim-grep-0.2.3.zip differ diff --git a/distribution/metadata.json b/distribution/metadata.json index 5e2276c..84e16e4 100644 --- a/distribution/metadata.json +++ b/distribution/metadata.json @@ -3,7 +3,7 @@ "plugin": { "name": "terraphim-skills-intro", "display_name": "Terraphim Skills Introduction", - "version": "0.2.2", + "version": "0.2.3", "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", "description_zh_cn": "使用 Terraphim 命令行工具搜索代码、记录经验并检索记忆。", "author_name": "Terraphim AI", @@ -24,7 +24,7 @@ }, "runtime": { "tap": "terraphim/terraphim", - "release": "https://github.com/terraphim/terraphim-clients/releases/tag/v1.21.14", + "release": "https://terraphim-skills.md/docs/non-technical/", "formulae": [ "terraphim-grep", "terraphim-agent" diff --git a/docs/distribution.md b/docs/distribution.md index 0e16fd6..e7db7a6 100644 --- a/docs/distribution.md +++ b/docs/distribution.md @@ -1,6 +1,6 @@ # Multi-marketplace distribution -This repository is the canonical source for all hosts. Release `v0.2.2` contains +This repository is the canonical source for all hosts. Release `v0.2.3` contains exactly three skills and deterministic AutoClaw archives. ## Availability model @@ -12,7 +12,7 @@ exactly three skills and deterministic AutoClaw archives. - Cursor is already submitted and is a regression target, not a new submission. - The Grok Build submission is open at and pins the exact - signed `v0.2.2` commit; public listing remains under maintainer review. + signed release commit; public listing remains under maintainer review. - AutoClaw local ZIP import is supported. ZhipuAI Skills Center inclusion is a separate external review; ClawHub is not treated as proof of that inclusion. @@ -27,7 +27,7 @@ the tag cannot move between verification and release publication. Install the immutable release URL through Kimi Code's `/plugins install`, or open `/plugins marketplace` with -`https://raw.githubusercontent.com/terraphim/terraphim-cursor-plugin/v0.2.2/marketplaces/kimi.json` +`https://raw.githubusercontent.com/terraphim/terraphim-cursor-plugin/v0.2.3/marketplaces/kimi.json` and install `terraphim-skills-intro`. Run `/plugins reload` (or start a new session), then confirm that exactly the three documented skills appear. The native manifest is @@ -37,7 +37,7 @@ Update by installing the newer tag; remove through Kimi's plugin manager. ## AutoClaw -Download the three ZIP files and `SHA256SUMS` from the `v0.2.2` release. Verify +Download the three ZIP files and `SHA256SUMS` from the `v0.2.3` release. Verify each digest, then use **Skills & Connectors → Skills → Create → Add skill file**. Import each ZIP separately. Restart AutoClaw and confirm the skills persist. Remove them through the same Skills screen. If Homebrew binaries are missing from the GUI @@ -46,7 +46,7 @@ them through the same Skills screen. If Homebrew binaries are missing from the G ## ZCode Open ZCode's **Discover** view and add -`https://raw.githubusercontent.com/terraphim/terraphim-cursor-plugin/v0.2.2/marketplaces/zcode.json` +`https://raw.githubusercontent.com/terraphim/terraphim-cursor-plugin/v0.2.3/marketplaces/zcode.json` as a personal marketplace source, install `terraphim-skills-intro`, then confirm the Plugin Skills view shows exactly three skills. Curated discovery requires a separate [pull request to `zai-org/zcode-plugins`](https://github.com/zai-org/zcode-plugins/pull/13); @@ -64,7 +64,7 @@ hermes skills inspect terraphim/terraphim-cursor-plugin/skills/terraphim-agent-l hermes skills inspect terraphim/terraphim-cursor-plugin/skills/terraphim-agent-memory ``` -Record the immutable `v0.2.2` provenance. Remove the skills with Hermes' normal +Record the immutable `v0.2.3` provenance. Remove the skills with Hermes' normal skill-management command. ## skills.sh @@ -76,14 +76,14 @@ npx skills add terraphim/terraphim-cursor-plugin ``` Set `DISABLE_TELEMETRY=1` to opt out of anonymous telemetry. Confirm exactly three -skills are offered and that their files match tag `v0.2.2`. Update by repeating the +skills are offered and that their files match tag `v0.2.3`. Update by repeating the command for the new tag; remove the installed skill directories through the target agent's documented skill manager. ## Grok Build (xAI) The [xAI marketplace submission](https://github.com/xai-org/plugin-marketplace/pull/730) -uses a full commit SHA for the signed `v0.2.2` source. Its catalogue validation, +uses a full commit SHA for the signed release source. Its catalogue validation, and component-index checks pass when reproduced locally against the submitted head. GitHub-hosted Actions await maintainer approval; the hosted Socket security and Semgrep checks are green. The listing becomes generally available only after diff --git a/docs/install-dependencies.md b/docs/install-dependencies.md index aafdf44..388a852 100644 --- a/docs/install-dependencies.md +++ b/docs/install-dependencies.md @@ -41,8 +41,8 @@ locations before deleting user-created state. ## Without Homebrew -Download the correct archive and `SHA256SUMS` from the -[v1.21.14 release](https://github.com/terraphim/terraphim-clients/releases/tag/v1.21.14). +Follow the [Terraphim installation guide](https://terraphim-skills.md/docs/non-technical/) +to download the correct archive and `SHA256SUMS`. Verify the archive checksum before extracting it. macOS archives are signed and notarized; do not bypass Gatekeeper. Linux archives are signed through the release checksum and signature chain. diff --git a/docs/marketplace-submission-pack.md b/docs/marketplace-submission-pack.md index baf751a..a60cbe1 100644 --- a/docs/marketplace-submission-pack.md +++ b/docs/marketplace-submission-pack.md @@ -14,7 +14,10 @@ canonical source. - **Licence:** Apache-2.0 - **Homepage:** - **Public catalogue:** -- **Repository:** +- **Installation guide:** +- **MCP guide:** +- **Privacy policy:** +- **Terms of service:** ### Tagline @@ -98,7 +101,7 @@ The repository includes Terraphim-owned V-model artwork in both formats: | Hermes Agent | `skills/*/SKILL.md` | Repository/local skills directory | | skills.sh | `skills/*/SKILL.md` | Repository URL discovery/install | | Claude Code | `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json` | Direct install and publisher-owned marketplace | -| Grok Build (xAI) | `.grok-plugin/marketplace.json` entry in xAI's catalogue | [Submission PR #730](https://github.com/xai-org/plugin-marketplace/pull/730), pinned to the signed v0.2.2 commit | +| Grok Build (xAI) | `.grok-plugin/marketplace.json` entry in xAI's catalogue | Submission pending maintainer review; see [distribution status](distribution.md) | An artefact being present does not imply that a third-party catalogue has accepted or featured the plugin. Record curated acceptance only after the host diff --git a/docs/uat/multi-marketplace.md b/docs/uat/multi-marketplace.md index 1ea7308..9fd713d 100644 --- a/docs/uat/multi-marketplace.md +++ b/docs/uat/multi-marketplace.md @@ -8,7 +8,7 @@ older installation cannot make a failed package appear healthy. 1. Install and verify the runtime dependencies using [Install dependencies](../install-dependencies.md). -2. Confirm the plugin version is `0.2.2`. +2. Confirm the plugin version is `0.2.3`. 3. Confirm the installed skill set is exactly: `terraphim-grep`, `terraphim-agent-learn`, and `terraphim-agent-memory`. diff --git a/kimi.plugin.json b/kimi.plugin.json index c044a08..348dbf6 100644 --- a/kimi.plugin.json +++ b/kimi.plugin.json @@ -1,7 +1,7 @@ { "name": "terraphim-skills-intro", "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", - "version": "0.2.2", + "version": "0.2.3", "author": { "name": "Terraphim AI", "email": "engineering@terraphim.ai" diff --git a/marketplaces/kimi.json b/marketplaces/kimi.json index 727bbbd..fba6936 100644 --- a/marketplaces/kimi.json +++ b/marketplaces/kimi.json @@ -5,7 +5,7 @@ "id": "terraphim-skills-intro", "displayName": "Terraphim Skills Introduction", "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", - "source": "https://github.com/terraphim/terraphim-cursor-plugin/archive/refs/tags/v0.2.2.zip" + "source": "https://github.com/terraphim/terraphim-cursor-plugin/archive/refs/tags/v0.2.3.zip" } ] } diff --git a/marketplaces/zcode.json b/marketplaces/zcode.json index bb18bc6..7b2bd79 100644 --- a/marketplaces/zcode.json +++ b/marketplaces/zcode.json @@ -8,14 +8,14 @@ "source": "github", "repo": "terraphim/terraphim-cursor-plugin", "path": ".", - "ref": "v0.2.2" + "ref": "v0.2.3" }, "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", "description_i18n": { "en": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", "zh-CN": "使用 Terraphim 命令行工具搜索代码、记录经验并检索记忆。" }, - "version": "0.2.2", + "version": "0.2.3", "category": "developer-tools", "tags": [ "terraphim", diff --git a/plugin.json b/plugin.json index c044a08..348dbf6 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "name": "terraphim-skills-intro", "description": "Search code, capture learning, and retrieve memory with Terraphim command-line tools.", - "version": "0.2.2", + "version": "0.2.3", "author": { "name": "Terraphim AI", "email": "engineering@terraphim.ai" diff --git a/skills/terraphim-agent-learn/SKILL.md b/skills/terraphim-agent-learn/SKILL.md index 5d9274a..d9dce8d 100644 --- a/skills/terraphim-agent-learn/SKILL.md +++ b/skills/terraphim-agent-learn/SKILL.md @@ -20,7 +20,7 @@ terraphim-agent --version The tap installs the signed, checksummed v1.21.14 archive from the Terraphim client release. If Homebrew is unavailable, use the appropriate archive from -the [v1.21.14 release](https://github.com/terraphim/terraphim-clients/releases/tag/v1.21.14) +the [Terraphim installation guide](https://terraphim-skills.md/docs/non-technical/) and verify it against that release's `SHA256SUMS` before installation. ## Capability gate diff --git a/skills/terraphim-agent-learn/skill.toml b/skills/terraphim-agent-learn/skill.toml index bd17699..d909488 100644 --- a/skills/terraphim-agent-learn/skill.toml +++ b/skills/terraphim-agent-learn/skill.toml @@ -1,6 +1,6 @@ [skill] name = "terraphim-agent-learn" -version = "1.0.1" +version = "1.0.2" description = "Inspect and capture command failures or user corrections with terraphim-agent learn. Use when a user asks to preserve a concrete operational lesson, search earlier failures, or attach a correction; use terraphim-agent-memory for broader memory retrieval and lifecycle work." tier = "community" author = "terraphim" @@ -8,10 +8,10 @@ license = "Apache-2.0" repository = "https://github.com/terraphim/terraphim-cursor-plugin" [files] -"SKILL.md" = "6396e1b6c38d3778f1c9afc3cdaf10d0c8e368c0eb7a102775609ef510aa5af5" +"SKILL.md" = "51d1b4c8f82cbd15931910e2a13a3c2fe951518fef44320b4b9df72a3dd85bcc" "references/command-guide.md" = "792034bb071bd45831aae1da1a11c999eb61fb7deed123d51b567737fc50346c" [signature] public_key = "261c6820525270bfe2a5daaa5bf3f581bd9bc193e1a0148010e870a3a63ad959" -signature = "32b32d477fc1b33524c3005a5f2bc54b4ac51bfa1a15678d76daf63540e85ec99d9f37ac71b811919a3f3125dfd37f8d1e9c95a02d26f068de5fa91e29d44504" -timestamp = "1970-01-01T00:00:00Z" +signature = "8bf9f0d742ffa26d550280355d2f1f46939881a29facbff673bc7abfb4da169959bcca17d42b78d612cd93646adbff92cacf686390932e707e5c9ebf08d1ab03" +timestamp = "1789548056Z" diff --git a/skills/terraphim-agent-memory/SKILL.md b/skills/terraphim-agent-memory/SKILL.md index 604f9ad..3d6697d 100644 --- a/skills/terraphim-agent-memory/SKILL.md +++ b/skills/terraphim-agent-memory/SKILL.md @@ -20,7 +20,7 @@ terraphim-agent --version The tap installs the signed, checksummed v1.21.14 archive from the Terraphim client release. If Homebrew is unavailable, use the appropriate archive from -the [v1.21.14 release](https://github.com/terraphim/terraphim-clients/releases/tag/v1.21.14) +the [Terraphim installation guide](https://terraphim-skills.md/docs/non-technical/) and verify it against that release's `SHA256SUMS` before installation. ## Capability gate diff --git a/skills/terraphim-agent-memory/skill.toml b/skills/terraphim-agent-memory/skill.toml index bfb19cf..a6fc338 100644 --- a/skills/terraphim-agent-memory/skill.toml +++ b/skills/terraphim-agent-memory/skill.toml @@ -1,6 +1,6 @@ [skill] name = "terraphim-agent-memory" -version = "1.0.1" +version = "1.0.2" description = "Retrieve, inspect, validate, and govern agentic memory with terraphim-agent memory. Use for role-scoped memory searches, provenance checks, hook previews, reliability evaluation, or explicitly authorized lifecycle changes; use terraphim-agent-learn for individual command failures and corrections." tier = "community" author = "terraphim" @@ -8,10 +8,10 @@ license = "Apache-2.0" repository = "https://github.com/terraphim/terraphim-cursor-plugin" [files] -"SKILL.md" = "fe385d0b32055b3097f9a9f7dad833acfc2eb4c1586798e40a2b6dcf5de9988f" +"SKILL.md" = "b321987746d4ba633c7cfb6d8817a4b572d4f53685e244843e3c56348e745524" "references/command-guide.md" = "9c40a9d20dced973f4d37f2c78e61a88091bae83345c1a86879c3ffb0f9daf62" [signature] public_key = "261c6820525270bfe2a5daaa5bf3f581bd9bc193e1a0148010e870a3a63ad959" -signature = "22ce696a6ba9922dea8fc6883717ade94beb9fa4c1fb8dd5c9174bd15de25415a87935d4abf4c1b3cd6dddbf09298c8159a12dacff51245c47099c74849f2800" -timestamp = "1970-01-01T00:00:00Z" +signature = "360091af52eda05b1869e5590b3b807e951e062ba855389ec63d21c7cdf07d6ca82f7a6c93cf76017f99715e8a7025e6fc398288ab2b4513bb36f78b88353606" +timestamp = "1789548056Z" diff --git a/skills/terraphim-grep/SKILL.md b/skills/terraphim-grep/SKILL.md index 8747b41..ca57735 100644 --- a/skills/terraphim-grep/SKILL.md +++ b/skills/terraphim-grep/SKILL.md @@ -20,7 +20,7 @@ terraphim-grep --version The tap installs the signed, checksummed v1.21.14 archive from the Terraphim client release. If Homebrew is unavailable, use the appropriate archive from -the [v1.21.14 release](https://github.com/terraphim/terraphim-clients/releases/tag/v1.21.14) +the [Terraphim installation guide](https://terraphim-skills.md/docs/non-technical/) and verify it against that release's `SHA256SUMS` before installation. ## Capability gate diff --git a/skills/terraphim-grep/skill.toml b/skills/terraphim-grep/skill.toml index f88a71f..03cec9a 100644 --- a/skills/terraphim-grep/skill.toml +++ b/skills/terraphim-grep/skill.toml @@ -1,6 +1,6 @@ [skill] name = "terraphim-grep" -version = "1.0.1" +version = "1.0.2" description = "Search local source code and documentation with the installed terraphim-grep CLI. Use for bounded text or knowledge-graph-assisted retrieval inside a project; do not use it for internet search or file-name-only lookup." tier = "community" author = "terraphim" @@ -8,10 +8,10 @@ license = "Apache-2.0" repository = "https://github.com/terraphim/terraphim-cursor-plugin" [files] -"SKILL.md" = "10d257bdb93e7c4da3018960d8aa81780230faeabc048ace6fe18de5551075eb" +"SKILL.md" = "7b3d6a492f1e532648d15ea24bf9610a00ffddc2a180aceac7bd134c5dfe45f6" "references/command-guide.md" = "0f8e9e51c7ddf4af363f20423ebcb3328055f4a2de847af2fd4e9063178fed23" [signature] public_key = "261c6820525270bfe2a5daaa5bf3f581bd9bc193e1a0148010e870a3a63ad959" -signature = "62c420fa91f465e84608136d550720fd5ccc96398a4369d0ac1555fe4ccab6f23ae007e9058d59e99635f89451ad69b9d59d1a93ff68aa3bbe6b597c6b648e09" -timestamp = "1970-01-01T00:00:00Z" +signature = "60121d5b0cff90aeb22824962c0439bd3fcf0ec2379d79b2bdd7529364a8dfcf07d1a95da8327a52717a3e3caf41ba197304bb24de83bb45ed7cb2fa161a790f" +timestamp = "1789548056Z" diff --git a/tests/test_distribution.py b/tests/test_distribution.py index 96f699c..f4e9d1c 100644 --- a/tests/test_distribution.py +++ b/tests/test_distribution.py @@ -31,11 +31,11 @@ def test_exact_public_skill_allowlist_and_tree(self) -> None: self.assertEqual(GENERATOR.ALLOWED_SKILLS, names) def test_print_version_matches_manifests(self) -> None: - self.assertEqual("0.2.2", self.metadata["plugin"]["version"]) + self.assertEqual("0.2.3", self.metadata["plugin"]["version"]) output = io.StringIO() with redirect_stdout(output): self.assertEqual(0, GENERATOR.main(["--print-version"])) - self.assertEqual("0.2.2\n", output.getvalue()) + self.assertEqual("0.2.3\n", output.getvalue()) def test_generated_manifests_are_current_and_deterministic(self) -> None: expected = GENERATOR.generated_files(ROOT, self.metadata) @@ -93,7 +93,7 @@ def test_zcode_marketplace_pins_release_and_category(self) -> None: entry = marketplace["plugins"][0] self.assertEqual("terraphim-skills-intro", entry["name"]) self.assertEqual("developer-tools", entry["category"]) - self.assertEqual("v0.2.2", entry["source"]["ref"]) + self.assertEqual("v0.2.3", entry["source"]["ref"]) self.assertTrue(entry["strict"]) self.assertEqual({"en", "zh-CN"}, set(entry["description_i18n"])) manifest = json.loads((ROOT / ".zcode-plugin/plugin.json").read_text()) @@ -201,6 +201,27 @@ def test_catalogue_links_are_neutral_and_do_not_checkout(self) -> None: self.assertIn("https://terraphim-skills.md/skills/", text) self.assertIn("never starts checkout or changes", text) + def test_end_user_collateral_links_only_to_terraphim_sites(self) -> None: + link_pattern = re.compile(r"https://([^/)>]+)[^)>]*") + collateral = [ + ROOT / "README.md", + ROOT / "README_CN.md", + ROOT / "docs" / "install-dependencies.md", + ROOT / "docs" / "marketplace-submission-pack.md", + *(ROOT / "skills" / name / "SKILL.md" for name in GENERATOR.ALLOWED_SKILLS), + ] + allowed = {"terraphim-skills.md", "terraphim.ai"} + for path in collateral: + hosts = set(link_pattern.findall(path.read_text(encoding="utf-8"))) + self.assertLessEqual(hosts, allowed, (path, hosts - allowed)) + + def test_canonical_legal_links_are_published(self) -> None: + for name in ("README.md", "README_CN.md"): + text = (ROOT / name).read_text(encoding="utf-8") + self.assertIn("https://terraphim-skills.md/legal/privacy/", text) + self.assertIn("https://terraphim-skills.md/legal/terms/", text) + self.assertNotIn("https://terraphim-skills.md/privacy/", text) + def test_chinese_readme_matches_public_boundary(self) -> None: text = (ROOT / "README_CN.md").read_text() self.assertIn("terraphim-grep", text)