Claude插件验证(CPV)
检查您的Claude Code插件是否正确、安全,是否可以发布,而无需花费任何令牌。
CPV是一套Python脚本,用于在您的计算机上本地分析Claude Code插件。每一次检查都是离线运行的,可以立即产生结果,而且不需要任何费用。无需人工智能调用,无需API密钥,无需云服务。
有 使用CPV的两种方法。选择适合您工作流程的选项:
| 独立(通过uvx) | 插件(位于Claude代码内部) | |
|---|---|---|
| 什么 | 从终端运行验证脚本 | 在Claude Code中获取斜线命令、AI代理和管理工具 |
| 安装 | 无需安装——即时运行 | 作为Claude Code插件安装一次 |
| 最适合 | 快速一次性检查、CI/CD管道、自动化 | 日常开发、插件管理、人工智能辅助修复 |
| 跳转到 | 第1部分:独立验证 | 第2部分:克劳德代码插件 |
______________________________________________________________________
目录
______________________________________________________________________
CPV检查什么?
CPV运行 20名专业验证者 覆盖 190+条规则 在Claude Code插件的每个部分(17个插件验证器+3个市场/设置验证器):
| 区域 | CPV捕获的示例 |
|---|---|
| 结构 | 失踪 plugin.json,目录布局错误,缺少所需文件 |
| 钩子 | 事件名称无效、脚本路径损坏、shell命令不安全 |
| 技能 | 描述不佳,无法触发,缺少部分,文件太大 |
| 安全 | 硬编码秘密、路径遍历、命令注入、提示注入 |
| 兼容性 | Windows/MOSC/Linux路径问题、编码问题、引用中断 |
| 质量 | 缺少文档、没有许可证、版本不一致、死链接 |
| v2.1.80+插件功能 | Monitor 工具, userConfig (5类白名单+必填 title/type), channels (服务器交叉引用), CLAUDE_PLUGIN_OPTION_ env-vars,内联市场 settings.json, managed-settings.d/ 插件技能 name 字段(v2.1.98)--完整参考: skills/create-plugin/references/v2-1-80-features.md |
| 经验加载错误 *(v2.23.0+)* | CC插件加载器中的无声故障模式 claude plugin validate 无法捕捉——见下文 |
经验插件加载漏洞CPV捕获
通过对Claude Code的插件加载器进行广泛的实证测试(2026年4月),CPV确定了官方文档隐藏的五种无声故障模式和CC自己的故障模式 claude plugin validate 未检测到。CPV捕获了所有五个:
agents带有文件夹路径的字段 --CC以隐晦的方式拒绝agents: Invalid input。如果跳过验证,则代理将在运行时自动删除。CPV发出MAJOR,具有有用的修复配方(.md仅文件路径)。官方文档自己的完整模式示例显示"./custom/agents/"不正确。hooks: "./hooks/hooks.json"级联 --将覆盖指向自动发现的默认文件会自动通过验证,但在运行时CC会发出Duplicate hooks file detected与 禁用插件的MCP服务器 随着error type: hook-load-failed.CPV发射MAJOR。- MCP跨源服务器名称冲突 --两者中的服务器名称相同
.mcp.json和内联plugin.json:mcpServers导致无声的内联赢得阴影;这.mcp.json声明在没有警告的情况下被删除。CPV每次复制都会发出MAJOR。 - LSP跨源服务器名称冲突 --LSP服务器同样存在无声阴影风险。CPV每次复制都会发出MAJOR。
mcpServers: "./.mcp.json"冗余 --将覆盖指向自动发现的默认文件。无害的单负载(没有级联式挂钩),但冗余且令人困惑。CPV发出轻微的轻推。
所有五条规则都有实证证据记录在 skills/fix-validation/references/empirical-loading-bugs.md (13个测试插件场景、调试日志摘录、运行时探测)。
跨市场依赖分配表(TRDD-20108ab7)
当 plugin.json 声明依赖关系 dependencies[i].marketplace Claude Code指向一个非声明插件所在的市场,在运行时使用 cross-marketplace 除非宿主 marketplace.json::allowCrossMarketplaceDependenciesOn array按名称列出目标市场。CPV在安装之前就抓住了这个主要问题,通过三种部署形状在磁盘上自动发现托管marketplace.json:
- 布局C(插件中的市场) --插件自己的
.claude-plugin/marketplace.json - 布局B(嵌套单仓库) --家长
.claude-plugin/marketplace.json(步行至3层) - 缓存布局 — `~/.claude/plugins/cache//
/ (直系父母 marketplace.json`)
当自动发现找不到托管marketplace.json(独立插件克隆,CI中的新PR)时,CPV会发出INFO而不是MAJOR。通过 validate_plugin --marketplace-context PATH 强制使用特定的marketplace.json。规格: 插件依赖项.md:54-79.
所有进程内检查都作为纯Python运行——没有API调用,没有使用令牌,也没有向任何地方发送数据。
外部安全扫描程序(始终运行,仅可编程)
validate_security.py 编排 五台外部扫描仪 以及其进程内规则包。每次扫描时,每个都会无条件调用,当其源二进制文件无法在PATH上解析或无法从其源URL安装时,会自动跳过INFO咨询 无退出标志 --防止呼叫者意外地使覆盖静音。这 enable_* 关键字参数 validate_security() 仅作为测试隔离旋钮存活。
| # | 扫描仪 | 来源 | 它添加了什么 | 分辨率路径 |
|---|---|---|---|---|
| 16 | cc审计 | Ryo ebata/cc aedit | 为Claude Code插件量身定制的100+AI特定威胁规则 | 持久 cc-audit (首选-- npm install -g @cc-audit/cc-audit) → npx --yes @cc-audit/cc-audit 回退 |
| 17 | 提里斯 | sheeki03/轮胎 | 终端安全、同形词域、ANSI/bidi/零宽度注入、隐藏Unicode、供应链管道到外壳 | PATH→ 码头工人→ nix → 自动安装(pipx/brew/npm/cargo);集 CPV_NO_TIRITH_INSTALL=1 禁用安装回退 |
| 18 | 松露 | 松露安全 | 约700个经过验证的秘密检测器(Stripe、Slack、AWS、GitHub等)——与 --concurrency=cpu_count 用于并行扫描 | brew install trufflehog 或 go install github.com/trufflesecurity/trufflehog/v3@latest |
| 19 | 语义扫描 | semgrep/semgrep | 通过 p/security-audit 和 p/secrets 规则包 | brew install semgrep 或 pipx install semgrep |
| 20 | 思科AI防御技能扫描仪 | 思科人工智能防御/技能扫描器 | 静态(YAML+YARA)、字节码、管道(命令污染)、行为(AST数据流)、触发器(模糊描述)-程序开启模式(无LLM/Meta/VirusTotal/AI防御云,所有这些都需要API密钥) | 持久 skill-scanner (首选-- uv tool install cisco-ai-skill-scanner) → uvx --from cisco-ai-skill-scanner skill-scanner 回退(设置 CPV_CISCO_SCAN_TIMEOUT_S= 覆盖600s默认值) |
v2.48--已删除gitleaks。 trufflehog(约700个探测器 --concurrency 并行扫描支持)提供超集覆盖。gitleaks运送了约150个探测器,但在可靠的并行扫描下崩溃,因此已从外部扫描仪名单中退役。
v2.48-- cpv-doctor --install-scanners. 新的批处理安装程序通过一个命令(静默和幂等)获取CPV使用的每个扫描仪。它还安装 fclones (丙氧基/氟喹诺酮类),一个基于Rust的重复文件查找器,用作每次CPV扫描的第一步,以跳过重复文件(跨插件共享的README、供应商提供的库、相同的SKILL.md模板)。每个平台级联:macOS= brew install fclones,Linux= snap install fclones 然后 cargo install fclones,Windows=GitHub发布下载 cargo install fclones.根据工具选择退出: CPV_NO__INSTALL=1 (例如。 CPV_NO_FCLONES_INSTALL=1).
v2.48-- cpv-doctor --prune-old-versions. 释放累积的磁盘空间 claude plugin update 不会删除旧版本。两阶段用户体验: --prune-dry-run 预览; --prune-old-versions 实际上删除。始终保持活动版本(以Claude Code在中引用的版本为准 enabledPlugins). --prune-keep N 每个插件保留N个最新版本(默认值1)。
v2.48——URL/归档摄取+松散模式。 position参数现在接受:
- GitHub网址:
https://github.com/owner/repo或速记github:owner/repo--克隆与gh repo clone --depth 1扫描到tmpdir,然后自动清理。 - 地方档案:
*.zip,*.tar.gz,*.tgz,*.tar.bz2,*.tar.xz,*.tar--提取到tmpdir(具有路径遍历保护),扫描,清理。 - 宽松模式 对于扁平技能包:
--loose(别名--bare-folder)绕过.claude-plugin/前提条件。CPV自动检测扁平包装(5+*.md文件,否plugin.json,没有规范skills//SKILL.md布局)并打印HINT推荐--loose在错误消息中。
v2.48--使用dedup扫描一次市场树。 --marketplace 现在将每个插件放在一个tmpdir下,运行 fclones 在整个语料库上删除一次重复的硬链接(缓存不变——硬链接安全地共享索引节点),然后扫描每个插件的重复数据删除暂存。对规范文件的发现会自动传播到最初包含相同内容副本的对等插件(去重没有覆盖漏洞)。现实世界:ai maestro插件(10个插件)每次扫描可保存约1849个重复文件/约21 MB。
v2.48-- cpv-main-menu. 单个交互式入口点通过嵌套的AskUserQuestion子菜单(验证/GitHub/修复/创建/管理/GitHub设置/语义/帮助)路由每个CPV命令。每个菜单/子菜单都包含一个取消/退出选项。当您不记得要直接调用哪个斜线命令时,请使用此选项。
每个外部扫描仪的结果都通过相同的自扫描过滤器链进行路由,CPV适用于自己的规则(cpv_self_scan_skip → 卖方付款→ 开发划痕→ 测试文件→ FP语料库标记→ 每行目录/docstring/注释模式源谓词)。这保证了使用CPV扫描CPV——或扫描任何附带自己的规则目录的插件——永远不会将目录源作为发现。然后,聚合器将所有发现按以下方式分组 (level, rule_id) 因此,每个漏洞类型只显示一次完整的解释,然后是发生次数和上限文件:行列表——有限制的报告大小,没有发现会被默默地删除。
Claude代码文档
CPV根据官方的Claude Code规范验证插件。如果你正在构建一个插件,以下是关键参考:
- 发现插件 --查找和安装插件
- 插件参考 --plugin.json模式、CLI命令、组件规范
- CLI命令参考 --安装、卸载、启用、禁用、更新
- 技能参考 --SKILL.md前体、替换、动态上下文
- 挂钩参考 --27钩事件,匹配,钩类型
- Claude Code发行说明 --最新更改和插件更新
______________________________________________________________________
第1部分:独立验证(通过uvx)
无需安装。 只需运行命令并将其指向您的插件文件夹即可。
入门指南
你需要 紫外线 安装。然后:
# Validate a plugin (runs all 20 checks + linting)
uvx --from git+https://github.com/Emasoft/claude-plugins-validation --with pyyaml \
cpv-remote-validate validate_plugin /path/to/your-plugin就这样 uvx 将CPV临时下载到隔离环境中,在完全环境隔离的情况下运行验证(目标插件的本地配置不能干扰),并显示结果。没有什么是永久安装的。
这 --with pyyaml 标志确保YAML解析器依赖关系可用。
远程启动器
cpv-remote-validate 是验证外部插件的推荐方法。它用环境隔离封装任何CPV脚本,以便目标插件的本地文件(pyproject.toml, .mypy.ini过时的模块副本)不能干扰验证。
# Full plugin validation (short alias)
uvx --from git+https://github.com/Emasoft/claude-plugins-validation --with pyyaml \
cpv-remote-validate plugin /path/to/plugin
# Save a report to a file
uvx --from git+https://github.com/Emasoft/claude-plugins-validation --with pyyaml \
cpv-remote-validate plugin /path/to/plugin -o report.md
# Validate a single skill with strict mode
uvx --from git+https://github.com/Emasoft/claude-plugins-validation --with pyyaml \
cpv-remote-validate skill /path/to/skill --strict
# Security scan
uvx --from git+https://github.com/Emasoft/claude-plugins-validation --with pyyaml \
cpv-remote-validate security /path/to/plugin
# Show help and all available commands
uvx --from git+https://github.com/Emasoft/claude-plugins-validation --with pyyaml \
cpv-remote-validate --help
# From the CPV plugin cache (inside Claude Code):
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/remote_validation.py" plugin /path/to/plugin提示: 创建shell别名以缩短命令: ``bash alias cpv='uvx --from git+https://github.com/Emasoft/claude-plugins-validation --with pyyaml cpv-remote-validate'`那么,只需:cpv plugin /path/to/plugin或cpv skill /path/to/skill --strict`
可用脚本
其中任何一个都可以作为第一个参数传递给 cpv-remote-validate。短别名和完整脚本名称都有效。
| 命令 | 它检查什么 |
|---|---|
plugin | 一切。 运行所有20个子验证器+linting。从这里开始。 |
skill | 技能。 SKILL.md封面,所需章节,描述质量。190多条规则。 |
hook | 胡克。 28种事件类型,5种钩子类型(包括v2.1.118)+ mcp_tool)、脚本路径、bash可移植性。 |
agent | 代理人。 前端字段、命名、工具、模型、技能。 |
command | 命令。 FrontPage、工具名称、参数、命名。 |
security | 安全。 注入、路径遍历、秘密、提示注入、渗透。v2.48:5个外部扫描仪+fclones交叉插件已删除。 |
cache | 快速缓存审核(v2.27.0+)。 CA-01..CA-06——动态占位符、钩子突变、模型分叉、无界输出。 |
telemetry | OTEL遥测供应链风险。 插件环境中的otelHeadersHelper、OTEL_LOG_RAW_API_BODIES、OTEL_LOGO_USER_PROMPTS。 |
scoring | 质量分数。 在结构、文档、安全性和测试方面进行加权。 |
marketplace | 市场。 清单结构、插件条目、源代码引用。支持A/B/C布局 |
settings-marketplace | 设置中的内联市场。 确认 marketplaces Claude Code设置文件中嵌入的条目。 |
local-scope | 本地范围。 (v2.21.0+)验证非git跟踪 .claude/ 项目下的元素-- settings.local.json、被忽视的代理/技能/命令/规则, enabledPlugins 从本地设置。每个被跟踪的元素都被传递给每个元素的FULL验证器。 |
project-scope | 项目范围。 (v2.21.0+)验证跟踪的git .claude/ 元素-- settings.json,跟踪代理/技能/命令/规则/钩子, .mcp.json, CLAUDE.md每个元件的管道深度相同。 |
enterprise | 企业。 作者、许可证、SPDX、关键字、元数据。 |
mcp | MCP。 传输类型、必填字段、OAuth、路径。 |
lsp | LSP。 命令路径、语言ID、文件模式。 |
docs | 文档。 README部分、链接、图片。 |
encoding | 编码。 UTF-8、BOM、行尾、二进制检测。 |
rules | 规则。 rules/\*.md文件的结构和内容。 |
xref | 交叉引用。 代理参考、版本、脚本。 |
doctor | 健康检查。 插件、设置、市场。 --install-scanners (v2.48)使用一个命令安装所有5个外部扫描仪+fclones。 |
lint | 只有棉绒。 所有15种语言(Python、JS、Shell、Go、Rust等)。 |
standardize | 审核+修复。 根据CPV管道约定(CI/CD、hooks、publish.py)对插件进行标准化。 |
选项
这些标志适用于所有验证器:
| Flag | 它做什么 |
|---|---|
--verbose 或 -v | 显示所有结果,包括INFO和PASSED。同时展开报告文件正文。 |
--report PATH | 明确地将聚合报告写入PATH。 |
--json | 输出为JSON(用于脚本和CI/CD)。 |
--strict | 将NIT级别的问题也视为失败。 |
--marketplace-only | 跳过 plugin.json 要求(仅适用于市场分销)。 |
默认输出仅为路径。 没有--json或--report,validate_security.py自动将聚合报告保存到 `$CLAUDE_PROJECT_DIR/reports/security/-
.md (或 $TMPDIR/reports/security/... 当 CLAUDE_PROJECT_DIR 未设置,例如在遥控器上 uvx` 调用)和打印 仅 将简洁的摘要(计数表+判决+插件路径+报告路径)发送到stdout。这保证了调用验证器的代理获得一个微小的、可预测的stdout有效负载,该负载永远不会淹没其上下文窗口。
外部扫描仪始终运行。 没有--no-tirith/--no-trufflehog/--no-semgrep选择退出标志。如果无法在PATH上解析其源二进制文件或无法从其源URL安装,则每个外部扫描仪都会自动跳过,并显示INFO提示。SetCPV_NO_TIRITH_INSTALL=1在阻止容器拉取的CI沙箱中禁用tirith的自动安装回退;集CPV_CISCO_SCAN_TIMEOUT_S=覆盖非常大的树的600s默认值。看 外部安全扫描器 以上为完整库存。
阅读结果
严重级别
| 级别 | 它意味着什么 | 必须修复? |
|---|---|---|
| 关键的 | 插件损坏--无法正常工作 | 是 |
| 重大 | 影响功能或安全的重大问题 | 是 |
| 次要的 | 降低质量但不会损坏任何东西的小问题 | 推荐 |
| 氮化 | 风格挑剔或次要建议 | 仅限 --strict 模式 |
| 警告 | 值得审查的潜在问题 | 否 |
| 信息 | 中立观察(例如,“找到3项技能”) | 否 |
| 通过 | 检查成功通过 | 否 |
退出代码
用于脚本和CI/CD管道:
| 退出代码 | 含义 |
|---|---|
0 | 所有检查均已通过 |
1 | 发现关键问题 |
2 | 发现重大问题 |
3 | 发现轻微问题 |
4 | 发现NIT问题(仅在 --strict 模式) |
______________________________________________________________________
第2部分:克劳德代码插件
适用于Claude Code用户。 只需安装一次CPV,即可在Claude Code中直接获取斜线命令、AI代理和插件管理工具。
安装
有关完整的CLI命令参考,请参阅 官方人类学文档.
# Add the Emasoft marketplace (first time only)
claude plugin marketplace add emasoft-plugins --url https://github.com/Emasoft/emasoft-plugins
# Install CPV (--scope user = available in all your projects, recommended)
claude plugin install claude-plugins-validation@emasoft-plugins --scope user
# OR install for this project only (--scope local, gitignored)
claude plugin install claude-plugins-validation@emasoft-plugins --scope local
# IMPORTANT: Restart Claude Code after installing, or run /reload-plugins管理插件
# Update to the latest version
claude plugin update claude-plugins-validation@emasoft-plugins --scope user
# Disable without removing
claude plugin disable claude-plugins-validation@emasoft-plugins --scope user
# Re-enable
claude plugin enable claude-plugins-validation@emasoft-plugins --scope user
# Uninstall completely
claude plugin uninstall claude-plugins-validation@emasoft-plugins --scope user
# Uninstall but keep persistent data
claude plugin uninstall claude-plugins-validation@emasoft-plugins --scope user --keep-data替换 --scope user 随着 --scope local 或 --scope project 取决于您安装它的位置:
| 范围 | 设置文件 | 谁可以使用它 |
|---|---|---|
user | ~/.claude/settings.json | 您,在所有项目中(默认) |
project | .claude/settings.json | 所有克隆回购的人 |
local | .claude/settings.local.json | 你,只在这个项目中(gitignored) |
发展: claude --plugin-dir ./claude-plugins-validation
AI代理——主界面
当用作Claude Code插件时, 代理是与CPV交互的主要方式每个代理都是一个专门的人工智能助手,它知道要运行哪些脚本,要咨询哪些技能,以及如何指导你完成整个过程。只要告诉克劳德你需要什么,合适的经纪人就会接管。
| 代理 | 它做什么 | 想什么时候问它 |
|---|---|---|
| 插件验证器 | 运行验证脚本并返回严重性报告 | “验证我的插件”,“检查是否已准备好发布” |
| 技能验证代理 | 专业技能验证(基础、严格、OpenSpec、支柱) | “验证此技能”,“检查我的技能.md” |
| 插件修复程序 | 修复 插件 验证错误(机械错误修复) | “修复我的插件中的验证错误”,“修复此plugin.json报告” |
| 市场协调者 | 修复 市场 验证错误 *和* 在布局A和布局B之间运行交互式架构迁移 | “修复市场错误”,“将我的市场迁移到嵌套布局” |
| 语义验证器 | 深度人工智能质量分析——捕捉脚本无法捕捉的东西(见下文) | “检查描述是否与技能实际匹配” |
| 插件管理器 | 完整的插件生命周期:安装、更新、启用、禁用、搜索、健康检查 | “安装插件”、“列出我的插件”和“运行医生” |
| 插件创建者 | 脚手架插件、市场、使用CI/CD发布到GitHub | “创建新插件”、“发布到GitHub”、“设置市场” |
每个代理在调用时都会显示一个菜单,询问您需要什么,并逐步指导您。您不需要记住命令名称或标志。
关注点分离:插件与市场
CPV治疗 插件 和 市场 作为专用验证器、修复代理和错误索引的两个不同关注点。这避免了厨房水槽修复器的问题,即一个代理试图对单个插件进行推理 plugin.json 以及市场 marketplace.json +同时释放管道。
| 问题 | 验证器 | 修复代理 | 错误索引 |
|---|---|---|---|
| 插件 | validate_plugin.py (编排器)+14个组件子验证器(钩子、技能、代理、命令、mcp、lsp、安全、评分、企业、文档、编码、规则、外部参照、基本技能) | plugin-fixer | skills/fix-validation/references/plugin-error-index.md |
| 市场 | validate_marketplace.py, validate_marketplace_pipeline.py, validate_settings_marketplace.py | marketplace-fixer | skills/fix-validation/references/marketplace-error-index.md |
机械修复与架构迁移。 这 fix-validation 和 fix-marketplace-validation 技能做 每次错误的机械修复 --一个规则,一个修复,最少的用户输入。分开的 migrate-marketplace-architecture 技能(由加载 marketplace-fixer)确实如此 交互式建筑转换 与广泛 AskUserQuestion 提示:它引导您完成将布局a中心辐射市场转换为布局B嵌套单仓库市场的过程,反之亦然,包括发布管道、CI和CHANGELOG重组。
支持的市场布局
CPV验证并支持两种市场布局——两者都是一流的:
| 布局 | 形状 | 何时使用 |
|---|---|---|
| 布局A——轮毂和辐条 | 一个引用插件的市场仓库 独立的GitHub仓库 (每个插件一个仓库)。 | 多个作者、来自不同组织的插件、具有独立发布节奏的插件。 |
| 布局B——嵌套单仓库 | 一个包含以下内容的市场回购 将其所有插件作为子目录,具有单一作者和完整的CPV发布规则: publish.py, cliff.toml, CHANGELOG.md,CI,单版本颠簸。 | 单作者,原子跨插件发布,统一CI管道。 |
完整的布局规范和决策标准: skills/create-plugin/references/marketplace-layouts.md.
脚本验证与语义验证
CPV有两个验证层:
| 脚本验证 | 语义验证 | |
|---|---|---|
| 如何 | Python脚本检查结构、语法、类型、交叉引用 | AI代理(Opus)读取文件并评估实际内容 |
| 成本 | 零令牌——在本地运行,即时结果 | ~10-50倍的成本——使用1M上下文的Opus |
| 捕获 | 缺少文件、错误类型、断开路径、编码、安全模式 | 描述错误、说明不清楚、缺少检查点、不切实际的示例、没有退出条件的工作流程 |
| 覆盖 | ~95%的真实问题 | 剩下的~5%只有读者才能理解 |
| 当 | 总是。先运行这个。 | 只有当脚本验证顺利通过,但仍然感觉有问题时。 |
语义验证器总是警告成本,并在运行前要求确认。在大多数情况下,您只需要脚本验证。
条件支柱——通道MCP服务器源代码安全
/cpv-semantic-validation 自动激活 通道源安全 当目标插件的 plugin.json 声明非空 channels 阵列(克劳德代码v2.1.80+研究预览频道)。该支柱读取MCP服务器入口点源代码(Types/JavaScript/Python),并根据 channels-reference.md --没有语法验证器可以执行的检查。
确定性预过滤器(scripts/cpv_channel_source_predicate.py)限制了LLM的阅读,并使不附带频道的插件的支柱完全短路——零opus令牌花费。看 skills/semantic-validation-skill/references/channel-source-security.md 对于四个规则(关键:无发件人门控,关键:无门控的权限中继能力,主要:仅限聊天ID门控,通过:完全门控)。
斜杠命令
22个命令——13个直接运行脚本(零AI令牌),7个生成代理,2个是专门的实用程序脚本。
脚本命令(免费——无AI标记)
| 命令 | 它做什么 |
|---|---|
| `/cpv-validate-plugin | |
| ` | 完全验证 --运行所有20个子验证器 |
| `/cpv-validate-skill | |
| ` | 技能验证(190+条规则) |
| `/cpv-validate-cache | |
| ` | 缓存审核 --跑步 validate_cache.py 针对插件或项目根。捕获六个记录在案的Anthropic提示缓存无效模式(CA-01.CA-06),这些模式使API每转成本增加5-10倍。默认输出仅为路径。看 上面的缓存部分 为了上下文,以及 commands/cpv-validate-cache.md 用于按规则参考。 |
/cpv-validate-github-plugin | 无需安装即可验证GitHub插件 |
/cpv-validate-github-marketplace | 无需注册即可验证GitHub市场 |
| `/cpv-validate-project-scope | |
| ` | 验证项目下的git tracked(项目范围)Claude Code配置: .claude/settings.json, .mcp.json、代理人、技能、命令、规则、, CLAUDE.md,跟踪钩子/mcp/lsp子树。 v2.21.0+: 现在,每个被跟踪的元素都运行每个元素的完整验证器管道(与 cpv-validate-plugin).拒绝 autoMemoryDirectory,仅管理密钥、env中的秘密、绝对主路径。 |
| `/cpv-validate-local-scope | |
| ` | 在项目下验证非git跟踪(本地范围)的Claude Code配置: .claude/settings.local.json, CLAUDE.local.md,根据项目MCP状态,识别代理/技能/命令/规则 ~/.claude.json,以及本地启用的插件 enabledPlugins. v2.21.0+: 即使在未追踪的内容上,每个元素的深度管道也会运行;绝对路径规则保持宽松(个人路径正常),但仅管理/全局配置键仍被拒绝。 |
/cpv-doctor | 健康检查已安装的插件、设置、市场 |
/cpv-list-plugins | 列出已安装的插件及其版本和状态 |
| `/cpv-bump-version | |
| ` | Bump插件版本+运行完整的发布管道(TRDD-bbff5bc5: publish.py --patch/--minor/--major) |
/cpv-setup-branch-rules | 创建/更新GitHub规则集,强制CI作为所需的状态检查(服务器端门——幂等,自动检测插件与市场,保留现有的机器人绕过参与者) |
/cpv-setup-branch-rules-generic --check "job-name" | 与项目无关的变体,适用于任何GitHub仓库(而不仅仅是CPV插件)。需要明确 --check 上下文,没有硬编码的默认值。也可用作 uvx branch-rules-install 用于无需本地安装的一次性调用。 纯Python实现——在Linux、macOS和Windows上工作相同(bash变体在v2.65.2中被删除,使CPV完全跨平台)。 |
/cpv-version | 显示CPV版本 |
| `/cpv-strip-dev-parts | |
| --dry-run` | 第二阶段(v2.52.0+)。 移动仅限开发人员的工件(默认值: tests/)到每个插件的git子模块。PSS模式——为具有重型夹具树的插件节省了安装大小。始终预览 --dry-run 之前 --auto。状态机恢复崩溃的运行。 |
| `/cpv-refresh-readme | |
| ` | 第5阶段(v2.57.0+)。 自动刷新 ` 从文件系统中获取插件README中的块。 --check` 如果README更改(CI门),则模式退出1。 |
| `/cpv-add-component | |
| --type ... --name ...` | 第10阶段(v2.61.0+)。 在现有插件中添加新技能/agent/command/hook/mcp,而无需重新运行生成器。Stubs包括传递validate_plugin的有效frontmatter。 |
| `/cpv-migrate-marketplace | |
| ` | 第2.6阶段(v2.59.0+)。 规范化现有的marketplace.json:转换 source.url → 规范的 source.repo 表格,通过以下方式探索每个条目的真实性 gh api (重试包装),表面404死repos。原子写入。 |
代理命令(交互式——使用AI令牌)
| 命令 | 代理 | 它的作用 |
|---|---|---|
/cpv-validate | 插件验证器 | 交互式:询问要验证什么,运行正确的脚本 |
/cpv-manage | 插件管理器 | 交互式:安装、更新、启用、禁用、搜索、医生 |
/cpv-create | 插件创建者 | 交互式:创建插件、市场、发布到GitHub |
/cpv-fix-validation | 插件修复程序 | 修复 插件 报告中的验证问题 |
/cpv-fix-marketplace-validation | 市场修复程序 | 修复 市场 验证问题和运行架构迁移 |
| `/cpv-cache-optimize | ||
| [--broader]` | 缓存优化器代理 | 缓存感知优化器。 运行完整验证→ fix → 重新验证提示缓存规则的循环(CA-01..CA-06)。随着 --broader,还对插件的技能/代理/命令执行缓存感知重构/ CLAUDE.md /rules——适用于任何使用Claude Code的项目,而不仅仅是插件。每个材料重构都通过以下方式获得批准 AskUserQuestion 在编辑着陆之前。 |
| `/cpv-semantic-validation | ||
| ` | 语义验证器 | 深度人工智能质量分析(Opus,昂贵,明确选择加入) |
专用实用程序命令
| 命令 | 它做什么 |
|---|---|
| `/cpv-link-plugin | |
| ` | 将本地插件目录链接到Claude Code进行实时开发 |
| `/cpv-validate-settings-marketplace | |
| ` | 内联验证 marketplaces 设置文件中嵌入的条目 |
______________________________________________________________________
对于开发者
Project Overview
| 类别 | 计数 | 描述 |
|---|---|---|
| 验证脚本 | 20 | Python验证器(15个插件+3个市场+2个范围),涵盖插件包、市场和最终用户 .claude/ 配置 |
| 管理脚本 | 13 | 插件生命周期、市场运营、脚手架 |
| 代理 | 7 | 人工智能驱动的验证、修复和管理 |
| 技能 | 14 | 验证、管理、发布、修复、迁移和自动通知工作流 |
| 命令 | 20 | 12个直接脚本+6个代理支持+2个专用实用程序命令 |
| 测试 | 2056+ | 覆盖所有模块 |
Validation Scripts
| 脚本 | 目的 |
|---|
始终通过启动器调用验证器。 直接调用来自 插件缓存被拒绝check_remote_execution_guard(). 使用python "${CLAUDE_PLUGIN_ROOT}/scripts/remote_validation.py". 看 规范启动器调用 在......下面 或python "${CLAUDE_PLUGIN_ROOT}/scripts/remote_validation.py" --help为了 完整的别名表。
| 脚本 | 启动器别名 | 目的 |
|---|---|---|
validate_plugin.py | plugin | 主编排器——运行所有20个子验证器 |
validate_skill_comprehensive.py | skill | 综合技能验证器(190+条规则) |
validate_hook.py | hook | 钩子配置验证器(28个事件,5种类型) |
validate_agent.py | agent | 代理定义验证器 |
validate_command.py | command | 命令定义验证器 |
validate_mcp.py | mcp | MCP服务器配置验证器 |
validate_lsp.py | lsp | LSP服务器配置验证器 |
validate_marketplace.py | marketplace | 市场清单验证器(A/B/C布局) |
validate_marketplace_pipeline.py | validate_marketplace_pipeline | 市场发布管道验证器(publish.py、CI、CHANGELOG) |
validate_settings_marketplace.py | settings-marketplace | 设置验证器中的内联市场 |
validate_security.py | security | 安全漏洞扫描程序(5个外部扫描程序+fclones已清除) |
validate_cache.py | cache | 提示缓存失效审核(CA-01..CA-06,v2.27.0+) |
validate_telemetry.py | telemetry | OTEL遥测供应链风险验证器 |
validate_scoring.py | scoring | 质量分数计算器 |
validate_enterprise.py | enterprise | 企业合规验证器 |
validate_documentation.py | docs | 文件质量检查员 |
validate_encoding.py | encoding | 文件编码验证器 |
validate_rules.py | rules | 规则目录验证器 |
validate_xref.py | xref | 交叉引用验证器 |
validate_local_scope.py | local-scope | 本地范围 .claude/ 验证器(v2.21.0+)--非git跟踪设置/代理/技能/命令/规则+启用的插件 |
validate_project_scope.py | project-scope | 项目范围 .claude/ 验证器(v2.21.0+)--git跟踪设置/代理/技能/命令/规则+跟踪钩子/mcp/lsp子树 |
Management Scripts
| 脚本 | 目的 |
|---|---|
manage_plugin.py | 安装、卸载、更新、启用、禁用 |
manage_registry.py | 列出并搜索已安装的插件 |
manage_doctor.py | 健康检查和自动修复 |
manage_marketplace.py | 市场注册 |
manage_remote.py | 远程插件操作 |
manage_github_validate.py | 无需安装即可验证GitHub存储库 |
bump_version.py | 语义版本碰撞 |
cpv_management_common.py | 共享基础设施 |
Creation and Utility Scripts
| 脚本 | 目的 |
|---|---|
generate_plugin_repo.py | 构建一个完整的插件库 |
generate_marketplace_repo.py | 搭建市场中心 |
standardize_plugin.py | 审核并修复插件仓库 |
standardize_marketplace.py | 审核并修复市场回购 |
cpv_lint_engine.py | Repo-wide lint引擎(15种语言,由调用 validate_plugin.py) |
cpv_token_cost.py | 代币成本报告 |
smart_exec.py | 跨平台脚本执行器 |
cli.py | uvx/pip的CLI入口点 |
______________________________________________________________________
需求
必需
| 需求 | 为什么 | 如何安装 | |
|---|---|---|---|
| Python 3.12+ | 所有验证脚本的运行时 | python.org 或您的操作系统包管理器 | |
| 紫外线 | 运行CPV脚本并管理依赖关系。提供 uvx 无需安装即可从GitHub运行CPV | `curl -LsSf https://astral.sh/uv/install.sh \ | sh` (文档) |
| 克劳德代码 | 第2部分(插件使用)需要。第1部分(独立)不需要 | code.claude.com |
CPV用途 uv 运行脚本(uv run),安装Python linters(ruff, mypy)当在本地找不到时(uvx),并管理虚拟环境。Python依赖关系,如 pyyaml 自动安装。
可选工具(增强棉绒)
CPV在中验证脚本 6种语言。对于每种语言,它首先尝试本地安装,然后 uvx/npx。如果没有找到过梁,CPV会报告缺失的内容并跳过该检查。
| 语言 | Linter | 如何安装 |
|---|---|---|
| python (.py) | ruff+mypy | 包括通过 uv --始终可用 |
| 外壳 (.sh、.bash) | 外壳检查 | brew install shellcheck 或 shellcheck.net |
| JavaScript/TypeScript (.js、.ts) | eslint | npm install -g eslint 或 |
| PowerShell (.ps1) | PSScriptAnalyzer | pwsh -c 'Install-Module PSScriptAnalyzer -Scope CurrentUser' |
| 去 (.go) | 兽医 | go.dev/dl |
| 锈 (Cargo.toml) | 货物检查 | rustup.rs |
其他可选工具:
| 工具 | 它支持什么 | 如何安装 |
|---|---|---|
| 鬼 (GitHub CLI) | 远程插件/市场验证和发布 | brew install gh 或 |
任何验证都不需要API密钥、帐户或云服务。
故障排除
| 问题 | 解决方案 | |
|---|---|---|
uvx 找不到命令 | 安装uv: `curl -LsSf https://astral.sh/uv/install.sh \ | sh` |
| 安装后插件未加载 | 重新启动Claude Code,然后运行 /cpv-doctor | |
| 导入错误 | 运行 uv sync 在CPV目录中 | |
| 关键/重大问题(退出1-2) | 必须修复——插件可能已损坏或不安全 | |
| 次要问题(退出3) | 建议——方便时进行修复 | |
| NIT问题(出口4) | 仅适用于 --strict 模式--可选 |
许可证
MIT许可证——请参阅许可证文件。
作者
易玛软件(713559+Emasoft@users.noreply.github.com)
