You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/first-second-parity-audit.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -89,7 +89,7 @@ Anthropic API 和 conversation:
89
89
-`/mcp <server-name>` now takes the no-query local server-detail path used by `/mcp show <server-name>` when the name matches a configured settings or plugin MCP server, while unknown one-word subcommands still report unsupported.
90
90
-`/plugin help|--help|-h` now returns the official plugin command usage text without querying the model, `/plugin manage` reuses the installed-plugin summary path, `/plugin i` aliases install, and the built-in command registry now exposes the official `/plugins` and `/marketplace` aliases.
91
91
-`/plugin uninstall|remove|rm [--scope project|user|local] <plugin>` now takes a no-query safe uninstall path that only removes plugin roots discovered from installed plugin directories, reports removed path/scope, and refreshes plugin MCP server app-state.
92
-
-`/plugin validate <path>` now takes a no-query local validation path backed by a shared plugin manifest validator also used by CLI `plugin validate <path>`, covering official `.claude-plugin` marketplace/plugin directory detection, current Go root manifest layouts, JSON/type/unknown-key/path-traversal diagnostics, common plugin warnings, and marketplace entry summaries.
92
+
-`/plugin validate <path>` now takes a no-query local validation path backed by a shared plugin manifest validator also used by CLI `plugin validate <path>`, covering official `.claude-plugin` marketplace/plugin directory detection, current Go root manifest layouts, JSON/type/unknown-key/path-traversal diagnostics, common plugin warnings, marketplace entry summaries, and CLI-side official-layout content scans for skills/agents/commands frontmatter plus hooks/hooks.json.
93
93
- CLI `plugin uninstall|remove|rm [--scope user|project|local] [--keep-data] <plugin>` now reuses the same safe uninstall API, defaults to user scope like the official CLI, and reports removed path/scope/status.
94
94
-`/plugin <plugin-name>` now takes the no-query local plugin-detail path used by `/plugin show <plugin-name>` when the name matches a local plugin manifest, while unknown one-word subcommands still report unsupported.
95
95
-`/model show`, `/model info`, and `/model current` now take the no-query current-model path instead of treating those words as custom model names and mutating the runner model.
result.Warnings=append(result.Warnings, ManifestValidationMessage{Path: "frontmatter", Message: "No frontmatter block found. Add YAML frontmatter between --- delimiters at the top of the file to set description and other metadata."})
result.Errors=append(result.Errors, ManifestValidationMessage{Path: "frontmatter", Message: "Frontmatter block is not closed or could not be parsed."})
result.Warnings=append(result.Warnings, ManifestValidationMessage{Path: "description", Message: fmt.Sprintf("No description in frontmatter. A description helps users and Claude understand when to use this %s.", fileType)})
result.Errors=append(result.Errors, ManifestValidationMessage{Path: "shell", Message: fmt.Sprintf("shell must be 'bash' or 'powershell', got %q.", shell)})
result.Errors=append(result.Errors, ManifestValidationMessage{Path: "file", Message: "Failed to read file: "+err.Error()})
611
+
returnresult, true
612
+
}
613
+
varrawany
614
+
iferr:=json.Unmarshal(data, &raw); err!=nil {
615
+
result.Success=false
616
+
result.Errors=append(result.Errors, ManifestValidationMessage{Path: "json", Message: "Invalid JSON syntax: "+err.Error() +". At runtime this breaks the entire plugin load."})
617
+
returnresult, true
618
+
}
619
+
ifhooks:=rawHooksFromAny(raw); len(hooks) ==0 {
620
+
result.Success=false
621
+
result.Errors=append(result.Errors, ManifestValidationMessage{Path: "hooks", Message: "hooks.json must contain a hooks object with at least one hook event."})
0 commit comments