浏览 MCP与Skills教程与资源

Skill 怎么分享给同事:打包、校验、安装与恢复旧版本

把 [email protected] 做成一个文件清单明确的本地教学包,用 PowerShell 生成 ZIP 与真实校验值,演示接收方安装和升级前归档。

本页演示本地文件包,不混用插件安装流程

如果团队共同维护同一个仓库,把 Skill 放进仓库的 .agents/skills 并随提交评审最直接。若要发给不使用同一仓库的同事,可以分发一份固定版本的文件包,让接收方审读后选择自己的安装范围。

下面演示 [email protected] 的 ZIP 教学交付,代码只使用 PowerShell 文件操作。它不是插件,也不会自己注册到应用商店。跨仓库长期分发、组合多个 Skill 或连接器时,再按官方插件文档设计插件包,不能把这份 ZIP 宣称为适配所有产品的插件。

发布目录只放本版实际需要的文件

SKILL.md 复制自创建教程的完整文件,tests/cases.json 复制自测试教程。VERSION 是本教学包的版本记录约定,不意味着 Codex 必须显示这个字段,也不会改变 SKILL.md 的 name。发布前再次核对这两份实际内容,别把测试结果文件误放成测试输入。

教学示例

准备在普通目录中的文件清单

release-kit/
  meeting-notes/
    SKILL.md
    VERSION
    README.md
    CHANGELOG.md
    tests/
      cases.json
教学示例

VERSION

1.0.0
教学示例

CHANGELOG.md

# 变更记录

## 1.0.0
- 首个教学版本:将提供的会议原文整理为决定、待办、待确认。
- 负责人/期限不推断;冲突并列;依据保留原文行号。
- 无脚本、无联网、无第三方依赖;默认只在对话返回结果。
- 本文件不宣称已在某一客户端或操作系统上实测。
教学示例

README.md

# meeting-notes 1.0.0

用途:整理用户在本次请求提供的会议文字。
文件:SKILL.md、VERSION、CHANGELOG.md、tests/cases.json。
无 Node/Python/API Key/MCP 依赖;没有安装脚本。

本地 Codex 安装:审读文件后,把整个 meeting-notes 文件夹复制到
仓库 .agents/skills/ 或用户 ~/.agents/skills/,选一个范围。
Windows 原生用户路径为 %USERPROFILE%/.agents/skills/。
已经有同名文件夹时先比较和归档,不能直接覆盖。

验证:检查发现路径,显式调用 $meeting-notes,再跑 tests/cases.json。
测试状态:教学包尚无客户端运行记录;不要填“已支持所有平台”。
如有真实测试,另记客户端版本、系统、模型、路径、用例与输出。

停用:在 Codex 配置中按 SKILL.md 绝对路径禁用并重启。
卸载:先将目标文件夹移出可发现目录;保留包与校验值。
历史会议输入和输出不属于 Skill 程序文件,不要随卸载删除。

其他产品:本文包未验证 Claude Code、Cursor 或 ChatGPT 工作区安装。
不得用本页 Codex 路径替代其各自安装规则。

只从发布目录生成包,并现场计算哈希

命令会得到你实际文件对应的 SHA-256,页面不提供一个虚构的固定哈希。接收方应通过可信渠道拿到期望值再比对;把恶意包和它自带的哈希一起接受,不能证明发布者身份。

文件清单也要人工读一遍:此版本无需 .env、会话历史、原始会议内容和 test-runs 输出。实际有这些文件时先查为什么出现,整理好发布副本后再打包,避免把整个开发工作区压进去。

教学示例

PowerShell:首次打包,不覆盖已有 ZIP

$releaseRoot = Join-Path (Get-Location) 'release-kit'
$packageDir = Join-Path $releaseRoot 'meeting-notes'
$archive = Join-Path $releaseRoot 'meeting-notes-1.0.0.zip'
$required = @('SKILL.md', 'VERSION', 'README.md', 'CHANGELOG.md', 'tests\cases.json')
foreach ($relative in $required) {
  if (-not (Test-Path -LiteralPath (Join-Path $packageDir $relative) -PathType Leaf)) {
    throw ('缺少发布文件:' + $relative)
  }
}
$version = (Get-Content -LiteralPath (Join-Path $packageDir 'VERSION') -Raw).Trim()
if ($version -ne '1.0.0') { throw '版本号与包名不一致' }
if (Test-Path -LiteralPath $archive) { throw '已有同名包,请先确认版本,不覆盖' }
Get-ChildItem -LiteralPath $packageDir -File -Recurse | Select-Object FullName, Length
Compress-Archive -LiteralPath $packageDir -DestinationPath $archive
$hash = (Get-FileHash -LiteralPath $archive -Algorithm SHA256).Hash
[IO.File]::WriteAllText($archive + '.sha256', $hash + [Environment]::NewLine)
Write-Output $hash

接收方先在暂存目录解包,再安装

解包审读和复制安装之间有明确分界;不放心时在审读处停止。完成后从目标仓库启动 Codex,确认选择器与实际加载路径,再按测试页运行样例。包能解压、哈希一致、文件能复制,分别只证明对应的文件操作,不能等同于 Skill 输出正确。

教学示例

PowerShell:核验收到的包

$archive = Join-Path (Get-Location) 'meeting-notes-1.0.0.zip'
# 可信发布渠道给出的哈希保存为同目录 expected.sha256。
$expected = (Get-Content -LiteralPath 'expected.sha256' -Raw).Trim()
$actual = (Get-FileHash -LiteralPath $archive -Algorithm SHA256).Hash
if ($expected -notmatch '^[0-9a-fA-F]{64}$' -or $actual -ne $expected) {
  throw '哈希不匹配或格式不正确,停止安装'
}
$staging = Join-Path (Get-Location) '_skill-staging\meeting-notes-1.0.0'
if (Test-Path -LiteralPath $staging) { throw '暂存目录已存在,请先核对旧内容' }
Expand-Archive -LiteralPath $archive -DestinationPath $staging
$source = Join-Path $staging 'meeting-notes'
Get-Content -LiteralPath (Join-Path $source 'SKILL.md') -Raw
Get-ChildItem -LiteralPath $source -Force -Recurse | Select-Object FullName, Length
教学示例

在同一终端完成审读后,再单独执行安装

$repoResult = git rev-parse --show-toplevel
if ($LASTEXITCODE -ne 0 -or -not $repoResult) { throw '请进入要安装的 Git 仓库' }
$repoRoot = ([string]$repoResult).Trim()
$target = Join-Path $repoRoot '.agents\skills\meeting-notes'
if (Test-Path -LiteralPath $target) { throw '已有安装,请先归档并比较版本' }
New-Item -ItemType Directory -Path (Split-Path -Parent $target) -Force | Out-Null
Copy-Item -LiteralPath $source -Destination $target -Recurse
Get-FileHash -LiteralPath (Join-Path $target 'SKILL.md') -Algorithm SHA256

升级先比较接口变化,再处理旧版本

当前包统一为 1.0.0。将来准备新版本时,先比较 description、工作流、依赖与输出格式的 diff;改变表头、日期表示或触发范围,都可能影响使用者保存的模板。把这些变化写进新版本日志,再运行旧用例和新增用例。

升级前将已安装的 1.0.0 移出可发现目录并归档,方法见停用教程;保留本次 ZIP 和可信哈希。不要把 meeting-notes-old 备份在 .agents/skills 里,改文件夹名不保证它停止被发现。如果新版本不合适,就先停用/移出新版本,再按本页接收方步骤重新安装已验证的旧包。

兼容性表只填真正跑过的组合。‘没有脚本依赖’可以由文件审读确认;‘Windows 某版 Codex 输出通过’必须有那次运行记录。未测试的客户端标未验证,不能靠技能格式相似外推。

关联教程

继续处理当前问题

一手资料

资料与核验范围

产品行为按 2026-10-10 阅读的官方文档编写;本文会议、文件和版本均为教学构造。页面不声称在你的客户端完成过安装或模型运行。