name: maintain-cross-platform description: “用于准备发布、验证跨平台兼容性或更新安装基础设施时使用。维护AgentSys三平台架构的元技能。” metadata: short-description: “元技能:维护三平台架构” scope: local audience: repo-maintainers
维护跨平台架构
目的: 全面了解AgentSys的跨平台基础设施,用于发布准备、验证和维护。
范围: 仅限此存储库的本地技能。包含特定文件位置、转换规则和自动化模式,用于维护Claude Code + OpenCode + Codex CLI兼容性。
关键规则
- 3个平台必须工作 - Claude Code、OpenCode、Codex CLI。无例外。
- 每次推送前验证 - 预推送钩子自动运行6个验证器。
- 所有版本字段必须对齐 - 总共11个文件(package.json + 10个plugin.json文件)。
- 文档必须准确 - 计数、路径和平台引用由CI验证。
- 更新此技能 - 如果发现不对齐或自动化机会,更新此文件。
平台差异(完整矩阵)
配置
| 方面 | Claude Code | OpenCode | Codex CLI |
|---|---|---|---|
| 配置格式 | JSON | JSON/JSONC | TOML |
| 配置位置 | ~/.claude/settings.json |
~/.config/opencode/opencode.json |
~/.codex/config.toml |
| 状态目录 | .claude/ |
.opencode/ |
.codex/ |
| 命令前缀 | / |
/ |
$ |
| 项目说明 | CLAUDE.md |
AGENTS.md(读取CLAUDE.md) |
AGENTS.md |
组件位置
| 组件 | Claude Code | OpenCode | Codex CLI |
|---|---|---|---|
| 命令 | 插件 commands/ |
~/.config/opencode/commands/ |
N/A(使用技能) |
| 代理 | 插件 agents/ |
~/.config/opencode/agents/ |
N/A(使用MCP) |
| 技能 | 插件 skills/ |
.opencode/skills/(单数) |
~/.codex/skills/ |
| 钩子 | 插件 hooks/ |
插件 hooks/ |
插件 hooks/ |
安装位置(此存储库)
| 平台 | 包复制 | 命令 | 代理 | 技能 | 配置 |
|---|---|---|---|---|---|
| Claude Code | 通过市场 | 插件捆绑 | 插件捆绑 | 插件捆绑 | N/A |
| OpenCode | ~/.agentsys/ |
~/.config/opencode/commands/ |
~/.config/opencode/agents/(29个文件) |
N/A | ~/.config/opencode/opencode.json |
| Codex CLI | ~/.agentsys/ |
N/A | N/A | ~/.codex/skills/(9个目录) |
~/.codex/config.toml |
Frontmatter差异
命令Frontmatter:
# Claude Code
---
description: 任务描述
argument-hint: "[args]"
allowed-tools: Bash(git:*), Read, Task
---
# OpenCode(由安装程序转换)
---
description: 任务描述
agent: general
# 模型字段已移除(使用用户默认模型)
---
# Codex(技能使用不同格式)
---
name: skill-name
description: "当用户询问“触发”时使用。执行X。"
---
代理Frontmatter:
# Claude Code
---
name: agent-name
description: 代理描述
tools: Bash(git:*), Read, Edit, Task
model: sonnet
---
# OpenCode(由安装程序转换)
---
name: agent-name
description: 代理描述
mode: subagent
# 模型字段已移除(OpenCode尚不支持每个代理的模型)
permission:
read: allow
edit: allow
bash: ask
task: allow
---
转换规则(bin/cli.js处理):
| Claude Code | OpenCode |
|---|---|
tools: Bash(git:*) |
permission: { bash: "allow" } |
tools: Read |
permission: { read: "allow" } |
tools: Edit, Write |
permission: { edit: "allow" } |
tools: Task |
permission: { task: "allow" } |
model: sonnet/opus/haiku |
已移除(OpenCode使用用户默认) |
关键: bin/cli.js中的--strip-models标志为没有访问所有三个模型层的OpenCode用户移除模型规范。
文件位置(此存储库)
安装基础设施
| 文件 | 目的 |
|---|---|
bin/cli.js |
主安装程序(811行) - 处理所有3个平台 |
scripts/setup-hooks.js |
Git钩子安装程序(预提交、预推送) |
adapters/opencode-plugin/ |
原生OpenCode TypeScript插件 |
adapters/opencode/ |
OpenCode安装脚本(旧版) |
adapters/codex/ |
Codex安装脚本(旧版) |
mcp-server/index.js |
跨平台MCP服务器 |
验证脚本(所有在CI + 预推送)
| 脚本 | 验证内容 | 退出1如果 |
|---|---|---|
scripts/validate-plugins.js |
插件结构、plugin.json有效性 | 无效plugin.json |
scripts/validate-cross-platform.js |
3平台兼容性 | 平台特定代码 |
scripts/validate-repo-consistency.js |
存储库完整性 | 不一致性 |
scripts/check-hardcoded-paths.js |
无硬编码.claude/路径 |
发现硬编码路径 |
scripts/validate-counts.js |
文档准确性(代理、插件、技能、版本) | 计数不匹配 |
scripts/validate-cross-platform-docs.js |
平台文档一致性 | 文档冲突 |
转换映射(bin/cli.js)
bin/cli.js中的搜索标记:
PLUGINS_ARRAY- 第138行 - 为Claude Code安装的插件OPENCODE_COMMAND_MAPPINGS- 第242行 - 为OpenCode复制的命令CODEX_SKILL_MAPPINGS- 第~280行 - 为Codex创建的技能
OPENCODE_COMMAND_MAPPINGS格式:
['dest-file.md', 'plugin-name', 'source-file.md']
CODEX_SKILL_MAPPINGS格式:
['skill-name', 'plugin-name', 'source-file.md', 'Trigger description with "phrases"']
版本字段(总共11个文件)
所有必须具有相同版本以发布:
package.json- 第3行.claude-plugin/plugin.json- 根插件.claude-plugin/marketplace.json- 9个插件条目mcp-server/index.js- 搜索:MCP_SERVER_VERSION5-13.plugins/*/. claude-plugin/plugin.json- 所有9个插件
快速检查:
grep -r '"version"' package.json plugins/*/.claude-plugin/plugin.json .claude-plugin/plugin.json
发布流程(RC和生产)
RC发布(3.X.0-rc.N)
步骤1:更新版本
# 在所有11个文件中提升到RC版本
NEW_VERSION="3.6.0-rc.1"
# package.json
npm version $NEW_VERSION --no-git-tag-version
# 所有plugin.json文件(9个插件 + 根)
find . -name "plugin.json" -path "*/.claude-plugin/*" -exec sed -i '' "s/\"version\": \".*\"/\"version\": \"$NEW_VERSION\"/" {} \;
# mcp-server/index.js
sed -i '' "s/version: '.*'/version: '$NEW_VERSION'/" mcp-server/index.js
步骤2:更新CHANGELOG.md
## [3.6.0-rc.1] - 2026-01-30
### 新增
- 功能描述
### 变更
- 变更描述
### 修复
- 错误修复描述
步骤3:验证
npm run validate # 所有6个验证器
npm test # 所有测试
npm pack --dry-run # 包构建
步骤4:提交和标签
git add -A
git commit -m "chore: release v3.6.0-rc.1"
git tag v3.6.0-rc.1
git push origin main --tags
步骤5:验证
# 等待GitHub Actions
npm view agentsys@rc version # 应显示3.6.0-rc.1
生产发布(3.X.0)
与RC相同,但:
- 从版本中移除
-rc.N后缀 - 使用
v3.X.0标签(无后缀) - npm自动发布到
latest标签
每次发布的变化
总是更新
- 版本字段(11个文件) - 见“版本字段”部分
- CHANGELOG.md - 在顶部添加新条目
- 运行验证 -
npm run validate(包括所有6个验证器) - 运行测试 -
npm test(1400+测试) - 包构建 -
npm pack --dry-run
如果添加新命令
- 基于约定的发现 - 插件从
plugins/*/自动发现,带有.claude-plugin/plugin.json - 命令自动发现 - 从
plugins/*/commands/*.md文件 - Codex触发短语 - 在命令文件中使用
codex-descriptionfrontmatter - docs/INSTALLATION.md - 添加
/plugin install <name>@agentsys行 - .claude-plugin/marketplace.json - 添加插件条目到
plugins数组 - README.md - 添加到命令表
- 验证将捕获 - 如果计数不匹配(插件计数)
如果添加新代理
- 无需更改 - 安装程序自动复制代理到OpenCode
~/.config/opencode/agents/ - Codex使用MCP - 代理不直接支持,使用MCP工具代替
- 验证将捕获 - 如果基于文件的代理计数变化
如果添加新技能
- Codex需要触发短语 - 描述必须包括“当用户询问时使用…”
- 验证将捕获 - 如果技能计数不匹配
如果添加新MCP工具
- mcp-server/index.js - 添加到TOOLS数组和toolHandlers
- .claude-plugin/marketplace.json - 添加到
mcpServer.tools数组 - bin/cli.js - 更新MCP工具控制台输出(OpenCode + Codex)
- README.md - 如果用户面向,添加到MCP工具表
如果库模块更改
- lib/{module}/ - 进行更改
- lib/index.js - 如果是新模块,导出
- 运行同步 -
./scripts/sync-lib.sh(或agentsys-dev sync-lib)复制lib/到所有9个插件 - 提交两者 - 源在lib/ AND 副本在plugins/*/lib/
平台特定转换(bin/cli.js做什么)
OpenCode转换
1. 移除模型规范(如果–strip-models)
// 原始(Claude Code):
model: sonnet
// 转换后(OpenCode):
(字段完全移除)
原因: 并非所有OpenCode用户都能访问所有三个模型层。使用用户默认模型代替。
2. 转换工具为权限
// 原始:
tools: Bash(git:*), Read, Edit, Task
// 转换后:
permission:
bash: allow
read: allow
edit: allow
task: allow
3. 替换环境变量
// 原始:
${CLAUDE_PLUGIN_ROOT}
// 转换后:
${PLUGIN_ROOT}
4. 在require()中规范化Windows路径
// 原始:
require('${CLAUDE_PLUGIN_ROOT}/lib/module.js')
// 转换后:
require('${PLUGIN_ROOT}'.replace(/\\/g, '/') + '/lib/module.js')
原因: Windows反斜杠(C:\Users\...)破坏JavaScript字符串转义。
Codex转换
1. 命令 → 技能转换
// 命令变为带有触发短语的技能
// 原始命令:/next-task
// 变为:$next-task with SKILL.md
// SKILL.md要求:
---
name: next-task
description: "当用户询问“查找下一个任务”、“自动化工作流”时使用。主协调器。”
---
2. 代理逻辑 → 技能内联
- 代理在Codex中不直接支持
- 代理工作流嵌入在技能说明中
- 或使用MCP工具调用代理逻辑
验证套件(预推送 + CI)
validate:plugins
文件: scripts/validate-plugins.js
检查:
- plugin.json结构有效性
- 必填字段存在
- 命令/代理/技能如声明存在
退出1如果: 无效plugin.json
validate:cross-platform
文件: scripts/validate-cross-platform.js
检查:
- 代码在所有3个平台上工作
- 无平台特定假设
- 正确使用AI_STATE_DIR
退出1如果: 检测到平台特定代码
validate:consistency
文件: scripts/validate-repo-consistency.js
检查:
- 存储库完整性
- 文件结构一致性
退出1如果: 发现不一致性
validate:paths
文件: scripts/check-hardcoded-paths.js
检查:
- 在代理/命令/技能中无硬编码
.claude/路径 - 排除:docs、enhance/中的SKILL.md、RESEARCH.md、examples
检测模式:
/\.claude\/(?!.*\(example\)|.*Platform|.*State directory)/
/\.opencode\/(?!.*\(example\)|.*Platform)/
/\.codex\/(?!.*\(example\)|.*Platform)/
安全上下文(跳过):
- 文档表(
| State Dir |) - 平台比较示例
- 技能文档(enhance/* SKILL.md)
- 清单引用
退出1如果: 在安全上下文外发现硬编码路径
validate:counts
文件: scripts/validate-counts.js
检查:
- 插件计数(9)跨README、CLAUDE.md、AGENTS.md、package.json、docs
- 代理计数(39总计 = 29基于文件 + 10基于角色)跨所有文档
- 技能计数(23)跨所有文档
- 版本对齐(package.json匹配所有10个plugin.json文件)
- CLAUDE.md ↔ AGENTS.md关键规则对齐(>90%相似性)
实际计数(文件系统):
- 插件:
plugins/中的9个目录 - 基于文件的代理:
plugins/*/agents/中的29个.md文件 - 基于角色的代理:10个(来自audit-project,内联定义)
- 技能:
plugins/*/skills/*/SKILL.md中的23个SKILL.md文件
智能验证:
- 接受“39代理”或“39代理(29基于文件 + 10基于角色)”
- 跳过插件特定计数如“next-task(12代理)”
- 仅验证顶级总数
退出1如果: 计数不匹配或版本不对齐
validate:platform-docs
文件: scripts/validate-cross-platform-docs.js
检查:
- 命令前缀一致性(/ vs $)
- 状态目录引用平台适当
- 功能对等(所有9个命令为所有平台记录)
- 安装说明一致
- MCP服务器配置正确
智能验证:
- 跳过比较表
- 跳过清单引用
- 跳过技能名称提及(如
enhance-claude-memory) - 跳过文档示例
退出1如果: 平台冲突或缺失功能
预推送钩子(自动执行)
文件: scripts/setup-hooks.js → 创建.git/hooks/pre-push
阶段1:验证套件
npm run validate # 运行所有6个验证器
如果任何验证器失败,阻止。
阶段2:增强内容检查 检测修改:
agents/*.mdskills/*/SKILL.mdhooks/*.mdprompts/*.md
提示:“您是否已运行/enhance在这些文件上?(y/N)” 如果“N”,阻止(根据CLAUDE.md关键规则#7)。
阶段3:发布标签验证 如果推送版本标签(v*):
- 运行
npm test - 运行
npm pack --dry-run - 如果任一失败,阻止
跳过钩子: git push --no-verify(谨慎使用)
安装程序深度解析(bin/cli.js)
交互流程
- 平台选择 - 多选:Claude Code、OpenCode、Codex CLI
- 清理旧安装 - 如果存在,移除
~/.agentsys/ - 复制包 - 从npm全局到
~/.agentsys/ - 安装依赖 - 在包和mcp-server中运行
npm install --production - 每个平台安装:
- Claude Code:添加市场,安装9个插件
- OpenCode:复制命令、代理;更新配置;安装原生插件
- Codex:创建带有触发短语的技能;更新配置
关键函数
installForClaude() - 第116行
- 添加市场:
claude plugin marketplace add agent-sh/agentsys - 安装9个插件:
claude plugin install {plugin}@agentsys - 命令:/next-task, /ship, /deslop, /audit-project, /drift-detect, /enhance, /perf, /sync-docs, /repo-map
installForOpenCode(installDir, options) - 第165行
- 创建目录:
~/.config/opencode/commands/,~/.config/opencode/plugins/agentsys.ts - 从
adapters/opencode-plugin/复制原生插件 - 使用
OPENCODE_COMMAND_MAPPINGS转换命令 - 转换代理(工具 → 权限,如果–strip-models,剥离模型)
- 更新
~/.config/opencode/opencode.json与MCP配置
installForCodex(installDir) - 第330+行
- 创建目录:
~/.codex/skills/ - 使用
CODEX_SKILL_MAPPINGS创建SKILL.md文件 - 每个技能获取触发短语描述
- 更新
~/.codex/config.toml与MCP配置
命令映射(OpenCode)
OPENCODE_COMMAND_MAPPINGS - 第~242行:
const commandMappings = [
['deslop.md', 'deslop', 'deslop.md'],
['enhance.md', 'enhance', 'enhance.md'],
['next-task.md', 'next-task', 'next-task.md'],
['delivery-approval.md', 'next-task', 'delivery-approval.md'],
['sync-docs.md', 'sync-docs', 'sync-docs.md'],
['audit-project.md', 'audit-project', 'audit-project.md'],
['drift-detect.md', 'drift-detect', 'drift-detect.md'],
['repo-map.md', 'repo-map', 'repo-map.md'],
['perf.md', 'perf', 'perf.md'],
['ship.md', 'ship', 'ship.md']
];
技能映射(Codex)
CODEX_SKILL_MAPPINGS - 第~280+行:
const skillMappings = [
['next-task', 'next-task', 'next-task.md',
'当用户询问“查找下一个任务”、“自动化工作流”时使用。主工作流协调器。'],
['ship', 'ship', 'ship.md',
'当用户询问“创建PR”、“运送更改”、“合并PR”时使用。完整PR工作流。'],
// ... 7 more
];
添加新功能(逐步)
新命令(例如,/my-command)
1. 创建命令文件:
plugins/my-plugin/commands/my-command.md
2. 更新 bin/cli.js - 3个位置:
a) PLUGINS_ARRAY(如果新插件):
// 第~138行
const plugins = ['next-task', 'ship', ..., 'my-plugin'];
b) OPENCODE_COMMAND_MAPPINGS:
// 第~242行
['my-command.md', 'my-plugin', 'my-command.md'],
c) CODEX_SKILL_MAPPINGS:
// 第~280行
['my-command', 'my-plugin', 'my-command.md',
'当用户询问“触发短语”时使用。能力描述。'],
3. 更新 marketplace.json:
// .claude-plugin/marketplace.json - 添加到插件数组
{
"name": "my-plugin",
"version": "3.5.0",
"description": "...",
"path": "plugins/my-plugin"
}
4. 创建 plugin.json:
plugins/my-plugin/.claude-plugin/plugin.json
5. 更新文档:
docs/INSTALLATION.md- 添加安装命令README.md- 添加到命令表- CHANGELOG.md - 添加到“新增”下
6. 验证:
npm run validate # 将捕获缺失映射
新代理(例如,my-agent)
1. 创建代理文件:
plugins/my-plugin/agents/my-agent.md
带有适当frontmatter:
---
name: my-agent
description: 简要描述
tools: Bash(git:*), Read, Edit
model: sonnet
---
2. 安装程序自动处理:
- ✅ 复制到
~/.config/opencode/agents/my-agent.md - ✅ 转换frontmatter(工具 → 权限)
- ✅ 如果–strip-models标志,剥离模型
- ✅ 在require()中规范化Windows路径
3. 无需Codex更改 - Codex使用MCP,非代理
4. 验证:
npm run validate:counts # 如果添加,将更新代理计数
新技能(例如,my-skill)
1. 创建技能目录和文件:
plugins/my-plugin/skills/my-skill/SKILL.md
带有frontmatter:
---
name: my-skill
description: "当用户询问“触发”时使用。描述。”
metadata:
short-description: "简要"
---
2. 如果用户可调用(Codex): 添加到bin/cli.js中的CODEX_SKILL_MAPPINGS
3. 验证:
npm run validate:counts # 将检查技能计数匹配
新MCP工具
1. 添加到 mcp-server/index.js:
a) TOOLS数组:
const TOOLS = [
// ...
{
name: 'my_tool',
description: '工具描述',
inputSchema: {
type: 'object',
properties: { param: { type: 'string' } },
required: ['param']
}
}
];
b) toolHandlers对象:
const toolHandlers = {
// ...
my_tool: async (params) => {
// 实现
return xplat.successResponse({ result: 'data' });
}
};
2. 更新 marketplace.json:
// .claude-plugin/marketplace.json
"mcpServer": {
"tools": ["workflow_status", ..., "my_tool"]
}
3. 更新文档:
README.md- 如果用户面向,添加到功能
常见发布陷阱(以及验证器如何捕获)
陷阱1:忘记更新插件版本
# 症状:
- package.json 显示 3.6.0
- plugins/next-task/.claude-plugin/plugin.json 显示 3.5.0
# 捕获者:
npm run validate:counts
# → [ERROR] 版本不对齐
陷阱2:硬编码 .claude/ 路径
# 症状:
- 代理包含:`.claude/flow.json`
- OpenCode 和 Codex 中断
# 捕获者:
npm run validate:paths
# → [ERROR] 在 agents/my-agent.md:42 发现硬编码路径
陷阱3:代理计数不匹配
# 症状:
- 添加了新代理
- README 仍显示“39代理”
- 实际上现在40个
# 捕获者:
npm run validate:counts
# → [ERROR] README.md 代理:预期40,实际39
陷阱4:缺失触发短语(Codex)
# 症状:
- Codex 技能有:description: "主协调器"
- 无触发短语
- Codex 不知道何时调用
# 捕获者:
/enhance --focus=skills
# → [MEDIUM] 描述缺失触发短语
陷阱5:OpenCode标签太长
# 症状:
- AskUserQuestion 标签:"#123: 修复 ProfileScreen 组件中的身份验证超时"
- 65字符
- OpenCode 抛出错误
# 预防:
在 task-discoverer 代理中使用 truncateLabel() 函数
为 OpenCode 兼容性,最多30字符
陷阱6:忘记运行 /enhance
# 症状:
- 修改了代理/技能
- 未运行 /enhance
- 仍然推送
# 捕获者:
预推送钩子提示:“您是否已运行 /enhance?(y/N)”
如果“N”,阻止推送
自动化机会(始终考虑)
当前自动化
- ✅ lib/ 同步 - 预提交钩子自动同步 lib/ 到 plugins/
- ✅ 验证 - 预推送钩子运行6个验证器
- ✅ 代理转换 - 安装程序自动转换frontmatter
- ✅ 模型剥离 -
--strip-models标志为 OpenCode - ✅ 版本检查 - validate:counts 捕获不对齐
- ✅ 路径检查 - validate:paths 捕获硬编码路径
- ✅ /enhance 执行 - 预推送钩子提示
潜在改进
1. 版本提升自动化
# 当前:在11个文件中手动查找/替换
# 机会:原子性更新所有版本字段的脚本
# 脚本:scripts/bump-version.js <new-version>
2. CHANGELOG 条目生成
# 当前:手动创建条目
# 机会:解析自上次标签以来的git日志,分类提交
# 脚本:scripts/generate-changelog-entry.js
3. 跨平台安装测试
# 当前:在每个平台上手动测试
# 机会:每个平台的Docker容器,自动化烟雾测试
# 脚本:scripts/test-install-all-platforms.sh
4. 代理计数自动更新
# 当前:在文档中手动更新计数
# 机会:从文件系统提取计数,自动更新文档
# 脚本:scripts/update-doc-counts.js
5. Marketplace.json 同步
# 当前:手动更新 .claude-plugin/marketplace.json
# 机会:从 plugins/ 目录结构生成
# 脚本:scripts/sync-marketplace-manifest.js
如果您识别更多自动化机会,请添加到此。
您的责任(使用此技能的代理)
推送前
-
运行验证:
npm run validate修复发现的任何问题。
-
如果修改了增强内容(代理/技能/钩子/提示):
/enhance处理高确定性发现。
-
检查此技能中的不对齐:
- 新脚本添加但未在此记录?
- 发现新平台差异?
- 需要新验证模式?
- 如果是,更新此文件
-
考虑自动化:
- 这个手动步骤可以自动化吗?
- 我们正在重复的模式?
- 添加到“潜在改进”部分
发布前
-
阅读发布清单:
cat checklists/release.md -
更新所有11个版本字段:
- 使用版本提升脚本(如果存在)或手动查找/替换
- 验证:
npm run validate:counts
-
更新 CHANGELOG.md:
- 在顶部添加带日期的条目
- 分类:新增/变更/修复/移除
-
运行完全验证:
npm test # 1400+测试 npm run validate # 所有6个验证器 npm pack --dry-run # 包构建 -
测试跨平台安装:
npm pack npm install -g ./agentsys-*.tgz echo "1 2 3" | agentsys # 测试安装程序 -
提交和标签:
git add -A git commit -m "chore: release v3.X.0-rc.N" git tag v3.X.0-rc.N git push origin main --tags -
验证 npm 发布:
# 等待GitHub Actions发布工作流 npm view agentsys@rc version # 对于RC npm view agentsys version # 对于生产
更新不对齐
如果您在工作中发现以下任何情况:
新脚本未在此记录:
- 阅读脚本以了解其作用
- 添加到相关部分(验证套件、安装等)
- 提交:“docs(maintain-cross-platform): 记录 {script-name}”
发现新平台差异:
- 在所有3个平台上测试以确认
- 添加到“平台差异”矩阵
- 如果导致问题,添加到“常见陷阱”
- 如果需要,更新相关验证脚本
需要新验证模式:
- 考虑:可以扩展现有验证器吗?
- 如果需要新验证器,创建在
scripts/validate-{name}.js - 添加到
package.json验证脚本 - 在“验证套件”部分记录
- 如果相关,更新“预推送钩子”部分
识别自动化机会:
- 添加到“潜在改进”与描述
- 估计努力(简单/中等/复杂)
- 注意依赖(所需工具、测试要求)
快速参考:文件计数
插件: 9
- next-task
- enhance
- ship
- perf
- audit-project
- deslop
- drift-detect
- repo-map
- sync-docs
代理: 39总计 = 29基于文件 + 10基于角色
基于文件(29): 计算 plugins/*/agents/*.md 中的文件
- next-task: 12
- enhance: 9
- perf: 6
- drift-detect: 1
- repo-map: 1
基于角色(10): 在 audit-project 命令中内联定义
- code-quality-reviewer, security-expert, performance-engineer, test-quality-guardian
- architecture-reviewer, database-specialist, api-designer
- frontend-specialist, backend-specialist, devops-reviewer
技能: 23 - 计算 plugins/*/skills/*/SKILL.md 中的 SKILL.md
- next-task: 4 (orchestrate-review, discover-tasks, validate-delivery, update-docs)
- enhance: 10 (orchestrator, reporter, agent-prompts, claude-memory, docs, plugins, prompts, hooks, skills)
- perf: 8 (analyzer, baseline, benchmark, code-paths, investigation-logger, profile, theory, theory-tester)
- drift-detect: 1 (drift-analysis)
- repo-map: 1 (repo-mapping)
版本字段: 11个文件
- 1x package.json
- 1x .claude-plugin/plugin.json
- 9x plugins/*/.claude-plugin/plugin.json
- 1x mcp-server/index.js (MCP_SERVER_VERSION 常量)
约束
- 永不破坏现有功能 - 有真实用户的生产项目
- 始终在所有3个平台上测试 - 至少烟雾测试
- 始终更新此技能 - 如果您发现差距或改进
- 始终运行验证 - 预推送钩子执行此
- 文档必须保持准确 - 验证器执行此
输出格式
使用此技能时,输出:
## 跨平台兼容性检查
### 运行的验证
- [OK/ERROR] validate:plugins
- [OK/ERROR] validate:cross-platform
- [OK/ERROR] validate:consistency
- [OK/ERROR] validate:paths
- [OK/ERROR] validate:counts
- [OK/ERROR] validate:platform-docs
### 发现的问题
[列出任何带有文件:行引用的issue]
### 此技能中的不对齐
[列出在此技能中找到的任何过时信息]
### 自动化机会
[列出可以自动化的任何手动步骤]
### 采取的行动
[列出更新/创建的文件]
### 下一步
[列出剩余工作]
版本
技能版本: 1.0.0 最后更新: 2026-01-30 覆盖: AgentSys v5.0.0 架构
何时更新此技能:
- 添加新平台
- 创建新验证脚本
- 安装过程变更
- 实现新自动化
- 发现平台差异