Plugins and Skills Fact Boundary
Plugin docs now match the real code: Plugin owns providers and market state; Skill owns callable tool definitions, packages, and certification.
Real model
The extension system has two layers:
| Layer | Source | Role |
|---|---|---|
| Plugin | backend/internal/model/plugin.go | Provider, roles, MCP/HTTP/Workflow/Native source type, enablement, market review, and execution entry |
| Skill | backend/internal/model/skill.go | Callable tool definition, input/output schema, ZIP package, public store, certification, and security score |
So this docs category no longer treats a generic package manifest as the only entry. Private tools use POST /api/v4/plugins; skill distribution uses /api/v4/skill-store; MCP tool import uses /api/v4/plugins/mcp/*.
Proven entries
GET /api/v4/pluginsGET /api/v4/plugins/marketGET /api/v4/plugins/:idPOST /api/v4/pluginsPUT /api/v4/plugins/:idPUT /api/v4/plugins/:id/toggleDELETE /api/v4/plugins/:idPOST /api/v4/plugins/syncPOST /api/v4/plugins/:id/executePOST /api/v4/plugins/pre-checkPOST /api/v4/plugins/:id/health-checkPUT /api/v4/plugins/:id/toggle-enabledPUT /api/v4/plugins/:id/unpublishDELETE /api/v4/plugins/presetsPOST /api/v4/plugins/:id/publish-to-marketPUT /api/v4/plugins/:id/withdraw-marketPOST /api/v4/plugins/:id/resubmit-marketGET /api/v4/plugins/:id/usage-statsPOST /api/v4/plugins/mcp/testPOST /api/v4/plugins/mcp/importGET /api/v4/plugins/mcp/resourcesPOST /api/v4/plugins/mcp/resources/readGET /api/v4/plugins/mcp/promptsPOST /api/v4/plugins/mcp/oauth/authorizeGET /api/v4/plugins/mcp/oauth/callbackPOST /api/v4/plugins/bocha/testPOST /api/v4/plugins/bocha/createPOST /api/v4/plugins/zhipu/testPOST /api/v4/plugins/zhipu/createPOST /api/v4/plugins/dashscope-search/testPOST /api/v4/plugins/dashscope-search/createPOST /api/v4/plugins/skill-generator/testPOST /api/v4/plugins/skill-generator/create- public
GET /api/v4/public/plugins - public
GET /api/v4/public/plugins/:id - skill-store
GET /api/v4/skill-store - skill-store
GET /api/v4/skill-store/:id - skill-store
GET /api/v4/skill-store/:id/certification - skill-store
GET /api/v4/skill-store/:id/download - skill-store
GET /api/v4/skill-store/admin/detail/:id - skill-store
GET /api/v4/skill-store/admin/dump - skill-store
GET /api/v4/skill-store/admin/list - skill-store
GET /api/v4/skill-store/admin/subcategory-stats - skill-store
GET /api/v4/skill-store/admin/unprocessed - skill-store
GET /api/v4/skill-store/pending - skill-store
GET /api/v4/skill-store/resolve/:key - skill-store
POST /api/v4/skill-generator/generate - skill-store
POST /api/v4/skill-generator/optimize - skill-store
POST /api/v4/skill-generator/validate - skill-store
POST /api/v4/skill-store/:id/certify - skill-store
POST /api/v4/skill-store/:id/install - skill-store
POST /api/v4/skill-store/admin/archive - skill-store
POST /api/v4/skill-store/admin/batch-delete - skill-store
POST /api/v4/skill-store/admin/batch-update - skill-store
POST /api/v4/skill-store/admin/restore - skill-store
POST /api/v4/skill-store/audit - skill-store
POST /api/v4/skill-store/publish - skill-store
POST /api/v4/skill-store/upload
SDK surface
- Skill store:
browseSkillStore,browseSkills,browseSkillsList,certifySkill,downloadSkill,generateSkill,getCertificationStatus,getSkillDetail,getSkillSummary,installSkill,optimizeSkill,resolveSkill,uploadSkill,validateSkill - Tools:
getTool,listTools
Current boundary
- Private plugins are created as
status=APPROVED,marketStatus=NONE; they are not automatically listed publicly. - Public plugin browse requires
status=APPROVED,market_status=APPROVED, andis_enabled=true. - Skill ZIP packages pass ZIP safety checks: up to 50 files and 50 MB decompressed.