Files
market/skills/s3-storage-operations/SKILL.md
Yige 1f7c8b9673 feat: skills i18n 改造(schemaVersion 1.1,零向后兼容) (#1)
* feat: skills i18n 改造 — schemaVersion 1.1,零向后兼容

把 21 个 skills + 1 个 agent + manifest/categories 全量迁移到 schemaVersion 1.1
的 i18n 结构,配套 CI AI 翻译流水线(GitHub Models)与本地工具链。

## 关键变更

### 数据结构(破坏性,schemaVersion 1.0 → 1.1)
- SKILL.md: 顶层 name 改为 ASCII slug(== 目录名,符合 agentskills.io 规范);
  中文显示名/short_desc/description 全部迁入 metadata.i18n.<locale>
- agents/<id>/agent.json: shortDesc/fullDesc/tags/persona.{role,traits} 迁入
  i18n.<locale>;changelog[].changes 改为 { <locale>: string[] } 对象
- categories.json: 每个分类的 label/description 迁入 i18n.<locale>,顶层只剩
  color/icon
- manifest.json: 加 supportedLocales / defaultLocale;顶层 description 迁入
  i18n.<locale>

### Body 文件结构
- 根 SKILL.md = frontmatter + default_locale (en-US) body
- SKILL.<locale>.md = 各 locale 的 markdown body(首行 <!-- locale: xx --> 自校验)

### 工具链(scripts/i18n/)
- glossary.json: zh→en 术语表 + do_not_translate 白名单
- schema/skill-frontmatter.schema.json: i18n frontmatter JSON Schema
- validate-i18n.py: 8 条校验规则(name 合规 / locale 完整性 / hash 一致性等)
- translate.py: GitHub Models / Anthropic 双 backend,sha256 增量翻译
- migrate.py: 一次性迁移脚本(旧格式 → i18n 结构)

### CI(.github/workflows/)
- i18n-validate.yml: PR 触发跑 validate + translate --check
- i18n-translate.yml: PR 触发用 GitHub Models(默认 openai/gpt-5-mini)翻译缺失
  locale,自动追加 commit;可切到 ANTHROPIC_API_KEY 走 Claude

### 文档
- docs/I18N.md: 作者贡献指南(schema 说明 / 提交流程 / 常见问题)
- README.md: 加多语言段落

## 验证

- uv run scripts/i18n/validate-i18n.py: OK,49 文件 0 错误
- uv run scripts/i18n/translate.py --check: 0 stale locale
- 21 skills 标题数 zh-CN == en-US 严格对齐(最大 66=66)
- skills-ref 规范校验:全部通过(顶层 name ASCII slug + description 单字段)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(i18n): 修复 PR #1 review 反馈的 6 项问题

- schema: translated_by 正则放宽为 ^(human|ai:[A-Za-z0-9._:/-]+)$,接受
  'ai:github:openai/gpt-5-mini' 这类 backend:model 形式(CI 翻译输出格式)
- README + docs/I18N.md: 修正"CI 用 Claude API"误导描述,正确说明默认是
  GitHub Models(openai/gpt-5-mini)+ GITHUB_TOKEN,可选切到 Anthropic
- skills/minimax-tts/SKILL.md & SKILL.zh-CN.md: 删除多余的 ``` 闭合,避免
  Markdown 后续渲染错乱
- skills/docx/SKILL.md: 翻译时丢失的 • Unicode escape 示例已恢复,
  与 zh-CN 版本对齐

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 00:26:33 +08:00

7.2 KiB

name, description, version, type, risk_level, status, disable-model-invocation, tags, metadata, market
name description version type risk_level status disable-model-invocation tags metadata market
s3-storage-operations 操作 S3 兼容对象存储(上传、下载、列举、删除),通过 DesireCore HTTP API 调用。Use when 用户要求上传/下载/分享文件、需要生成下载链接、或工作流产出文件需要持久化存储与分发。 2.0.2 procedural medium enabled true
storage
s3
upload
download
sharing
author version updated_at i18n
desirecore 2.0.1 2026-03-13
default_locale source_locale locales zh-CN en-US
en-US zh-CN
zh-CN
en-US
name short_desc description body source_hash translated_by
对象存储操作 通过 DesireCore HTTP API 操作 S3 兼容对象存储,支持上传、下载、列举、删除与分享链接 操作 S3 兼容对象存储(上传、下载、列举、删除),通过 DesireCore HTTP API 调用。Use when 用户要求上传/下载/分享文件、需要生成下载链接、或工作流产出文件需要持久化存储与分发。 ./SKILL.zh-CN.md sha256:6ea8e1375f12de72 human
name short_desc description body source_hash translated_by translated_at
Object Storage Operations Operate S3-compatible object storage via DesireCore HTTP API — upload, download, list, delete, and share links Operate S3-compatible object storage (upload, download, list, delete) via the DesireCore HTTP API. Use when the user requests file upload/download/sharing, needs a download link, or when workflow outputs need persistent storage and distribution. ./SKILL.md sha256:6ea8e1375f12de72 ai:claude-opus-4-7 2026-05-03
icon category maintainer compatible_agents channel
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><defs><linearGradient id="s3so-a" x1="4" y1="3" x2="20" y2="21" gradientUnits="userSpaceOnUse"><stop stop-color="#5AC8FA"/><stop offset="1" stop-color="#AF52DE"/></linearGradient></defs><ellipse cx="11" cy="5" rx="7" ry="2.75" fill="url(#s3so-a)" fill-opacity="0.14" stroke="url(#s3so-a)" stroke-width="1.5"/><path d="M4 5v5.5c0 1.52 3.13 2.75 7 2.75s7-1.23 7-2.75V5" fill="url(#s3so-a)" fill-opacity="0.08" stroke="url(#s3so-a)" stroke-width="1.5"/><path d="M4 10.5V16c0 1.52 3.13 2.75 7 2.75s7-1.23 7-2.75v-5.5" fill="url(#s3so-a)" fill-opacity="0.08" stroke="url(#s3so-a)" stroke-width="1.5"/><rect x="15.5" y="8.5" width="5" height="5" rx="1.4" fill="#34C759" fill-opacity="0.15" stroke="#34C759" stroke-width="1.4"/><path d="M18 7v10" stroke="#34C759" stroke-width="1.8" stroke-linecap="round"/><path d="M16.5 8.5 18 7l1.5 1.5" stroke="#34C759" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/><path d="M16.5 15.5 18 17l1.5-1.5" stroke="#34C759" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg> data
name verified
DesireCore Official true
latest

s3-storage-operations Skill

L0: One-line Summary

Lets the Agent operate S3-compatible object storage through the DesireCore HTTP API — uploading, downloading, listing, and deleting files, and generating shareable download links.

L1: Overview and Use Cases

Capability Description

s3-storage-operations is a Tool-Skill that interacts with the user's pre-configured S3-compatible object storage (AWS S3, Qiniu Kodo, MinIO, etc.) via the DesireCore Agent Service HTTP API.

Architecture change (v2.0): S3 operations have been migrated from a built-in tool to HTTP REST API endpoints, callable via curl from any environment. Claude Code's Global Skill (desirecore-s3-storage) contains the full curl invocation guide.

Core principle: the user's S3 connection is pre-configured under Resources → Object Storage. The API resolves the connection automatically — the Agent does not need to worry about connection details and can focus on the operation itself.

Use Cases

  • The user asks to "upload a file", "put it in storage", or "save to S3"
  • The user asks for "a download link", "share this file", or "download from S3"
  • The user asks to "see what's in storage" or "list files in the bucket"
  • The user asks to "delete from S3" or "clean up temp files"
  • A workflow produces files (reports, exports, images) that need to be shared via URL
  • The Agent needs to read data stored in S3 for further processing

L2: Detailed Specification

Port Discovery

PORT=$(cat ~/.desirecore/agent-service.port)

API Endpoints

Endpoint Method Description
/api/s3/connections GET List available connection summaries
/api/s3/upload POST Upload a file (multipart/form-data)
/api/s3/download GET Generate a download link or download a file
/api/s3/list GET List objects
/api/s3/objects DELETE Delete an object

Quick Reference

PORT=$(cat ~/.desirecore/agent-service.port)

# 列出连接
curl -k "https://127.0.0.1:${PORT}/api/s3/connections"

# 上传
curl -k -X POST "https://127.0.0.1:${PORT}/api/s3/upload" \
  -F "file=@local-file.pdf" -F "key=remote/path.pdf"

# 获取下载链接
curl -k "https://127.0.0.1:${PORT}/api/s3/download?key=remote/path.pdf"

# 列出对象
curl -k "https://127.0.0.1:${PORT}/api/s3/list?prefix=remote/"

# 删除
curl -k -X DELETE "https://127.0.0.1:${PORT}/api/s3/objects" \
  -H "Content-Type: application/json" -d '{"key":"remote/path.pdf"}'

Connection Resolution

All API endpoints accept an optional connection_id parameter. When unspecified, the system resolves it automatically with the following priority:

Specified ID  →  isDefault=true  →  first status="connected"  →  first connection

Error Handling

All errors return a unified format:

{ "success": false, "error": "描述信息", "code": "ERROR_CODE" }

Error codes: NO_CONNECTION | NOT_FOUND | UPLOAD_FAILED | DOWNLOAD_FAILED | DELETE_FAILED | LIST_FAILED | INVALID_REQUEST

Security Red Lines

Rule Description
No uploading sensitive files Never upload .env, credential files, private keys, etc.
Confirm before deletion Always confirm intent with the user before calling the delete API
Do not assume a connection exists When the API returns NO_CONNECTION, guide the user to add a connection in the UI

Integration Points

  • S3 Routeslib/agent-service/routes/s3-routes.ts: HTTP API implementation
  • S3 Clientlib/agent-service/s3-client.ts: AWS V4 signing, CRUD operations
  • Connection Resolverlib/agent-service/s3-connection-resolver.ts: automatic connection selection
  • Global Skill Synclib/agent-service/global-skill-sync.ts: writes the Global Skill on startup
  • Port Discovery~/.desirecore/agent-service.port: port discovery file