mirror of
https://github.com/meshy-dev/meshy-3d-agent.git
synced 2026-09-19 08:09:05 +08:00
95016dadd9
## What
1. Plugin manifests for the three official install channels:
- .claude-plugin/plugin.json — repo-level plugin (auto-discovers all
skills/*/SKILL.md)
- .claude-plugin/marketplace.json — one entry per skill directory, each
sharing source "./" with an exclusive "skills" path (the documented
pattern that makes every skill directory independently installable)
- .cursor-plugin/plugin.json — auto-discovery layout
- .codex-plugin/plugin.json — explicit ./-prefixed skills list + interface
metadata (schema verified against openai/codex manifest.rs)
2. scripts/validate_skills.py + .github/workflows/validate-skills.yml run
five checks on every PR and on pushes to main:
1. frontmatter: name == directory name, semver metadata.version,
description carries a trigger phrase and a boundary note
2. version sync across all manifests, every SKILL.md, and the top
CHANGELOG.md entry
3. marketplace entries + codex skills list cover exactly the skills/
directory set
4. reference bidirectionality: every relative link in SKILL.md exists;
every non-SKILL markdown file is reachable from SKILL.md
5. no ".." path segments, so skill dirs stay independently installable
## Baseline fixes required for a green CI (overlap with ENG-1575 scope)
- meshy-openclaw frontmatter: name was "meshy-3d-agent" while the directory
is meshy-openclaw, and metadata.version was missing (CHANGELOG 0.4.0
admits the drift). Aligned to name=meshy-openclaw, version="0.4.0".
If "meshy-3d-agent" is the intended public name, the directory should be
renamed instead of relaxing check 1.
- All three skill descriptions gained one boundary sentence (check 1
requires the boundary note in the description; wording mirrors the
routing rules already present in each skill body).
- .gitignore ignored .claude-plugin/ — removed; otherwise the manifests
could never be committed.
No version bump: everything stays at 0.4.0. Releasing 0.5.0 is a
maintainer decision, and check 2 makes it a mechanical, CI-enforced edit.
## Validation
Local: all 5 checks green. Negative tests (mutate -> red -> restore):
version drift -> check 2 red; deleted referenced file -> check 4 red;
frontmatter name drift -> check 1 red; missing marketplace entry ->
check 3 red; "../" link -> check 5 red; orphan markdown -> check 4 red.
Every check fires in isolation.