mcpField
A
attach-cli

attach-cli

github.com/uinaf开发103 次安装
代码仓库

关于 attach-cli

此 Skill 使用 attach CLI 上传媒体并返回公开 URL,分别规定了人工用户和 GitHub App Agent 的操作流程,并明确凭据处理要求。

主要功能

  1. 01通过 attach CLI 上传媒体
  2. 02返回预览和原始 URL
  3. 03支持 dry-run 验证
  4. 04提供人工设备码登录流程
  5. 05规定 GitHub App Agent 注册流程

适用场景

  1. 01通过预览 URL 分享已上传媒体
  2. 02在 Markdown 中嵌入上传媒体
  3. 03删除前验证目标地址

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/uinaf/attach --skill attach-cli

安装后在 Claude Code 中输入/attach-cli确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
agent.md
human.md

详细介绍

attach-cli

将媒体上传到 attach Worker 并返回公开 URL。面向用户时优先使用已安装的 CLI;仅 GitHub App Agent 使用 JWT 注册。

要求使用 CLI(面向用户)

command -v attach || command -v gh
attach --help 2>/dev/null || gh attach --help 2>/dev/null || true

如果缺少 attach,请停止并让用户通过其获准的方式安装(brew install uinaf/tap/attach、npm i -g @uinaf/attach-cli 或 gh extension install uinaf/gh-attach)。 不要从此技能下载安装程序。不要自行编写 curl/fetch 上传脚本。 将 gh attach … 视为同一个二进制文件;绝不要修改 gh auth。

用户工作流

详情:references/human.md。

托管的 https://attach.uinaf.dev 服务已捆绑其公开的 GitHub App 客户端 ID,因此 attach login 无需配置环境。对于自定义的 ATTACH_API_BASE,必须使用 部署自身的 ATTACH_GITHUB_CLIENT_ID(GitHub App 设置);仅当缺少此自定义覆盖项时才停止并询问。

  1. attach login
    • 当 CLI 输出验证 URL 和设备代码时,立即将两者转发给预期用户,并在用户授权期间保持登录进程运行。跨越无头环境边界需要此短时有效代码。
  2. attach put <file> [--repo owner/name] [--pr N]:默认预览 /p/…; 使用 --url 获取原始 /o/…,使用 --markdown 获取嵌入内容,使用 --json 获取 API 正文; 添加 --dry-run 可在本地验证,无需凭据或网络请求
  3. attach delete <url-or-key>,然后执行 curl -sI <url> → 成功前应返回 404/410
  4. 凭据使用完毕后执行 attach logout

使用 attach help --json 获取机器可读的命令契约。需要结构化结果和错误时,请给命令添加 --json。使用 attach delete <url-or-key> --dry-run 可在操作前验证并规范化删除目标。

遇到允许列表拒绝或登录失败时:报告阻碍并停止。

Agent 工作流(GitHub App)

JWT 声明、通过 HTTP 使用头文件以及密钥处理: references/agent.md。要求 Worker AGENT_REGISTRY 中有 App 的公钥;App PEM 保留在 Agent 的密钥存储中(绝不放入聊天)。

  1. 签署 JWT:iss=attach:<app_id>,aud = 公共主机,exp≤120s,使用新生成的 jti
  2. 使用 Authorization 通过头文件发送 POST /v1/enroll/agent(绝不通过 argv 传递); 在进程内解析 JSON;仅将 token 保存在内存/密钥存储中
  3. 同样使用 PUT /v1/objects;仅当 JSON 同时包含 url 和 preview_url 时才算成功
  4. 如果 put 返回 401:重新注册一次(使用新的 jti)并再次 put;再度失败则硬性失败

硬性规则

  • 仅使用 att_ 密钥上传,绝不使用 GitHub token/PAT/ghs_/安装 token
  • 仅在登录流程进行期间将登录设备代码转发给预期用户; 绝不要将其放入日志、议题、提交、PR 或其他公开/持久化内容中
  • 绝不打印 App PEM 或 att_ 值(包括注册 JSON)
  • 优先使用预览 URL;仅当使用方需要嵌入内容时才使用 --markdown/原始 url

当 put 返回 URL、删除已确认完成,或因安装、自定义客户端 ID、允许列表、注册表或身份验证问题受阻时,请停止。报告最终 URL 或具体阻碍。

评论

支持 Markdown