Local-first AI coding agent desktop client with plugin system and agent host capabilities
PI-Desktop exposes 3 plugin development tools with minimal documentation. All tools have descriptions (10-20 chars each), but they are vague and lack actionable context. Input schemas are present with basic type info, but parameter descriptions are generic ('Target directory path') without constraints, examples, or guidance on valid values. No output schemas are documented. Error handling is absent, no guidance on recovery, retryability, or what happens on failure. Tool names lack clear verb-noun structure (PluginScaffold, PluginCheck, PluginPack are noun-heavy). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk profiles (WRITE vs READ_ONLY). Composition is reasonable, each tool has one responsibility, but the interface is not LLM-optimized.
Validate a plugin directory and check for errors and warnings
Package a plugin directory into a distributable archive
Create a new plugin from a template in the specified directory
Tool descriptions are under 20 characters and lack actionable context. 'Create a new plugin from a template in the specified directory' (PluginScaffold) does not explain WHEN to use it, what templates are available, or what happens on success/failure.
No output schemas documented. LLMs cannot infer what fields are returned or plan downstream calls. E.g., does PluginScaffold return a plugin_id, path, or status?
Parameter descriptions are generic and lack constraints. 'Target directory path within the workspace' does not specify format, allowed characters, or whether relative/absolute paths are accepted. No enum for 'template' parameter despite it being constrained to 'valid template names'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No error handling guidance. What happens if the directory already exists? If the template is invalid? If validation fails? LLMs receive no recovery path.
Tool names are noun-heavy (PluginScaffold, PluginPack) rather than verb-noun (create_plugin, package_plugin). LLMs infer intent from action verbs, these names are ambiguous.