关于 attach-cli
此 Skill 使用 attach CLI 上传媒体并返回公开 URL,分别规定了人工用户和 GitHub App Agent 的操作流程,并明确凭据处理要求。
主要功能
- 01通过 attach CLI 上传媒体
- 02返回预览和原始 URL
- 03支持 dry-run 验证
- 04提供人工设备码登录流程
- 05规定 GitHub App Agent 注册流程
适用场景
- 01通过预览 URL 分享已上传媒体
- 02在 Markdown 中嵌入上传媒体
- 03删除前验证目标地址
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ uinaf/ attach --skill attach-cli安装后在 Claude Code 中输入/attach-cli确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/agent.mdhuman.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。
用户工作流
托管的 https://attach.uinaf.dev 服务已捆绑其公开的 GitHub App 客户端
ID,因此 attach login 无需配置环境。对于自定义的 ATTACH_API_BASE,必须使用
部署自身的 ATTACH_GITHUB_CLIENT_ID(GitHub App 设置);仅当缺少此自定义覆盖项时才停止并询问。
attach login- 当 CLI 输出验证 URL 和设备代码时,立即将两者转发给预期用户,并在用户授权期间保持登录进程运行。跨越无头环境边界需要此短时有效代码。
attach put <file> [--repo owner/name] [--pr N]:默认预览/p/…; 使用--url获取原始/o/…,使用--markdown获取嵌入内容,使用--json获取 API 正文; 添加--dry-run可在本地验证,无需凭据或网络请求attach delete <url-or-key>,然后执行curl -sI <url>→ 成功前应返回 404/410- 凭据使用完毕后执行
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 的密钥存储中(绝不放入聊天)。
- 签署 JWT:
iss=attach:<app_id>,aud= 公共主机,exp≤120s,使用新生成的jti - 使用 Authorization 通过头文件发送
POST /v1/enroll/agent(绝不通过 argv 传递); 在进程内解析 JSON;仅将token保存在内存/密钥存储中 - 同样使用
PUT /v1/objects;仅当 JSON 同时包含url和preview_url时才算成功 - 如果 put 返回 401:重新注册一次(使用新的
jti)并再次 put;再度失败则硬性失败
硬性规则
- 仅使用
att_密钥上传,绝不使用 GitHub token/PAT/ghs_/安装 token - 仅在登录流程进行期间将登录设备代码转发给预期用户; 绝不要将其放入日志、议题、提交、PR 或其他公开/持久化内容中
- 绝不打印 App PEM 或
att_值(包括注册 JSON) - 优先使用预览 URL;仅当使用方需要嵌入内容时才使用
--markdown/原始url
当 put 返回 URL、删除已确认完成,或因安装、自定义客户端 ID、允许列表、注册表或身份验证问题受阻时,请停止。报告最终 URL 或具体阻碍。