plugin-dev: manifest-reference.md incorrectly documents 'repository' as supporting object format

Resolved 💬 4 comments Opened Apr 5, 2026 by easyfan Closed May 17, 2026

Summary

manifest-reference.md in the plugin-dev plugin documents the repository field as supporting both string and object formats (lines 135–156). The object format example is:

\\\json
{
"repository": {
"type": "git",
"url": "https://github.com/user/plugin-name.git",
"directory": "packages/plugin-name"
}
}
\
\\

This is incorrect — the CC plugin runtime (Zod validation) only accepts a plain string. When an object is passed, installation fails with:

\\\
repository: Invalid input: expected string, received object
\
\\

Root Cause

The object format was cross-contaminated from npm package.json convention. The CC runtime schema only validates repository as z.string().

Inconsistency within plugin-dev itself

validate-plugin-manifest SKILL.md (in the same plugin) correctly states repository must be a string. The two files contradict each other.

Impact

Developers following manifest-reference.md to write plugin manifests with object-format repository will get silent failures or install errors that are hard to diagnose. The plugin-validator agent (also in plugin-dev) was recommending the broken format based on this documentation, causing plugins that previously installed correctly to break after a "fix".

Fix

Remove the "Object format" section from manifest-reference.md and update the type annotation from String (URL) or Object to String (URL only), with an explicit note that object format is rejected at runtime.

Files affected

  • skills/plugin-structure/references/manifest-reference.md — lines 135–156 (incorrect)
  • skills/validate-plugin-manifest/SKILL.md — already correct (string only)
  • agents/plugin-validator.md — was recommending object format; fixed locally

Verification

All existing published plugins (including plugin-dev itself, looper, news-digest, etc.) use the string format exclusively.

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗