mirror of
https://github.com/alirezarezvani/claude-skills.git
synced 2026-08-28 04:24:58 +00:00
Resolves #712 and #714. Claude Code's plugin spec (code.claude.com/docs/en/plugins-reference) requires "All paths must be relative to the plugin root and start with ./". CC 2.1.144+ rejects the bare "skills" form with `Validation errors: skills: Invalid input`, breaking plugin installs from this repo. Changes: - 47 plugin.json manifests migrated from "skills": "skills" → ["./skills"] (canonical post-CC 2.1.144 form, also accepts string "./skills") - scripts/check_plugin_json.py rewritten to enforce the live spec: * Hard-fails on non-"./"-prefixed strings (except the legacy "skills" literal) * Hard-fails on empty strings/arrays and non-string array entries * Emits WARN (non-fatal) on the legacy "skills" literal as a safety net for copied templates — the WARN tolerance can be removed later * Tested against all four canonical forms + 3 garbage forms - CLAUDE.md §5 rewritten to document the live spec, including the historical context of the v2.1.107 → v2.1.144 regression window that's now closed - 15 stale broken symlinks under .gemini/skills/ removed (orphans from older reorgs that the sync script didn't prune because its cleanup is disabled) Verification: - scripts/check_plugin_json.py --all → 0 FAIL, 0 WARN, exit 0 (69 files OK) - pytest tests/ → 2103 passed - find . -type l ! -exec test -e {} \; → 0 broken symlinks - Live spec forms tested: ["./"], ["./skills"], "./skills", ["./a","./b"] all pass - Garbage forms rejected: bare "./", empty array, non-string entries, plain strings |
||
|---|---|---|
| .. | ||
| audit_skills.py | ||
| check_plugin_json.py | ||
| codex-install.bat | ||
| codex-install.sh | ||
| convert.sh | ||
| extract_release_notes.py | ||
| gemini-install.sh | ||
| generate-docs.py | ||
| install.sh | ||
| openclaw-install.sh | ||
| review-new-skills.sh | ||
| sync-codex-skills.py | ||
| sync-gemini-skills.py | ||
| sync-hermes-skills.py | ||
| sync_skill_bundles.py | ||