{"id":"ee7489af-c29f-45b5-9562-07ab257bf8f7","entityType":"agent","slug":"clawhub-yottameta-yotta-skills","name":"元阁 yotta-skills","canonicalUrl":"https://www.xpersona.co/agent/clawhub-yottameta-yotta-skills","canonicalPath":"/agent/clawhub-yottameta-yotta-skills","generatedAt":"2026-10-10T05:00:06.193Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T20:57:30.615Z","emptyReason":null},"description":"元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点 + 本机技能 Hub + 运行时 hook 适配。Hub 层：hub hosts 只读发现本机已装智能体与技能目录（文件系统优先，不读元忆；已核实 / 自动发现 / 桥接分类 + 状态细分：可用 / 残留（实体未确认）/ 未创建 / 仅标记）；hub hosts add/remove/list/mark/exclude/include/set 注册自定义宿主目录、手动标记、不接管开关与目录覆盖（只注册不建目录、移除不删目录；残留清理 hub hosts remove --purge 默认预览、目录入回收站 7 天；YottaCode 不纳入接管）；install-self / where 把元阁管理引擎独立安装（默认 ~/.yottaskills/yotta-skills，--dir 指定）并查看运行位置；hub config get/set/clear/rollback 持久化 Hub 位置（config.json；优先级 --hub > YOTTA_SKILLS_HUB > config > 默认；--move 迁移旧 Hub + 重链 + 回收站；lastMigration 记录 + 一键回滚 = 位置回退；仅切换且旧 Hub 非空时记录未迁移供面板一键迁移）；hub cleanup-backups 清理历史备份 / 暂存残留（回收站 7 天）；hub install / update 把技能装到 ~/.yottaskills/hub 单点真源（清单 27 + 特殊家族 5，特殊家族跟随各自 npm latest；update / hub update 只升不降，--force 才显式降级）；hub link --all 用 Windows junction / POSIX symlink 分发到全部已核实宿主（默认范围；--include-discovered 显式纳入自动发现目录；锁 / 数据桥接目录永不链接），元技能在链接时收敛宿主旧副本（移入 ~/.yottaskills/trash 保留 7 天、版本闸门 Hub ≥ 宿主）；hub unlink 只删链接、fail-closed；非元技能不参与更新（用户自行处理）；hub status 显示来源、版本、链接与异常；view 启动本机技能枢纽面板（默认 127.0.0.1:8789，六视图 + 高级 CLI 页，写操作需页面令牌与确认）；兼容 agentskills.io 技能格式、Vercel Labs skills CLI 的 .agents/skills 通用目录与 .skill-lock.json v3（只读）。路由层：--route / route_request 按需求摘要给出候选组合、调用顺序、角色、置信度、依据、已装/缺失状态与安装命令，只建议不自动安装；非元阁家族已装技能按 frontmatter description 机械匹配作并列候选（标注来源与未扫描状态，只读不自动调用）；M1 记忆裁决层：usage enable/mark 本地结构化记录 + decide-memory / MCP decide_memory 输出 promote / hold / demote 只读建议（需授权 provider；只建议不删除、不自动写元忆）；策划层：按场景给出「该组合哪几个元技能、组合强在哪、怎么组合使用（安装与调用均由用户确认后执行）」；安装层：一条命令把 YottaMeta 已发布的全部 yotta-* 技能装进指定智能体或目录（默认 --pin 锁死清单精确版本）；盘点层：--inventory / --reindex 扫描本机已装技能生成/更新注册表，新装技能自动被发现（install/update 后自动 re-index，会话开工只建议跑本地 --reindex；更新检查走手动 --check 或后台 --check --scheduled）；运行时适配层：hook capabilities / evaluate / bind / unbind 按宿主能力矩阵执行六个统一事件并留证降级，元信 before_install 已接入安装管线；自包含零依赖，不依赖任何元技能；MCP 按需加载且需用户确认后写入配置（可选：list_installed_skills/describe_skill/reindex/route_request/decide_memory，不常驻，未加载降级 CLI）。支持 --list 清单 / --route 路由 / usage 使用记录 / decide-memory 记忆裁决 / hub 技能 Hub / install-self 独立安装 / where 位置查看 / install / update / update --check（只读检查）/ update --check --scheduled（后台周检）/ update --auto（家族自动更新）/ hook 适配 / --inventory / --reindex / --dry-run 预览 / --pin（默认）/ --range。触发：需要批量安装或更新元阁全家技能、单点安装并分发到多个智能体、查看本机装了哪些智能体与技能目录、接管非元技能、按场景组合多个元技能、路由或判断该用哪些技能、判断哪些技能值得长期记忆、查看或记录技能使用信号、盘点或查看本机已装技能、重扫技能注册表、给某个智能体或目录一次性铺齐 yotta-* 技能、评估宿主 hook 能力、预览安装清单、锁版本安装、或用户说 元阁/装全家/一次装齐/yotta-skills/install-all/更新全家/检查更新/自动更新/hook 适配/该用哪个技能/路由技能/记忆裁决/技能该不该记住/盘点技能/查看已装技能/技能 Hub/单点安装/链接分发/接管技能/技能枢纽面板/图形化面板/独立安装元阁/查看元阁位置/持久化 Hub 位置/换 Hub 目录/迁移 Hub/迁移回滚/回滚 Hub 位置/清理备份残留/自定义宿主/残留清理/宿主状态 等。边界（Do NOT trigger）：只做「组合策划 + 静态路由建议 + M1 记忆裁决只读建议 + 清单 + 下载 + 落位 + 汇总 + 盘点 + re-index + Hub 本机真源与链接分发 + hook 适配」，不含技能本体、不做技能内容开发、不 -g 污染全局、不自动安装缺失技能、不静默写宿主配置或全局记忆、不自动删除技能或记忆；家族安装先自举或调用元信装前门禁，DO NOT INSTALL 阻断，非元阁家族包不自动安装。","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17c9k7630m9g0z4bq1hjz21958d7bas:yotta-skills","sourceUrl":"https://clawhub.ai/yottameta/yotta-skills","homepage":"https://clawhub.ai/yottameta/skills/yotta-skills","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/yottameta/yotta-skills","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/yottameta/skills/yotta-skills","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":66,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"元阁 yotta-skills 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-09T20:57:30.615Z","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-09T20:57:30.615Z","emptyReason":null},"stars":null,"forks":null,"downloads":2003,"packageName":null,"latestVersion":"0.29.10","tractionLabel":"2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T20:57:30.603Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T20:57:30.615Z","lastCrawledAt":"2026-10-09T20:57:30.603Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T20:57:30.604Z","lastVerifiedAt":null,"highlights":[{"version":"0.29.10","createdAt":"2026-10-09T15:09:39.015Z","changelog":"- skill-card.md removed; card内容迁移至主文档与/或界面 - skill-manifest.json、skills.json、scan-policy.json 更新以支持新版清单与注册表格式 - 参考文档 references/skill-list.md 更新 - 维护 CHANGELOG.md、SKILL.md、package.json 对应版本与说明 - bin/yotta-skills.js 及相关脚本调整，兼容最新清单、注册表达式、目录结构 此版本以清理冗余文档、同步技能清单、注册表结构为主，保证与主线收敛和标准兼容。","fileCount":59,"zipByteSize":311759},{"version":"0.29.9","createdAt":"2026-10-09T12:44:13.274Z","changelog":"yotta-skills v0.29.9 - Updated multiple documentation files (CHANGELOG.md, SKILL.md, references/skill-list.md) for better clarity and accuracy. - Made changes to core scripts and configuration (bin/yotta-skills.js, scripts/yotta-skills-mcp.py, scan-policy.json, skill-manifest.json, package.json). - Removed outdated documentation file (skill-card.md). - Minor adjustments and refinements across files for improved maintainability and consistency.","fileCount":59,"zipByteSize":311593},{"version":"0.29.8","createdAt":"2026-10-09T12:15:49.854Z","changelog":"- Updated to version 0.29.8. - Documentation improvements in SKILL.md; general updates for clarity and completeness. - Removed obsolete skill-card.md file. - Miscellaneous maintenance to package files and internal scripts.","fileCount":59,"zipByteSize":311419},{"version":"0.29.7","createdAt":"2026-10-07T14:51:09.514Z","changelog":"yotta-skills v0.29.7 - Removed the sample skill-card.md file. - Updated documentation in SKILL.md and CHANGELOG.md. - Refreshed skill listing, scan policy, and reference files. - Updated package.json and manifest files. - Minor script and CLI adjustments and cleanups.","fileCount":59,"zipByteSize":311042},{"version":"0.29.6","createdAt":"2026-10-07T06:52:46.604Z","changelog":"yotta-skills v0.29.6 - Updated documentation in SKILL.md and other reference files. - Removed skill-card.md, consolidating documentation. - Routine package maintenance: updated package.json and changelogs. - No breaking changes introduced to user functionality.","fileCount":59,"zipByteSize":310739},{"version":"0.29.5","createdAt":"2026-10-06T13:07:14.666Z","changelog":"- Added support for hub config rollback: quickly revert Hub directory location changes and restore last migration state. - Introduced hub cleanup-backups to clean old backups and temporary files in the Hub (default retention: 7 days). - Improved migration logic: lastMigration now records previous Hub paths; supports one-click migration and rollback via the web panel. - Enhanced hub config get/set/clear to support migration/rollback operations and track unmigrated files on non-empty switch. - Documentation and CLI help updated to reflect new backup, migration, and rollback features. - Internal refactoring: new hub-targets.js module for Hub migration/rollback logic.","fileCount":59,"zipByteSize":310393},{"version":"0.29.4","createdAt":"2026-10-05T16:10:04.603Z","changelog":"- Updated skill version to 0.29.4. - Removed deprecated file skill-card.md. - Updated documentation and references, including SKILL.md and references/skill-list.md. - Enhanced CLI scripts and core logic with internal improvements (bin/yotta-skills.js, lib/hub-adopt.js). - Refreshed skill manifest and skill list for better accuracy. - Updated dependencies in package.json.","fileCount":58,"zipByteSize":292027},{"version":"0.29.3","createdAt":"2026-10-05T14:06:34.609Z","changelog":"yotta-skills v0.29.3 - Updated documentation in SKILL.md with improved details and formatting. - Removed deprecated skill-card.md file. - Refined internal scripts and self-install logic. - Updated CHANGELOG and manifest for current release. - Package dependencies and version info refreshed.","fileCount":58,"zipByteSize":291251}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17c9k7630m9g0z4bq1hjz21958d7bas:yotta-skills","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17c9k7630m9g0z4bq1hjz21958d7bas:yotta-skills` 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/yottameta/yotta-skills 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-yottameta-yotta-skills/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/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-10T05:00:06.189Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-yottameta-yotta-skills/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-09T20:57:30.615Z","emptyReason":null},"readme":"Skill: 元阁 yotta-skills\n\nOwner: yottameta\n\nSummary: 元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点 + 本机技能 Hub + 运行时 hook 适配。Hub 层：hub hosts 只读发现本机已装智能体与技能目录（文件系统优先，不读元忆；已核实 / 自动发现 / 桥接分类 + 状态细分：可用 / 残留（实体未确认）/ 未创建 / 仅标记）；hub hosts add/remove/list/mark/exclude/include/set 注册自定义宿主目录、手动标记、不接管开关与目录覆盖（只注册不建目录、移除不删目录；残留清理 hub hosts remove --purge 默认预览、目录入回收站 7 天；YottaCode 不纳入接管）；install-self / where 把元阁管理引擎独立安装（默认 ~/.yottaskills/yotta-skills，--dir 指定）并查看运行位置；hub config get/set/clear/rollback 持久化 Hub 位置（config.json；优先级 --hub > YOTTA_SKILLS_HUB > config > 默认；--move 迁移旧 Hub + 重链 + 回收站；lastMigration 记录 + 一键回滚 = 位置回退；仅切换且旧 Hub 非空时记录未迁移供面板一键迁移）；hub cleanup-backups 清理历史备份 / 暂存残留（回收站 7 天）；hub install / update 把技能装到 ~/.yottaskills/hub 单点真源（清单 27 + 特殊家族 5，特殊家族跟随各自 npm latest；update / hub update 只升不降，--force 才显式降级）；hub link --all 用 Windows junction / POSIX symlink 分发到全部已核实宿主（默认范围；--include-discovered 显式纳入自动发现目录；锁 / 数据桥接目录永不链接），元技能在链接时收敛宿主旧副本（移入 ~/.yottaskills/trash 保留 7 天、版本闸门 Hub ≥ 宿主）；hub unlink 只删链接、fail-closed；非元技能不参与更新（用户自行处理）；hub status 显示来源、版本、链接与异常；view 启动本机技能枢纽面板（默认 127.0.0.1:8789，六视图 + 高级 CLI 页，写操作需页面令牌与确认）；兼容 agentskills.io 技能格式、Vercel Labs skills CLI 的 .agents/skills 通用目录与 .skill-lock.json v3（只读）。路由层：--route / route_request 按需求摘要给出候选组合、调用顺序、角色、置信度、依据、已装/缺失状态与安装命令，只建议不自动安装；非元阁家族已装技能按 frontmatter description 机械匹配作并列候选（标注来源与未扫描状态，只读不自动调用）；M1 记忆裁决层：usage enable/mark 本地结构化记录 + decide-memory / MCP decide_memory 输出 promote / hold / demote 只读建议（需授权 provider；只建议不删除、不自动写元忆）；策划层：按场景给出「该组合哪几个元技能、组合强在哪、怎么组合使用（安装与调用均由用户确认后执行）」；安装层：一条命令把 YottaMeta 已发布的全部 yotta-* 技能装进指定智能体或目录（默认 --pin 锁死清单精确版本）；盘点层：--inventory / --reindex 扫描本机已装技能生成/更新注册表，新装技能自动被发现（install/update 后自动 re-index，会话开工只建议跑本地 --reindex；更新检查走手动 --check 或后台 --check --scheduled）；运行时适配层：hook capabilities / evaluate / bind / unbind 按宿主能力矩阵执行六个统一事件并留证降级，元信 before_install 已接入安装管线；自包含零依赖，不依赖任何元技能；MCP 按需加载且需用户确认后写入配置（可选：list_installed_skills/describe_skill/reindex/route_request/decide_memory，不常驻，未加载降级 CLI）。支持 --list 清单 / --route 路由 / usage 使用记录 / decide-memory 记忆裁决 / hub 技能 Hub / install-self 独立安装 / where 位置查看 / install / update / update --check（只读检查）/ update --check --scheduled（后台周检）/ update --auto（家族自动更新）/ hook 适配 / --inventory / --reindex / --dry-run 预览 / --pin（默认）/ --range。触发：需要批量安装或更新元阁全家技能、单点安装并分发到多个智能体、查看本机装了哪些智能体与技能目录、接管非元技能、按场景组合多个元技能、路由或判断该用哪些技能、判断哪些技能值得长期记忆、查看或记录技能使用信号、盘点或查看本机已装技能、重扫技能注册表、给某个智能体或目录一次性铺齐 yotta-* 技能、评估宿主 hook 能力、预览安装清单、锁版本安装、或用户说 元阁/装全家/一次装齐/yotta-skills/install-all/更新全家/检查更新/自动更新/hook 适配/该用哪个技能/路由技能/记忆裁决/技能该不该记住/盘点技能/查看已装技能/技能 Hub/单点安装/链接分发/接管技能/技能枢纽面板/图形化面板/独立安装元阁/查看元阁位置/持久化 Hub 位置/换 Hub 目录/迁移 Hub/迁移回滚/回滚 Hub 位置/清理备份残留/自定义宿主/残留清理/宿主状态 等。边界（Do NOT trigger）：只做「组合策划 + 静态路由建议 + M1 记忆裁决只读建议 + 清单 + 下载 + 落位 + 汇总 + 盘点 + re-index + Hub 本机真源与链接分发 + hook 适配」，不含技能本体、不做技能内容开发、不 -g 污染全局、不自动安装缺失技能、不静默写宿主配置或全局记忆、不自动删除技能或记忆；家族安装先自举或调用元信装前门禁，DO NOT INSTALL 阻断，非元阁家族包不自动安装。\n\nTags: agent:0.6.1, install:0.6.1, latest:0.29.10, orchestration:0.6.1, registry:0.6.1, skills:0.6.1\n\nVersion history:\n\nv0.29.10 | 2026-10-09T15:09:39.015Z | auto\n\n- skill-card.md removed; card内容迁移至主文档与/或界面\n- skill-manifest.json、skills.json、scan-policy.json 更新以支持新版清单与注册表格式\n- 参考文档 references/skill-list.md 更新\n- 维护 CHANGELOG.md、SKILL.md、package.json 对应版本与说明\n- bin/yotta-skills.js 及相关脚本调整，兼容最新清单、注册表达式、目录结构\n\n此版本以清理冗余文档、同步技能清单、注册表结构为主，保证与主线收敛和标准兼容。\n\nv0.29.9 | 2026-10-09T12:44:13.274Z | auto\n\nyotta-skills v0.29.9\n\n- Updated multiple documentation files (CHANGELOG.md, SKILL.md, references/skill-list.md) for better clarity and accuracy.\n- Made changes to core scripts and configuration (bin/yotta-skills.js, scripts/yotta-skills-mcp.py, scan-policy.json, skill-manifest.json, package.json).\n- Removed outdated documentation file (skill-card.md).\n- Minor adjustments and refinements across files for improved maintainability and consistency.\n\nv0.29.8 | 2026-10-09T12:15:49.854Z | auto\n\n- Updated to version 0.29.8.\n- Documentation improvements in SKILL.md; general updates for clarity and completeness.\n- Removed obsolete skill-card.md file.\n- Miscellaneous maintenance to package files and internal scripts.\n\nv0.29.7 | 2026-10-07T14:51:09.514Z | auto\n\nyotta-skills v0.29.7\n\n- Removed the sample skill-card.md file.\n- Updated documentation in SKILL.md and CHANGELOG.md.\n- Refreshed skill listing, scan policy, and reference files.\n- Updated package.json and manifest files.\n- Minor script and CLI adjustments and cleanups.\n\nv0.29.6 | 2026-10-07T06:52:46.604Z | auto\n\nyotta-skills v0.29.6\n\n- Updated documentation in SKILL.md and other reference files.\n- Removed skill-card.md, consolidating documentation.\n- Routine package maintenance: updated package.json and changelogs.\n- No breaking changes introduced to user functionality.\n\nv0.29.5 | 2026-10-06T13:07:14.666Z | auto\n\n- Added support for hub config rollback: quickly revert Hub directory location changes and restore last migration state.\n- Introduced hub cleanup-backups to clean old backups and temporary files in the Hub (default retention: 7 days).\n- Improved migration logic: lastMigration now records previous Hub paths; supports one-click migration and rollback via the web panel.\n- Enhanced hub config get/set/clear to support migration/rollback operations and track unmigrated files on non-empty switch.\n- Documentation and CLI help updated to reflect new backup, migration, and rollback features.\n- Internal refactoring: new hub-targets.js module for Hub migration/rollback logic.\n\nv0.29.4 | 2026-10-05T16:10:04.603Z | auto\n\n- Updated skill version to 0.29.4.\n- Removed deprecated file skill-card.md.\n- Updated documentation and references, including SKILL.md and references/skill-list.md.\n- Enhanced CLI scripts and core logic with internal improvements (bin/yotta-skills.js, lib/hub-adopt.js).\n- Refreshed skill manifest and skill list for better accuracy.\n- Updated dependencies in package.json.\n\nv0.29.3 | 2026-10-05T14:06:34.609Z | auto\n\nyotta-skills v0.29.3\n\n- Updated documentation in SKILL.md with improved details and formatting.\n- Removed deprecated skill-card.md file.\n- Refined internal scripts and self-install logic.\n- Updated CHANGELOG and manifest for current release.\n- Package dependencies and version info refreshed.\n\nv0.29.2 | 2026-10-05T12:27:09.013Z | auto\n\n**yotta-skills v0.29.2 changelog**\n\n- Added persistent Hub config and migration: new `hub config get/set/clear` commands and `--move` to migrate Hub directory, update symlinks, and move old data to trash.\n- Introduced persistent config storage (`config.json`) and updated Hub location priority: `--hub` > `YOTTA_SKILLS_HUB` env > config > default.\n- Added new modules (`lib/hub-migrate.js`, `lib/skills-config.js`) and removed obsolete `skill-card.md`.\n- Updated CLI help, documentation, and references to reflect new persistent Hub config commands and migration flow.\n- Clarified skill boundaries and capabilities in all readme and metadata files.\n\nv0.29.1 | 2026-10-05T07:36:02.118Z | auto\n\nyotta-skills v0.29.1\n\n- Hub hosts 支持 add/remove/list/mark/exclude/include/set 等更丰富管理与控制选项，允许注册自定义宿主目录、标记、不接管等。\n- 明确 YottaCode 目录不纳入接管范围，避免不必要的干预。\n- update/hub update 仅默认升级，显式使用 --force 才可降级。\n- 扩展 hub hosts 状态管理，新增状态细分与目录覆盖选项。\n- 移除 skill-card.md，无实际影响使用。\n- 文档同步更新，完善使用说明与权限边界描述。\n\nv0.29.0 | 2026-10-04T14:24:57.449Z | auto\n\n**v0.29.0 introduces new host management, self-install, and advanced status tracking in the yotta-skills orchestration tool.**\n\n- Added `hub hosts` for unified host (agent/skill directory) discovery, status (available/residual/virtual/marked), and explicit register/remove/mark.\n- Introduced `install-self` and `where` commands for independent yotta-skills management engine install and location query.\n- Host registry now persists user-registered and marked directories, supports cleaning residual hosts (`hub hosts remove --purge` with trash/retention).\n- Improved hub link: better detection and cleanup of stale/old versions during skill distribution; non-meta skills remain outside updates.\n- Updated documentation, CLI help, and user-facing commands to match new host/engine management features.\n- Internal refactoring: new modules for host registry, host purge, and self-install logic.\n\nv0.28.3 | 2026-10-03T17:58:33.141Z | auto\n\n- Added lib/cli-help.js to improve CLI help documentation.\n- Updated core files for maintenance, refactoring, and documentation accuracy.\n- Improved and clarified documentation in CHANGELOG.md, README.md, and SKILL.md.\n- Removed obsolete skill-card.md.\n- Minor tweaks to skill inventory and routing logic reflected in JSON and script updates.\n\nv0.28.2 | 2026-10-03T11:31:56.384Z | auto\n\nyotta-skills 0.28.2\n\n- Updated orchestrated skills reference and inventory lists to latest versions.\n- Adjusted documentation and internal manifest for improved clarity and accuracy.\n- Removed obsolete skill-card.md file.\n- Minor maintenance updates to scripts and scan policy with no breaking changes.\n\nv0.28.1 | 2026-10-03T09:12:09.491Z | auto\n\nyotta-skills 0.28.1\n\n- Removed obsolete or redundant file: skill-card.md.\n- Various file updates across core logic and documentation (CHANGELOG.md, SKILL.md, JS and Python scripts).\n- Adjustments to manifest and skills listing JSON.\n- Minor documentation and reference updates.\n- No major feature additions or breaking changes.\n\nv0.28.0 | 2026-10-03T08:10:03.602Z | auto\n\nyotta-skills v0.28.0\n\n- Hub hosts 现区分“已核实”、“自动发现”、“桥接”目录（hosts 分类增强），默认 link 覆盖范围调整为仅已核实宿主，需 --include-discovered 显式纳入自动发现目录，锁/数据桥接目录严禁自动链接。\n- hub link --all 限定只对已核实宿主创建链接，防止自动分发到未确认目录，提升安全性和可控性。\n- 清理和删除已过期/旧的 skill-card.md 文档文件。\n- 文档（SKILL.md/README.md）与命令行帮助按最新 Hub 分发边界、宿主分类、桥接目录做全面更新。\n- package.json 及核心库文件同步到新目录识别与分发逻辑。\n\nv0.27.1 | 2026-10-03T05:30:08.993Z | auto\n\nyotta-skills v0.27.1\n\n- Maintenance release with updates to documentation and reference files.\n- Removed outdated skill-card.md documentation.\n- Updated SKILL.md and CHANGELOG.md to reflect latest changes.\n- Minor adjustments to internal scripts and references.\n- No breaking changes to CLI interface or core features.\n\nv0.27.0 | 2026-10-03T02:21:21.128Z | auto\n\nyotta-skills 0.27.0\n\n- Hub 层 now consolidates 元技能 to the hub as the sole truth source; old skill copies in hosts are moved to ~/.yottaskills/trash and retained for 7 days, ensuring Hub version ≥ host version.\n- Hub manages 27 official skills plus 5 special skills, tracking their npm latest individually.\n- Non-元阁 skills are no longer linked or managed during update/link processes; user must manage these manually.\n- Symbolic link operations enhance safety: actual writes occur only to the Hub, hosts get links, and writes to symlink targets are refused.\n- Simplified, clarified orchestration boundaries and enhanced documentation, including removal of redundant files.\n\nv0.26.0 | 2026-10-02T17:13:15.757Z | auto\n\nyotta-skills v0.26.0\n\n- 新增 hub 枢纽面板（hub view）：本地 Web 页面可视化管理技能、支持六视图与高级 CLI，页面写操作需令牌和确认\n- 新增 hub-scan/hub-view-server 模块，增强本地技能发现与管理能力\n- hub status 支持显示 hub 枢纽面板入口及快捷链接\n- 文档（README/README.zh-CN/SKILL.md）全面更新，详细说明新面板功能与操作方式\n- 部分文件精简和移除旧文档（如 skill-card.md），整理目录结构\n\nv0.25.1 | 2026-10-02T14:01:51.317Z | auto\n\nyotta-skills v0.25.1\n\n- Minor version update with doc and registry maintenance.\n- Updated documentation: SKILL.md, CHANGELOG.md, and skill references.\n- skills.json and skill-manifest.json revised to reflect changes.\n- Removed deprecated skill-card.md file from the repository.\n- Package metadata (package.json) and CLI entry point updated.\n\nv0.25.0 | 2026-10-02T12:01:47.914Z | auto\n\n**v0.25.0 adds \"Hub\" support for managing skills across multiple agents and unifies local skill sources.**\n\n- Introduced \"Hub\" mode: discover, install, and update skills at a single point (~/.yottaskills/hub), with link/unlink to all agent directories via native symlinks/junctions.\n- Added support for listing local agents and skill directories; can view skill sources, versions, links, and status.\n- Compatible with agentskills.io, Vercel Labs skills CLI (.agents/skills), and .skill-lock.json v3 (read-only).\n- Enhanced CLI with new `hub`, `link`, and `unlink` commands.\n- Broader orchestration: enable \"one-source, multi-agent\" skill distribution.\n- Documentation updated; obsolete `skill-card.md` removed.\n\nv0.24.2 | 2026-10-02T09:57:43.411Z | auto\n\nyotta-skills v0.24.2\n\n- Updated documentation across multiple files for clarity and completeness.\n- Removed the obsolete skill-card.md file.\n- Minor metadata and manifest adjustments.\n- No user-facing CLI or functional changes noted.\n\nv0.24.1 | 2026-10-02T08:18:40.837Z | auto\n\n- Updated internal references and documentation across multiple files.\n- Removed the outdated `skill-card.md` file.\n- Refreshed skill lists and manifests to reflect latest yotta-skills combinations.\n- Minor fixes and maintenance updates in bin scripts and policy files.\n\nv0.24.0 | 2026-10-02T04:30:49.618Z | auto\n\nyotta-skills 0.24.0\n\n- 拆分与重构 npm 包获取/依赖解包相关代码，新增 lib/deps.js、lib/untar.js、lib/registry-fetch.js 等实现，提升健壮性和可维护性\n- 更新安装与依赖处理流程，减少对外部环境依赖，实现更好的跨平台兼容\n- 精简与更新文档，包括 CHANGELOG.md、README.md、SKILL.md 多语言版本，移除 skill-card.md\n- 调整并优化 scan-policy.json、skills.json、skill-manifest.json 和安装流水线配置，提高技能盘点与注册表生成效率\n- 兼容性与稳定性提升，升级部分依赖，改善错误处理和边界行为\n\nv0.23.3 | 2026-10-02T02:06:21.180Z | auto\n\nyotta-skills 0.23.3\n\n- Maintenance release updating documentation, references, and skill manifest files.\n- Removed obsolete skill-card.md.\n- Refreshed skill listings and internal scripts for consistency.\n- No breaking changes or new major features introduced.\n\nv0.23.2 | 2026-10-01T12:56:35.747Z | auto\n\n- Added new utility lib/copy-tree.js for improved directory operations.\n- Updated core scripts and logic to better handle file copying and directory management.\n- Refreshed documentation in CHANGELOG.md and SKILL.md to reflect latest features and usage patterns.\n- Removed obsolete skill-card.md for a cleaner project structure.\n- General code and manifest maintenance for enhanced stability and clarity.\n\nv0.23.1 | 2026-10-01T09:47:36.872Z | auto\n\n- 文档与元数据更新，版本号提升至 0.23.1\n- skill-card.md 文件移除，集中维护关键信息于 SKILL.md\n- 维护与整理 CHANGELOG.md、skill-manifest.json 等项目描述文件\n- package.json、CLI 主程序及相关脚本微调匹配新版本文档结构\n- 不涉及功能或行为变更，仅涉及文件、描述、信息归档优化\n\nv0.23.0 | 2026-10-01T04:27:56.243Z | auto\n\n- Introduced O1 动态路由层 (capability `o1.route`): supports dynamic local provider for route augmentation/reordering, with confidence, reasons, summary, and alternatives.\n- Added new files for dynamic routing and feature routing support.\n- Updated documentation to describe dynamic route provider protocol.\n- Improved route output (with a `dynamic` section in `--json` mode if dynamic provider is used).\n- Removed outdated documentation file (skill-card.md).\n- Bumped version to 0.23.0.\n\nv0.22.2 | 2026-09-30T15:41:28.621Z | auto\n\nyotta-skills 0.22.2\n\n- Documentation updates: improved/updated content in README, SKILL.md, and other docs.\n- Removed obsolete skill-card.md file.\n- Minor adjustments and clarifications in usage instructions and orchestration documentation.\n- No breaking changes or functional changes to core features.\n\nv0.22.1 | 2026-09-30T14:24:25.840Z | auto\n\nyotta-skills v0.22.1\n\n- Updated documentation for orchestration, provider protocol, and skill list references.\n- Removed deprecated skill-card.md file.\n- Adjusted version metadata and maintained compatibility information.\n- Internal scripts and manifests were updated for improved clarity and maintenance.\n- No breaking changes; CLI commands and behavior remain consistent with previous release.\n\nv0.22.0 | 2026-09-30T06:22:00.236Z | auto\n\nyotta-skills v0.22.0\n\n- Updated version to 0.22.0.\n- Removed skill-card.md, cleaning up redundant/legacy documentation.\n- General documentation refinements in SKILL.md and CHANGELOG.md.\n- Manifest and packaging (package.json, skill-manifest.json) updated to reflect latest release structure.\n- Minor scripts and CLI improvements for consistency and maintenance.\n\nv0.21.0 | 2026-09-29T18:18:09.679Z | auto\n\nyotta-skills v0.21.0\n\n- 新增 M1 记忆裁决能力：支持 decide-memory / decide_memory 只读建议，输出 promote/hold/demote，不自动写入或删除。\n- 新增 usage 本地结构化使用记录（默认关闭，用户同意后开启）。\n- CLI 与 MCP 支持 usage/decide-memory 相关命令与协议。\n- 文档与描述同步更新，突出记忆裁决与信号记录能力。\n- 规范边界：新增“不得自动写入/删除技能或记忆”等安全声明。\n- 多处优化与修正，详见 CHANGELOG.md。\n\nv0.20.2 | 2026-09-29T15:15:07.546Z | auto\n\n- added 1, updated 9, removed 1 file(s).\n- Updated SKILL.md and bundle contents.\n\nv0.20.1 | 2026-09-29T11:46:30.710Z | auto\n\nyotta-skills 0.20.1\n\n- 新增 scan-policy.json 配置和 lib/scan-policy.js，支持本地安全策略定制，装前扫描或升级时生效。\n- 引入自定义扫描/验证管线，skills install/update 可按 scan-policy 进行本地扩展检测。\n- 移除 skill-card.md，相关文档以 SKILL.md 为主。\n- 文档和帮助信息补充，完善 CHANGELOG.md、SKILL.md。\n- 各子模块代码梳理优化，提升本地路由与盘点一致性。\n\nv0.20.0 | 2026-09-28T16:51:24.592Z | auto\n\nyotta-skills v0.20.0\n\n- 新增「动态扩展口」：支持本地 provider 扩展路由结果（capability `o1.route`），严格白名单、仅用户显式配置，失败降级无影响。\n- 路由结果支持动态补充与重排，静态 playbook 结果始终必算、永不缺席，未配置 provider 时历史输出完全兼容。\n- 新增文档 `references/provider-protocol.md`，详述 provider 协议和配置方法。\n- 代码重构，新增 provider 接入模块 `lib/provider.js`。\n- 移除过时的 `skill-card.md` 文档。\n- 文档同步更新，明确动态扩展边界与调用方式。\n\nv0.19.28 | 2026-09-28T07:31:45.451Z | auto\n\nyotta-skills v0.19.28\n\n- Updated documentation in SKILL.md and CHANGELOG.md.\n- synched references and manifest files for new/removed skill cards.\n- Removed deprecated skill-card.md file.\n- Refined skill lists and internal references for improved skill orchestration.\n- Minor package metadata and script adjustments.\n\nv0.19.27 | 2026-09-27T07:11:08.105Z | auto\n\n- yotta-skills updated to version 0.19.27.\n- Documentation updates and refinements across CHANGELOG.md, SKILL.md, and references/skill-list.md.\n- Code and manifest maintenance in bin/yotta-skills.js, package.json, scripts/yotta-skills-mcp.py, skill-manifest.json, and skills.json.\n- Obsolete or redundant documentation removed (skill-card.md).\n\nv0.19.26 | 2026-09-27T04:27:13.940Z | auto\n\nyotta-skills v0.19.26\n\n- Removed obsolete file: skill-card.md.\n- Updated documentation and skill metadata.\n- Refreshed SKILL.md to reflect current features and usage.\n- Refined internal scripts and configuration files for maintenance and clarity.\n- No breaking changes to CLI usage or core functionality.\n\nv0.19.25 | 2026-09-26T15:45:09.031Z | auto\n\nyotta-skills v0.19.25\n\n- Updated skill metadata and documentation for greater clarity and accuracy.\n- Synced all references, manifest, and skill lists with current skill packages.\n- Cleaned up files: removed outdated skill-card.md.\n- Refined CLI script behavior and skill handling logic.\n- Bumped dependencies and internal version to 0.19.25.\n\nv0.19.24 | 2026-09-26T12:17:13.897Z | auto\n\nyotta-skills v0.19.24\n\n- Updated internal documentation and skill manifest files.\n- Removed deprecated skill-card.md file.\n- Minor refinements to orchestration, skill listing, and inventory logic.\n- Improved consistency and versioning in package and reference files.\n- No user-facing CLI changes; all core functionality remains the same.\n\nv0.19.23 | 2026-09-26T07:17:53.412Z | auto\n\nyotta-skills 0.19.23\n\n- Documentation and manifest updated to reflect recent changes.\n- Minor clarifications and improvements in usage notes and orchestration instructions.\n- Removed skill-card.md for a cleaner file structure.\n- All references and version info updated to 0.19.23.\n\nv0.19.22 | 2026-09-25T17:05:03.455Z | auto\n\n- 增强了副作用操作（如 install/update）的权限边界说明，明确需用户确认，不自动安装，也不对符号链接目标写入\n- 批量安装（多技能/多目录/全家）需显式 --yes，禁止一次性静默授权，保障操作安全\n- 删除无用 skill-card.md，简化包内容\n- 文档优化：补充对宿主配置/全局记忆不静默写入的描述，强调只在用户明确同意下运行相关操作\n- 保持自包含、零依赖，不依赖任何其他元技能，提高兼容性和可控性\n\nv0.19.21 | 2026-09-25T14:20:19.777Z | auto\n\nyotta-skills 0.19.21\n\n- Updated skill documentation and metadata for clarity and accuracy.\n- skill-card.md file removed to streamline the documentation set.\n- Minor corrections and refinements to skill manifest and skill list references.\n- General maintenance updates to scripts and listed references for consistency.\n\nv0.19.20 | 2026-09-25T10:09:45.540Z | user\n\n0.19.20：清单同步元忆 0.17.0；补记信任层四件与元公 0.1.2；人工可读清单对齐 27 技能与两个新家族分区。\n\nv0.19.19 | 2026-09-23T15:37:10.373Z | auto\n\n- Removed unused file: skill-card.md.\n- Updated documentation in SKILL.md and other markdown files.\n- Adjusted package.json and skill-manifest.json for version bump to 0.19.19.\n- Various content, metadata, and command list updates for clarity and consistency.\n- Minor script and reference list adjustments.\n- No functional code changes noted (docs and manifest/versioning only).\n\nv0.19.18 | 2026-09-23T13:15:11.156Z | auto\n\n- Removed obsolete file skill-card.md.\n- Updated documentation in SKILL.md and CHANGELOG.md.\n- Refreshed skill lists and references.\n- Internal manifest and config updates for improved skill orchestration.\n- Version bump to 0.19.18.\n\nv0.19.17 | 2026-09-22T16:09:54.351Z | auto\n\n- updated 8, removed 1 file(s).\n- Updated SKILL.md and bundle contents.\n\nv0.19.16 | 2026-09-22T15:05:44.542Z | auto\n\nyotta-skills 0.19.16\n\n- Removed legacy skill-card.md file for a cleaner repository.\n- Updated documentation (SKILL.md, CHANGELOG.md, references/skill-list.md) to reflect recent feature and command changes.\n- Synced skill-manifest.json and skills.json with latest skill roster.\n- Updated bin/yotta-skills.js and scripts/yotta-skills-mcp.py for compatibility and accuracy.\n- Version bump and dependency refresh in package.json.\n\nv0.19.15 | 2026-09-21T16:54:28.221Z | auto\n\nyotta-skills v0.19.15\n\n- Removed legacy/unused file: `skill-card.md`\n- Documentation and metadata updates across multiple files\n- Minor tweaks to orchestration, references, and manifest content\n- Package version bumped to 0.19.15\n\nNo breaking changes or feature additions in this update.\n\nv0.19.14 | 2026-09-21T12:07:49.352Z | auto\n\n- Removed obsolete `skill-card.md` file to reduce redundancy.\n- Updated references and skill manifests to reflect latest versions and available skills.\n- Improvements to scripts and CLI handling for reliability and consistency.\n- Documentation updates in SKILL.md and CHANGELOG.md for clearer usage and guidance.\n- Internal maintenance in bin and scripts to streamline installation, inventory, and orchestration workflows.\n\nv0.19.13 | 2026-09-19T15:59:15.917Z | auto\n\n- Added new trusted verifier module to enhance verification workflows.\n- Updated internal logic in verification (lib/verify-gate.js) for improved handling of trust checks.\n- Refreshed skill metadata and documentation, including SKILL.md and CHANGELOG.md.\n- Updated skill registry and references to reflect latest skill combinations and routing.\n- Incremented version to 0.19.13.\n\nArchive index:\n\nArchive v0.29.10: 59 files, 311759 bytes\n\nFiles: bin/yotta-skills.js (233895b), CHANGELOG.md (67751b), install.sh (11315b), lib/agent-dirs.js (14382b), lib/agent-discovery.js (19066b), lib/cli-help.js (29184b), lib/copy-tree.js (1415b), lib/deps.js (5770b), lib/hook-adapter.js (11997b), lib/host-purge.js (5543b), lib/hosts-registry.js (13870b), lib/hub-adopt.js (13129b), lib/hub-migrate.js (14015b), lib/hub-scan.js (4197b), lib/hub-targets.js (3138b), lib/hub-view-server.js (45565b), lib/hub.js (61127b), lib/install-evidence.js (528b), lib/install-health.js (6499b), lib/install-lifecycle.js (4418b), lib/install-pipeline.js (18956b), lib/install-snapshot.js (8859b), lib/m1-features.js (3666b), lib/manifest.js (4671b), lib/npm-pack.js (4118b), lib/provider.js (8462b), lib/registry-fetch-child.js (1176b), lib/registry-fetch.js (15502b), lib/route-dynamic.js (6032b), lib/route-features.js (6375b), lib/route.js (10615b), lib/scan-policy.js (6615b), lib/self-install.js (7133b), lib/skills-cli-lock.js (1492b), lib/skills-config.js (9443b), lib/skills-scan.js (17391b), lib/trusted-verifier.js (5886b), lib/untar.js (6204b), lib/update-check.js (2791b), lib/usage-journal.js (6539b), lib/verify-gate.js (4669b), package.json (1041b), README.md (25540b), README.zh-CN.md (23384b), references/faq.md (5962b), references/hub.md (16766b), references/install-flow.md (12937b), references/orchestration.md (8725b), references/provider-protocol.md (10582b), references/skill-list.md (5092b), references/tutorial.md (8527b), references/walkthroughs.md (1552b), scan-policy.json (15197b), scripts/yotta-skills-mcp.py (15302b), skill-card.md (2181b), skill-manifest.json (844b), SKILL.md (52326b), skills.json (7120b), _meta.json (133b)\n\nFile v0.29.10:SKILL.md\n\n---\r\nname: yotta-skills\r\nslug: yotta-skills\r\nversion: 0.29.10\r\ndisplayName: 元阁·技能编排助手\r\nsummary: 元阁全家技能编排：组合策划、路由建议、一键安装、技能盘点，装前摘要供用户决策。\r\ndescription: '元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点 + 本机技能 Hub + 运行时 hook 适配。Hub 层：hub hosts 只读发现本机已装智能体与技能目录（文件系统优先，不读元忆；已核实 / 自动发现 / 桥接分类 + 状态细分：可用 / 残留（实体未确认）/ 未创建 / 仅标记）；hub hosts add/remove/list/mark/exclude/include/set 注册自定义宿主目录、手动标记、不接管开关与目录覆盖（只注册不建目录、移除不删目录；残留清理 hub hosts remove --purge 默认预览、目录入回收站 7 天；YottaCode 不纳入接管）；install-self / where 把元阁管理引擎独立安装（默认 ~/.yottaskills/yotta-skills，--dir 指定）并查看运行位置；hub config get/set/clear/rollback 持久化 Hub 位置（config.json；优先级 --hub > YOTTA_SKILLS_HUB > config > 默认；--move 迁移旧 Hub + 重链 + 回收站；lastMigration 记录 + 一键回滚 = 位置回退；仅切换且旧 Hub 非空时记录未迁移供面板一键迁移）；hub cleanup-backups 清理历史备份 / 暂存残留（回收站 7 天）；hub install / update 把技能装到 ~/.yottaskills/hub 单点真源（清单 27 + 特殊家族 5，特殊家族跟随各自 npm latest；update / hub update 只升不降，--force 才显式降级）；hub link --all 用 Windows junction / POSIX symlink 分发到全部已核实宿主（默认范围；--include-discovered 显式纳入自动发现目录；锁 / 数据桥接目录永不链接），元技能在链接时收敛宿主旧副本（移入 ~/.yottaskills/trash 保留 7 天、版本闸门 Hub ≥ 宿主）；hub unlink 只删链接、fail-closed；非元技能不参与更新（用户自行处理）；hub status 显示来源、版本、链接与异常；view 启动本机技能枢纽面板（默认 127.0.0.1:8789，六视图 + 高级 CLI 页，写操作需页面令牌与确认）；兼容 agentskills.io 技能格式、Vercel Labs skills CLI 的 .agents/skills 通用目录与 .skill-lock.json v3（只读）。路由层：--route / route_request 按需求摘要给出候选组合、调用顺序、角色、置信度、依据、已装/缺失状态与安装命令，只建议不自动安装；非元阁家族已装技能按 frontmatter description 机械匹配作并列候选（标注来源与未扫描状态，只读不自动调用）；M1 记忆裁决层：usage enable/mark 本地结构化记录 + decide-memory / MCP decide_memory 输出 promote / hold / demote 只读建议（需授权 provider；只建议不删除、不自动写元忆）；策划层：按场景给出「该组合哪几个元技能、组合强在哪、怎么组合使用（安装与调用均由用户确认后执行）」；安装层：一条命令把 YottaMeta 已发布的全部 yotta-* 技能装进指定智能体或目录（默认 --pin 锁死清单精确版本）；盘点层：--inventory / --reindex 扫描本机已装技能生成/更新注册表，新装技能自动被发现（install/update 后自动 re-index，会话开工只建议跑本地 --reindex；更新检查走手动 --check 或后台 --check --scheduled）；运行时适配层：hook capabilities / evaluate / bind / unbind 按宿主能力矩阵执行六个统一事件并留证降级，元信 before_install 已接入安装管线；自包含零依赖，不依赖任何元技能；MCP 按需加载且需用户确认后写入配置（可选：list_installed_skills/describe_skill/reindex/route_request/decide_memory，不常驻，未加载降级 CLI）。支持 --list 清单 / --route 路由 / usage 使用记录 / decide-memory 记忆裁决 / hub 技能 Hub / install-self 独立安装 / where 位置查看 / install / update / update --check（只读检查）/ update --check --scheduled（后台周检）/ update --auto（家族自动更新）/ hook 适配 / --inventory / --reindex / --dry-run 预览 / --pin（默认）/ --range。触发：需要批量安装或更新元阁全家技能、单点安装并分发到多个智能体、查看本机装了哪些智能体与技能目录、接管非元技能、按场景组合多个元技能、路由或判断该用哪些技能、判断哪些技能值得长期记忆、查看或记录技能使用信号、盘点或查看本机已装技能、重扫技能注册表、给某个智能体或目录一次性铺齐 yotta-* 技能、评估宿主 hook 能力、预览安装清单、锁版本安装、或用户说 元阁/装全家/一次装齐/yotta-skills/install-all/更新全家/检查更新/自动更新/hook 适配/该用哪个技能/路由技能/记忆裁决/技能该不该记住/盘点技能/查看已装技能/技能 Hub/单点安装/链接分发/接管技能/技能枢纽面板/图形化面板/独立安装元阁/查看元阁位置/持久化 Hub 位置/换 Hub 目录/迁移 Hub/迁移回滚/回滚 Hub 位置/清理备份残留/自定义宿主/残留清理/宿主状态 等。边界（Do NOT trigger）：只做「组合策划 + 静态路由建议 + M1 记忆裁决只读建议 + 清单 + 下载 + 落位 + 汇总 + 盘点 + re-index + Hub 本机真源与链接分发 + hook 适配」，不含技能本体、不做技能内容开发、不 -g 污染全局、不自动安装缺失技能、不静默写宿主配置或全局记忆、不自动删除技能或记忆；家族安装先自举或调用元信装前门禁，DO NOT INSTALL 阻断，非元阁家族包不自动安装。'\r\ntags: [技能编排, 路由, 一键安装, 技能盘点, orchestration, install]\r\ncategory: ai-agent\r\nlicense: MIT\r\nhomepage: https://github.com/YottaMeta/yotta-skills\r\nmetadata:\r\n  zh_name: 元阁\r\n---\r\n## 使用须知（先做这一步）\r\n\r\n本技能为**按需触发**技能，本身不常驻。「元阁总编排策划」这套组合决策如果想在**每个会话都可用**，\r\n可以由用户把它写进客户端的全局记忆文件（Codex 的 `AGENTS.md`、Claude Code 的 `CLAUDE.md`、\r\n其它智能体的全局/永久记忆），使下个会话自动注入。\r\n\r\n**这是可选步骤，且必须先获得用户明确同意。AI 不得静默写入，也不得把写入当作使用本技能的前提。**\r\n\r\n写入前按四步执行：\r\n\r\n1. **展示**：把**目标文件路径**（如 Codex 的 `$CODEX_HOME/AGENTS.md`）、\r\n   准备写入的**完整文本**、以及写入后的效果（下个会话会自动注入这段说明）一并展示给用户；\r\n2. **确认**：只有用户明确同意后才写入；**未获同意前不写任何文件**；\r\n3. **回读校验**：写入后回读确认；目标文件中已有同段内容 → 跳过，不重复堆叠；\r\n4. **拒绝不影响功能**：用户拒绝或文件不可写时，只说明「未写入全局记忆」，照常使用 CLI\r\n   （`--route` / `install` / `--inventory`），功能不受影响。\r\n\r\n**可选写入文本（逐字，需用户确认后写入）**：\r\n\r\n> **元阁编排**：单技能是零件，组合才是系统。接到需求先查「元阁编排策划」命中哪个组合\r\n> （输出呈现标准 / 长生命周期 / 交付质量门 / 装前安全门 / 造技能发版 / 安全事件响应 / 入口安装），\r\n> 由 AI 给出**建议**，**经用户确认后**再安装对应技能并调用。本技能不自动安装、不自动调用其他技能，\r\n> 安装与调用决定权始终在用户。需要时可运行 `yotta-skills --reindex` 重扫本机技能注册表（本地扫描），\r\n> `yotta-skills update --check` 做只读版本检查，或后台周检 `yotta-skills update --check --scheduled`\r\n> （未到期不联网，到期单次检查并写缓存）。完整决策表见技能 `yotta-skills/references/orchestration.md`。\r\n\r\n**写入位置**：客户端全局记忆文件（Codex = `$CODEX_HOME/AGENTS.md`，未设置时回退 `~/.codex/AGENTS.md` 的「通用方法论」节）。\r\n**写入时机**：仅当用户明确要求「让元阁编排在每个会话自动可用」时，按上面四步执行；否则只提供文本供用户自行粘贴。\r\n\r\n---\r\n\r\n# 元阁（yotta-skills）\r\n\r\n**元阁全家的总编排策划 + 编排路由 + 一键安装 + 技能盘点**，一句话四层：\r\n\r\n- **路由层（该用哪几个）**：`--route \"<需求摘要>\"` / MCP `route_request` 查本地注册表与静态编排 playbook，输出候选组合、调用顺序、每个技能角色、置信度、依据、已装/缺失状态与安装命令；非元阁家族已装技能按 frontmatter description 机械匹配作并列候选（标注来源与未扫描状态，只读不自动调用）；只建议安装，不自动安装。\r\n- **O1 动态路由层（v0.23.0，capability `o1.route`）**：可选调用用户显式配置的本地扩展提供方（provider），在已装注册表白名单内对路由结果增补 / 重排，并返回 `confidence` / `reasons` / `summary` / `alternatives`；静态 playbook 结果先算必算、永不缺席，未配置或调用失败时文本输出与历史一致，`--json` 仅多一个 `dynamic` 状态块。协议与配置见 `references/provider-protocol.md`。\r\n- **M1 记忆裁决层（哪些值得长期记住）**：`decide-memory` / MCP `decide_memory` 调用可选本地 provider（capability `m1.adjudicate`），输出 `promote / hold / demote` 只读建议、分数与信号明细；默认不写元忆、不删除技能。`usage` 默认关闭，用户显式开启后才记录结构化使用信号。协议与边界见 `references/provider-protocol.md`。\r\n- **策划层（怎么用）**：接到需求，先按「编排策划」定位命中哪个组合——哪些元技能搭配起来最强、适合什么场景、AI 该给出什么安装与调用建议（**安装与调用均由用户确认后执行**）。\r\n- **安装层（怎么装）**：一条 `npx -y @yottameta/yotta-skills` 把组合/全家装进指定智能体或目录——`--list` 看清单、`install` 装、`update` 增量更新、`doctor` 只读自检、`rollback` 恢复快照、`--dry-run` 预览、`--pin` 锁版本。\r\n\r\n> **权限边界**：`install` / `update` 会写入目标技能目录，属于有副作用操作——执行前先用 `--dry-run`\r\n> 展示将写入的目录与技能清单，由用户确认后再执行；批量安装（多技能 / 多目录 / 装全家）不是一次性授权，\r\n> 新增目标目录要重新确认。不静默写宿主配置、不自动安装缺失技能、不 `-g` 污染全局；\r\n> 安装器拒绝对符号链接目标写入，批量安装需显式 `--yes`。\r\n\r\n- **盘点层（已装了什么）**：`--inventory` / `--reindex` 扫描本机各智能体技能目录，生成/更新本地注册表；装技能后自动 re-index，新装技能自动被发现——自包含扫描，不依赖任何元技能。\r\n\r\n每个技能仍走各自独立的 npm 包（版本源唯一）；本包只做「清单 + 下载 + 落位 + 汇总」，**不内置任何技能本体**。\r\n> **本包不含技能本体**：拿到它只代表有了「编排策划 + 安装工具」；真正装齐需运行 `install`。\r\n\r\n---\r\n\r\n## 编排策划（先看这个）\r\n\r\n**单技能是零件，组合才是系统。** 元阁的价值不只是「装齐全家」，更是告诉你**什么时候该用哪几个、为什么、怎么组合使用**。完整决策表见 `references/orchestration.md`。\r\n\r\n### 组合矩阵（哪些和哪些，强在哪）\r\n\r\n| 组合 | 成员（slug） | 一起用强在哪 | 单用缺什么 |\r\n|---|---|---|---|\r\n| **① 输出呈现标准** | yotta-present + yotta-humanize | 先判型渲染成规范可复制输出，再祛 AI 味，交付统一且读感自然 | 只规范化不祛 AI 味；只祛 AI 味不规整 |\r\n| **② 长生命周期智能体** | yotta-workflow + yotta-memory + yotta-learn + yotta-logs | 开工恢复、权限记忆、沉淀学习、检索历史，越用越懂你 | 状态无处放；记忆无边界；错不沉淀；历史查不到 |\r\n| **③ 交付质量门** | yotta-anti-shallow + yotta-code-quality + yotta-publish-guard | 防敷衍、结对评审、发布守门，交付前多层把关 | 容易停留表面；代码无人审；发版无守门 |\r\n| **④ 装前安全门** | yotta-verify（或元信MCP）+ yotta-vetter + yotta-security-audit | 确定性扫描 + 协议审查 + 深检，装其他来源技能前可信判定 | 无确定性扫描；无协议审查；无深检 |\r\n| **⑤ 造技能 / 发版** | yotta-skill-creator + yotta-publish-guard | 脚手架生成合规技能 + 发布守门 | 造技能无模板；造完不知能否发 |\r\n| **⑥ 安全事件响应** | yotta-logwatch + yotta-intel + yotta-triage + yotta-secret + yotta-chain + yotta-recon | 日志攻击链 + IOC + 样本初筛 + 密钥 + 供应链 + 侦察，看全链路 | 每项只管一环，单用看不到全貌 |\r\n| **⑦ 入口 + 安装** | yotta-prompt + yotta-skills | 元引澄清需求串联，元阁按场景把组合装好 | 需求模糊不知用哪个；要一个个装 |\r\n\r\n### 场景 → 组合映射（接到需求查表）\r\n\r\n| 用户场景 | 该组合 | 建议动作（经用户确认后执行） |\r\n|---|---|---|\r\n| 「让 AI 长期帮我做项目 / 别忘了我 / 跨会话」 | ② 长生命周期 | 装 yotta-workflow yotta-memory yotta-learn yotta-logs；开工恢复上下文、状态就近存、会话结束留记录 |\r\n| 「帮我写/润色，输出规范、别 AI 味」 | ① 输出呈现标准 | 装 yotta-present yotta-humanize；默认先判型渲染，检测 AI 味再改写 |\r\n| 「检查代码/报告质量，别糊弄」 | ③ 交付质量门 | 装 yotta-anti-shallow yotta-code-quality yotta-publish-guard；按对应协议执行 |\r\n| 「我要装其他来源技能/插件/MCP」 | ④ 装前安全门 | 装 yotta-verify(+MCP) yotta-vetter yotta-security-audit；装前必扫 |\r\n| 「我要造新 skill 并发布」 | ⑤ 造技能/发版 | 装 yotta-skill-creator yotta-publish-guard；生成 + 守门 |\r\n| 「我怀疑日志/资产有问题」 | ⑥ 安全事件响应 | 装 yotta-logwatch yotta-intel yotta-triage yotta-secret yotta-chain yotta-recon；按需调用 |\r\n| 「不知道怎么说 / 一堆技能该用哪个」 | ⑦ 入口+安装 | 装 yotta-prompt yotta-skills；元引澄清→串联→按组合装 |\r\n\r\n### AI 建议安装与组合规则\r\n\r\n1. **查表**：接到需求，先在「场景 → 组合映射」定位命中组合。\r\n2. **查已装**：检查当前智能体技能目录是否存在对应 `<slug>/SKILL.md`；存在即已装，缺失即待装。\r\n3. **建议装**：只列组合所需技能（不装全家）与安装命令\r\n   `npx -y @yottameta/yotta-skills install <slug>... [--agent <name> | --dir <path>]`（默认 `--pin` 锁死清单精确版本），\r\n   **先给出清单与命令，等用户确认后再执行**；用户未确认 → 不安装。\r\n4. **建议用**：说明命中组合的推荐动作（如输出按元呈判型渲染、开工恢复上下文 + 读状态文件），\r\n   **由用户确认后生效**。跨会话的默认行为需要写进客户端全局记忆，写入本身同样需要用户明确同意（见「使用须知」）；\r\n   **不得**把「无需提醒」「默认全走」当作常驻授权。\r\n5. **用户触发（高风险）**：命中「④ ⑥ ⑤」等高风险或目的不明时，AI 给出技能清单 + 执行方案，**先征询用户确认**再执行；拿不准就当未装，只给安装命令。\r\n6. **判断标准**：技能目录有对应 `SKILL.md` 即视为已装；拿不准 → 视为未装并给提示。\r\n\r\n---\r\n\r\n## 快速使用（安装层）\r\n\r\n**首选流程（Hub 主路径，安装本体与智能体无关）**：\r\n\r\n```bash\r\n# 1) 看本机有哪些宿主与技能目录（状态细分：可用 / 残留 / 未创建 / 仅标记）\r\nnpx -y @yottameta/yotta-skills hub hosts\r\n\r\n# 2) 装进 Hub 真源（默认 ~/.yottaskills/hub；无需指定智能体）\r\nnpx -y @yottameta/yotta-skills hub install\r\n\r\n# 3) 分发到全部已核实宿主（Windows junction / macOS·Linux symlink）\r\nnpx -y @yottameta/yotta-skills hub link --all\r\n\r\n# 4) 图形化面板管理（宿主矩阵 / 链接与体检 / 收编 / 迁移向导 / 回滚）\r\nnpx -y @yottameta/yotta-skills view\r\n```\r\n\r\n**换 Hub 存储位置（持久化；`--move` 迁移已有技能并重链）**：\r\n\r\n```bash\r\n# 持久化配置（写入 ~/.yottaskills/config.json；优先级 --hub > YOTTA_SKILLS_HUB > config > 默认）\r\nnpx -y @yottameta/yotta-skills hub config set --hub \"D:\\my-hub\" --move\r\nnpx -y @yottameta/yotta-skills hub config get   # 查看生效位置与来源\r\nnpx -y @yottameta/yotta-skills hub config rollback        # 回滚预览（位置回退，用当前内容）\r\nnpx -y @yottameta/yotta-skills hub config rollback --yes  # 执行回滚（反向迁移同内核）\r\nnpx -y @yottameta/yotta-skills hub config clear # 清除覆盖\r\nnpx -y @yottameta/yotta-skills hub cleanup-backups --yes  # 清理历史备份 / 暂存残留（回收站 7 天）\r\n```\r\n\r\n**元阁独立安装（把管理引擎装成独立 CLI，不依赖任何智能体）**：\r\n\r\n```bash\r\n# 默认装到 ~/.yottaskills/yotta-skills；--dir 指定位置\r\nnpx -y @yottameta/yotta-skills install-self\r\nnpx -y @yottameta/yotta-skills install-self --dir ~/tools/yotta-skills\r\n\r\n# 查看元阁位置（运行中 CLI / 独立安装目录 / Hub 真源）\r\nnpx -y @yottameta/yotta-skills where\r\n```\r\n\r\n**指定智能体直装（兼容路径）**：\r\n\r\n```bash\r\n# 列出全家技能 + 版本 + 说明\r\nnpx -y @yottameta/yotta-skills --list\r\n\r\n# 装全家到指定智能体默认用户级目录\r\nnpx -y @yottameta/yotta-skills install --agent codex\r\n\r\n# 装全家到任意目录（每个技能落在 <dir>/<slug>）\r\nnpx -y @yottameta/yotta-skills install --dir ~/my-skills\r\n\r\n# 只装单个 / 多个技能（按编排策划选组合时常用）\r\nnpx -y @yottameta/yotta-skills install yotta-memory yotta-verify --dir ~/my-skills\r\n\r\n# 增量更新已装技能（补齐缺失 + 升级；只升不降：本地更高保留不降级，--force 才显式降级）\r\nnpx -y @yottameta/yotta-skills update --agent codex\r\n\r\n# 只读检查有没有更新（联网对 npm 最新，不改动；0=全部最新 / 3=有更新 / 1=查失败）\r\nnpx -y @yottameta/yotta-skills update --check --agent codex\r\n\r\n# 后台周检入口（未到期不联网；到期只检查一次并写 ~/.yottaskills/update-check.json）\r\nnpx -y @yottameta/yotta-skills update --check --scheduled --agent codex\r\n\r\n# 检查到家族更新后自动更新（仅 yotta-* 自家家族，含装前安全扫描）\r\nnpx -y @yottameta/yotta-skills update --auto --agent codex\r\n\r\n# 只读检查已装技能（不修改目录；可加 --json 输出机器可读结果）\r\nnpx -y @yottameta/yotta-skills doctor --agent codex\r\n\r\n# 查看可用快照 / 回滚最近一次安装或更新\r\nnpx -y @yottameta/yotta-skills rollback --list --agent codex\r\nnpx -y @yottameta/yotta-skills rollback --slug yotta-memory --agent codex\r\n\r\n# 预览将安装清单（不联网、不改动）\r\nnpx -y @yottameta/yotta-skills --dry-run\r\n\r\n# 盘点本机已装技能（自包含扫描，不依赖任何元技能）\r\nnpx -y @yottameta/yotta-skills --inventory\r\n\r\n# 重扫注册表（会话开工 / 新装技能后，增量合并变化）\r\nnpx -y @yottameta/yotta-skills --reindex\r\n\r\n# OpenClaw：走宿主官方技能命令，保留安全审计与更新追踪\r\nopenclaw skills install @yottameta/yotta-skills\r\nopenclaw skills update @yottameta/yotta-skills\r\n```\r\n\r\n> **OpenClaw 用户**：技能安装与更新走宿主官方命令 `openclaw skills install|update @yottameta/<slug>`，\r\n> 以保留宿主的 ClawHub 安全审计卡与更新追踪；元阁的 `--inventory` / `--reindex` 已能识别 `~/.openclaw/skills`（含 `OPENCLAW_STATE_DIR` 覆盖）。\r\n\r\n## 技能 Hub（单点安装 + 链接分发）\r\n\r\nHub 把「每个宿主装一份」改成「本机一份真源，按宿主链接分发」。默认真源\r\n`~/.yottaskills/hub`，可用 `--hub <dir>` 或 `YOTTA_SKILLS_HUB` 覆盖。\r\n\r\n元技能（清单 27 + 特殊家族 5：元开 / 元伴 / 元呈 / 元阁本体 / 元信MCP）\r\n在 `hub link` 执行时收敛唯一性：宿主里的同名真目录 / `yotta-X__*`\r\n重命名副本会先移入回收站（`~/.yottaskills/trash/<时间戳>/`，保留 7 天、\r\n输出恢复路径；跨卷场景自动回退「复制 → 校验 → 删除源」），再建立指向\r\nHub 的链接；宿主版本高于 Hub 时跳过并提示先\r\n`hub update`；目标条目为指向 Hub 之外的链接时默认跳过，显式 `--force`\r\n可替换（仅移除链接本身）；外部技能同名冲突仍默认跳过、不自动删、不自动更新。\r\n\r\n```bash\r\n# 1) 只读发现本机已装智能体与技能目录（文件系统 + 环境变量；不读元忆 / 注册表）\r\nnpx -y @yottameta/yotta-skills hub hosts\r\n\r\n# 2) 把元技能装进 Hub 真源（复用安装管线 + 元信装前扫描）\r\nnpx -y @yottameta/yotta-skills hub install\r\n\r\n# 3) 接管各宿主现有技能：先只读预演，再复制收编（原目录保留）\r\nnpx -y @yottameta/yotta-skills hub adopt --scan\r\nnpx -y @yottameta/yotta-skills hub adopt --apply\r\n\r\n# 4) 链接分发到全部已核实宿主（默认范围；Windows junction / macOS·Linux symlink）\r\nnpx -y @yottameta/yotta-skills hub link --all\r\n\r\n# 4b) 显式把自动发现目录一并纳入（默认不链；锁 / 数据桥接目录永不链接）\r\nnpx -y @yottameta/yotta-skills hub link --all --include-discovered\r\n\r\n# 5) 查看来源、版本、链接宿主与异常\r\nnpx -y @yottameta/yotta-skills hub status\r\nnpx -y @yottameta/yotta-skills hub doctor\r\n\r\n# 5b) 自定义宿主注册（只注册，不创建目录、不改宿主配置；移除注册不删目录）\r\nnpx -y @yottameta/yotta-skills hub hosts add ~/my-agent/skills --label \"我的宿主\"\r\nnpx -y @yottameta/yotta-skills hub hosts list\r\nnpx -y @yottameta/yotta-skills hub hosts remove ~/my-agent/skills\r\n\r\n# 5c) 手动标记状态 / 清理残留（清理默认预览；只删指向 Hub 的链接，目录入回收站 7 天）\r\nnpx -y @yottameta/yotta-skills hub hosts mark ~/my-agent/skills --state orphan\r\nnpx -y @yottameta/yotta-skills hub hosts remove ~/my-agent/skills --purge\r\nnpx -y @yottameta/yotta-skills hub hosts remove ~/my-agent/skills --purge --yes\r\n\r\n# 5d) 不接管 / 目录覆盖（发现 / 显示 / 链接三层跳过；恢复用 include；set 覆盖内置映射）\r\nnpx -y @yottameta/yotta-skills hub hosts exclude box\r\nnpx -y @yottameta/yotta-skills hub hosts include box\r\nnpx -y @yottameta/yotta-skills hub hosts set box --dir \"D:\\box-agent\\skills\"\r\nnpx -y @yottameta/yotta-skills hub hosts set box --clear\r\n\r\n# 6) 本地面板：预览、确认、执行、留证（仅 127.0.0.1:8789）\r\nnpx -y @yottameta/yotta-skills view\r\n\r\n# 只删链接，不动 Hub 真源（真目录 / 外部链接一律拒绝）\r\nnpx -y @yottameta/yotta-skills hub unlink --all\r\n\r\n# 指定智能体分发 / 解除（只影响该宿主；Hub 真源保留）\r\nnpx -y @yottameta/yotta-skills hub link yotta-memory --agent codex\r\nnpx -y @yottameta/yotta-skills hub unlink yotta-memory --agent codex\r\n\r\n# 彻底删除 Hub 技能：全宿主清链接（含死链）+ 目录入回收站 + 清台账 + 审计\r\nnpx -y @yottameta/yotta-skills hub remove my-skill --dry-run\r\n```\r\n\r\n链接范围（0.28.0 起）：`hub hosts` 把目录分为已核实 / 自动发现 / 桥接三类 ——\r\n**默认范围只含已核实宿主**（映射经公开宿主表 / 官方文档 / 本机自证核实）；自动发现\r\n目录需 `--include-discovered` 显式纳入；`XDG_STATE_HOME/skills`（skills CLI\r\n锁目录）与 `XDG_DATA_HOME/skills` 是锁 / 数据桥接，永不作为链接目标。\r\n`hub doctor` 的 `link_scope` 检查只读报告范围外链接。逐智能体核实表见\r\n发布方内部核实记录；本机可随时用 `hub hosts` 复算分类与范围。\r\n\r\n状态细分（0.29.0 起）：每条宿主目录带生命周期状态 —— **可用**（实体已确认：应用标记 /\r\n用户注册 / 手动标记）、**残留**（实体未确认；可手动确认后清理）、**未创建**、\r\n**仅标记**（已装实体、技能目录未创建）；`hub doctor` 的 `host_state` 检查只读提示，\r\n不判 fail。残留清理 = `hub hosts remove <目录> --purge`（默认预览，`--yes` 执行；\r\n只删指向 Hub 的链接，非 Hub 链接 / 非技能内容随目录保留在回收站 7 天）。\r\n\r\n不接管与目录覆盖（0.29.1 起）：`hub hosts exclude <agentId|目录>` 把目标从发现、\r\n显示、链接三层全部跳过（`--include-discovered` 也不纳入；已建链接不受影响，可\r\n`hub unlink` 清理），`hub hosts include` 恢复接管；`hub hosts set <agentId> --dir <目录>`\r\n用户级覆盖内置映射（被覆盖旧目录不再进入默认发现 / 链接），`--clear` 恢复默认。\r\n面板「宿主矩阵」提供等价动作（不接管 / 恢复接管 / 编辑目录 / 标记可用 / 忽略），\r\n写操作均写 Hub 审计。**YottaCode 不纳入接管**（自带三层技能管理；`.yottacode` 与\r\n`YOTTACODE_HOME` 在映射 / 扫描 / 注册 / 标记 / 链接全部排除）。未核实映射显示\r\n「映射·未核实」，「自动发现」只用于文件系统扫描结果。\r\n\r\n宿主发现兼容 `agentskills.io` 技能格式与 Vercel Labs `skills` CLI 的\r\n`.agents/skills` 通用目录；已收录 81 条宿主映射，并只读兼容\r\n`.skill-lock.json` v3（`$XDG_STATE_HOME/skills/` 或 `~/.agents/`）。\r\n不读元忆，不重写官方锁文件，不静默降级为复制。\r\n\r\n删除技能（0.28.3 起）：`hub remove <slug>` 一条命令完成「全宿主清链接（含死链）→\r\nHub 目录入回收站（保留 7 天）→ 清 Hub / 链接台账 → 写审计」，fail-closed：只删指向\r\nHub 的链接与 Hub 内目录，真副本 / 外部链接一律保留并报告；链接清理报错即中止、不删\r\nHub。默认范围为已核实宿主 ∪ 本技能链接台账；`--agent` / `--dir` 收窄仅用于 Hub 目标\r\n已缺失的死链清理（防止只清一个宿主导致其他宿主变死链）。指定智能体分发 / 解除用\r\n`hub link|unlink <slug> --agent <id>`。\r\n\r\n## 命令与选项\r\n\r\n| 命令 / 选项 | 作用 |\r\n|---|---|\r\n| `--list`（`-l`） | 列出全家技能 + 版本 + 说明；可加技能名过滤 |\r\n| `install --agent <name>` | 装全家到指定智能体默认用户级目录（推荐） |\r\n| `install --dir <path>` | 装全家到指定目录，每个技能落在 `<path>/<slug>` |\r\n| `install <skill>... [--agent <name> \\| --dir <path>]` | 只装指定的一个或多个技能 |\r\n| `update [--agent <name> \\| --dir <path>]` | 增量更新：补齐缺失技能、升级版本不一致的技能 |\r\n| `update --installed-only [--agent <name> \\| --dir <path>]` | 只维护目标目录**已安装**的家族技能（不补装缺失；无匹配时退出码 0）——接管现有元技能的标准配方 |\r\n| `update --check [--agent <name> \\| --dir <path>]` | 只读检查更新：联网对 npm 最新，不改动；退出码 0=全部最新 / 3=有更新 / 1=查失败 |\r\n| `update --check --scheduled [--agent <name> \\| --dir <path>]` | 后台周检入口：未到期不联网；到期只检查一次并写本地缓存；文本失败静默，`--json` 保留诊断；始终退出 0 |\r\n| `update --auto [--agent <name> \\| --dir <path>]` | 检查到家族更新后自动更新（仅 yotta-* 自家家族，含装前安全扫描） |\r\n| `doctor [--agent <name> \\| --dir <path>] [--slug <slug>]` | 只读自检：SKILL / 版本 / manifest / 注册表 / 自定义 doctor；`--dir` 可指向技能集合目录或单个技能包目录；退出码 0=通过 / 4=没有可检查对象 / 1=检查失败 / 6=manifest 身份失败 |\r\n| `rollback [--agent <name> \\| --dir <path>] [--slug <slug>]` | 校验并恢复最近一次快照；`--list` 只列快照；`--json` 输出机器可读结果 |\r\n| `hook capabilities --host <name>` | 查看宿主六个统一事件的能力等级；未知宿主默认 `unsupported` |\r\n| `hook evaluate --host <name> --event <event> --manifest <file> --context <json>` | 评估 manifest hook 声明，输出 allow / block / warn / unverified，并写结构化证据 |\r\n| `hook bind --host <name> --manifest <file>` | 幂等注册 hook 声明；`hook unbind <id>` 反注册 |\r\n| `--inventory` | 盘点本机已装技能：扫描技能目录生成/更新注册表（自包含，不依赖元技能）；`--json` 输出 JSON、`--project` 附扫项目级目录 |\r\n| `--reindex` | 重扫注册表：扫描技能目录并增量合并变化（install / update 完成后 CLI 自动重扫；也可在会话开工等时机手动运行）；`--json` 输出 JSON、`--project` 附扫项目级目录；`--rescan` 同义 |\r\n| `hub hosts` | 发现本机已装智能体与技能目录（文件系统 + 环境变量；不读元忆 / 注册表）；按已核实 / 自动发现 / 桥接分类；`--json` 输出 JSON |\r\n| `hub config get \\| set --hub <path> [--move [--clean-residue]] \\| rollback [--yes] \\| clear` | Hub 位置持久化（`config.json`；优先级 `--hub` > `YOTTA_SKILLS_HUB` > config > 默认）；`--move` = 复制校验 → 重链 → 旧 Hub 入回收站（7 天），fail-closed；`lastMigration` 记录最近迁移，`rollback` = 位置回退（用当前内容，非快照恢复）；仅切换指针且旧 Hub 非空时记录「未迁移」供面板一键迁移；`where` / 面板「Hub 位置 + 最近一次迁移」显示来源与回滚入口 |\r\n| `hub cleanup-backups [--yes] [--include-discovered]` | 清理宿主 / Hub 里的 `.yottaskills-backup-*` / `.yottaskills-staging` 等历史残留（默认预览；`--yes` 移入回收站保留 7 天）；`hub doctor` 只读报告 `backup_residue` 警告 |\r\n| `hub install [skill...]` | 把元技能安装到 Hub 真源（清单 27 + 特殊家族 5；特殊家族跟随各自 npm latest；默认 `~/.yottaskills/hub`；`--hub` / `YOTTA_SKILLS_HUB` 覆盖） |\r\n| `hub update` | 更新 Hub 内的元技能；非元技能不参与（来源无统一安装源，用户自行处理） |\r\n| `hub adopt --scan` | 只读预演：扫描各宿主现有技能，输出收编候选、多副本冲突、已在 Hub 状态 |\r\n| `hub adopt --apply [--include <a,b>] [--force] [--in-place]` | 把选中技能收编进 Hub；输出明示范围与目标 Hub；默认复制保真 + 原目录保留；非元阁来源标注「无更新源」并对严格 YAML 风险只读告警；`--skip-scan` 显式提示跳过装前扫描 |\r\n| `hub refresh <slug> --from <path>` | 手动同步非元阁技能（重新收编 + 更新哈希 + 台账） |\r\n| `hub link --agent <id> \\| --dir <dir> \\| --all [--include-discovered]` | 把 Hub 技能链接到指定宿主 / 目录 / 全部已核实宿主（默认范围）；`--include-discovered` 显式纳入自动发现目录；元技能链接时收敛旧副本（回收站 7 天）；`--dry-run` 只预览（含将收敛明细）；`--force` 可替换指向 Hub 之外的链接（仅移除链接本身） |\r\n| `hub unlink --agent <id> \\| --dir <dir> \\| --all [--include-discovered]` | 只删除链接；lstat + readlink 校验目标在 Hub 内，fail-closed；清理范围外链接用 `--dir <目录>` 精确指定 |\r\n| `hub remove <slug> [--dry-run] [--include-discovered]` | 删除 Hub 技能：全宿主清链接（含死链）+ Hub 目录入回收站（7 天）+ 清 Hub / 链接台账 + 写审计；fail-closed（真副本 / 外部链接保留并报告；链接报错即中止不删 Hub）；`--agent` / `--dir` 收窄仅用于死链清理 |\r\n| `hub status [--json]` | 查看 Hub 技能来源、版本、链接宿主、异常链接与宿主发现摘要 |\r\n| `hub doctor [--json]` | 检查断链 / Hub 目标缺失 / slug 不一致 / 单一真源（只读报告多份副本与版本参差）/ 链接范围（`link_scope` 只读报告范围外链接）/ 目录权限；异常时退出码 1 |\r\n| `view [--port <n>]` | 启动本机技能枢纽面板（默认 `127.0.0.1:8789`，仅本机监听）：六视图（概览 / 宿主矩阵 / 收编向导 / 链接与体检 / 记录与回滚 / 路由与编排）+ **全量 CLI 页**（全部命令 / 子命令 + 人话说明 + 可复制示例 + 完整选项，与 `--help` 单一真源）；可执行收编 / 链接 / 解除 / 回滚 / 删除技能（影响预览 + 手输 slug 二次确认），写操作需页面会话令牌，install / update / refresh 只给命令 |\r\n| `--route <需求摘要>` | 编排路由：输出组合、调用顺序、技能角色、置信度、依据、已装/缺失状态与安装建议；可选本地 provider 增补 / 重排并返回 `confidence` / `reasons` / `summary` / `alternatives`；`--json` 输出 JSON、`--project` 附扫项目级目录 |\r\n| `usage status` | 查看本地使用记录开关与计数；默认关闭，不创建文件 |\r\n| `usage enable` / `usage disable` | 开启 / 关闭 `--route` 的结构化使用记录；不记录需求原文 |\r\n| `usage mark --skill <slug> --signal used\\|named\\|accepted` | 记录一次显式使用信号；不要求先 enable |\r\n| `usage reset --yes` | 清空本地使用记录 |\r\n| `decide-memory [--dry-run\\|--promote] [--explain] [--json]` | M1 记忆裁决只读建议；`--promote` 只写本地建议文件，不写元忆、不删除内容 |\r\n| `--no-reindex` | 安装 / 更新后不自动重扫注册表 |\r\n| `--dry-run` | 预览将执行的安装 / 更新清单；不联网、不改动 |\r\n| `--pin` | 锁死清单精确版本（默认 range：跟随同 major 最新 patch） |\r\n| `--force` | 已是最新也重新安装 |\r\n| `--skip-scan` | 人工应急路径：跳过元信门禁并标记 `explicit-unverified`；不得用于 `update --auto` |\r\n| `--only <a,b>` | install / update 只处理指定技能（与位置参数技能列表合并去重） |\r\n| `--domain <name>` | install / update 只处理指定家族（security / quality / memory / writing / workflow / entry / compliance / education / distribution） |\r\n| `--installed-only` | update 只维护目标目录已安装的技能（不补装缺失；无匹配时退出码 0） |\r\n| `--npm <path>` | 指定 npm 可执行文件 |\r\n| `--python <path>` | 指定 python 可执行文件（元信 scan 用） |\r\n| `--verify <path>` | 指定 yotta_verify.py 路径 |\r\n| `--slug <slug>` | doctor / rollback 时只处理指定技能 |\r\n| `-h, --help` / `-v, --version` | 帮助 / 版本 |\r\n\r\n不带命令直接给技能名时，等价于 `install <skill>`。\r\n\r\n### 范围控制（接多少管多少）\r\n\r\n| 用法 | 范围 |\r\n|---|---|\r\n| `install` / `update`（无旗标） | 全量清单：install 安装全部；update 补齐缺失 + 升级已装（现状语义不变） |\r\n| `update --installed-only` | 只维护目标目录已安装的家族技能（不补装缺失；`skills.json` 只作身份 / 版本参照） |\r\n| `--only <a,b>` / `--domain <name>` | 只处理指定技能 / 家族（可与 `--installed-only` 取交集） |\r\n| `update --check` / `--auto` | 只检查 / 维护已装技能，不补装缺失 |\r\n\r\n已管理且已最新 → 跳过（退出码 0）；清单内但机器未装 → 不动作、不新增、不报错；\r\n非家族 / 未收录目录 → 忽略不报错。标准接管配方：\r\n\r\n```bash\r\nnpx -y @yottameta/yotta-skills update --installed-only --dir <技能目录>\r\n```\r\n\r\n## 运行时 hook 适配层\r\n\r\n技能 manifest 只声明六个统一事件的要求，元阁负责能力探测、确定性评估、证据留痕和降级标注：\r\n\r\n```bash\r\nnpx -y @yottameta/yotta-skills hook capabilities --host codex\r\nnpx -y @yottameta/yotta-skills hook evaluate --host codex --event before_send --manifest ./skill-manifest.json --context '{\"checks\":{}}'\r\nnpx -y @yottameta/yotta-skills hook bind --host codex --manifest ./skill-manifest.json\r\nnpx -y @yottameta/yotta-skills hook unbind <binding-id>\r\n```\r\n\r\n证据写入 `~/.yottaskills/hook-log.jsonl`，绑定注册表写入\r\n`~/.yottaskills/hook-bindings.json`。`native-audit` 只表示可审计和一次纠偏，不表示动作前强制；\r\n`unsupported` 必须显示 `explicit-unverified`。本层只做本地确定性判断，不联网、不执行下载。\r\n\r\n## 技能盘点（--inventory）\r\n\r\n元阁自带技能扫描核心（零依赖，不依赖任何元技能）：扫描各智能体技能目录，解析\r\n`SKILL.md` frontmatter，生成/更新本地注册表 `~/.yottaskills/registry.json`，数据不出本机。\r\n多 agent 宿主可用 `YOTTA_SKILLS_REGISTRY_FILE` 为每个 agent 指定独立注册表文件。\r\n适合「装了哪些技能、各干嘛、从哪来」的快速盘点。\r\n\r\n```bash\r\n# 盘点本机已装技能（文本表格）\r\nnpx -y @yottameta/yotta-skills --inventory\r\n\r\n# 机器可读（JSON）\r\nnpx -y @yottameta/yotta-skills --inventory --json\r\n\r\n# 追加扫描任意目录 / 当前项目级目录\r\nnpx -y @yottameta/yotta-skills --inventory --dir ~/my-skills --project\r\n```\r\n\r\n注册表增量合并：新增（added）/ 更新（updated）/ 消失（gone）随输出列出；同名技能来自多个目录时合并来源，版本不一致记录冲突。\r\n\r\n### re-index：新装技能自动被发现\r\n\r\n- **装技能后自动**：`install` / `update` 完成后自动重扫注册表，把本次落位结果反映进\r\n  `~/.yottaskills/registry.json`（新增 / 更新 / 消失随输出列出）；`--no-reindex` 可关闭。\r\n- **会话开工**：建议每会话开工先跑一次 `yotta-skills --reindex`（快速增量，只合并变化），\r\n  让新装 / 更新的技能自动进入注册表。\r\n- **手动**：`yotta-skills --reindex`（`--rescan` 同义）；`--json` 机器可读、`--project` 附扫项目级目录。\r\n\r\n### update 增量更新与检查（--check / --auto）\r\n\r\n增量更新遍历清单，补齐缺失、升级版本不一致，默认跳过已最新。`--check` 只读联网\r\n（对 npm `dist-tags.latest`），按本地 `SKILL.md` 版本对比——无论技能源自哪个安装渠道\r\n（npm / git clone / 本地拷贝等）都兼容；`--auto` 检测到家族（`yotta-*` / 清单内）可更新时，走安装管线\r\n（含元信装前安全扫描）自动更新。**非元阁家族（非 yotta-*）技能绝不自动更新**（默认保守：`--check` 列清单，\r\n用户确认后再 `update`）。\r\n\r\n`--check --scheduled` 是后台周检入口：默认 7 天加 0 到 24 小时随机抖动，未到期不联网；\r\n到期只检查一次并把结果写入 `~/.yottaskills/update-check.json`。文本模式网络失败静默，\r\n`--json` 可读取 `error` / `cache` 诊断字段。它不作为会话开工默认动作。\r\n\r\n```bash\r\n# 只读检查（0=全部最新 / 3=有更新 / 1=查失败）\r\nnpx -y @yottameta/yotta-skills update --check --agent codex\r\n\r\n# 后台周检入口（未到期不联网；到期单次检查并写缓存）\r\nnpx -y @yottameta/yotta-skills update --check --scheduled --agent codex\r\n\r\n# 检查到家族更新后自动更新（仅自家家族）\r\nnpx -y @yottameta/yotta-skills update --auto --agent codex\r\n```\r\n\r\n## doctor 与 rollback\r\n\r\n`doctor` 是只读自检，不会修改技能目录或注册表。它检查目标技能目录、`SKILL.md`、\r\nfrontmatter 版本、manifest 身份、本地注册表记录，以及包内声明的自定义 doctor 脚本。\r\n`--dir` 既可指向包含多个 `yotta-*` 子目录的技能集合目录，也可直接指向单个技能包目录；\r\n后者会按 `SKILL.md` / `skill-manifest.json` 自动识别技能身份。`--json` 返回稳定字段，\r\n适合脚本和智能体消费。退出码：`0` 通过，`4` 没有可检查对象，`1` 检查失败，`6` manifest 身份失败。\r\n\r\n```bash\r\nnpx -y @yottameta/yotta-skills doctor --agent codex --slug yotta-memory\r\nnpx -y @yottameta/yotta-skills doctor --dir ~/my-skills --json\r\n```\r\n\r\n`rollback` 只恢复已经存在的本机快照。恢复前会校验快照（新快照校验 SHA-256 元数据，\r\n旧快照按结构校验）；恢复过程中先在同盘暂存，再替换目标，失败时保留当前目录。\r\n快照默认保留，不会被回滚操作删除。\r\n\r\n```bash\r\n# 查看当前有哪些快照（--slug 可只看一个技能）\r\nnpx -y @yottameta/yotta-skills rollback --list --agent codex\r\n\r\n# 回滚最近一次安装或更新；也可用 --slug 指定技能\r\nnpx -y @yottameta/yotta-skills rollback --slug yotta-memory --agent codex\r\n```\r\n\r\n包内 manifest 可声明 `install.setup`、`install.doctor`、`install.rollback`，\r\n值必须是包内相对路径。安装时先执行 setup，再执行内置 doctor 和自定义 doctor；\r\n任一步失败都会恢复旧版本并留下安装证据。元阁只执行元阁家族包内的生命周期脚本，\r\n不使用 shell，也不接受绝对路径或 `..` 路径。\r\n\r\n## 编排路由（--route）\r\n\r\n把需求摘要交给静态编排 playbook 和本地注册表，得到一组可执行建议：\r\n\r\n```bash\r\n# 文本输出：组合、调用顺序、角色、置信度、依据、缺失技能安装命令\r\nnpx -y @yottameta/yotta-skills --route \"帮我润色输出，要规范可复制，别有 AI 味\"\r\n\r\n# 机器可读（JSON）\r\nnpx -y @yottameta/yotta-skills --route \"检查代码质量，别糊弄\" --json\r\n```\r\n\r\n- **输出**：候选组合、调用顺序、每个技能的角色、置信度、命中依据、已装/缺失状态、安装命令与应用模式提醒。\r\n- **缺失技能**：只给安装命令，不自动安装；安装前应先做装前安全扫描，决定权在用户。\r\n- **应用模式**：默认用户显式调用；切换为「按场景自动调用」需要用户确认。\r\n- **无明确匹配**：低置信度回退到「入口 + 安装」组合，先澄清需求再继续。\r\n- **边界**：路由是建议，不保证完全正确；关键动作由用户确认，数据不出本机。\r\n\r\n## M1 记忆裁决与使用记录\r\n\r\n`decide-memory` 判断哪些已装技能值得进入长期记忆，输出 `promote / hold / demote` 建议、分数与信号明细。\r\n评分由用户显式配置的本地 provider（capability `m1.adjudicate`）完成；未配置 / 未授权 / 超时 / 非法输出时\r\n只返回状态，不阻断其他能力，退出码保持 0。\r\n\r\n```bash\r\n# 默认只读：只看建议，不写任何文件\r\nnpx -y @yottameta/yotta-skills decide-memory\r\n\r\n# 显式只读 + 信号明细\r\nnpx -y @yottameta/yotta-skills decide-memory --dry-run --explain\r\n\r\n# 只写本地建议文件（不写元忆、不删除内容）\r\nnpx -y @yottameta/yotta-skills decide-memory --promote --json\r\n```\r\n\r\n使用记录默认关闭：\r\n\r\n```bash\r\nnpx -y @yottameta/yotta-skills usage status\r\nnpx -y @yottameta/yotta-skills usage enable\r\nnpx -y @yottameta/yotta-skills usage mark --skill yotta-memory --signal used\r\nnpx -y @yottameta/yotta-skills usage disable\r\nnpx -y @yottameta/yotta-skills usage reset --yes\r\n```\r\n\r\n边界：记录只含技能 slug、时间、信号类型、playbook / confidence 与组合对；不含需求原文、记忆正文、路径或身份信息。\r\n`--promote` 只写 `~/.yottaskills/memory-adjudication.json`，生成私密 `PREF` 记忆候选，由用户或 AI 再显式调用元忆写入。\r\n\r\n### MCP：按需加载（可选）\r\n\r\n本技能自带一个 MCP server：`yotta-skills`（`scripts/yotta-skills-mcp.py`，零依赖、数据不出本机），\r\n基于 MCP 最新协议 2026-07-28（无状态时代；向后兼容 2025-11-25 及更早握手客户端）。\r\n提供 `list_installed_skills`（盘点）/ `describe_skill`（单技能详情）/ `reindex`（强制重扫）/ `route_request`（编排路由，静态基线 + 可选本地动态扩展）/ `decide_memory`（M1 记忆裁决只读建议）五个工具。\r\n\r\n**按需加载，不走常驻**：本技能与 MCP 均为按需触发。默认以 CLI 为主\r\n（`npx -y @yottameta/yotta-skills --inventory`）；需要让 AI 通过工具直接调用时，再按下面配置启用。\r\n**写客户端配置前必须先获得用户明确同意**：先展示目标配置文件路径、将写入的完整配置与影响（客户端需重启 / 重载一次），\r\n用户确认后才写入；用户拒绝 → 不写配置，保持 CLI 用法，功能不受影响。\r\n\r\n1. **检查当前客户端的 `mcpServers`** 是否已有 `yotta-skills` 条目；已有 → 直接使用。\r\n2. **没有 → 先征得用户同意，再写入**下面这一条 server 配置（用后可移除，不要求常驻）：\r\n   ```json\r\n   {\r\n     \"mcpServers\": {\r\n       \"yotta-skills\": {\r\n         \"command\": \"python\",\r\n         \"args\": [\"<技能目录>/scripts/yotta-skills-mcp.py\"],\r\n         \"env\": {\r\n           \"YOTTA_SKILLS_REGISTRY_FILE\": \"<配置目录>/yottaskills/<agentId>/registry.json\"\r\n         }\r\n       }\r\n     }\r\n   }\r\n   ```\r\n   > `<技能目录>` = 本技能实际安装目录，**不要写死盘符路径**；Windows 用 `python`，Linux/macOS 用 `python3`。\r\n   > 单 agent 环境可不设 `YOTTA_SKILLS_REGISTRY_FILE`；同一宿主内多 agent 共用 MCP 时，应分别配置独立路径，避免注册表状态互相覆盖。\r\n3. **提醒用户**：改 `mcpServers` 后多数客户端需**重启 / 重载一次** MCP server 才生效；加载后应看到\r\n   `list_installed_skills` / `describe_skill` / `reindex` / `route_request` / `decide_memory` 五个工具。\r\n4. **降级兜底（重要）**：若客户端未暴露 MCP 工具 / 用户拒绝改配置 / 无法改配置 / server 未加载，**自动降级 CLI**\r\n   （同一套扫描、路由与 M1 核心、结果一致）：`npx -y @yottameta/yotta-skills --inventory / --reindex / --route ... / decide-memory ...`。\r\n\r\n## 版本策略\r\n\r\n- 默认 **`pin`**：`npm pack` 使用清单中的精确版本（如 `@yottameta/yotta-present@0.6.2`），结果完全可复现，\r\n  不会静默跟随 npm 上的浮动版本；\r\n- `--range`（可选）：按清单 `major.x` 取 npm 最新 patch（如 `0.x`），仅在用户明确要求跟随 patch 时使用；\r\n- 是否「已是最新」由目标目录 `<slug>/SKILL.md` 的 frontmatter `version` 与清单比对，\r\n  一致即跳过（幂等）。\r\n\r\n## 元信装前门禁\r\n\r\n家族安装默认执行装前扫描。若本机没有元信（yotta-verify），元阁先按 `skills.json`\r\n安装元信自身，再扫描待装技能。安装前会先读取包内 manifest、校验身份，再进入元信门禁：\r\n\r\n- `SAFE TO INSTALL`：继续安装；\r\n- `INSTALL WITH CAUTION` / `REVIEW REQUIRED`：继续安装，但显示风险并写入证据；\r\n- `DO NOT INSTALL` 或扫描失败：阻断，不替换旧版本。\r\n\r\n扫描后元阁会用包内 `scan-policy.json`（已审查例外表）复核：每条例外绑定「技能 + 版本 +\r\n内容 treeHash + 规则 + 路径」，只豁免检测规则表、攻防样例与文档说明这类已审查命中。\r\n技能升版或内容有任何变化，旧例外自动失效（fail-closed），安装回到元信原始判定。\r\n命中例外的安装会显示 `↳ scanPolicy 复核：豁免 N 条已审查发现` 并写入安装证据；\r\n未命中例外的 `DO NOT INSTALL` 照常阻断。\r\n\r\n引擎查找顺序（v0.19.13 收紧）：`--verify` 指定路径 → 环境变量 `YOTTA_SKILLS_VERIFY` →\r\n**受信安装记录**（`~/.yottaskills/trusted-verifier.json`，由安装管线在元信安装 / 更新成功后写入，\r\n记录包身份 + 引擎路径 + SHA-256）。候选引擎必须同时满足：路径不经符号链接跳转、\r\n包内 `SKILL.md` 与 `skill-manifest.json` 身份一致（slug / package / trust / 版本）、\r\n引擎摘要与记录一致；任一不满足即 fail-closed，改走自举安装。\r\n不再按本地注册表里 `name: yotta-verify` 的目录发现引擎。\r\n`--skip-scan` 只保留为人工应急路径，使用时输出 `explicit-unverified` 并写入\r\n`~/.yottaskills/install-log.jsonl`；`update --auto` 不会使用该开关。\r\n\r\n## 支持智能体\r\n\r\n17 个内置键名：`claude` `cursor` `codex` `gemini` `goose` `amp` `opencode` `windsurf`\r\n`workbuddy` `kiro` `trae` `trae-cn` `qwen` `comate` `codebuddy` `kimi` `agents`。\r\n未收录的智能体请用 `--dir` 指定其技能目录（`.agents/skills` 不是通用目录）。\r\n\r\n## 依赖与回退链\r\n\r\n| 依赖 | 角色 | 缺失时 |\r\n|---|---|---|\r\n| Node.js 18+ | 必需（CLI 本体） | 明确提示 + 按平台给安装命令 |\r\n| npm | 拉包**回退通道** | 不影响：内置拉包为主 |\r\n| 系统 tar | 解包**回退通道** | 不影响：内置解包为主 |\r\n| Python 3.8+ | 元信装前扫描 | 门禁阻断；优先用 `--python` / `YOTTA_SKILLS_PYTHON` 指向宿主自带 Python（如 YottaCode），确实没有时用 `--skip-scan` 应急（`explicit-unverified`） |\r\n\r\n缺依赖时按需给出「需要什么 / 为什么 / 一条修复命令 / 不影响使用」人话提示，不常驻提醒；\r\n`doctor` 的依赖自检块只告警不失败。\r\n\r\n## 环境变量\r\n\r\n| 变量 | 作用 |\r\n|---|---|\r\n| `YOTTA_SKILLS_NPM` | 指定 npm 可执行文件（同 `--npm`） |\r\n| `YOTTA_SKILLS_NPM_FLAGS` | 追加传给 `npm pack` 的参数（按空白拆分，如 `--registry=...`） |\r\n| `YOTTA_SKILLS_NO_FALLBACK` | 设为 `1` 时禁用「默认源 404 → 官方源重试」的自动回退 |\r\n| `YOTTA_SKILLS_FETCH` | 拉包通道：`builtin`（仅内置）/ `npm`（仅 npm）；缺省内置为主、失败回退 npm |\r\n| `YOTTA_SKILLS_EXTRACT` | 解包通道：`builtin`（仅内置）/ `tar`（仅系统 tar）；缺省内置为主、失败回退系统 tar |\r\n| `YOTTA_SKILLS_REGISTRY` | registry 地址（默认 `https://registry.npmjs.org/`；内置拉包与更新检查共用；支持 `HTTPS_PROXY` / `HTTP_PROXY` / `NO_PROXY`） |\r\n| `YOTTA_SKILLS_PYTHON` | 指定 python 可执行文件（元信 scan 用，同 `--python`） |\r\n| `YOTTA_SKILLS_VERIFY` | 指定 yotta_verify.py 路径（同 `--verify`） |\r\n| `YOTTA_SKILLS_MANIFEST` | 指定技能清单 JSON 路径（默认随包 skills.json） |\r\n| `YOTTA_SKILLS_REGISTRY_FILE` | 技能注册表文件路径（多 agent / 隔离环境用；默认 `~/.yottaskills/registry.json`） |\r\n| `YOTTA_SKILLS_USAGE_FILE` | 使用记录文件路径（`usage` 记录落点；默认 `~/.yottaskills/usage.json`） |\r\n| `YOTTA_PROVIDER_HOME` | provider 配置根目录（M1 裁决 / O1 动态路由；默认 `~/.yottameta/`，协议见 `references/provider-protocol.md`） |\r\n\r\n### 隔离环境：三个状态文件成组导出\r\n\r\n测试、CI 与多 agent 共存场景建议把下面三个状态文件变量**成组**导出，避免读写宿主真实状态；\r\n只导出其中一个时，其余状态仍会落到用户目录（例如漏掉 `YOTTA_SKILLS_USAGE_FILE` 时，\r\n`usage` 记录仍会写入 `~/.yottaskills/usage.json`）。\r\n\r\n```bash\r\n# bash（Linux / macOS / Git Bash）\r\nexport YOTTA_SKILLS_REGISTRY_FILE=\"${TMPDIR:-/tmp}/registry.json\"\r\nexport YOTTA_SKILLS_USAGE_FILE=\"${TMPDIR:-/tmp}/usage.json\"\r\nexport YOTTA_PROVIDER_HOME=\"${TMPDIR:-/tmp}/provider\"\r\n```\r\n\r\n```powershell\r\n# PowerShell（Windows）\r\n$env:YOTTA_SKILLS_REGISTRY_FILE = \"$env:TEMP\\registry.json\"\r\n$env:YOTTA_SKILLS_USAGE_FILE = \"$env:TEMP\\usage.json\"\r\n$env:YOTTA_PROVIDER_HOME = \"$env:TEMP\\provider\"\r\n```\r\n\r\n## 常见问题\r\n\r\n- **npmmirror 全新包 404**：默认源返回 404 时安装器会**自动**改用官方源\r\n  `https://registry.npmjs.org/` 重试一次（输出显示回退行，安装证据记 `npm_registry_fallback`）；\r\n  若已显式指定 registry 或设置 `YOTTA_SKILLS_NO_FALLBACK=1`，则保持在指定源上，失败时给出可复制的修复提示。\r\n- **未收录智能体**：`--agent <name>` 报未收录时，改用 `--dir` 指到它的技能目录。\r\n- **Windows 下 npm 报错**：CLI 已内置 npm-cli.js 解析，无需额外处理；如需覆盖用 `--npm`。\r\n- **某技能安装失败**：汇总报告会列出失败原因，可单装该技能排查。\r\n\r\n## 参考\r\n\r\n- **编排策划（组合决策表，先看这个）**：`references/orchestration.md`。\r\n- 全家技能清单（人工可读版）：`references/skill-list.md`（机器权威源为 `skills.json`）。\r\n- 内部机制：`references/install-flow.md`。\r\n- 新手中文教程：`references/tutorial.md`。\r\n- 常见问题：`references/faq.md`。\r\n- 复杂场景走查：`references/walkthroughs.md`。\n\nFile v0.29.10:README.md\n\n<p align=\"center\"><b>Language</b>: English · <a href=\"./README.zh-CN.md\">中文</a></p>\r\n\r\n<p align=\"center\">\r\n  <img src=\"assets/banner.png\" alt=\"yotta-skills banner\" width=\"100%\" />\r\n</p>\r\n\r\n<h1 align=\"center\">yotta-skills · 元阁 (YuanGe)</h1>\r\n\r\n<p align=\"center\">YottaMeta's skill-family <b>orchestration router, inventory, and one-command installer</b>: route which skills to combine for a task, then one <code>npx</code> line installs the published <code>yotta-*</code> skills (currently <b>27</b>) into any agent or directory.</p>\n<p align=\"center\">List the family, route a task, install everything, incrementally update, preview with <code>--dry-run</code>, pin exact versions - idempotent and zero-dependency (Node.js 18+), pure npm ecosystem.</p>\r\n<p align=\"center\">This package contains <b>no skill bodies</b> — only a manifest, a downloader, a placer and a summary. Each skill still comes from its own npm package.</p>\r\n\r\n<p align=\"center\">\r\n  <a href=\"LICENSE\"><img alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-blue\" /></a>\r\n  <a href=\"https://agentskills.io/\"><img alt=\"Standard: agentskills.io\" src=\"https://img.shields.io/badge/standard-agentskills.io-orange\" /></a>\r\n  <a href=\"https://www.npmjs.com/package/@yottameta/yotta-skills\"><img alt=\"npm package\" src=\"https://img.shields.io/npm/v/@yottameta/yotta-skills\" /></a>\r\n  <a href=\"https://github.com/YottaMeta/yotta-skills\"><img alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/YottaMeta/yotta-skills\" /></a>\r\n  <a href=\"https://github.com/YottaMeta/yotta-skills/commits/main\"><img alt=\"last commit\" src=\"https://img.shields.io/github/last-commit/YottaMeta/yotta-skills\" /></a>\r\n  <a href=\"https://github.com/YottaMeta/yotta-skills\"><img alt=\"PRs welcome\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen\" /></a>\r\n</p>\r\n\r\n## What it is\r\n\r\nInstalling the whole YottaMeta family used to mean running <code>npx</code> for each skill one by one. 元阁 turns it into a single command: it reads a built-in manifest (27 published skills), downloads each from its own npm package, places it into the target skills directory, and prints a summary (success / skipped / failed).\n\r\n元阁 is also the **family orchestration planner**: given a task, check the orchestration table first — which skills to combine, in what order, and why — then install exactly those. The decision table ships in the package as <code>references/orchestration.md</code> and is summarized in <code>SKILL.md</code>.\r\n\r\n- **List** - see the whole family: slug, Chinese name, package, version and a one-line description.\n- **Orchestration routing** - <code>--route</code> turns a task summary into a candidate combination, call order, per-skill roles, confidence, evidence, installed/missing status, and an install command; it only suggests installation and never installs automatically. An optional local provider may add or re-order installed skills within the allow-list and return <code>confidence</code> / <code>reasons</code> / <code>summary</code> / <code>alternatives</code> (no behavior change when unconfigured; see <code>references/provider-protocol.md</code>).\n- **M1 memory adjudication** - <code>decide-memory</code> returns read-only <code>promote / hold / demote</code> suggestions, scores and signal details. Scoring is performed by a user-configured local provider (capability <code>m1.adjudicate</code>). It is read-only by default; <code>--promote</code> writes only a local recommendation file and never writes memory or deletes anything. <code>usage</code> is off by default and records only structured signals after the user enables it.\n- **Install** — install everything (or a subset) into an agent's default user-level directory or any directory.\r\n- **Update** — incremental update: add missing skills, upgrade version-skewed ones.\r\n- **Update check / auto-update** — <code>update --check</code> compares installed skill versions against the npm registry and reports; <code>update --check --scheduled</code> is the weekly background entry with a local cache and jitter, so it stays offline until due; <code>update --auto</code> upgrades the installed YottaMeta family to the latest (non-family skills are never auto-updated).\n- **Works without npm** — fetching and extraction default to built-in Node channels (npm / system tar are fallbacks only); <code>update --installed-only</code> adopts only skills already installed on the machine and never backfills or errors on missing ones.\n- **Doctor / rollback** — <code>doctor</code> checks the installed skill directory, version, manifest, registry and custom doctor script without modifying it; <code>--dir</code> may point to a skills container or directly to a single skill package. <code>rollback</code> validates a snapshot and restores the latest install or update.\n- **Runtime hook adapter** — manifests declare six lifecycle requirements; <code>hook capabilities / evaluate / bind / unbind</code> probe host support, apply deterministic decisions, record evidence, and never overstate audit-only hosts as enforced.\r\n- **Idempotent** — a skill already at the manifest version is skipped; re-running is safe.\r\n- **Pre-install gate** — family installs read the package manifest, bootstrap yotta-verify (元信) when it is missing, then scan each package. <code>DO NOT INSTALL</code> blocks; caution/review continue with visible risk. Old versions are snapshotted before replacement.\r\n- **Inventory / re-index** - scan the skill directories on this machine and keep a local registry (<code>~/.yottaskills/registry.json</code>); set <code>YOTTA_SKILLS_REGISTRY_FILE</code> to isolate the registry per agent; self-contained, no other skills required. Newly installed skills are discovered automatically: <code>install</code> / <code>update</code> re-index the registry afterwards, and <code>--reindex</code> re-scans on demand. An optional <code>yotta-skills</code> MCP (on-demand, not resident) exposes <code>list_installed_skills</code> / <code>describe_skill</code> / <code>reindex</code> / <code>route_request</code> / <code>decide_memory</code>; see <code>SKILL.md</code> for the config.\n- **No silent writes** - 元阁 only suggests. Installing skills, adding a client <code>mcpServers</code> entry, and writing an agent's global memory each require explicit user confirmation beforehand; declining never blocks the plain CLI workflow.\r\n\r\nBoundaries: it only downloads, places, gates and summarizes — it does **not** develop skill content, does **not** bundle any skill body, does **not** use <code>-g</code> global installs, and does **not** silently write host configuration or agent global memory. Besides the target directory, it keeps its registry, snapshots, install evidence and update-check cache under <code>~/.yottaskills</code>.\r\n\r\n## Quick start\n\nPrimary flow (Hub as the main path; the installation itself is agent-agnostic):\n\n```bash\n# 1) See the hosts and skill directories on this machine (states: available / orphan / missing / marker-only)\nnpx -y @yottameta/yotta-skills hub hosts\n\n# 2) Install into the Hub source of truth (default ~/.yottaskills/hub; no agent needed)\nnpx -y @yottameta/yotta-skills hub install\n\n# 3) Distribute to every verified host (Windows junction / macOS·Linux symlink)\nnpx -y @yottameta/yotta-skills hub link --all\n\n# 4) Manage from the local panel (host matrix / links & health / adoption / rollback)\nnpx -y @yottameta/yotta-skills view\n```\n\nStandalone install (run the engine as an independent CLI, no agent required):\n\n```bash\nnpx -y @yottameta/yotta-skills install-self                    # default: ~/.yottaskills/yotta-skills\nnpx -y @yottameta/yotta-skills install-self --dir ~/tools/yotta-skills\nnpx -y @yottameta/yotta-skills where                           # running CLI / standalone installs / Hub location\n```\n\nDirect install into a specific agent (compatibility path):\n\n```bash\n# List the whole family (no network, no changes)\nnpx -y @yottameta/yotta-skills --list\n\n# Install everything into an agent's default user-level skills dir\nnpx -y @yottameta/yotta-skills install --agent codex\n\r\n# Install everything into any directory (each skill lands in <dir>/<slug>)\r\nnpx -y @yottameta/yotta-skills install --dir ~/my-skills\r\n\r\n# Install only selected skills\r\nnpx -y @yottameta/yotta-skills install yotta-memory yotta-verify --dir ~/my-skills\r\n\r\n# Incrementally update installed skills\r\nnpx -y @yottameta/yotta-skills update --agent codex\r\n\r\n# Check for updates manually (read-only, no changes)\r\nnpx -y @yottameta/yotta-skills update --check\r\n\r\n# Weekly background entry (stays offline until due; writes ~/.yottaskills/update-check.json)\r\nnpx -y @yottameta/yotta-skills update --check --scheduled\r\n\r\n# Check and auto-update the installed YottaMeta family (pre-install gate applies; non-family skills untouched)\nnpx -y @yottameta/yotta-skills update --auto\n\n# Adopt only the family skills already installed on this machine (no backfill)\nnpx -y @yottameta/yotta-skills update --installed-only --dir ~/my-skills\n\n# Read-only health check (optionally with --slug / --json)\nnpx -y @yottameta/yotta-skills doctor --dir ~/my-skills --slug yotta-memory\r\n\r\n# List snapshots; restore the latest install or update\r\nnpx -y @yottameta/yotta-skills rollback --list --dir ~/my-skills\r\nnpx -y @yottameta/yotta-skills rollback --slug yotta-memory --dir ~/my-skills\r\n\r\n# Inspect host hook capability and evaluate one manifest event\r\nnpx -y @yottameta/yotta-skills hook capabilities --host codex --json\r\nnpx -y @yottameta/yotta-skills hook evaluate --host codex --event before_send --manifest ./skill-manifest.json --json\r\n\r\n# Preview what would be installed (no network, no changes)\r\nnpx -y @yottameta/yotta-skills --dry-run\r\n\r\n# Route a task to a combination, call order, and missing-skill install suggestion\nnpx -y @yottameta/yotta-skills --route \"Review this code carefully before release\"\n\n# Inspect / enable local structured usage signals (off by default)\nnpx -y @yottameta/yotta-skills usage status\nnpx -y @yottameta/yotta-skills usage enable\n\n# Read-only M1 memory adjudication; --promote writes only a local recommendation file\nnpx -y @yottameta/yotta-skills decide-memory --explain\nnpx -y @yottameta/yotta-skills decide-memory --promote --json\n\n# Inventory installed skills on this machine (self-contained scan, no other skills needed)\nnpx -y @yottameta/yotta-skills --inventory\n\r\n# Re-index the registry (on demand; install / update re-index automatically)\nnpx -y @yottameta/yotta-skills --reindex\n\n# Discover installed agents and their skill directories (filesystem-first; no memory registry)\nnpx -y @yottameta/yotta-skills hub hosts\n\n# Install once into the local Hub, then link to every verified host (default scope)\nnpx -y @yottameta/yotta-skills hub install\nnpx -y @yottameta/yotta-skills hub adopt --scan\nnpx -y @yottameta/yotta-skills hub adopt --apply\nnpx -y @yottameta/yotta-skills hub link --all\n# Opt in to auto-discovered directories (lock / data bridges are never linked)\nnpx -y @yottameta/yotta-skills hub link --all --include-discovered\nnpx -y @yottameta/yotta-skills hub status\nnpx -y @yottameta/yotta-skills hub doctor\n```\n\r\nRequirements: Node.js 18+, npm, and system <code>tar</code> (built into Windows 10+ / macOS / most Linux distributions).\r\n\r\n## Commands & options\r\n\r\n| Command / option | Description |\n|---|---|\n| `--list` (`-l`) | List the whole family with versions and descriptions; add a skill name to filter |\n| `install-self [--dir <path>] [--dry-run] [--force]` | Standalone install: place the engine at an independent location (default `~/.yottaskills/yotta-skills`); no host config, no global shim |\n| `where [--json]` | Show the YottaSkills location: running CLI / standalone installs (current one marked) / Hub source |\n| `install --agent <name>` | Install everything into the agent's default user-level skills dir (compatibility path) |\n| `install --dir <path>` | Install everything into a directory; each skill lands in `<path>/<slug>` |\r\n| `install <skill>... [--agent <name> \\| --dir <path>]` | Install only the given skills |\r\n| `update [--agent <name> \\| --dir <path>]` | Incremental update: add missing, upgrade version-skewed |\r\n| `update --check` | Read-only update check: compare installed versions against the npm registry and report (exit 0 = up to date, 3 = updates available, 1 = could not check; run with `--registry <url>` to target a mirror); no changes |\r\n| `update --check --scheduled` | Weekly background entry: no network until due, then one check and a local cache write; text mode stays quiet on failure, `--json` keeps diagnostics; always exits 0 |\n| `update --auto` | Check and automatically update the installed YottaMeta family to the latest (runs the pre-install gate; never auto-updates non-family skills) |\n| `doctor [--agent <name> \\| --dir <path>] [--slug <slug>]` | Read-only self-check: SKILL / version / manifest / registry / custom doctor; `--dir` may point to a skills container or a single skill package; exit 0 = pass, 4 = no checkable target, 1 = check failed, 6 = manifest identity failure |\n| `rollback [--agent <name> \\| --dir <path>] [--slug <slug>]` | Validate and restore the latest snapshot; `--list` lists snapshots; `--json` returns machine-readable output |\n| `hook capabilities --host <name>` | Show the six-event host capability matrix; unknown hosts stay <code>unsupported</code> |\n| `hook evaluate --host <name> --event <event> --manifest <file> --context <json>` | Evaluate a manifest hook event, return allow / block / warn / unverified, and append structured evidence |\r\n| `hook bind --host <name> --manifest <file>` / `hook unbind <id>` | Idempotently register or remove hook declarations |\r\n| `--registry <url>` | npm registry to check against (default https://registry.npmjs.org/; `YOTTA_SKILLS_REGISTRY` overrides) |\r\n| `--inventory` | Inventory installed skills: scan skill directories and update the local registry (self-contained); `--json` for JSON, `--project` adds project-level dirs |\r\n| `--reindex` | Re-index the registry: re-scan skill directories and merge changes incrementally (on demand; `install` / `update` re-index automatically; `--rescan` is a synonym); `--json` for JSON |\n| `hub hosts [--json] [--state <state>]` | Discover hosts and their skill directories (filesystem + environment; never reads the memory registry); lifecycle states (available / orphan / missing / marker-only); `--state` filter; `--json` for JSON |\n| `hub hosts add <dir> [--label <name>] [--id <agentId>]` | Register a custom host directory (registration only: never creates directories or edits host config; Hub / bridge dirs are fail-closed) |\n| `hub hosts remove <dir \\| --id <agentId>> [--purge [--yes]]` | Remove a registration (never deletes the directory); `--purge` cleans an orphan directory (preview by default, `--yes` to execute; only Hub-pointing links are removed, the directory goes to trash for 7 days) |\n| `hub hosts list` / `hub hosts mark <dir> --state <available\\|orphan\\|ignored>` | Show the registry / manually mark a host state (shares the registry store) |\n| `hub config get \\| set --hub <path> [--move] \\| clear` | Persist the Hub location in `config.json` (priority `--hub` > `YOTTA_SKILLS_HUB` > config > default); `--move` copies + verifies the old Hub, relinks hosts and trashes the old one (7 days), fail-closed |\n| `hub install [skill...]` | Install family skills into the local Hub (`~/.yottaskills/hub` by default; override with `--hub` / `YOTTA_SKILLS_HUB`) |\n| `hub adopt --scan` | Read-only preview: scan existing host skills and report adoption candidates, duplicate conflicts and Hub state |\n| `hub adopt --apply [--include <a,b>] [--force] [--in-place]` | Adopt selected skills into the Hub; copy-preserving by default and keep the original directory; non-YottaMeta sources are marked \"no update source\" |\n| `hub refresh <slug> --from <path>` | Manually re-sync a non-YottaMeta skill (re-adopt, refresh hash and ledger) |\n| `hub link --all [--include-discovered]` | Link Hub skills into every verified host (default scope; `--include-discovered` opts in to auto-discovered directories); target a single agent with `hub link <skill> --agent <id>`; Windows junction / POSIX symlink |\n| `hub unlink --all` | Remove links only; never touches Hub sources (fail-closed for real directories or foreign links); per-agent removal with `hub unlink <skill> --agent <id>`; clean out-of-scope links with `--dir <dir>` |\n| `hub remove <slug> [--dry-run] [--include-discovered]` | Delete a Hub skill: clean links on every host (including broken links), move the Hub directory to trash (7 days), clear Hub / link ledgers and write an audit record; fail-closed (real copies / foreign links are kept and reported; a link error aborts before the Hub entry is touched); narrowed `--agent` / `--dir` is only for cleaning dead links |\n| `hub status` | Show Hub sources, versions, link hosts and drift; `--json` for JSON |\n| `hub doctor` | Check broken links, missing Hub targets, slug mismatches, link scope (`link_scope`) and directory permissions; exit 1 on errors; `--json` for JSON |\n| `--route <task-summary>` | Orchestration routing: return a combination, call order, per-skill roles, confidence, evidence, installed/missing status, and an install suggestion; also lists other installed (non-YottaMeta) skills as candidates matched mechanically against their frontmatter description, tagged \"not scanned\", read-only and never auto-invoked; an optional local provider may add or re-order installed skills within the allow-list and return <code>confidence</code> / <code>reasons</code> / <code>summary</code> / <code>alternatives</code> (see <code>references/provider-protocol.md</code>); `--json` for JSON plus a `dynamic` status block, `--project` adds project-level dirs |\n| `usage status` / `usage enable` / `usage disable` | Inspect / enable / disable local structured usage signals; off by default and limited to slug, time, signal type, playbook / confidence and skill pairs |\n| `usage mark --skill <slug> --signal used\\|named\\|accepted` | Record one explicit usage signal; no prior enable required |\n| `usage reset --yes` | Clear the local usage record |\n| `decide-memory [--dry-run\\|--promote] [--explain]` | Read-only M1 memory adjudication; `--promote` writes only a local recommendation file and never writes memory or deletes anything; `--json` for stable JSON |\n| `--no-reindex` | Do not re-index the registry automatically after `install` / `update` |\r\n| `--dry-run` | Preview the install / update list; no network, no changes |\r\n| `--pin` | Lock the exact manifest versions (default) |\r\n| `--range` | Follow the latest patch of the same major (opt-in; the default stays pinned) |\r\n| `--force` | Reinstall even when already at the latest version |\r\n| `--skip-scan` | Manual escape hatch: skip the verifier gate and mark the result `explicit-unverified`; never used by `update --auto` |\r\n| `--npm <path>` | Specify the npm executable |\r\n| `--python <path>` | Specify the python executable (used for yotta-verify scan) |\r\n| `--verify <path>` | Specify the yotta_verify.py path |\r\n| `-h, --help` / `-v, --version` | Help / version |\r\n\r\nCalling `npx -y @yottameta/yotta-skills <skill>` without a subcommand is equivalent to `install <skill>`.\r\n\r\nSupported agent keys (17): `claude` `cursor` `codex` `gemini` `goose` `amp` `opencode` `windsurf` `workbuddy` `kiro` `trae` `trae-cn` `qwen` `comate` `codebuddy` `kimi` `agents`. For agents not in the preset list, point `--dir` at their skills directory (`.agents/skills` is not a universal directory).\r\n\r\n## Version strategy\r\n\r\n- Default `pin`: `npm pack <pkg>@<exact manifest version>` — fully reproducible, no silent drift onto a floating version.\r\n- `--range` (opt-in): `npm pack <pkg>@<major>.x` — the latest patch of the same major, for users who explicitly want to follow patch releases.\r\n- \"Already at the latest\" is determined by comparing the frontmatter `version` in `<dir>/<slug>/SKILL.md` with the manifest; matching versions are skipped.\r\n\r\n## Installation\r\n\r\n> **Two layers first**: `yotta-skills` (元阁) is a **family installer**, not a skill itself — it ships no skill bodies. It pulls each of the 27 published `yotta-*` skills from its own npm package into your target directory, so **getting 元阁 is not the same as having the skills**. After you have the installer, run `install` once to actually place the whole family. A single skill (e.g. `@yottameta/yotta-memory`) is its own npm package and installs by itself; 元阁 is the **install everything at once** manager, so its install path is different.\n\r\nPick any of the four methods below; the order is the recommended priority. The package always comes from **npm** (GitHub can be slow without a proxy; npm supports mirrors). Methods 2/3 only fetch the **installer**; method 4 places only the **installer skill** into an agent's skills directory — in each case you still run `install` to bring the whole family.\r\n\r\n### Method 1: npm one-liner (recommended)\r\n\r\n```text\r\n# Optional China mirror: npm config set registry https://registry.npmmirror.com\r\nnpx -y @yottameta/yotta-skills install --agent <agent-name>      # install the whole family to the agent's default user-level skills dir\r\nnpx -y @yottameta/yotta-skills install --dir <your-skills-dir>   # install the whole family to a directory (e.g. ~/.codex/skills)\r\n```\r\n\r\n- `npx` fetches the latest `yotta-skills` automatically, so there is no separate installation step; this is the only method that both gets the installer and installs the family in one command.\r\n- `--agent <name>` installs to that agent's default user-level directory; `--list` shows each agent's default directory.\r\n- `--dir <path>` installs to the given directory; for agents not in the preset list, point `--dir` at their skills directory.\r\n- If the mirror has not synced the new package (404): add `--registry=https://registry.npmjs.org/` (a proxy may be needed in China), or wait for the mirror cache.\r\n\r\n### Method 2: git clone (developers / git available)\r\n\r\n```text\r\ngit clone https://github.com/YottaMeta/yotta-skills.git <your-skills-dir>/yotta-skills\r\ncd <your-skills-dir>/yotta-skills\r\nnode bin/yotta-skills.js install --dir <your-skills-dir>\r\n```\r\n\r\n- Cloning only fetches the **installer**; `--list` only prints the manifest and installs nothing. Run `install` to place the whole family into the target directory.\r\n\r\n### Method 3: GitHub Download ZIP (manual / no git)\r\n\r\nOn the GitHub repository `YottaMeta/yotta-skills`, click **Code → Download ZIP**, unzip it, then run `node bin/yotta-skills.js install --dir <your-skills-dir>`. Copying the `yotta-skills` folder into an agent's skills directory only makes the **installer skill** itself callable (it has its own `SKILL.md`) — it does not bring the 27 skills; run `install` for that.\n\r\n### Method 4: install.sh (multi-agent one-liner script)\r\n\r\n```text\r\nbash install.sh --agent <name>   # install the master installer skill to the agent's default user-level directory\r\nbash install.sh --dir <path>     # install the master installer skill to the given directory\r\nbash install.sh --list           # list agents -> default directories\r\n```\r\n\r\n- `install.sh` places the **元阁 installer skill** itself so an agent can invoke the family installer. To install the 27 skills, run `node bin/yotta-skills.js install --agent <name>` (or `--dir <path>`).\n\n### Method 5: OpenClaw (host-native commands)\n\n```text\nopenclaw skills install @yottameta/yotta-skills   # install (with ClawHub security audit)\nopenclaw skills update @yottameta/yotta-skills    # update\n```\n\n- OpenClaw uses the `~/.openclaw/skills` directory, which `--inventory` / `--reindex` recognize (including the `OPENCLAW_STATE_DIR` override).\n- Host-native commands keep ClawHub's security-audit card and update tracking (`openclaw skills update` only covers ClawHub-tracked installs).\n\n> Method 1 uses the npm registry (npmmirror / npmjs) and does not depend on GitHub; Methods 2/3 use GitHub and may fail without a proxy in China.\n\r\n## Included skills\r\n\r\nThe full 27-skill manifest with Chinese names, package names, versions and descriptions is in `references/skill-list.md` (the machine-readable source is `skills.json`). Family coverage: Security & Guardrails (12), Quality & Engineering (4), Memory & Context (3), Writing & Expression (1), Workflow (1), Entry & Guidance (1), Compliance & Trust (1), Education & Learning (4).\n\r\n## How it works\r\n\r\nFor each skill in the manifest: `npm pack <pkg>@<spec>` into a temp directory → `tar -xzf` → read the package manifest → run the yotta-verify pre-install gate (bootstrap yotta-verify first when missing) → snapshot the old version and stage the new one → atomically replace `<dest>/<slug>` → summary report. After `install` / `update` finishes, the local skill registry is re-indexed automatically so newly installed skills show up in `--inventory` / `--reindex` (disable with `--no-reindex`). Details: `references/install-flow.md`; beginner tutorial (Chinese): `references/tutorial.md`.\r\n\r\n## Development & validation\r\n\r\n```bash\r\n# Run the test suite from the skill directory\r\nnpm test\r\n```\r\n\r\nThe tests cover `--list`, install into a temp directory with assertions, idempotency, `--pin`, `update`, error paths, and yotta-verify scan integration (with a fake npm).\r\n\r\n## 参考文档\r\n\r\n- 常见问题：`references/faq.md`\r\n- 复杂场景走查：`references/walkthroughs.md`\r\n\r\n## License\r\n\r\nMIT © YottaMeta — see [LICENSE](./LICENSE).\n\nFile v0.29.10:_meta.json\n\n{\n  \"ownerId\": \"kn72sqpz1re8bd5phwfbj87nq584bdkv\",\n  \"slug\": \"yotta-skills\",\n  \"version\": \"0.29.10\",\n  \"publishedAt\": 1791558579015\n}\n\nFile v0.29.10:references/faq.md\n\n# 元阁常见问题\n\n## 速查索引\n\n- **安装目标**：未指定目标怎么办 · 支持哪些智能体 · 装完为什么看不到\n- **网络与源**：国内访问慢 · 镜像延迟 · 网络失败\n- **更新**：`update --check` 退出码 · 后台周检缓存 · 自动更新边界 · 幂等\n- **版本**：默认 `--pin` 与 `--range` · 清单漂移 · 单技能安装\n- **安全**：装前扫描 · 目标目录校验 · 失败恢复\n- **授权**：会不会自动装技能 / 自动写全局记忆 / 自动改 MCP 配置\n\n---\n\n## 1. 安装时提示「未指定目标」怎么办？\n\n这表示当前目录没有检测到项目级技能目录。两种解决方式：\n\n```bash\nnpx -y @yottameta/yotta-skills --agent codex\nnpx -y @yottameta/yotta-skills --dir /path/to/skills\n```\n\n`--agent` 使用内置智能体默认目录；`--dir` 适合自定义目录或未收录智能体。\n\n## 2. 支持哪些智能体？\n\n内置 17 个键名：`claude`、`cursor`、`codex`、`gemini`、`goose`、`amp`、`opencode`、`windsurf`、`workbuddy`、`kiro`、`trae`、`trae-cn`、`qwen`、`comate`、`codebuddy`、`kimi`、`agents`。未收录的智能体用 `--dir` 指定目录。\n\n## 3. 国内访问 npm 慢或失败怎么办？\n\n可用 `YOTTA_SKILLS_NPM_FLAGS` 追加 registry 参数：\n\n```bash\nYOTTA_SKILLS_NPM_FLAGS=\"--registry=https://registry.npmmirror.com\" npx -y @yottameta/yotta-skills --agent codex\n```\n\n新版本发布后镜像可能有延迟；如需立即获取，可临时改回 npm 官方源并配置代理。\n\n## 4. `update --check` 的退出码是什么意思？\n\n- `0`：全部最新\n- `3`：存在可更新技能\n- `1`：检查失败（网络或 registry 异常）\n\n该命令只读，不修改文件。\n\n## 4.1 `update --check --scheduled` 什么时候用？\n\n它是后台周检入口：默认 7 天加 0 到 24 小时随机抖动，未到期不联网；到期只检查一次，\n结果写入 `~/.yottaskills/update-check.json`。文本模式网络失败静默并退出 0，\n`--json` 可读取 `error` / `cache` 诊断字段。会话开工只建议做本地 `--reindex`，\n不默认联网更新检查。\n\n## 5. `update --auto` 会更新所有技能吗？\n\n只自动更新元阁家族内技能（`yotta-*` 且在清单中）。其他已装技能只提示，不自动改动。\n\n## 6. 重复安装会重复占空间吗？\n\n不会。默认按清单版本判断，已一致的技能跳过；需要强制覆盖时加 `--force`。\n\n## 7. `--pin` 和 `--range` 怎么选？\n\n默认是 `--pin`：按清单精确版本安装，完全可复现、不会静默跟随浮动版本。\n只有你明确想跟随同 major 的最新 patch 时才加 `--range`。\n\n## 8. 为什么清单和文档版本会不一致？\n\n人工文档可能滞后。机器权威源是 `skills.json`，人工可读副本是 `references/skill-list.md`；当前版本已加入自动测试，两者不一致会导致测试失败。\n\n## 9. 如何只安装部分技能？\n\n```bash\nnpx -y @yottameta/yotta-skills install yotta-memory yotta-workflow --agent codex\n```\n\n也可以先用 `--route` 查看建议组合，再按需安装。\n\n## 10. 安装前安全扫描怎么用？\n\n家族安装默认执行元信门禁：没有元信时先自动自举，再扫描待装包。`DO NOT INSTALL`\n和扫描失败会阻断；`INSTALL WITH CAUTION` / `REVIEW REQUIRED` 会继续但显示风险。\n可用 `--verify <path>` 指定引擎。`--skip-scan` 只是人工应急路径，会标记\n`explicit-unverified`，`update --auto` 不使用它。\n\n## 11. 安装失败后如何恢复？\n\n查看汇总中的失败原因。setup / doctor 失败时元阁会自动恢复旧版本；旧版本快照仍保存在\n`~/.yottaskills/snapshots/`。可以先用 `doctor` 自检，再用 `rollback` 恢复最近快照：\n\n```bash\nnpx -y @yottameta/yotta-skills doctor --dir /path/to/skills --slug <slug>\nnpx -y @yottameta/yotta-skills rollback --list --dir /path/to/skills\nnpx -y @yottameta/yotta-skills rollback --slug <slug> --dir /path/to/skills\n```\n\n如果只是安装源或网络问题，再单独安装失败技能：\n\n```bash\nnpx -y @yottameta/yotta-skills install <slug> --dir /path/to/skills\n```\n\n## 12. 装完为什么智能体里看不到？\n\n确认安装目录与智能体实际读取目录一致；安装后通常需要重启会话或重新加载技能列表。\n\n## 13. `hook evaluate` 会真的拦截动作吗？\n\n不一定。适配层先探测宿主能力：`native-block` 才能声明动作前阻断；`native-audit` 只能审计并触发一次纠偏，结果会标记 `explicit-unverified`；`wrapper-only` 仅在 wrapper 注册后保证；未知宿主全部按 `unsupported` 处理。当前 Codex 已实测能力见 `hook capabilities --host codex`。\n\n## 14. 元阁会自动安装技能、写全局记忆或改 MCP 配置吗？\n\n不会。元阁只给建议：`--route` 输出缺失技能与安装命令，安装动作由你执行或确认后才发生；\n写客户端 `mcpServers` 配置、把编排护栏写进全局记忆（如 `AGENTS.md` / `CLAUDE.md`）都需要**事先明确同意**，\n并会先展示目标文件与完整文本。你拒绝写入时，元阁不写任何文件，直接以 CLI 方式继续工作。\n\n## 15. `decide-memory` 会替我删除技能或写记忆吗？\n\n不会。`decide-memory` 默认只读，输出 `promote / hold / demote` 建议、分数与信号明细；\n`--promote` 只写本地 `~/.yottaskills/memory-adjudication.json` 建议文件，并生成私密 `PREF` 记忆候选。\n元忆写入由你或 AI 再显式调用元忆完成；技能本体与记忆都不会被自动删除。\n\n## 16. `usage` 会记录我的需求原文吗？\n\n不会。使用记录默认关闭；执行 `usage enable` 后才记录 `--route` 的结构化 route_hits 与组合对。\n记录只含技能 slug、时间、信号类型、playbook / confidence 与组合对，不含需求原文、记忆正文、路径或身份信息。\n`usage disable` 停止记录，`usage reset --yes` 清空记录。\n\nFile v0.29.10:references/hub.md\n\n# Hub（本机单点安装 + 链接分发）\n\n## 它解决什么\n\n多智能体各自维护技能目录时，同一技能会被复制多份，升级后容易版本漂移。Hub 把\n技能集中到本机一份真源，再按宿主建立链接（Windows junction / macOS·Linux\nsymlink），升级只改真源，已链接宿主即时生效。\n\n## 默认位置\n\n- Hub 真源：`~/.yottaskills/hub`\n- 技能台账：`<hub>/.yotta-hub.json`\n- 链接台账：`<hub>/.yotta-links.json`\n- 收敛回收站：`~/.yottaskills/trash/<时间戳>/<宿主>/<技能>/`（保留 7 天，可用 `YOTTA_SKILLS_TRASH` 覆盖）\n- 覆盖方式（优先级）：`--hub <dir>` > `YOTTA_SKILLS_HUB` > `config.json`（`hub config set`）> 默认\n\n## Hub 位置持久化（0.29.2 起；0.29.5 迁移向导 / 回滚 / 残留清理）\n\n`hub config` 把 Hub 位置写进用户级配置（与 hosts.json / self.json 同根）：\n\n```bash\nnpx -y @yottameta/yotta-skills hub config get                # 生效位置 + 来源 + 配置文件\nnpx -y @yottameta/yotta-skills hub config set --hub \"D:\\my-hub\"        # 只换指针（旧 Hub 保留）\nnpx -y @yottameta/yotta-skills hub config set --hub \"D:\\my-hub\" --move # 迁移：复制校验 → 重链 → 旧 Hub 入回收站\nnpx -y @yottameta/yotta-skills hub config rollback           # 回滚预览（上次迁移前的原位置）\nnpx -y @yottameta/yotta-skills hub config rollback --yes     # 执行回滚（位置回退，用当前内容）\nnpx -y @yottameta/yotta-skills hub config clear              # 清除覆盖，回到 flag > env > 默认\n```\n\n- 配置文件：`<YOTTA_SKILLS_HOME>/config.json`（默认 `~/.yottaskills/config.json`；schema v1，原子写）。\n- 校验（fail-closed）：路径不能是文件、不能与配置根 / 独立安装目录重叠、不能是锁 / 数据桥接目录；路径不存在允许（首次使用时创建）。\n- `--move` 语义：旧 Hub 复制到新位置 → 逐技能 treeHash 校验 → 切换配置 → `hub link` 以新 Hub 为源 `--force` 重链 → 旧 Hub 入回收站（保留 7 天）。校验失败不切配置；重链未全部完成时旧 Hub 保留供重试（新旧内容一致，混合链接均可用）。\n- 目标目录只含元阁自己的空台账残留（`.yotta-hub.json` / `.yotta-hub-audit.jsonl`）时，`--move` 默认 fail-closed 并提示；确认后加 `--clean-residue`（残留移入回收站）再迁移。\n- 迁移记录：`config.json` 的 `lastMigration` 记录时间 / from→to / 校验技能数 / 重链目录数 / 回收站与剩余天数；`hub config get` 展示「最近一次迁移」块与回滚命令。\n- 回滚语义：`hub config rollback` 默认预览、`--yes` 执行 = 位置回退（把当前 Hub 内容复制校验回原位置，再重链、当前 Hub 入回收站 7 天）；**不是**恢复旧快照。目标非空 fail-closed（不合并）。\n- 仅切换指针（不带 `--move`）时，若旧 Hub 非空会记录「未迁移」并在面板提示「旧 Hub 还有 N 个技能未迁移」+ 一键迁移；执行迁移 / 回滚后该提示自动清除。\n- 面板「Hub 位置」区显示来源 / 配置覆盖 / 重启提示，并提供「设置新位置（迁移向导：迁移 / 仅切换，默认迁移）/ 最近一次迁移 + 一键回滚 / 清除覆盖」（写操作需页面令牌 + `hub-config` 确认串）；已在运行的 `view` 需重启后生效。\n- 误用防护：`--hub` 只允许与 `hub` / `view` / `where` 一起使用；其它命令（含裸 `--hub`）fail-closed 报错，不再静默忽略。\n\n## 备份 / 暂存残留清理（0.29.5 起）\n\n`hub link --force` 替换真目录时，旧副本移入回收站（不再原地留 `<name>.yottaskills-backup-*`，宿主不会把备份当技能扫描）。历史残留可用：\n\n```bash\nnpx -y @yottameta/yotta-skills hub cleanup-backups          # 预览（Hub + 已核实宿主）\nnpx -y @yottameta/yotta-skills hub cleanup-backups --yes    # 移入回收站（7 天可恢复）\n```\n\n- 识别标记：`.yottaskills-backup-*` / `.yottaskills-import-*` / `.yottaskills-rollback-*` / `.yottaskills-staging`。\n- `hub doctor` 会只读报告 `backup_residue:*` 警告并给出清理命令；`--dir` / `--agent` 可收窄范围。\n\n## 元技能唯一性收敛（`hub link` 执行时）\n\n元技能（清单 27 + 特殊家族 5：元开 / 元伴 / 元呈 / 元阁本体 / 元信MCP）在\n`hub link`（含面板链接动作）执行时收敛唯一性，不做事后全机扫描：\n\n1. 收集宿主目录中的同名真目录与 `yotta-X__*` 重命名副本（frontmatter `name` 相同）；\n2. 版本闸门：Hub 版本 ≥ 宿主副本版本才收敛；宿主更高 → 跳过并提示先 `hub update`；\n   版本无法解析 → 跳过提示（fail-safe）；\n3. 旧副本移入回收站（保留 7 天、输出恢复路径）→ 建立指向 Hub 的链接；\n   跨盘（源目录在其它卷，或经 junction / symlink 落在其它卷）时 `rename`\n   会报 `EXDEV`，自动回退「复制 → 校验（treeHash + 文件数 + 字节数）→ 删除源」；\n   建链失败后的恢复同样支持跨盘回退，校验不通过不会删除源；\n4. 先移后链；建链失败自动尝试恢复已移动副本，恢复失败时报出回收站路径；\n   目标条目为指向 Hub 之外的链接时默认跳过；显式 `--force` 可替换为 Hub 链接\n   （仅移除链接本身，目标目录不动；dry-run 报 `would-replace`）；\n5. 外部技能保持原行为：同名冲突默认跳过，不自动删、不自动更新。\n\n落地后跑一次 `hub link --all` 即可完成现存收敛。`hub doctor` 的\n`single_source:*` 检查只读报告宿主中的多份副本与版本参差，不自动修改。\nHub 真源对清单声明了 `runtimePayload` 的技能（元忆 / 元阁：`bin`）保留运行时\n载荷：链接分发后 OpenCode 等宿主直接获得 `bin/`，无需再单独补投影；普通宿主\n安装仍为薄片（顶层 `bin` 默认跳过）。\n\n## 链接范围（0.28.0 起）\n\n`hub hosts` 把发现的目录分为三类，`hub link --all` / `hub unlink --all` 的\n**默认范围只含已核实宿主**：\n\n- **已核实（verified）**：映射经公开宿主表（Vercel Labs `skills@1.7.0`）、官方\n  文档或本机自证（应用数据 / 配置 / 管理痕迹）核实 —— 默认链接；\n- **自动发现（discovered）**：文件系统启发式扫到的目录 —— 默认不链，\n  `--include-discovered` 显式纳入；\n- **桥接（bridge）**：`XDG_STATE_HOME/skills`（官方 skills CLI 锁目录）与\n  `XDG_DATA_HOME/skills`（数据桥接）—— 永不作为链接目标（`hub link --dir`\n  指向时会被拒绝）；历史误链用 `hub unlink --dir <目录>` 显式清理（fail-closed，\n  仍只删指向 Hub 的链接）。\n\n未核实映射（如无文档 / 无自证的宿主）默认不链，可用 `--dir <目录>` 显式指定。\n`hub doctor` 的 `link_scope:*` 检查只读报告「位于默认范围之外」的已建链接，\n并给出 `hub unlink --dir <目录>` 的清理提示；`hub hosts` 输出三类的本机计数。\n\n## 宿主状态细分与自定义注册（0.29.0 起）\n\n每条宿主目录带生命周期状态（`hub hosts` / 面板宿主矩阵）：\n\n- **可用**：目录存在 + 实体证据（应用标记 / 用户注册 / 手动标记）—— 默认链接 / 分发；\n- **残留**：目录存在 + 无实体证据（卸载残留或 CLI-only 安装）—— 默认保留使用（仍可链接），\n  可显式清理；文案统一「实体未确认」，不判定「已卸载」；\n- **未创建**：目录不存在且无实体证据 —— 安装宿主后自动出现；\n- **仅标记**：已装实体、技能目录未创建 —— `hub link --agent <id>` 会创建目录并链接。\n\n`hub doctor` 的 `host_state:*` 检查对残留 / 仅标记给 info 提示，不判 fail。\n自定义宿主目录可用 `hub hosts add` 注册进发现 / 分发 / 收编范围（只注册，\n不创建目录、不改宿主配置；移除注册绝不删目录）：\n\n```bash\n# 注册 / 查看 / 移除自定义宿主（realpath 去重；Hub / 桥接目录拒绝注册）\nnpx -y @yottameta/yotta-skills hub hosts add ~/my-agent/skills --label \"我的宿主\"\nnpx -y @yottameta/yotta-skills hub hosts list\nnpx -y @yottameta/yotta-skills hub hosts remove ~/my-agent/skills\n\n# 手动标记状态（实体证据不足时）：available / orphan / ignored\nnpx -y @yottameta/yotta-skills hub hosts mark ~/my-agent/skills --state orphan\n\n# 清理残留目录：默认预览；--yes 执行 —— 只删指向 Hub 的链接（含死链），\n# 非 Hub 链接 / 非技能内容随目录保留在回收站（7 天，输出恢复路径）\nnpx -y @yottameta/yotta-skills hub hosts remove ~/my-agent/skills --purge\nnpx -y @yottameta/yotta-skills hub hosts remove ~/my-agent/skills --purge --yes\n```\n\n注册表 = `<root>/hosts.json`（root = `YOTTA_SKILLS_HOME` 或 `~/.yottaskills`，schema v1，\n可 diff）；面板「宿主矩阵 → 添加自定义目录」等价可用，写操作需页面令牌与确认串。\n\n## 不接管与目录覆盖（0.29.1 起）\n\n**不接管**（excluded）：把某个智能体或目录从发现、显示、链接三层全部跳过\n（`--include-discovered` 也不纳入）；已建立的链接不受影响，可用 `hub unlink` 清理：\n\n```bash\nnpx -y @yottameta/yotta-skills hub hosts exclude box                    # 按 agentId\nnpx -y @yottameta/yotta-skills hub hosts exclude \"D:\\my-agent\\skills\"  # 按目录\nnpx -y @yottameta/yotta-skills hub hosts include box                    # 恢复接管\n```\n\n**目录覆盖**（override）：用户级覆盖某个已收录 agentId 的内置映射目录\n（不改宿主配置；被覆盖的旧目录不再进入默认发现 / 链接）：\n\n```bash\nnpx -y @yottameta/yotta-skills hub hosts set box --dir \"D:\\box-agent\\skills\"\nnpx -y @yottameta/yotta-skills hub hosts set box --clear     # 恢复内置映射\n```\n\n面板「宿主矩阵」提供等价动作：行内「不接管 / 编辑目录 / 标记可用 / 忽略」，\n底部「不接管名单」区可「恢复接管」；写操作均写 Hub 审计。\n\n**YottaCode 不纳入接管**：YottaCode 自带三层技能管理（skill-inventory / skill /\nuser-skills），元阁对其 `.yottacode` 路径与 `YOTTACODE_HOME` 子树在映射、扫描、\n注册、标记、链接全部 fail-closed 排除，避免重复管理。\n\n**未核实映射 ≠ 自动发现**：内置映射里尚未逐机核实的条目显示「映射·未核实」；\n「自动发现」只用于文件系统扫描结果。`installed` 配对按「用户注册 / 已核实映射 > env >\n未核实映射 > 自动发现」确定性优选（同级按技能数 + 路径稳定排序）。\n\n## 命令\n\n```bash\n# 发现本机已装智能体与技能目录（文件系统优先；不读元忆 / 注册表）\nnpx -y @yottameta/yotta-skills hub hosts\n\n# 状态过滤 / 自定义注册 / 残留清理（详见「宿主状态细分与自定义注册」节）\nnpx -y @yottameta/yotta-skills hub hosts --state orphan\nnpx -y @yottameta/yotta-skills hub hosts add ~/my-agent/skills --label \"我的宿主\"\n\n# 安装 / 更新 Hub 真源\n# 范围 = 全家清单 27 + 特殊家族 5；特殊家族跟随各自 npm latest\n# 非元技能不参与更新（来源无统一安装源，用户自行处理）\nnpx -y @yottameta/yotta-skills hub install\nnpx -y @yottameta/yotta-skills hub update\n\n# 接管各宿主现有技能：先只读预演，再复制收编（原目录保留）\n# --apply 输出明示范围与目标 Hub；--skip-scan 会显式提示跳过装前扫描\n# 非元技能 frontmatter 的严格 YAML 风险只读告警，不影响使用则不处理\nnpx -y @yottameta/yotta-skills hub adopt --scan\nnpx -y @yottameta/yotta-skills hub adopt --apply\n\n# 非元阁来源技能没有统一更新源：手动从指定目录刷新\nnpx -y @yottameta/yotta-skills hub refresh my-skill --from <技能目录>\n\n# 分发到全部已核实宿主（默认范围）：元技能链接时收敛旧副本（回收站 7 天）；\n# 外部技能同名真目录默认跳过（--force 才把旧副本移入回收站并替换）\nnpx -y @yottameta/yotta-skills hub link --all\n\n# 显式把自动发现目录一并纳入（桥接目录永不链接）\nnpx -y @yottameta/yotta-skills hub link --all --include-discovered\n\n# 只删除链接，不动 Hub 真源；清理范围外链接用 --dir <目录> 精确指定\nnpx -y @yottameta/yotta-skills hub unlink --all\n\n# 指定智能体分发 / 解除（只影响该宿主；Hub 真源保留）\nnpx -y @yottameta/yotta-skills hub link yotta-memory --agent codex\nnpx -y @yottameta/yotta-skills hub unlink yotta-memory --agent codex\n\n# 彻底删除 Hub 技能：全宿主清链接（含死链）+ 目录入回收站 + 清台账 + 审计\nnpx -y @yottameta/yotta-skills hub remove my-skill --dry-run\n\n# 查看来源、版本、链接宿主与异常\nnpx -y @yottameta/yotta-skills hub status\nnpx -y @yottameta/yotta-skills hub doctor\n```\n\n## 删除技能（hub remove，0.28.3 起）\n\n`hub remove <slug>` 五阶段 fail-closed：\n\n1. **preflight（只读）**：逐目录分类健康链接 / 死链 / 漂移链接 / 指向 Hub 外链接 /\n   真副本 / 不存在；`--dry-run` 到此为止（零写入）。\n2. **unlink**：只删指向 Hub 的链接（含死链）；报错即中止，不进入下一步。\n3. **trash**：Hub 目录移入 `<hub>/../trash/<stamp>/hub-remove/<slug>`，保留 7 天；\n   跨卷自动回退「复制 → 校验 → 删源」。\n4. **ledger**：定向删 `.yotta-hub.json` 条目 + 过滤 `.yotta-links.json`\n   （不调 `syncHubState`，防止把删除记回 `missing`）。\n5. **审计 + 汇总**：写 `remove` 审计；无痕迹时退出码 4。\n\n边界：真副本 / 外部链接一律保留并报告（真副本版本高于 Hub 时逐条提示）；\n`--agent` / `--dir` 收窄仅用于「Hub 目标已缺失」的死链清理；恢复路径 =\n从回收站取回 + `hub install` 重装 + `hub link` 重建。\n\n## 宿主发现口径\n\n1. 已收录宿主映射（81 条；兼容 Vercel Labs `skills` CLI / SkillCat 的公开宿主表，\n   经 0.28.0 逐智能体核实：XDG 解析只覆盖 skills CLI 表确认的 `.config/agents`、\n   `.config/devin`、`.config/opencode` 三类 rel，其余 `.config/...` 按字面\n   `~/.config` 解析）；\n2. 环境变量覆盖（`CODEX_HOME`、`XDG_CONFIG_HOME`、`DSH_HOME`、\n   `OPENCLAW_STATE_DIR`、`CLAUDE_CONFIG_DIR` 等）；\n3. 常见配置根启发式扫描；\n4. `YOTTA_SKILLS_DISCOVERY_ROOTS` 显式补充（自动发现类，需 `--include-discovered`）；\n5. `--dir <path>` 精确指定非标准宿主。\n\n自动发现默认排除临时目录、`.bak`、candidate / staging、插件构建目录等噪声。\n\n## 兼容标准\n\n- 技能格式：`agentskills.io` Agent Skills（`SKILL.md` + `name` / `description`）。\n- 通用投影：`~/.agents/skills`、`$XDG_CONFIG_HOME/agents/skills`。\n- 官方锁文件：只读兼容 Vercel Labs `skills` CLI 的 `.skill-lock.json` v3\n  （`$XDG_STATE_HOME/skills/` 或 `~/.agents/`）。\n\n## 本地面板（yotta-skills view）\n\n```bash\nnpx -y @yottameta/yotta-skills view\nnpx -y @yottameta/yotta-skills view --port 8790\n```\n\n面板只在 `127.0.0.1`（默认 8789）监听，零远程资源、零遥测，只读写 Hub\n目录与台账 / 证据文件，不读元忆、不改宿主全局配置。六个视图：概览、宿主矩阵、\n收编向导、链接与体检、记录与回滚、路由与编排，另附**全量 CLI 页**（全部命令 /\n子命令 + 人话说明 + 可复制示例 + 完整选项，与 `--help` 单一真源）。\n\n动作边界：收编 / 链接 / 解除 / 回滚 / 删除技能可执行（预览 → 确认 → 执行 → 证据；\n删除技能需手输 slug 二次确认）；概览 Hub 内容行可过滤后直接删除技能；\ninstall / update / refresh 只在高级 CLI 页给出可复制命令，不在网页执行。\n写操作需要页面会话令牌，解除与回滚需要破坏性确认串；收编始终逐项运行元信\n扫描，high / critical 阻断。\n\n## 安全边界\n\n- `unlink` 只删除 lstat 确认为链接、且 readlink 目标位于 Hub 内的路径。\n- 真目录 / 非 Hub 链接一律拒绝删除；`--force` 对真目录把旧副本移入回收站（7 天）再替换；\n  替换失败会把旧副本移回原位（回收站路径随结果输出）。\n- `remove` 只删指向 Hub 的链接与 Hub 内目录；链接清理报错即中止、不删 Hub；\n  Hub 目录入回收站保留 7 天，可恢复。\n- 收敛只动元技能在宿主目录中的旧副本：移入回收站（7 天）而非直删；\n  不碰插件与宿主 MCP 配置；外部技能源文件绝不修改。\n- Hub 仅本机使用，不对外分发技能内容。\n\nFile v0.29.10:references/install-flow.md\n\n# 安装器工作原理（install-flow）\n\n> 面向想了解 yotta-skills 内部机制的开发者；日常使用请读 `SKILL.md` 或中文教程\n> （`references/tutorial.md`）。\n\n## 总体流程\n\n对每个待装技能：\n\n1. 读清单（`skills.json`，默认随包；`YOTTA_SKILLS_MANIFEST` 可覆盖）；\n2. 拉包：默认**内置通道**（Node 内置 https 直连 registry：abbreviated packument → 解析版本 → tarball\n   下载 + `integrity`(sha512) / `shasum`(sha1) fail-closed 校验），失败回退 `npm pack`\n   （默认源 404 时自动改用官方源重试一次，证据记 `npm_registry_fallback`）；通道记 `fetch_channel`；\n3. 解包：默认**内置通道**（Node 内置 zlib + tar 解析：ustar / pax / GNU 长名；路径安全与链接条目\n   fail-closed），失败回退系统 `tar -xzf`；通道记 `extract_channel`；产物应有 `SKILL.md`；\n4. 读取包内 `skill-manifest.json`；没有 manifest 时使用 `skills.json` 的家族默认契约；\n5. 校验 slug / package / version / 权限 / 生命周期脚本路径；\n6. 元信装前扫描：已有元信则直接扫描；没有则在本次已获用户确认的安装动作内自举元信自身，再扫描；\n7. 通过后创建旧版本快照，把新版本复制到同盘暂存目录，再原子切换到目标目录；\n8. 依次执行包内 setup、内置 doctor、包内自定义 doctor；任一步失败自动恢复旧版本；\n9. 汇总报告：✔ 成功 / - 跳过（已是最新）/ ✘ 失败；\n10. 全部成功后自动 re-index 本地技能注册表（`~/.yottaskills/registry.json`）：重扫技能根目录并增量合并，\n   新装 / 更新的技能随即进入注册表（`--no-reindex` 可关闭；`--dry-run` 不触发）。\n\n## 复制跳过规则\n\n- 顶层跳过：`package.json` / `bin` / `node_modules` / `.git` / `__pycache__`；\n- 任意层级跳过：`.pytest_cache` / `.mypy_cache` 目录、`*.pyc` / `*.pyo` 文件。\n\n因此装进技能目录的是「技能本体」（SKILL.md / references / scripts 等），不含 npm\n安装器自身、测试夹具与 Python 字节码缓存。\n\n## 依赖与回退链\n\n| 依赖 | 角色 | 缺失时 |\n|---|---|---|\n| Node.js 18+ | 必需（CLI 本体） | 明确提示 + 按平台给安装命令 |\n| npm | 拉包回退通道（`YOTTA_SKILLS_NPM_FLAGS` / `--npm` 仍生效） | 不影响：内置拉包为主 |\n| 系统 tar | 解包回退通道 | 不影响：内置解包为主 |\n| Python 3.8+ | 元信装前扫描 | 门禁阻断（exitCode 5）；优先 `--python` / `YOTTA_SKILLS_PYTHON` 指向宿主自带 Python，或 `--skip-scan` 应急 |\n\n- 通道可用 `YOTTA_SKILLS_FETCH=builtin|npm` / `YOTTA_SKILLS_EXTRACT=builtin|tar` 强制；\n  强制单一通道失败时不回退，并给出明确报错；\n- 缺依赖时按需输出「需要什么 / 为什么 / 一条修复命令 / 不影响使用」，不常驻提醒；\n- `doctor` 新增依赖自检块（text + `--json` 的 `dependencies` 字段），只告警不失败、不改变退出码。\n\n## manifest 与家族默认契约\n\n每个技能包可以自带根目录 `skill-manifest.json`。有 manifest 时：\n\n- 校验 `slug` / `package` / `version` 与包目录、`package.json`、`SKILL.md` 一致；\n- 校验 `install.idempotent` 为 `true`；\n- 校验 setup / doctor / rollback 路径为包内相对路径，不能包含绝对路径或 `..`。\n\n没有 manifest 时使用家族默认契约：来源 `yottameta`、幂等安装、应用模式 `route`\n（元阁只给路由建议，实际安装与调用由用户确认后执行），不声明 MCP、hook 或自定义生命周期脚本。\n\n## 自定义生命周期脚本\n\n包内 `skill-manifest.json` 可声明 `install.setup` / `install.doctor` /\n`install.rollback`，值必须是包内相对路径，不能是绝对路径或包含 `..`。\n\n元阁用当前 Node.js 直接执行脚本，不经过 shell。脚本接收 `--skill-dir` /\n`--package-dir` / `--dest`，rollback 另接收 `--snapshot`，并始终追加 `--json`；\n脚本必须输出一个 JSON 对象，至少包含 `ok`。setup 或 doctor 失败时，先恢复旧版本，\n再在声明了 rollback 时调用它。生命周期结果、回滚结果和快照路径都会写入安装证据。\n\n## re-index（装技能后自动重扫注册表）\n\n- `install` / `update` 完成后，CLI 自动调用 `--reindex`（同一套 `lib/skills-scan.js` 扫描核心）：\n  重扫技能根目录 → 增量合并进 `~/.yottaskills/registry.json`（新增 / 更新 / 消失）。\n- `--no-reindex` 关闭自动重扫；`--reindex` 也可单独手动执行（例如会话开工时或新装技能后）。\n- 与 `--inventory` 的区别：`--inventory` 侧重「盘点展示」（文本表格 / JSON 全量），\n  `--reindex` 侧重「变化合并」（增量、输出聚焦新增 / 更新 / 消失，适合钩子与脚本）。\n\n## 幂等与版本判断\n\n- 读取目标 `<dest>/<slug>/SKILL.md` 的 frontmatter `version`；\n- 与清单 `version` 一致 → 跳过（幂等：第二次安装 27 个全部跳过）；\n- **只升不降（0.29.1 起）**：本地版本高于目标（清单 pin / npm latest）→ 保留并标注「本地领先」，\n  `update` / `hub update` 跳过、`update --check` 不计更新（退出码 0）、`update --auto` 不动作；\n  `latest` / `--range` 目标在解析出精确版本后、任何写入之前复判；\n- `--force` 强制重装 / 显式降级；`rollback` 恢复快照；`update` 对「缺失 / 需要升级」的技能安装。\n\n## 范围控制（接多少管多少）\n\n| 用法 | 范围 |\n|---|---|\n| `install`（无旗标） | 全量清单全部安装 |\n| `update`（无旗标） | 补齐缺失 + 升级已装（只升不降：本地更高保留不降级） |\n| `update --installed-only` | 只维护目标目录已安装的家族技能（不补装缺失；无匹配时退出码 0） |\n| `--only <a,b>` / `--domain <name>` | 只处理指定技能 / 家族；与 `--installed-only` 取交集 |\n| `update --check` / `--auto` | 只检查 / 维护已装技能，不补装缺失 |\n\n接管语义：接管范围 = 目标机器**已安装**的元技能（扫描目标目录得出），\n`skills.json` 只作身份 / 版本参照、不决定安装范围；宿主未装的技能一律不动作（不新增、不报错）；\n已管理且已最新 → 跳过（退出码 0）；非家族 / 未收录目录 → 忽略不报错。\n标准配方：`yotta-skills update --installed-only --dir <技能目录>`。\n\n## 版本策略\n\n- 默认 pin：spec = `<pkg>@<清单精确版本>`，完全可复现，不跟随浮动版本；\n- `--range`（可选）：spec = `<pkg>@<major>.x`（如 `0.x`），`npm pack` 取同 major 最新 patch。\n\n## npm 解析（Windows）\n\n- 优先：`where.exe npm.cmd` → 读同目录 `node_modules/npm/bin/npm-cli.js` → 用 node 直接执行\n  （npm.cmd 直跑在 Windows 有 EINVAL，`cmd /c` 引号脆弱；npm-cli.js 直跑无 shell 变量坑）；\n- `--npm` / `YOTTA_SKILLS_NPM`：`.js` → node 执行；`.cmd/.bat` → 同样解析 npm-cli.js；\n  其它 → 直接执行；\n- `YOTTA_SKILLS_NPM_FLAGS` 追加到 `npm pack` 参数。\n\n## 元信装前门禁\n\n- 引擎查找：`--verify` → `YOTTA_SKILLS_VERIFY` → `<dest>/yotta-verify/scripts/yotta_verify.py`；\n- python 查找：`--python` → `YOTTA_SKILLS_PYTHON` → `python3` / `python` / `py`（win32）；\n  缺 Python 时输出统一人话提示（含「修复」与「不影响使用」，可指向宿主自带 Python 或 `--skip-scan` 应急）；\n- 执行：`python -B <engine> scan <解压目录> --json`（`-B` 禁止写 `__pycache__`，防止污染\n  引擎所在目录）；\n- 元信缺失时：先按 `skills.json` 安装 `yotta-verify`，并记录 `gate_mode=trusted-bootstrap`\n  与 `bootstrap_scan=self`，随后用元信扫描其余家族包；\n- verdict 处置：`SAFE TO INSTALL` 继续；`INSTALL WITH CAUTION` / `REVIEW REQUIRED`\n  继续但显示风险并留证；`DO NOT INSTALL` 和扫描失败阻断，不替换目标；\n- scanPolicy 复核：`DO NOT INSTALL` 时用包内 `scan-policy.json` 的已审查例外复核（逐条绑定\n  skill + version + treeHash + 规则 + 路径；缺失 / 不匹配一律 fail-closed）；豁免后无阻断级\n  发现则继续，显示 `↳ scanPolicy 复核：豁免 N 条已审查发现` 并把 `scan_policy` 写进安装证据；\n- `--skip-scan` 只保留为人工应急路径，使用时输出 `explicit-unverified` 并写入证据；\n- `update --auto` 始终执行装前门禁，不接受 `--skip-scan`。\n\n## 更新检查缓存\n\n- 手动 `update --check`：每次联网，只读，保持退出码 0 / 3 / 1。\n- 后台周检 `update --check --scheduled`：默认 7 天加 0 到 24 小时随机抖动；未到期直接返回，\n  到期只检查一次；文本失败静默，`--json` 保留诊断。\n- 缓存文件：`~/.yottaskills/update-check.json`；按目标技能目录隔离记录，\n  字段包含 `last_checked`、`next_check`、`last_result`、`last_error`。\n- 本缓存只记录版本检查结果与网络错误，不记录技能内容或用户数据。\n\n## 运行时 hook 适配\n\n- `hook capabilities --host <name>`：查看六个统一事件的四档宿主能力；未知宿主默认 `unsupported`。\n- `hook evaluate --host <name> --event <event> --manifest <file> --context <json>`：按 manifest 顺序评估声明，输出 `allow` / `block` / `warn` / `unverified`。\n- `hook bind --manifest <file>` / `hook unbind <id>`：幂等注册或反注册声明，不直接改写宿主配置。\n- 评估证据写入 `~/.yottaskills/hook-log.jsonl`，绑定记录写入 `~/.yottaskills/hook-bindings.json`。\n- `native-audit` 不等于强制；缺少能力或证据时必须显示 `explicit-unverified`。\n\n## M1 记忆裁决\n\n- `decide-memory` 默认只读，调用可选本地 provider（capability `m1.adjudicate`）输出 `promote / hold / demote` 建议。\n- `--promote` 只写 `~/.yottaskills/memory-adjudication.json` 建议文件；不写元忆、不删除技能。\n- `usage` 默认关闭；显式 `usage enable` 后才记录结构化使用信号，不记录需求原文。\n- 未配置 / 未授权 / 超时 / 非法输出时 fail-open，退出码保持 0。\n\n## 快照与回滚\n\n- 旧版本快照：`~/.yottaskills/snapshots/<slug>/<timestamp>-<version>-<随机后缀>/`；\n- 新快照同时写入 `<快照目录>.meta.json`，包含 SHA-256 摘要、版本、文件数和来源；\n- 无元数据的旧快照仍可按 `SKILL.md` 做结构校验；\n- 新版本先落在 `<dest>/.yottaskills-staging/<slug>-<随机后缀>/`；\n- 旧目标先重命名为同盘备份，再把暂存目录切到目标；切换失败时恢复备份；\n- 证据写入失败会触发回滚，不把安装标记为成功；\n- Windows 上对 `EPERM` / `EACCES` / `EBUSY` 做短重试，避免杀毒或索引服务造成的瞬时锁。\n\n回滚命令：\n\n```bash\nyotta-skills rollback --list --dir <skills-dir>\nyotta-skills rollback --slug <slug> --dir <skills-dir>\n```\n\n恢复前校验快照摘要；恢复时先在目标目录同盘暂存，再替换当前目录。恢复成功后执行\n内置 doctor 和自定义 doctor，并保留原快照供再次恢复。\n\n## doctor\n\n```bash\nyotta-skills doctor --dir <skills-dir> --slug <slug>\nyotta-skills doctor --dir <skills-dir> --json\n```\n\ndoctor 只读检查目录、`SKILL.md`、版本、manifest 身份、注册表记录和自定义 doctor，\n不会修改目标目录或注册表。注册表版本不一致属于 warning，可用 `--reindex` 修复。\n`--dir` 也可以直接指向单个技能包目录，此时会按 `SKILL.md` / `skill-manifest.json` / 目录名自动识别技能身份。\n退出码：`0` 通过，`4` 没有可检查对象，`1` 检查失败，`6` manifest / 身份校验失败。\n\n## 安装证据\n\n每次安装决策写入：\n\n```text\n~/.yottaskills/install-log.jsonl\n```\n\n记录包含时间、事件、技能、包名、版本、`gate_mode`、verdict、decision\n、`fetch_channel`（builtin / npm）、`extract_channel`（builtin / tar）和快照路径；\n不记录技能内容或用户数据，只写本机。\n\n## 退出码\n\n| 退出码 | 含义 |\n|---|---|\n| 0 | 成功（含全部跳过） |\n| 1 | 安装 / 更新存在失败项 |\n| 2 | 用法错误（未知参数 / 未知技能 / 未收录智能体） |\n| 4 | 未指定目标且当前目录未检测到项目级技能目录，或 doctor 没有可检查的元阁家族技能 |\n| 5 | 装前 gate 阻断或元信不可用 |\n| 6 | manifest / 身份校验失败 |\n\n## 目标目录解析\n\n- `--dir`：直接使用（技能落在 `<dir>/<slug>`）；\n- `--agent`：查内置 17 智能体表（codex 特判 `$CODEX_HOME/skills`；opencode 特判\n  `$XDG_CONFIG_HOME/opencode/skills`；其余 `~/.<agent>/skills` 或 `~/.config/...`）；\n- 都未指定：检测当前目录是否存在项目级技能目录（`.claude/skills`、`.codex/skills`、\n  `.agents/skills` 等 17 个），存在则用之；否则退出码 4。\n\nFile v0.29.10:references/orchestration.md\n\n# 元阁编排策划（orchestration）\n\n> 元阁（yotta-skills）的**编排层**：告诉 AI 智能体「什么时候该组合哪几个元技能、组合起来比单用强在哪、怎么建议用户安装并按组合契约使用」。\n> 本页是「每个场景 → 选哪几个技能 → 为什么 → 怎么组合使用」的决策表。安装与调用都由用户确认后执行，本页只提供建议。\n> 配套：全家清单见 `skill-list.md`；安装用法见 SKILL.md「快速使用」。\n\n---\n\n## 〇、编排路由（--route / route_request）\n\n把需求摘要交给静态 playbook 与本地注册表，得到一组建议：\n\n```bash\nnpx -y @yottameta/yotta-skills --route \"帮我润色输出，要规范可复制，别有 AI 味\"\n```\n\n- **输出**：候选组合、调用顺序、每个技能的角色、置信度、命中依据、已装/缺失状态、安装命令与应用模式提醒；如本机装了非元阁家族技能，还会给出其他已装技能候选（仅按 frontmatter description 机械匹配，标注来源与未扫描状态）。\n- **缺失技能**：只给安装命令，不自动安装；安装前先做装前安全扫描，决定权在用户。\n- **应用模式**：默认用户显式调用；切换为「按场景自动调用」需要用户确认。\n- **无明确匹配**：低置信度回退到「入口 + 安装」组合，先澄清需求再继续。\n- **边界**：路由是建议，不保证完全正确；关键动作由用户确认，数据不出本机。其他已装技能候选只读 frontmatter description、不读取全文指令、不自动调用；使用/安装前先做装前安全扫描。\n\n---\n\n## 一、技能家族全景（24 技能 / 8 家族）\n\n| 家族 | 技能（中文名 / slug） | 一句话能力 |\n|---|---|---|\n| 入口与引导 | 元引 yotta-prompt | 意图澄清，串联到对应的元阁技能 |\n| 覆盖与安装 | 元阁 yotta-skills | 全家 / 按需一键安装与更新 |\n| 呈现与表达 | 元呈 yotta-present、元真 yotta-humanize | 输出判型渲染成可复制 Markdown/纯文本；去 AI 味 |\n| 记忆与上下文 | 元忆 yotta-memory、元习 yotta-learn、元史 yotta-logs | 权限记忆、学习沉淀、历史检索 |\n| 工作流与跨会话 | 元序 yotta-workflow | 开工读状态 / 状态就近存 / 会话结束留记录 |\n| 质量与工程 | 元谨 yotta-anti-shallow、元质 yotta-code-quality、元造 yotta-skill-creator、元守 yotta-publish-guard | 防敷衍、代码评审、造技能、发布守门 |\n| 安全与信任 | 元信 yotta-verify（+元信MCP）、元审 yotta-vetter、元安 yotta-security-audit、元链 yotta-chain、元钥 yotta-secret、元鉴 yotta-triage、元察 yotta-logwatch、元情 yotta-intel、元析 yotta-recon、元测 yotta-security-testing、元盾 yotta-guardian、元安全 yotta-agent-hardening | 装前扫描、审查协议、静态检测、供应链、密钥、样本、日志、IOC、侦察、测试、拦截、加固 |\n| 分发与汇总 | 元引（串联）、元阁（安装） | —— |\n\n---\n\n## 二、组合矩阵（哪些和哪些组合，强在哪）\n\n> 原则：**单技能是零件，组合才是系统**。下面每个组合给出「一起用效果、单用差在哪、典型场景」。\n\n| 组合 | 成员（slug） | 一起用强在哪 | 单用缺什么 |\n|---|---|---|---|\n| **① 输出呈现标准** | yotta-present + yotta-humanize | 先判型渲染成规范、可复制、可复用的输出，再检测 AI 味改写，交付统一且读感自然 | 只有 yotta-present：规范但不祛 AI 味；只有 yotta-humanize：祛 AI 味但输出形态不规整 |\n| **② 长生命周期智能体** | yotta-workflow + yotta-memory + yotta-learn + yotta-logs | 开工恢复上下文、权限记忆、沉淀学习、检索历史，智能体活过会话、越用越懂你 | 缺 yotta-workflow：状态无处放；缺 yotta-memory：记忆无权限边界；缺 yotta-learn：错不沉淀；缺 yotta-logs：历史查不到 |\n| **③ 交付质量门** | yotta-anti-shallow + yotta-code-quality + yotta-publish-guard | 防敷衍、结对评审、发布前守门，交付前多层把关 | 缺 yotta-anti-shallow：容易停留表面；缺 yotta-code-quality：代码质量无人审；缺 yotta-publish-guard：发版无守门 |\n| **④ 装前安全门** | yotta-verify（或元信MCP）+ yotta-vetter + yotta-security-audit | 确定性扫描 + 协议审查 + 深检，装其他来源技能/插件/MCP 前给出可信判定 | 缺 yotta-verify：无确定性扫描；缺 yotta-vetter：无协议审查；缺 yotta-security-audit：无深检兜底 |\n| **⑤ 造技能 / 发版** | yotta-skill-creator + yotta-publish-guard | 脚手架生成合规技能目录，发布前守门 | 缺 yotta-skill-creator：造技能无模板；缺 yotta-publish-guard：造完不知能否发 |\n| **⑥ 安全事件响应** | yotta-logwatch + yotta-intel + yotta-triage + yotta-secret + yotta-chain + yotta-recon | 日志检测攻击链、提取 IOC、初筛样本、扫密钥、校验供应链、侦察资产 | 每项只管一环，单用看不到全链路 |\n| **⑦ 入口 + 安装** | yotta-prompt + yotta-skills | 元引澄清需求串联到对应技能，元阁按场景把组合一口气装好 | 缺 yotta-prompt：需求模糊时不知该用哪个；缺 yotta-skills：要一个个装 |\n\n---\n\n## 三、场景 → 组合映射（AI 接到需求时查表）\n\n| 用户场景（触发词） | 该组合 | 建议动作（经用户确认后执行） |\n|---|---|---|\n| 「让 AI 长期帮我做项目 / 别忘了我 / 跨会话」 | ② 长生命周期 | 装 yotta-workflow yotta-memory yotta-learn yotta-logs；开工恢复上下文、状态就近存、会话结束留记录 |\n| 「帮我写/润色，让输出规范、别 AI 味」 | ① 输出呈现标准 | 装 yotta-present yotta-humanize；默认先判型渲染，检测 AI 味再改写 |\n| 「检查这段代码/报告质量，别糊弄」 | ③ 交付质量门 | 装 yotta-anti-shallow yotta-code-quality yotta-publish-guard；按对应协议执行 |\n| 「我要装一个其他来源技能/插件/MCP」 | ④ 装前安全门 | 装 yotta-verify(+MCP) yotta-vetter yotta-security-audit；装前必扫 |\n| 「我要造一个新 skill 并发布」 | ⑤ 造技能/发版 | 装 yotta-skill-creator yotta-publish-guard；生成 + 守门 |\n| 「我怀疑日志/资产有问题」 | ⑥ 安全事件响应 | 装 yotta-logwatch yotta-intel yotta-triage yotta-secret yotta-chain yotta-recon；按需调用 |\n| 「不知道怎么说 / 一堆技能该用哪个」 | ⑦ 入口+安装 | 装 yotta-prompt yotta-skills；元引澄清→串联→元阁按组合装 |\n\n> 组合不是死板套餐：命中「入口+安装」或「输出呈现标准」这类**常用组合**时，AI 应主动说明推荐理由与将要做什么，**由用户确认后执行**；命中安全/发版这类**高风险动作**时，AI 应先给出技能清单与执行方案，再由用户确认。\n\n---\n\n## 四、AI 建议安装与组合规则（金标准）\n\n1. **查表**：接到需求，先在「场景→组合映射」里定位命中组合。\n2. **查已装**：检查当前智能体的技能目录是否存在对应 `<slug>/SKILL.md`；存在即已装，缺失即待装。\n3. **建议装**：缺失的技能给出清单与命令\n   `npx -y @yottameta/yotta-skills install <slug>... [--agent <name> | --dir <path>]`\n   （只装组合所需，不装全家，避免过度安装；默认 `--pin` 锁死清单精确版本），\n   **等用户确认后再执行**；用户未确认 → 不安装。\n4. **建议用**：命中「输出呈现标准」「长生命周期」这类组合时，先说明推荐动作\n   （如输出按元呈判型渲染、开工恢复上下文 + 读状态文件）与影响范围，**由用户确认后生效**。\n   需要跨会话默认生效时，必须把默认行为写进客户端全局记忆，写入前单独征得用户明确同意；\n   **不得**以「默认契约」「无需提醒」为由跳过确认。\n5. **用户触发（高风险）**：命中「安全 / 发版 / 造技能」这类**高风险或目的不明**时，AI 给出技能清单与执行方案，**先征询用户确认**再执行；拿不准就当未装，给出安装命令。\n6. **边界**：不 `-g` 全局安装；不向未指定位置写文件（含客户端 `mcpServers` 配置与全局记忆文件）；不静默写任何宿主配置；拿不准某技能是否已装 → 视为未装并给提示；网络不可用 → 明确报错，不伪造结果。\n\n---\n\n## 五、安装与入口\n\n- 安装 CLI 用法见 `SKILL.md`「快速使用」；全家清单见 `skill-list.md`。\n- 版本策略 / 元信装前摘要 / 支持的智能体 / 环境变量 同 SKILL.md。\n\nFile v0.29.10:references/provider-protocol.md\n\n# 扩展提供方协议 v1（元阁 · capability `o1.route` / `m1.adjudicate`）\n\n> O1 动态路由的请求 payload 已加法扩展到 schema 2（新增 `request_features` / `usage` / `playbooks`）；\n> 旧 provider 仍可按原 `skills[]` 响应工作，新 provider 可返回 `confidence` / `reasons` / `summary` / `alternatives`。\n\n元阁可以可选地调用一个由用户显式配置的**本地扩展提供方（provider）**：\n\n- `o1.route`：在已装技能白名单内对静态路由结果做增补 / 重排；未配置时 `--route` 行为与输出与之前完全一致。\n- `m1.adjudicate`：对已装技能做 M1 记忆裁决，返回 `promote / hold / demote` 只读建议；未配置时 `decide-memory` 返回 `not_installed`，不写任何文件。\n\n## 1. 配置\n\n配置文件：`<YOTTA_PROVIDER_HOME>/provider.json`，默认 `~/.yottameta/provider.json`。\n环境变量 `YOTTA_PROVIDER_HOME` 可覆盖根目录（测试与隔离环境用）。\n\n```json\n{\n  \"schema\": 1,\n  \"providers\": [\n    {\n      \"id\": \"local-provider\",\n      \"version\": \"0.1.0\",\n      \"capabilities\": [\"o1.route\"],\n      \"command\": [\"node\", \"C:/path/to/provider.js\"],\n      \"timeout_ms\": 600\n    }\n  ]\n}\n```\n\n- `command` 必须是**数组**（argv 语义），以 `shell: false` 执行；不接受字符串命令。\n- `timeout_ms` 默认 600，最小 50，最大 5000；超时即回落。\n- 配置文件缺失、解析失败、`command` 非数组、capability 未知：**只记录状态，不阻断命令**；缺失等同「未安装」。\n\n## 2. 调用\n\n- 只在用户显式执行 `--route`（CLI）或 `route_request`（MCP，内部走同一 CLI）时触发；安装 / 更新 / 盘点等路径不触发。\n- 元阁把**一个 JSON 请求**写入 provider 的 stdin（随后关闭），从 stdout 读**一个 JSON 响应**；stderr 只作诊断。\n- stdout 上限 256 KB；超过按错误处理并回落。\n\n```json\n{\n  \"schema\": 1,\n  \"capability\": \"o1.route\",\n  \"request_id\": \"<uuid>\",\n  \"payload\": {\n    \"request\": \"帮我做发布前质量检查\",\n    \"static_result\": {\n      \"playbook\": \"delivery-quality-gate\",\n      \"confidence\": \"high\",\n      \"skills\": [\"yotta-anti-shallow\", \"yotta-code-quality\", \"yotta-publish-guard\"]\n    },\n    \"installed_skills\": [\n      { \"slug\": \"yotta-code-quality\", \"version\": \"0.3.0\", \"sources\": [\"Codex\"] }\n    ]\n  }\n}\n```\n\n### 2.1 O1 动态路由 payload（schema 2）\n\n```json\n{\n  \"schema\": 1,\n  \"capability\": \"o1.route\",\n  \"request_id\": \"<uuid>\",\n  \"payload\": {\n    \"schema\": 2,\n    \"request\": \"帮我做发布前质量检查\",\n    \"request_features\": {\n      \"request_hash\": \"<sha256>\",\n      \"english_tokens\": [\"release\", \"quality\"],\n      \"cjk_bigrams\": [\"发布\", \"质量\", \"检查\"],\n      \"playbook_matches\": [\n        { \"id\": \"delivery-quality-gate\", \"score\": 6, \"matched_keywords\": [\"检查\", \"质量\", \"发布\"] }\n      ]\n    },\n    \"static_result\": {\n      \"playbook\": \"delivery-quality-gate\",\n      \"confidence\": \"high\",\n      \"skills\": [\"yotta-anti-shallow\", \"yotta-code-quality\", \"yotta-publish-guard\"]\n    },\n    \"installed_skills\": [\n      {\n        \"slug\": \"yotta-code-quality\",\n        \"version\": \"0.3.0\",\n        \"description\": \"代码质量评审...\",\n        \"status\": \"known\",\n        \"sources\": [\"Codex\"],\n        \"first_seen\": \"2026-08-23T00:00:00Z\",\n        \"last_seen\": \"2026-10-01T00:00:00Z\",\n        \"trust\": \"yottameta\"\n      }\n    ],\n    \"usage\": {\n      \"enabled\": false,\n      \"skills\": {},\n      \"last_route\": null\n    },\n    \"playbooks\": [\n      {\n        \"id\": \"delivery-quality-gate\",\n        \"name\": \"交付质量门\",\n        \"keywords\": [\"检查\", \"代码\", \"质量\", \"发布\"],\n        \"skills\": [\"yotta-anti-shallow\", \"yotta-code-quality\", \"yotta-publish-guard\"]\n      }\n    ]\n  }\n}\n```\n\n- `request_features` 由元阁本地确定性提取；`request_hash` 只用于审计关联，不用于还原原文。\n- `usage.enabled=false` 时 `usage.skills` 为空；只有用户显式启用使用记录后，才发送聚合计数。\n- `installed_skills` 只含 slug / 版本 / frontmatter description / 状态 / 来源标签 / 时间戳 / 信任标注；不含安装路径。\n- `playbooks` 只含公开静态 playbook 元数据。\n\n## 3. 响应\n\n```json\n{\n  \"ok\": true,\n  \"capability\": \"o1.route\",\n  \"data\": {\n    \"policy\": { \"version\": \"o1-mvp-1\" },\n    \"confidence\": \"high\",\n    \"summary\": \"建议先跑防敷衍，再做代码质量评审，最后过发布守门。\",\n    \"skills\": [\n      { \"slug\": \"yotta-anti-shallow\", \"role\": \"先做防敷衍检查\", \"score\": 82, \"reason\": \"意图匹配 + 静态场景\" },\n      { \"slug\": \"yotta-code-quality\", \"role\": \"补充代码质量评审\", \"score\": 76, \"reason\": \"历史使用 x2\" },\n      { \"slug\": \"yotta-publish-guard\", \"role\": \"最后做发布守门\", \"score\": 70, \"reason\": \"静态场景 + 组合出现\" }\n    ],\n    \"reasons\": [\n      \"意图匹配：检查 / 代码 / 质量 / 发布\",\n      \"静态场景：交付质量门\"\n    ],\n    \"alternatives\": [\n      { \"slug\": \"yotta-verify\", \"score\": 54, \"reason\": \"可补充装前安全扫描\" }\n    ]\n  }\n}\n```\n\n- `skills[].slug` 必须 ∈ `installed_skills` 白名单；未安装或未知的 slug 会被丢弃并记入 `dropped`，不会写入结果。\n- `role` 可选；缺省时增补条目使用「由扩展提供方补充」。\n- `confidence` 只接受 `high / medium / low`；非法值回落静态置信度。\n- `reasons` / `summary` 只作为展示数据，限长并去除控制字符；不作为指令执行。\n- `alternatives` 只接受白名单内、且未进入主组合的技能。\n- 元阁先算静态结果：provider 给出的顺序用于重排；静态结果中未被提及的技能会**追加保留**，不会丢失。\n- 返回空列表 / 全是不合法 slug：视为未应用（`applied = false`），静态结果原样返回。\n\n需要授权或不可用时：\n\n```json\n{ \"ok\": false, \"code\": \"license_required\", \"message\": \"该能力需要授权后使用\" }\n```\n\n## 4. 状态与回落\n\n| 状态 | 触发 | 元阁行为 |\n| --- | --- | --- |\n| `not_installed` | 无配置 / 无匹配 capability | 纯静态路由，文本输出与历史一致 |\n| `active` | 调用成功且响应合法 | 白名单内增补 / 重排，静态结果保留 |\n| `license_required` | provider 明确返回该 code | 纯静态路由 +「需授权」提示 |\n| `timeout` | 超过 `timeout_ms` | 纯静态路由 + 一行状态提示 |\n| `invalid_output` | 非 JSON / 缺 `ok` | 纯静态路由 + 一行状态提示 |\n| `error` | 启动失败 / 退出码非 0 / 输出超限 / 配置非法 | 纯静态路由 + 一行状态提示 |\n\n`--json` 输出始终包含 `dynamic` 块：`status` / `provider_id` / `applied` / `added` / `dropped` / `note`；\nCLI 文本输出只在状态非 `not_installed` 时多一行「动态路由: ...」，退出码不受影响（始终 0）。\n\n## 5. 审计与边界\n\n- 每次实际调用写一行 `<YOTTA_PROVIDER_HOME>/provider-audit.jsonl`：`ts` / `capability` / `provider_id` / `status` / `duration_ms` / `bytes_out`。\n- 审计**不记录**需求原文或任何 payload 内容。\n- `usage` 只含聚合计数与技能 slug；不记录需求原文、记忆正文、路径或身份信息。\n- P3 仅面向用户显式配置的本地 provider；未来云端 provider 的「只发特征、不传原文」模式留 P5。\n- 元阁不替 provider 联网；provider 自身行为由它自己的包声明。\n- 删除 `provider.json` 即回到纯静态路由，无残留依赖。\n- provider 输出只当数据使用：白名单外的 slug、非法结构一律丢弃，不作为指令执行。\n\n## 6. capability `m1.adjudicate`\n\n### 6.1 触发\n\n只在用户显式执行 `yotta-skills decide-memory`（CLI）或 MCP `decide_memory` 时触发。\n安装 / 更新 / 盘点 / re-index / doctor 等路径不执行 M1 provider。\n\n### 6.2 请求\n\n元阁先把注册表与本地使用记录转成确定性特征快照，再发给 provider：\n\n```json\n{\n  \"schema\": 1,\n  \"capability\": \"m1.adjudicate\",\n  \"request_id\": \"<uuid>\",\n  \"payload\": {\n    \"schema\": 1,\n    \"generated_at\": \"2026-09-30T00:00:00Z\",\n    \"skills\": [\n      {\n        \"slug\": \"yotta-memory\",\n        \"version\": \"0.20.0\",\n        \"status\": \"known\",\n        \"description\": \"文件式智能体记忆...\",\n        \"first_seen\": \"2026-08-23T00:00:00Z\",\n        \"last_seen\": \"2026-09-30T00:00:00Z\",\n        \"last_signal_at\": \"2026-09-30T00:00:00Z\",\n        \"pinned\": false,\n        \"signals\": {\n          \"used\": 2,\n          \"named\": 0,\n          \"accepted\": 1,\n          \"route_hits\": 5,\n          \"distinct_pairs\": 3\n        }\n      }\n    ]\n  }\n}\n```\n\npayload 不含需求原文、记忆正文、凭据、主机名、用户名、来源目录或任意文件路径。\n\n### 6.3 响应\n\n```json\n{\n  \"ok\": true,\n  \"capability\": \"m1.adjudicate\",\n  \"data\": {\n    \"policy\": {\n      \"version\": \"m1-mvp-1\",\n      \"promote_threshold\": 60,\n      \"hold_threshold\": 30,\n      \"cooling_days\": 7\n    },\n    \"decisions\": [\n      {\n        \"slug\": \"yotta-memory\",\n        \"verdict\": \"promote\",\n        \"score\": 78,\n        \"reasons\": [\"used x2：+24\", \"组合出现 x3：+9\"],\n        \"signals\": {\n          \"used\": 2,\n          \"named\": 0,\n          \"accepted\": 1,\n          \"route_hits\": 5,\n          \"distinct_pairs\": 3,\n          \"description_quality\": 12,\n          \"recency\": 10\n        }\n      }\n    ]\n  }\n}\n```\n\n元阁只接受：slug 在本次注册表白名单内、verdict 为 `promote / hold / demote`、score 为 0-100。\n未知 slug / 非法 verdict / 非法 score 一律丢弃并记入 `dropped`。\n\n### 6.4 授权与回落\n\n| 状态 | 触发 | 元阁行为 |\n| --- | --- | --- |\n| `not_installed` | 无配置 / 无匹配 capability | `decide-memory` 返回 `not_installed`，不写文件 |\n| `active` | provider 返回合法 decisions | 展示建议；`--promote` 可写本地建议文件 |\n| `license_required` | provider 明确返回该 code | 显示需授权；不阻断其他能力 |\n| `timeout` / `invalid_output` / `error` | 超时 / 非法 JSON / 执行失败 | 显示状态；不写文件、不阻断 |\n\nprovider 内部应使用路线 B 授权门（capability `m1.adjudicate`）。未授权时返回：\n\n```json\n{ \"ok\": false, \"code\": \"license_required\", \"message\": \"该能力需要授权后使用\" }\n```\n\n### 6.5 建议文件与元忆边界\n\n`--promote` 只写 `~/.yottaskills/memory-adjudication.json`，包含 decisions 与 `memory_candidates`。\n`memory_candidates` 默认使用私密 `PREF`，不自动写元忆；用户或 AI 需要再显式调用元忆写入。\nMCP `decide_memory` 始终只读，不写建议文件、不写元忆。\n\nFile v0.29.10:references/skill-list.md\n\n# 全家技能清单（27 个）\n\n> 机器权威源：`skills.json`（随包分发）；本文件为人工可读副本，新技能发布后须同步更新\n> `skills.json`（登记表为内部台账，不随包分发）。清单更新日期：2026-10-07。\n\n| slug | 中文名 | npm 包 | 清单版本 | 家族 | 说明 |\n|---|---|---|---|---|\n| `yotta-anti-shallow` | 元谨 | `@yottameta/yotta-anti-shallow` | 1.4.2 | quality | 防 AI 敷衍规则引擎（深入分析/根因追溯时激活） |\n| `yotta-code-quality` | 元质 | `@yottameta/yotta-code-quality` | 0.4.3 | quality | 结对式代码质量评审（十二类腐化风险 + 0-100 健康分） |\n| `yotta-workflow` | 元序 | `@yottameta/yotta-workflow` | 0.4.3 | workflow | 跨会话/跨项目通用工作流协议（状态就近存） |\n| `yotta-memory` | 元忆 | `@yottameta/yotta-memory` | 0.22.7 | memory | 有权限边界的文件式智能体记忆（FACT/PREF/BOUND/COMMIT） |\n| `yotta-learn` | 元习 | `@yottameta/yotta-learn` | 0.4.0 | memory | 学习闭环 + 知识库（CLI / MCP / 本地面板）：经验沉淀为 .learnings/ 条目；知识分类索引 + 关键词查询 |\n| `yotta-security-audit` | 元安 | `@yottameta/yotta-security-audit` | 0.3.1 | security | 安全扫描引擎：13 类检测器 + 系统安全基线 + 学生数据隐私（教育版） |\n| `yotta-vetter` | 元审 | `@yottameta/yotta-vetter` | 0.2.7 | security | 安全审查协议：四阶段 review + SAFE TO INSTALL 判定 |\n| `yotta-recon` | 元析 | `@yottameta/yotta-recon` | 0.1.8 | security | 跨智能体网络侦察：零依赖端口/服务/版本指纹探测 |\n| `yotta-guardian` | 元盾 | `@yottameta/yotta-guardian` | 0.1.8 | security | 跨智能体危险调用拦截护栏：确定性规则 + 可插拔意图验证 |\n| `yotta-humanize` | 元真 | `@yottameta/yotta-humanize` | 0.2.2 | writing | 去 AI 味中文写作编辑：检测器引擎 |\n| `yotta-logs` | 元史 | `@yottameta/yotta-logs` | 0.3.3 | memory | 跨智能体历史会话 / 记忆日志检索 |\n| `yotta-security-testing` | 元测 | `@yottameta/yotta-security-testing` | 0.3.2 | security | 有纪律的 AI 安全测试方法论 + Scope Guard 五道防线 |\n| `yotta-agent-hardening` | 元安全 | `@yottameta/yotta-agent-hardening` | 0.2.7 | security | 防御向 AI 智能体自身安全加固（配置面静态扫描三域） |\n| `yotta-skill-creator` | 元造 | `@yottameta/yotta-skill-creator` | 0.1.5 | quality | 工坊「造」：端到端造技能脚手架 |\n| `yotta-publish-guard` | 元守 | `@yottameta/yotta-publish-guard` | 0.4.3 | quality | 工坊「守」：发布前守门（版本四件对齐 + 三通道查重） |\n| `yotta-logwatch` | 元察 | `@yottameta/yotta-logwatch` | 0.3.1 | security | 安全日志分析检测引擎（攻击链识别/告警聚合） |\n| `yotta-intel` | 元情 | `@yottameta/yotta-intel` | 0.2.2 | security | 威胁情报 IOC 提取与规范化引擎（STIX-lite） |\n| `yotta-secret` | 元钥 | `@yottameta/yotta-secret` | 0.2.2 | security | 密钥 / 凭据泄露源头扫描引擎 |\n| `yotta-chain` | 元链 | `@yottameta/yotta-chain` | 0.1.5 | security | 供应链依赖校验引擎 |\n| `yotta-triage` | 元鉴 | `@yottameta/yotta-triage` | 0.1.4 | security | 恶意样本静态初筛引擎（哈希/熵/字符串/PE-ELF） |\n| `yotta-prompt` | 元引 | `@yottameta/yotta-prompt` | 0.2.4 | entry | 意图澄清 + 生态入口（常驻注入，map 串联元阁全家） |\n| `yotta-verify` | 元信 | `@yottameta/yotta-verify` | 0.3.4 | security | 装前安全扫描器 + audited 徽章（prompt injection + 危险模式） |\n| `yotta-compliance` | 元规 | `@yottameta/yotta-compliance` | 0.1.1 | compliance | 本地确定性合规条款审查（PIPL + 数据出境规则包 / 证据锚点 / 框架覆盖分级） |\n| `yotta-mirror` | 元镜 | `@yottameta/yotta-mirror` | 0.1.1 | education | 本地确定性学情分析（知识点掌握率 / 分层与临界生 / 薄弱点诊断，学生数据不出本机） |\n| `yotta-lesson` | 元案 | `@yottameta/yotta-lesson` | 0.1.2 | education | 本地确定性教案骨架与覆盖校验（课标映射 / 环节时间精确分配 / 缺口检查） |\n| `yotta-item` | 元题 | `@yottameta/yotta-item` | 0.1.1 | education | 本地确定性组卷与试卷校验（双向细目表 / 题库选题 / 缺口检查） |\n| `yotta-school-doc` | 元公 | `@yottameta/yotta-school-doc` | 0.1.3 | education | 本地确定性学校公文可信起草与校验（文种规则包 / 可复算骨架 / 12 类缺口） |\n\n## 家族分布\n\n- 安全与护栏（12）：元安 / 元审 / 元析 / 元盾 / 元测 / 元安全 / 元察 / 元情 / 元钥 / 元链 / 元鉴 / 元信\n- 质量与工程（4）：元谨 / 元质 / 元造 / 元守\n- 记忆与上下文（3）：元忆 / 元史 / 元习\n- 写作与表达（1）：元真\n- 工作流（1）：元序\n- 入口与引导（1）：元引\n- 合规与信任（1）：元规\n- 教育与学习（4）：元镜 / 元案 / 元题 / 元公\n\n合计 27 个已发布技能；本安装器自身（yotta-skills / 元阁）归「分发与安装」家族。\n\nFile v0.29.10:references/tutorial.md\n\n# 元阁中文教程（新手全流程）\n\n> 配套技能：元阁 yotta-skills（全家技能一键安装 CLI，依赖 Node.js 18+ / npm / 系统 tar）。\n> 目标：把元阁已发布的 27 个 `yotta-*` 技能一次装进指定智能体或目录，并学会预览、更新、\n> 锁版本与常见排查。\n\n## 1. 教程目标与前置\n\n- 学会 `--list` / `install` / `update` / `--dry-run` / `--pin` / `--force` 的用法；\n- 理解版本策略（range 与 --pin）与幂等行为；\n- 了解元信装前门禁、元信自举与 `--skip-scan` 的人工应急边界；\n- 前置：Node.js 18+、npm、系统 tar（Windows 10+ 自带）；网络可访问 npm 注册表\n  （国内可配置镜像或代理）。\n\n## 2. 查看全家清单\n\n```bash\nnpx -y @yottameta/yotta-skills --list\n```\n\n输出 27 个技能：slug / 中文名 / 包名与版本范围 / 清单版本 / 一句话说明。\n确认某个技能在不在清单里，可加技能名过滤：\n\n```bash\nnpx -y @yottameta/yotta-skills --list yotta-memory\n```\n\n## 3. 安装全家到智能体\n\n推荐用 `--agent` 装到指定智能体默认用户级目录（如 Codex）：\n\n```bash\nnpx -y @yottameta/yotta-skills install --agent codex\n```\n\n支持 17 个智能体键名：`claude` / `cursor` / `codex` / `gemini` / `goose` / `amp` /\n`opencode` / `windsurf` / `workbuddy` / `kiro` / `trae` / `trae-cn` / `qwen` / `comate` /\n`codebuddy` / `kimi` / `agents`。未收录的智能体用 `--dir` 指到它的技能目录。\n\n## 4. 安装到任意目录\n\n```bash\nnpx -y @yottameta/yotta-skills install --dir ~/my-skills\n```\n\n每个技能落在 `<dir>/<slug>`（如 `~/my-skills/yotta-memory/`）。\n只装个别技能：\n\n```bash\nnpx -y @yottameta/yotta-skills install yotta-memory yotta-verify --dir ~/my-skills\n```\n\n## 5. 更新已装技能\n\n```bash\nnpx -y @yottameta/yotta-skills update --agent codex\n```\n\n- 缺失的技能 → 补装；版本不一致的技能 → 按当前版本策略重装；\n- 已是最新的技能显示「已是最新」并跳过（幂等）。\n\n## 6. 安装前预览\n\n```bash\nnpx -y @yottameta/yotta-skills --dry-run\n```\n\ndry-run 只打印将要执行的清单（含目标与版本策略），不联网、不写任何文件。\n\n## 7. 版本策略：range 与 --pin\n\n- 默认 range：按同 major 最新 patch（如 `0.x`），维护性更新随最新；\n- 想完全可复现 → 加 `--pin` 锁死清单精确版本：\n\n```bash\nnpx -y @yottameta/yotta-skills install --agent codex --pin\n```\n\n## 8. 强制重装与元信门禁\n\n```bash\nnpx -y @yottameta/yotta-skills install --agent codex --force     # 已是最新也重装\nnpx -y @yottameta/yotta-skills install --agent codex --skip-scan # 人工应急：显式未验证\n```\n\n家族安装默认执行元信门禁：没有元信时，元阁先按可信源安装元信自身，再扫描待装技能。\n`DO NOT INSTALL` 会阻断安装；`INSTALL WITH CAUTION` / `REVIEW REQUIRED` 会继续但显示风险。\n旧版本会先快照到 `~/.yottaskills/snapshots/`，安装决策写入\n`~/.yottaskills/install-log.jsonl`。`--skip-scan` 只用于人工应急，会输出\n`explicit-unverified` 并留证，`update --auto` 不会使用它。\n\n安装阶段还会按包内 manifest 执行 setup / doctor；setup 或 doctor 失败时自动恢复旧版本。\n可以用 `doctor` 只读自检，用 `rollback` 校验并恢复最近快照：\n\n```bash\nnpx -y @yottameta/yotta-skills doctor --agent codex --slug yotta-memory\nnpx -y @yottameta/yotta-skills rollback --list --agent codex\nnpx -y @yottameta/yotta-skills rollback --slug yotta-memory --agent codex\n```\n\n## 9. 验证安装结果\n\n- 看安装汇总：成功 N / 跳过 N / 失败 N；\n- 抽查技能目录：`ls ~/.codex/skills/yotta-memory/SKILL.md`；\n- 复核版本：每个技能 SKILL.md 的 frontmatter `version` 应与 `--list` 一致（这也是幂等\n  判断的依据）；\n- 需要安全复核时，查看 `~/.yottaskills/install-log.jsonl` 中的 verdict 与 `gate_mode`。\n\n## 10. 常见问题\n\n- **npmmirror 全新包 404**：镜像同步有延迟时安装器会自动改用官方源重试一次（默认行为）；\n  如需固定在指定源，设置 `YOTTA_SKILLS_NPM_FLAGS=--registry=...` 或 `YOTTA_SKILLS_NO_FALLBACK=1`。\n- **`--agent` 报未收录**：改用 `--dir` 指到该智能体的技能目录（`.agents/skills` 不是\n  通用目录）。\n- **某技能安装失败**：汇总报告给出失败原因；可单装该技能排查：\n  `install <slug> --dir <path>`。\n- **目标未指定**：当前目录没有项目级技能目录时报错（退出码 4），加 `--agent` 或\n  `--dir`。\n- **已有旧版本**：默认按 range 覆盖升级到最新 patch；`--pin` 则锁定清单版本。\n- **doctor 报注册表版本不一致**：运行 `yotta-skills --reindex` 重扫注册表；doctor 本身不会写文件。\n- **需要撤销最近安装 / 更新**：先用 `rollback --list` 查看快照，再执行\n  `rollback --slug <slug>`；恢复前会自动校验快照。\n- **后台更新检查没有输出**：`update --check --scheduled` 在未到期、已最新或网络失败时\n  文本模式保持静默；需要诊断时加 `--json`。\n\n## 11. 盘点已装技能与 re-index（新装技能自动被发现）\n\n```bash\n# 盘点本机已装技能（文本表格）\nnpx -y @yottameta/yotta-skills --inventory\n\n# 重扫注册表（会话开工 / 新装技能后，增量合并变化）\nnpx -y @yottameta/yotta-skills --reindex\n```\n\n- `install` / `update` 完成后会自动重扫注册表（`~/.yottaskills/registry.json`），新装 / 更新的\n  技能随即出现在 `--inventory` / `--reindex` 里；`--no-reindex` 可关闭自动重扫。\n- 可在会话开工时手动跑一次 `--reindex`（快速增量，只合并变化），让后装的技能自动被看见。\n- 更新检查不再作为会话开工默认动作：手动检查用 `update --check`；后台周检用\n  `update --check --scheduled`，未到期不联网，到期只检查一次并写\n  `~/.yottaskills/update-check.json`。\n\n## 编排路由（--route）\n\n当你不知道「这个需求该用哪几个技能」，可以先把需求摘要交给元阁：\n\n```bash\nnpx -y @yottameta/yotta-skills --route \"检查代码质量，别糊弄\"\n```\n\n输出会告诉你命中哪个组合、按什么顺序调用、每个技能负责什么、哪些已装、哪些缺失，以及缺失技能的安装命令。元阁只给建议，不会自动安装；安装前请先做装前安全扫描，并由用户确认。\n- `--json` 输出机器可读结果（含新增 / 更新 / 消失），适合脚本与钩子。\n- 如果本机还装了非元阁家族技能，`--route` 会额外列出「其他已装技能候选」：只按 frontmatter description 与需求文本做本地机械匹配，标注来源、得分、命中词项与扫描状态（默认未扫描），不读取全文指令、不自动调用；使用/安装前请先做装前安全扫描。\n\n## M1 记忆裁决（decide-memory）\n\n当你想判断「哪些已装技能值得长期记住」，可以运行：\n\n```bash\nnpx -y @yottameta/yotta-skills decide-memory --explain\nnpx -y @yottameta/yotta-skills decide-memory --promote --json\n```\n\n`decide-memory` 默认只读，输出每个技能的 `promote / hold / demote` 建议、分数与信号明细；\n`--promote` 只写 `~/.yottaskills/memory-adjudication.json` 建议文件，不写元忆、不删除内容。\n评分由用户显式配置的本地 provider（capability `m1.adjudicate`）完成；未配置 / 未授权 / 超时 / 非法输出时只返回状态，不阻断其他能力。\n\n使用记录默认关闭，只有显式开启后才记录结构化信号：\n\n```bash\nnpx -y @yottameta/yotta-skills usage status\nnpx -y @yottameta/yotta-skills usage enable\nnpx -y @yottameta/yotta-skills usage mark --skill yotta-memory --signal used\n```\n\n## 运行时 hook 适配（hook）\n\n技能 manifest 只声明六个统一事件的要求；元阁负责能力探测、确定性评估、证据留痕和降级标注：\n\n```bash\nnpx -y @yottameta/yotta-skills hook capabilities --host codex --json\nnpx -y @yottameta/yotta-skills hook evaluate --host codex --event before_send --manifest ./skill-manifest.json --context '{\"checks\":{}}' --json\nnpx -y @yottameta/yotta-skills hook bind --host codex --manifest ./skill-manifest.json\n```\n\n`native-block` 才会显示动作前阻断；`native-audit` 只能审计并触发一次纠偏，结果标\n`explicit-unverified`；未知宿主全部按 `unsupported` 处理。本层不联网、不下载、不改宿主配置文件。\n\nFile v0.29.10:references/walkthroughs.md\n\n# 元阁复杂场景走查\n\n## 走查 1：新智能体初始化\n\n目标：在一台新机器上为 Codex 安装元阁家族。\n\n1. 查看清单：\n\n```bash\nnpx -y @yottameta/yotta-skills --list\n```\n\n2. 安装到默认目录：\n\n```bash\nnpx -y @yottameta/yotta-skills --agent codex\n```\n\n3. 核对结果：输出应包含安装路径与成功 / 跳过 / 失败汇总。\n\n4. 重启会话后输入“列出已装技能”，确认注册表能读取到新技能。\n\n## 走查 2：版本漂移更新\n\n背景：本机已装 27 个技能，其中 5 个版本落后。\n\n1. 只读检查：\n\n```bash\nnpx -y @yottameta/yotta-skills update --check --agent codex\n```\n\n2. 如果由后台调度执行，改用周检入口：\n\n```bash\nnpx -y @yottameta/yotta-skills update --check --scheduled --agent codex\n```\n\n未到期时不联网；到期只检查一次并把结果写入 `~/.yottaskills/update-check.json`。\n\n3. 根据输出确认可更新清单。\n\n4. 执行增量更新：\n\n```bash\nnpx -y @yottameta/yotta-skills update --agent codex\n```\n\n5. 复核：已最新的技能应显示跳过，落后的技能显示更新；失败项单独重装。\n\n## 走查 3：按路由安装单个技能\n\n用户需求：“帮我做发布前质量检查。”\n\n1. 路由：\n\n```bash\nnpx -y @yottameta/yotta-skills --route \"发布前质量检查\"\n```\n\n2. 输出建议组合与缺失技能。\n\n3. 只安装缺失技能：\n\n```bash\nnpx -y @yottameta/yotta-skills install yotta-code-quality yotta-anti-shallow --agent codex\n```\n\n4. 重新执行路由，确认缺失技能已补齐。\n\nFile v0.29.10:CHANGELOG.md\n\n## v0.29.10 (2026-10-09)\n\n- **清单联动**：`skills.json` pin `yotta-memory` 0.22.6 → **0.22.7**（配置键人话说明：管理台「高级 / CLI」页与官网 /product/ 的 39 个配置键逐键补全说明 + 覆盖回归；无其他行为变更）；`references/skill-list.md` 同步。\n- **scan-policy 重绑 yotta-memory 0.22.7（npm 真包口径）**：treeHash 由 `python tools/build_scan_policy.py` 从 npm 发布包重算（非本地候选），与 2026-10-09 行尾口径红线一致。\n\n## v0.29.9 (2026-10-09)\n\n- **scan-policy 重绑 yotta-memory 0.22.6（npm 真包口径）**：treeHash `sha256:efa988a0…`（18 文件 / 1,334,872 B），与 npm 发布包逐字节一致；修复候选与发布包行尾差异导致的哈希绑定不一致。\n\n## v0.29.8 (2026-10-09)\n\n- **图形化面板 CLI 补全**：高级 CLI 页现在渲染全部子命令选项（此前 74 个子命令级选项完全未渲染），选项计数改为完整口径（命令级 + 子命令级 + 全局 = 187），与 `--help` 同源、不漂移。\n- 新增 `test/hub-view-cli.test.js` 子命令选项渲染与计数回归。\n\n## v0.29.7 (2026-10-07)\n\n- 清单联动：`skills.json` pin `yotta-memory` 0.22.4 → **0.22.5**（Electron 宿主自启修复：任务 / 兜底 / 定时配置自动注入 ELECTRON_RUN_AS_NODE，不再拉起 GUI）；`references/skill-list.md` 同步；包内 `scan-policy.json` 重绑元忆 0.22.5（treeHash 随候选包重算）。\n- 无行为变更（本版仅 pin 与扫描例外表联动）。\n\n## v0.29.6 (2026-10-07)\n\n- 清单联动：`skills.json` 的 yotta-learn pin 0.3.0 → 0.4.0（元习 0.4.0：存储独立与迁移 / MCP stdio / 本地管理台 / 升库路径；legacy 回退写操作 fail-closed）；yotta-memory pin 0.22.3 → 0.22.4（元忆 Windows 自启修复：S4U 主体 + 任务 XML + 去电池 / 72h 限制 + Startup 兜底）；`references/skill-list.md` 同步；包内 `scan-policy.json` 重绑元忆 0.22.4（treeHash 随候选包重算）；无其他行为变更。\n\n## v0.29.5 (2026-10-06)\n\n- **面板迁移向导（S1，缺陷修复）**：面板「设置 Hub 位置」不再只写指针 + 报「已写入配置」；升级为向导 —— 「迁移到新位置」（默认推荐，复用 CLI `--move` 同一内核：复制 → 逐技能校验 → 切配置 → 全宿主重链 → 旧 Hub 入回收站 7 天）/「仅切换位置（保留旧内容）」，迁移中 loading 态、结果真实回显（技能数 / 重链目录数 / 回收站路径；部分失败保留旧 Hub + 重试指引，不报成功）；目标为「空 Hub 台账残留」时提供「清理残留并迁移」；仅切换且旧 Hub 非空 → 二次确认 + 概览横幅「旧 Hub 还有 N 个技能未迁移」+ 一键迁移。\n- **最近迁移 + 一键回滚（S2，面板 + CLI 双端）**：`config.json` 新增 `lastMigration`（时间 / from→to / 校验技能数 / 重链目录数 / 回收站与剩余天数）；`hub config get` 展示「最近一次迁移」块与回滚命令；新增 `hub config rollback`（默认预览，`--yes` 执行；反向迁移同内核，`--json`）；面板新增「最近一次迁移」卡片 + 一键回滚。回滚语义 = **位置回退（用当前内容）**，不是恢复旧快照；目标非空 fail-closed 不合并。\n- **备份自动清理（S3）**：`hub link --force` / `hub adopt` 替换真目录时，旧副本不再原地留 `<name>.yottaskills-backup-*`（宿主会把备份当技能扫描），统一移入回收站（7 天可恢复）；替换失败自动把旧副本移回原位；`hub link` 输出「替换了 N 份真目录旧副本 + 回收站去向」；`hub doctor` 只读报告 `backup_residue` 警告；新增 `hub cleanup-backups [--yes] [--include-discovered]`（默认预览，清理 `.yottaskills-backup-*` / `.yottaskills-import-*` / `.yottaskills-rollback-*` / `.yottaskills-staging`）。\n- **`--dir` 模式修复（S4）**：① 元信自举落点改为运行时缓存（`<记录根>/runtime/verifier`，默认 `~/.yottaskills/runtime/verifier`），不再把 `yotta-verify` + `.yottaskills-staging` 写进目标目录（yottacode skill-inventory 污染修复）；受信记录仍按路径 + SHA-256 校验，目标目录未受信副本一律不用（反劫持模型不变）。② `.yottaskills-staging` 结束（含失败）强制清理 + 启动时清理超过 1 小时的陈旧暂存；扫描 / 注册忽略点目录（不把暂存目录当 slug）。③ `--dir` 托管目录更新保持既有运行时载荷（目标已带 `bin/` 等 → 继续携带，防更新后引擎缺 bin）；新装 / 普通技能目录仍只落本体（§6.3 口径不变）。④ npm / npx 子进程显式继承调用方环境（`YOTTA_SKILLS_REGISTRY_FILE` / `YOTTA_SKILLS_MANIFEST` 等）。\n- **面板数据源**：`GET /api/hub/config`（位置 + 最近迁移 + 回滚预览）；概览新增迁移块与未迁移提示；`from` 迁移仅接受面板记录的「未迁移旧 Hub」（不接受任意目录）。\n- **修复（自用走查发现）**：回收站目录命名加「目录短哈希」——多个同 basename 的宿主目录（如 `.../skills`）在同一次清理 / 收敛中不再互相撞车（Windows rename EPERM）；回归覆盖收敛与清理两条路径。\n- **修复（自用走查发现·二）**：面板「仅切换位置」的结果不再按迁移渲染（此前误显示「校验 0 个技能」）；改为明示「已切换（只改指针，未移动文件）」+ 旧 Hub 未迁移技能数提示。\n- 测试：新增 / 扩展 18 项（hub-config 5 + hub-converge 4 + hub-view-config 3 + install-pipeline 3 + self-bootstrap-cache 2 + skills-scan 1）+ 既有自举断言改口径；全量 `npm test` 448/448 连续复跑。\n\n## v0.29.4 (2026-10-05)\n\n- **清单同步**：`skills.json` pin 元习 `0.2.2 → 0.3.0`（元习 0.3.0 知识库批次）；`references/skill-list.md` 同步版本与说明。\n- **修复（npm test flake 根因）**：`hub adopt --scan` 对不可读候选目录（坏链 / 扫描途中被删除）不再整体失败 —— 新增 `safeHashTree` 守卫，跳过该候选并在输出中列出「跳过」清单；回归覆盖坏链候选与有效候选共存场景。\n- **测试隔离**：测试进程 preload `test/setup-env.js`，清除指向真实宿主根的环境变量（DSH / Codex / XDG / OpenClaw / Claude 等）—— 此前 `hub config --move` 与 host-scope 类用例会把 junction 写进真实宿主技能目录、用例清理后留下坏链（flake 根因）。\n\n## v0.29.3 (2026-10-05)\n\n- **修复（发布缺陷）**：0.29.2 的 npm / GitHub 包内 `scan-policy.json` 未随本批重绑（仍绑元忆 0.22.2，treeHash `7b2cd7a2…`），导致安装元忆 0.22.3 时 scanPolicy 复核 `version-mismatch` → DO NOT INSTALL（可 `--skip-scan` 临时绕过）。本版将包内 policy 重绑为元忆 0.22.3（treeHash `4f499e0d…`）；其余功能与 0.29.2 一致。\n- **修复（同类第二处）**：`install-self` 运行件载荷补上 `scan-policy.json`（此前独立安装的引擎缺该文件 → scanPolicy 复核 `policy-unavailable` → 安装元忆等自指技能被误阻断）；`test/self-install.test.js` 补断言。\n- **护栏（防复发）**：`tools/pack_candidate.py` 打包 yotta-skills 候选时自动校验包内 `package/scan-policy.json`（version vs skills.json pins + 例外 vs SCAN_SPECS + treeHash vs handoff lock），不一致即 FAIL（exit 4）；新增 `tools/check_scan_policy.py --policy/--tarball` 与回归 `tools/test_check_scan_policy.py`；发布规范 §19.4 增补红线。\n\n## v0.29.2 (2026-10-05)\n\n- **U4 Hub 位置持久化**：新增 `<YOTTA_SKILLS_HOME>/config.json`（schema v1，原子写）与 `hub config get / set --hub <path> [--move] / clear`；解析优先级 `--hub` > `YOTTA_SKILLS_HUB` > config > 默认 `~/.yottaskills/hub`；`where` 与面板「Hub 位置」显示来源与配置覆盖。\n- **`--move` 迁移（fail-closed）**：复制旧 Hub → 逐技能 treeHash 校验 → 切换配置 → `hub link` 以新 Hub 为源 `--force` 重链 → 旧 Hub 入回收站（7 天）；校验失败不切配置、不删旧 Hub；重链未完成保留旧 Hub 供重试。\n- **误用防护**：`--hub` 只允许与 `hub` / `view` / `where` 一起使用；裸 `yotta-skills --hub X` 或 `install --hub` 现在 fail-closed（此前会落入 install 并静默忽略 `--hub`）。\n- **`hub refresh` scanPolicy 复核**：refresh / adopt 复用安装管线同款 scanPolicy 例外复核（version + treeHash 绑定，fail-closed）；元忆自指扫描不再需要 `--skip-scan` 绕过。\n- **面板**：概览「Hub 位置」区新增来源 / 配置覆盖 / 重启提示与「设置新位置 / 清除覆盖」（页面令牌 + `hub-config` 确认串；不热切换，重启 `view` 生效）。\n- 测试：新增 hub-config 6 + hub-migrate 3 + refresh scanPolicy 2 + 面板 2。\n\n## v0.29.1 (2026-10-05)\n\n- **update「只升不降」**（U1）：`update` / `update --check` / `update --auto` / `hub update` 四路径统一语义 —— 本地版本高于目标（清单 pin / npm latest）时保留不降级：`update` / `hub update` 跳过并标注「本地领先」，`--check` 单列 `localAhead` 且不计更新（退出码 0），`--auto` 不动作；`--force` / `rollback` 保留显式降级通道；`latest` / range 模式在解析出精确版本后、任何写入之前复判。\n- **宿主矩阵与范围修正**（U2）：已安装标记区只显示未配对标记（CLI / 面板单一真源）；`installed` 配对确定性优选（用户注册 / 已核实映射 > env > 未核实映射 > 自动发现，消除 last-write-wins）；未核实映射显示「映射·未核实」而非「自动发现」；新增「不接管」开关（`hub hosts exclude/include`，发现 / 显示 / 链接三层跳过，含 `--include-discovered`）；新增目录覆盖（`hub hosts set <agentId> --dir` / `--clear`）；面板新增「不接管 / 恢复接管 / 编辑目录 / 标记可用 / 忽略」动作；**YottaCode 不纳入接管**（映射 / `YOTTACODE_HOME` / 扫描 / 注册 / 标记全部排除）。\n- **Hub 审计补全**（U3）：`hub install` / `hub update` 成功、失败各写一条 Hub 审计（slug / 版本 / 来源 / verdict / via / ok；skip 与 dry-run 不写），面板「最近动作」可见。\n- **元忆联动**：清单 pin 元忆 0.22.2（插件载荷修复同步升版）；scanPolicy 按新 treeHash 重绑。\n\n## v0.29.0 (2026-10-04)\n\n- **D1 修复：`hub install / update --dry-run` 真正只读**。此前该命令会真实联网安装特殊家族并写 Hub 台账；现 dryRun 透传到安装管线 —— 预览不发网络请求、不写任何文件（含台账），`--json` 输出机器可读 plan（install / update / skip + installedVersion + latest 标记「预览不解析」）；隔离回归证明 treeHash / mtime / 台账逐字节不变、npm 零调用。\n- **F1 安装面：`install-self` + `where`**。保留 `install --agent/--dir` 兼容直装；新增元阁独立安装（默认 `~/.yottaskills/yotta-skills`，`--dir` 指定，`YOTTA_SKILLS_HOME` 覆盖根；写 `self.json` 登记；不写宿主配置、不建全局 shim；fail-closed：Hub 真源重叠 / 桥接目录 / 非空陌生目录拒绝，`--force` 才覆盖同名运行件）；新增 `where` 查看运行中 CLI / 独立安装目录（标记当前运行项）/ Hub 真源；README / SKILL / CLI help 首选流程统一为 Hub 四步（hosts → install → link → view）。\n- **F2 自定义宿主注册**：`hub hosts add/remove/list/mark` —— 注册进发现 / 分发 / 收编范围（`hosts.json` schema v1，realpath 去重；只注册不建目录、移除注册不删目录）；Hub / 桥接 / 不存在 / 重复 / 非法 label fail-closed；Hub 审计 hosts.add / hosts.remove / hosts.mark；面板「宿主矩阵 → 添加自定义目录 / 移除注册」。\n- **F3 宿主状态细分与残留清理**：目录证据与实体证据分开（应用标记 / 用户注册 / 手动标记），状态 = 可用 / 残留（实体未确认）/ 未创建 / 仅标记（+ 手动 ignored）；`hub hosts --state` 过滤、`hub doctor` 新增 `host_state` 只读检查；`hub hosts remove <dir> --purge` 清理残留（默认预览，`--yes` 执行；只删指向 Hub 的链接，非 Hub 链接 / 非技能内容随目录保留在回收站 7 天）；面板宿主矩阵统计 / 筛选 / 状态徽章 / 清理与移除动作（手输确认串 + 页面令牌）。\n- **面板 API**：`/api/hosts` 增加状态计数；新增 `/api/hosts/add`、`/api/hosts/remove`、`/api/hosts/purge` 与只读 `/api/hosts/purge-plan`。\n- **测试**：新增 dry-run 4 + 安装管线 2 + install-self 5 + host-state 3 + 注册表 5 + 残留清理 3 + 面板 2；provider 测试夹具并发加固；全量测试 385/385（原 361）。\n\n## v0.28.3 (2026-10-03)\n\n- **新增 `hub remove <slug>`**：一条命令完成「全宿主清链接（含死链）→ Hub 目录入回收站（保留 7 天，跨卷复制 + 校验）→ 清 Hub / 链接台账（不调 `syncHubState`，防记回 missing）→ 写审计」；fail-closed：只删指向 Hub 的链接与 Hub 内目录，真副本 / 外部链接保留并报告；链接清理报错即中止、不删 Hub；默认范围 = 已核实宿主 ∪ 本技能链接台账；`--agent/--dir` 收窄仅用于死链清理；退出码 0 / 1 / 2 / 4。\n- **面板新增「删除技能」动作**：概览 Hub 内容行 → 影响预览（将清理 / 保留逐条列出）→ 手输 slug 二次确认 → 与 CLI 同内核、同台账、同审计；面板写 token 与串行写队列不变。\n- **全量 CLI 单一真源**：新增 `lib/cli-help.js`（35 个命令 / 子命令 + 46 个选项，全部人话）；面板「高级 CLI」页改为 `/api/help` 渲染（全量速查 + 完整参数），`--help` 由同一模型渲染；`tools/export_cli_help.js` 提供结构化导出与 `--check` 覆盖门禁。\n- **指定智能体分发**：`hub link <slug> --agent <id>` / `hub unlink <slug> --agent <id>` 纳入全量 CLI 页与单测（只影响该宿主，Hub 真源保留）。\n- **清单联动**：`yotta-memory` pin 0.22.0 → 0.22.1（管理台 CLI 页速查层全量 33 命令 / 31 子命令）；scanPolicy 按 0.22.1 候选重绑 treeHash。\n- 测试：`npm test`（新增 hub-remove 14 项 + CLI 覆盖 4 项 + 面板帮助 / 删除 2 项）；面板 `tools/check_hub_view.js` 1440 / 390 两档（含全量 CLI 与删除预览）。\n\n## v0.28.2 (2026-10-03)\n\n- **面板加载态**：技能枢纽面板（`yotta-skills view`）切视图 / 点刷新时显示「正在加载 <视图>…」提示（带转圈动画，刷新按钮同步禁用），数据到达后自动消失；修复宿主矩阵 / 收编向导等慢视图先显示空表、无加载提示的体感问题。\n- **清单 pin 更新**：`yotta-memory` 0.21.1 → 0.22.0（记忆管理台新增「高级 / CLI」页：高频命令速查 + 只读完整帮助，`HELP_MODEL` 单一真源）。\n- **scanPolicy 重绑**：`yotta-memory` 例外表按 0.22.0 候选 tarball 重算 treeHash（fail-closed 语义不变：版本或内容变化即旧例外失效）。\n\n## v0.28.1 (2026-10-03)\n\n- **修复：桥接目录的 `unlink` 清理被误拦**。0.28.0 的 `--dir` 桥接守卫同时拦住了 `hub unlink --dir`，导致历史误链（如 `XDG_STATE_HOME/skills` 的 145 条）无法用 CLI 清理；现仅 `hub link --dir` 拒绝桥接目录（永不作为链接目标），`hub unlink --dir <目录>` 恢复为显式清理路径（fail-closed：仍只删指向 Hub 的链接）。\n- **修复：Hub 真源保留运行时载荷（OpenCode 契约）**。特殊家族收敛为 Hub 链接后，OpenCode 的 `yotta-skills` 缺 `bin/`（安装管线顶层跳过），违反 handoff `keepExtra` 硬约束；现在 Hub 安装 / 更新（`hubScope`）按清单声明的 `runtimePayload` 保留顶层载荷（元忆 `bin`、元阁 `bin`），链接宿主直接获得，`sync_opencode_runtime --check` 通过；普通宿主安装仍为薄片（跳过 bin）。\n- **回归测试**：新增「桥接目录 `unlink --dir` 允许清理」+「hubScope 安装保留 runtimePayload」用例；全量测试 341/341。\n\n## v0.28.0 (2026-10-03)\n\n- **宿主目录核实与链接范围收口**：`hub hosts` 把发现的目录分为三类 —— **已核实（verified）/ 自动发现（discovered）/ 桥接（bridge）**；`hub link --all` / `hub unlink --all` 默认范围只含已核实宿主，自动发现目录需 `--include-discovered` 显式纳入；`XDG_STATE_HOME/skills`（官方 skills CLI 锁目录）与 `XDG_DATA_HOME/skills`（数据桥接）永不作为链接目标（`--dir` 指向也会被拒绝，面板同样 fail-closed）。\n- **映射修正（逐智能体核实）**：新增 `replit`（公开宿主表 `configHome/agents/skills`）与 `mimocode`（官方 MiMoCode 布局 + 本机自证）；`universal` 补 XDG 变体；`goose` 由 XDG 解析修正为本机真实目录字面 `~/.config/goose`；`crush` / `kimchi` 由 XDG 误解析改回公开宿主表字面 `~/.config`；XDG 解析收敛为显式集合（仅 `.config/agents`、`.config/devin`、`.config/opencode` 三类 rel）；`yottacode` / `box` 标记未核实、默认不链。\n- **realpath 去重**：`hub link` / `unlink` 的目标目录按 realpath 去重，junction / symlink 双路径不再重复建链；`hub hosts` 停止扫描 `XDG_STATE_HOME` / `XDG_DATA_HOME` 根。\n- **doctor 链接范围检查（只读）**：新增 `link_scope:*`，报告位于默认范围之外的已建链接并给出 `hub unlink --dir <目录>` 清理提示。\n- **面板**：宿主矩阵新增「范围」列（已核实 / 自动发现 / 桥接·不链），链接与体检页对桥接目录隐藏链接入口、对自动发现目录显示范围徽章；CLI 速查补 `--include-discovered`。\n- **文档**：`references/hub.md` 补「链接范围（0.28.0 起）」与发现口径；`SKILL.md` / help 同步。\n- **测试**：新增 `test/agent-dirs-scope.test.js`（5 项）+ `test/hub-scope.test.js`（4 项）；全量 339/339。\n\n## v0.27.1 (2026-10-03)\n\n- **跨卷收敛修复**：`hub link` 收敛旧副本时，`rename` 在跨盘场景（源目录位于其它卷，或经 junction / symlink 落在其它卷）会报 `EXDEV: cross-device link not permitted`；现回退为「复制到回收站 → 校验（treeHash + 文件数 + 字节数）→ 删除源目录」，任一步失败都保持失败自动恢复语义（源完整则回滚副本；源已不完整则保留完整副本并输出路径）；链接条目按「重建链接 → 校验目标 → 删除原链接」处理；链接输出对跨卷复制的份数给出说明。\n- **家族分支 `--force` 生效（WorkBuddy 验收 D1）**：家族技能的目标条目为指向 Hub 之外的链接时，显式 `--force` 现在会替换为 Hub 链接（仅移除链接本身、不碰目标目录；dry-run 报 `would-replace`）；无 `--force` 仍默认跳过；`--force` 不越过版本闸门等既有 fail-safe。\n- **回归测试**：新增 EXDEV 注入回归（跨卷收敛成功 / 建链失败后跨卷恢复 / 非 EXDEV 错误不回退）+ `--force` 家族替换回归（force 替换 / 无 force 保持跳过 / force 收敛 + 替换 / force 不越版本闸门），全量测试 330/330。\n\n## v0.27.0 (2026-10-03)\n\n- **元技能唯一性收敛（hub link 执行时）**：家族技能在链接时收集宿主中的同名真目录与 `yotta-X__*` 重命名副本（frontmatter `name` 相同），版本闸门 Hub ≥ 宿主后把旧副本移入 `~/.yottaskills/trash/<时间戳>/<宿主>/<技能>/`（保留 7 天、输出恢复路径）再建立指向 Hub 的链接；宿主版本高于 Hub / 版本无法解析时跳过并提示；先移后链，建链失败自动尝试恢复；外部技能同名冲突仍默认跳过，不自动删、不自动更新。\n- **Hub 家族范围扩到 32**：特殊家族 5 个（元开 `yotta-dev-mcp` / 元伴 `yotta-partner` / 元呈 `yotta-present` / 元阁本体 `yotta-skills` / 元信MCP `yotta-verify-mcp`）纳入 Hub 安装 / 更新 / 收敛 / 体检范围，版本跟随各自 npm `latest`（内置拉包通道支持 `dist-tags.latest` 解析）；一次性安装清单 27 语义不变。\n- **非元技能口径**：更新只管元技能；外部技能来源多样（不一定从 npm 安装），不参与 `hub update`、不改源文件，用户自行处理（`hub refresh --from` 仍为显式手动路径）。\n- **doctor 单一真源检查（只读）**：新增 `single_source:*` 检查，报告宿主中的同名多份副本与版本参差（高于 Hub 提示先更新 Hub、低于 Hub 提示链接时收敛）；只报告不修改，错误级语义不变。\n- **面板与输出**：`view` 链接预览新增「将收敛」区块（数量 + 明细 + 回收站说明），执行链接按同一收敛语义落盘并在 toast 显示收敛数量；`hub adopt --apply` 输出明示范围与目标 Hub，`--skip-scan` 显式提示；非元技能 adopt 扫描对严格 YAML 风险（前导逗号 / 未加引号的 `: ` 值）做只读告警，不影响使用不处理。\n- **文档**：`references/hub.md` 补收敛语义 / 回收站 / 非元技能更新口径 / adopt 范围警示；`SKILL.md` 与 help 同步。\n- **测试**：新增 `test/hub-converge.test.js` 11 项（收敛 / 版本闸门 / dry-run / 已链接副本收敛 / 失败恢复 / 回收站清理 / 家族范围 / latest 解析 / doctor 单一真源 / 严格 YAML 告警 / adopt 告警）；全量 323/323。\n\n## v0.26.0 (2026-10-02)\n\n- 新增本机技能枢纽面板 `yotta-skills view`（默认 `127.0.0.1:8789`，`--port` 可改，仅本机监听）：六视图（概览 / 宿主矩阵 / 收编向导 / 链接与体检 / 记录与回滚 / 路由与编排）+ 高级 CLI 页；全部包装既有 Hub / 快照 / 证据 / 路由 lib，不建平行状态。\n- 面板动作边界：收编 / 链接 / 解除 / 回滚可执行（预览 → 确认 → 执行 → 证据）；install / update / refresh 只给复制命令；收编逐项运行元信扫描，high / critical 阻断，面板不提供跳过 / 降级（`--skip-scan` / `--allow-unverified` 仍只在 CLI 显式使用）。\n- 安全壳：Host / Origin / Sec-Fetch-Site 校验、严格 CSP / no-store / noindex、写操作会话令牌、256KB 请求体上限、写操作串行、破坏性确认串；零远程资源、零遥测，不读元忆、不改宿主配置。\n- 新增 `lib/hub-view-server.js`（HTTP 服务与 API）与 `lib/hub-scan.js`（CLI / 面板共用元信扫描发现；CLI 同名逻辑改为委托，行为不变）；`assets/view.html` 为前端单一真源，`tools/sync_hub_view_html.py` 嵌入 CLI 并提供 `--check` 漂移门禁（已接入 `preflight-publish.py`）；`tools/check_hub_view.js` 做 1440 / 390 浏览器验收。\n- 快照回读增强（additive）：`validateSnapshot` / `listSnapshots` 输出 `source` / `createdAt`，供面板回滚定位来源目录；CLI 原字段不变。\n- 断链修复：Hub 真源删除后遗留的 junction / symlink 现在会被识别为 `broken`（读取链接值判定是否指向 Hub），`hub unlink` 可 fail-closed 清理；此前面向断链的 `unlink` 会因目标不可解析被误拒。\n- 测试：`test/hub-view-server.test.js` 17/17、`test/hub-view-cli.test.js` 2/2、`test/hub-view-embedding.test.js` 3/3；全量 312/312。\n\n## v0.25.1 (2026-10-02)\n\n- 家族清单同步：元质 `yotta-code-quality` 0.4.3（分发副本 frontmatter `description` 单引号标量修复，严格 YAML 解析器不再跳过）。\n\n## v0.25.0 (2026-10-02)\n\n- 新增本机技能 Hub（标准 `yotta-skills-hub/v1`）：`hub hosts` 只读发现本机宿主与技能目录（文件系统优先，不读元忆 / 注册表）；`hub install` / `hub update` 把技能装到 `~/.yottaskills/hub` 单点真源；`hub adopt --scan|--apply` 收编各宿主现有技能（默认复制保真 + 原目录保留）；`hub refresh <slug> --from <path>` 手动同步非元阁来源技能；`hub link --all` 用 Windows junction / POSIX symlink 分发到全部已发现宿主；`hub unlink` fail-closed 只删链接；`hub status` 显示来源、版本、链接与异常；`hub doctor` 检查断链 / 目标缺失 / slug 不一致 / 目录权限。\n- 宿主发现复用公开宿主表（兼容 Vercel Labs `skills` CLI / SkillCat 的目录映射，当前 79 条），支持 `CODEX_HOME` / `XDG_CONFIG_HOME` / `DSH_HOME` / `OPENCLAW_STATE_DIR` / `CLAUDE_CONFIG_DIR` 等环境变量覆盖，并过滤临时目录、`.bak`、candidate / staging、插件构建目录等噪声。\n- 只读桥接 Vercel Labs `skills` CLI 的 `.skill-lock.json` v3（`$XDG_STATE_HOME/skills/` 或 `~/.agents/`）；元阁不重写官方锁文件，只在 Hub 台账中合并来源信息。\n- 兼容矩阵实测：官方 `skills@1.7.0` 在临时假 home 中 8/8 宿主透过 Windows junction 读取同一技能；元阁 `hub hosts` 本机识别 31 个技能目录 / 44 个已装应用标记。证据：`docs\\元阁-Hub-宿主兼容矩阵-2026-10-02.md`。\n- WorkBuddy 复验修复：`hub doctor` 对「Hub 目录存在但零技能」判为 error 并提示先 `hub install` / `hub adopt --apply`；`hub link` / `hub unlink` 补齐 `--json` 结构化输出，不再静默退化为文本。\n- 新增 `lib/agent-dirs.js` / `lib/agent-discovery.js` / `lib/hub.js` / `lib/hub-adopt.js` / `lib/skills-cli-lock.js` 与 `test/hub.test.js`；全量测试 289/289。\n\n## v0.24.2 (2026-10-02)\n\n- 家族清单同步：元忆 `0.21.1`（管理台归属 AI 平铺选择 + 记忆详情抽屉遮罩层级修复）。\n- scanPolicy 重绑：元忆 0.21.1 的已审查例外按新 treeHash 绑定。\n\n## v0.24.1 (2026-10-02)\n\n- 家族清单同步：元忆 `0.21.0`（记忆管理台 M1：真实读写 / 权限矩阵 / 归档与回收区撤销）。\n- scanPolicy 重绑：元忆 0.21.0 的已审查例外按新 treeHash 绑定（skill + version + treeHash + 规则 + 路径，fail-closed）。\n\n## v0.24.0 (2026-10-02)\n\n- 接管能力补缺口（A 无 npm 拉包 / B 依赖人话提示 / C 范围控制 / D 行为回归）：\n- A 内置拉包 / 解包：新增 `lib/registry-fetch.js`（Node 内置 https 直连 registry：abbreviated packument + 版本解析 + tarball 下载 + `integrity`(sha512) / `shasum`(sha1) fail-closed 校验 + `HTTPS_PROXY` / `HTTP_PROXY` CONNECT 隧道）与 `lib/untar.js`（zlib + ustar / pax / GNU 长名解析；路径越界与链接条目 fail-closed）；默认内置为主，npm 与系统 tar 仅作回退通道，`YOTTA_SKILLS_FETCH` / `YOTTA_SKILLS_EXTRACT` 可强制单通道；安装证据新增 `fetch_channel` / `extract_channel`。\n- B 依赖统一提示：新增 `lib/deps.js` 人话模板（需要什么 / 为什么 / 一条修复命令 / 不影响使用），接入拉包失败、缺 Python、双通道解包失败与 Node 版本检查；`doctor` 新增 `dependencies` 自检块（text + `--json`，只告警不失败）；顺手修 `--python` 旗标在扫描路径被忽略。\n- C 范围控制：`skills.json` 每条技能新增 `domain`（对齐家族索引 9 类），`references/skill-list.md` 同步补列；新增 `--only` / `--domain` 与 `update --installed-only`。接管语义：只维护目标目录已安装的家族技能，`skills.json` 只作身份 / 版本参照；未装不动作、不新增、不报错；已管理且已最新跳过（退出码 0）；无旗标时 install / update 语义不变。\n- D 回归与文档：新增 `test/update-scope.test.js` / `domain-filter.test.js` / `fetch-builtin.test.js` / `deps-message.test.js` / `python-flag.test.js`（含 PATH 隔离的 Node-only 端到端）；`references/install-flow.md` 补双通道流程、依赖矩阵与范围语义矩阵；`SKILL.md` / README 中英同步。\n\n## v0.23.3 (2026-10-01)\n\n- 安装器卫生批次：`install.sh` 统一（未知参数报错 exit 2、`--help` / `--version`、残留清理白名单）；`skills.json` 清单 pin 同步 27 项。\n\n## v0.23.2 (2026-10-01)\n\n- 修复家族安装管线嵌套载荷丢失：复制原语的顶层跳过名单（`package.json` / `bin` / `node_modules` / `.git`）此前按条目名逐层生效，会把技能包内嵌套的同名载荷（如元造 `template/package.json`、`template/bin/install.js`）一并跳过——家族安装 / 更新元造后，其脚手架自检会失败（缺必需文件）。现改为仅顶层生效，与元造 0.1.3 的安装器修复对齐。\n- 新增 `lib/copy-tree.js`（单一复制原语）与回归测试：顶层同名跳过、嵌套同名保留、缓存类（`__pycache__` / `.pytest_cache` / `.mypy_cache` / `*.pyc` / `*.pyo`）任意层级清理；家族管线集成回归同步补齐。\n- 清单同步：`skills.json` / `references/skill-list.md` 更新元造 0.1.4、元案 0.1.1。\n\n## v0.23.1 (2026-10-01)\n\n- 文档：环境变量表补齐 `YOTTA_SKILLS_REGISTRY_FILE` / `YOTTA_SKILLS_USAGE_FILE` / `YOTTA_PROVIDER_HOME` 三项，并新增「隔离环境：三个状态文件成组导出」小节（bash / PowerShell 示例）——测试、CI 与多 agent 场景需三件成组导出，避免读写宿主真实状态。\n- 行为零变更：安装 / 更新 / 路由 / hook / MCP 契约不变。\n\n## v0.23.0 (2026-10-01)\n\n- O1 动态路由 MVP：`--route` / MCP `route_request` 在静态 playbook 之上，可选调用本地 provider（capability `o1.route`）做确定性组合排序；新增 `confidence` / `reasons` / `summary` / `alternatives` 输出。\n- 开源侧新增 `lib/route-features.js`（请求特征 + 已装技能元数据 + 聚合使用信号 + 公开 playbook 元数据）与 `lib/route-dynamic.js`（白名单 / 枚举 / 限长校验）；静态技能始终保留，provider 不能删除静态技能或改变 `missing_skills` 语义。\n- `usage` 默认关闭；仅显式启用后向本地 provider 发送聚合计数（used / named / accepted / route_hits / distinct_pairs / last_signal_at），不发送需求原文、记忆正文、路径或身份信息；provider 审计仍只记元数据。\n- 非元阁家族技能仍只作候选并标注 `scan_required`；不自动安装、不自动调用。\n- 评分算法位于本地私有目录 `license/o1/`，不进任何发布件；未配置 / 未授权 / 超时 / 非法输出时回落静态路由，退出码保持 0。\n- 元忆 0.20.0 不变；安装 / 更新 / hook / scanPolicy 契约零变更。\n\n## v0.22.2 (2026-09-30)\n\n- 修复 `doctor --dir` 指向单个技能包目录时的 UX：现在会按 `SKILL.md` / `skill-manifest.json` / 目录名自动识别技能身份，不再误报「目标目录下没有可检查的元阁家族技能」。\n- 修复 doctor 退出码语义：没有可检查对象返回 `4`，检查失败仍返回 `1`，manifest / 身份校验失败仍返回 `6`，便于只读调用方区分「没目标」与「检查失败」。\n- 新增单技能目录、显式 `--slug` 单技能目录、空目录退出码三组 CLI 回归。\n\n## v0.22.1 (2026-09-30)\n\n- 清单同步：元忆 pin 0.19.0 → 0.20.0，承接上下文分页 (`context.paging`) 与 `memory.hook` PREF 驱逐修复。\n- scanPolicy 随元忆 0.20.0 treeHash 重绑；其余安装 / 路由 / hook / DSH 适配行为不变。\n\n## v0.22.0 (2026-09-30)\n- 关联 Agent Plugin 包新增 DeepSeek Harness（DSH）profile bundle 适配层：插件仓根 `package.json` 增加 `dsh.bundle.patch`，并由构建器生成 `cordis.patch.yml`。\n- DSH 安装后同时注册包内 `yotta-skills` 技能与 `mcp__yotta-skills__*` 工具；复用包内 stdio MCP server，不新增运行时依赖。\n- Agent Plugins 1.0 安装方式与 CLI / MCP 工具行为保持不变；本版为插件分发形态升级。\n\n## v0.21.0 (2026-09-30)\n- 新增 M1 记忆裁决器开源调用口：`yotta-skills decide-memory` 与 MCP `decide_memory`，调用本地扩展提供方 `m1.adjudicate`，输出每个技能的 `promote / hold / demote` 只读建议、分数与信号明细。\n- 新增本地使用记录：`usage status|enable|disable|mark|reset`；默认关闭，`usage enable` 后 `--route` 才记录结构化 route_hits 与组合对，显式 `usage mark` 记录 used / named / accepted。记录只含 slug、时间、信号类型、playbook / confidence 与组合对，不含需求原文、记忆正文、路径或身份信息。\n- `decide-memory` 默认只读；`--dry-run` 显式只读；`--promote` 只写 `~/.yottaskills/memory-adjudication.json` 建议文件，生成私密 `PREF` 记忆候选，不自动写元忆、不删除任何内容。`--explain` 输出每个信号的得分明细。\n- provider 子进程环境透传授权库相关变量（`YOTTA_LICENSE_HOME` / `YOTTA_LICENSE_KEYS_DIR` / `YOTTA_LICENSE_BASE_URL` / `YOTTA_LICENSE_SERVER_ID`），私有 M1 provider 可用 `LicenseGate.assertCan('m1.adjudicate')` 做授权门；未授权 / 超时 / 非法输出一律 fail-open，退出码保持 0。\n- 评分算法位于本地私有目录 `license/m1/`，不进任何发布件；开源侧只做特征快照、白名单校验与展示。协议见 `references/provider-protocol.md`。\n- 元忆 0.19.0 不变；静态 playbook / 安装 / hook / scanPolicy 契约零变更。\n\n## v0.20.2 (2026-09-29)\n- 家族安装的 npm 拉包新增镜像回退：默认源返回 404（国内镜像未同步该版本 tarball）时自动改用官方源 `https://registry.npmjs.org/` 重试一次；安装输出显示回退行，安装证据新增 `npm_registry_fallback` 字段。\n- 两次都失败时给出可直接复制的修复提示（`npm_config_registry` / `YOTTA_SKILLS_NPM_FLAGS`）；已显式指定 registry 或设置 `YOTTA_SKILLS_NO_FALLBACK=1` 时不回退。\n- 非 404 错误（网络超时等）不触发回退，保持原失败信息。\n- 静态 playbook / 路由 / hook / scanPolicy 契约零变更。\n\n## v0.20.1 (2026-09-29)\n- 家族安装接入 scanPolicy 例外复核：元信判 `DO NOT INSTALL` 时，按包内 `scan-policy.json` 的已审查例外（逐条绑定技能 + 版本 + treeHash + 规则 + 路径）复核，豁免检测规则表 / 攻防样例 / 文档说明类命中；复核后无阻断级发现则继续安装。\n- 修复元忆 / 元察 / 元鉴从元阁安装时被元信自指误报阻断的问题（检测类技能自带规则表字面量）；例外表与 handoff / OpenCode 的 scanPolicy 同源，由 `tools/build_scan_policy.py` 生成。\n- 技能升版或内容变化后旧例外自动失效（treeHash 绑定，fail-closed），安装回到元信原始判定。\n- 安装日志新增 `scan_policy` 字段（是否应用 / 豁免条数 / version / treeHash）。\n- 元信扫描输出解析失败（空输出 / 截断 / 子进程抖动）自动重试一次；仍失败时报错带退出码与 stderr 摘要。\n- 静态 playbook / 路由 / hook 契约零变更。\n\n## v0.20.0 (2026-09-28)\n- 新增 `o1.route` 动态扩展口：`--route` / MCP `route_request` 可选调用用户配置的本地扩展提供方（provider），在已装注册表白名单内增补 / 重排路由结果。\n- 静态 playbook 结果先算必算；未配置或未授权 / 超时 / 非法输出时一律回落静态结果，文本输出与历史一致，`--json` 增加 `dynamic` 状态块。\n- 清单同步：元忆 pin 0.19.0。\n- 协议与配置见 `references/provider-protocol.md`。\n\n## v0.19.28 (2026-09-28)\n\n清单同步元盾 `0.1.7`（代码围栏占位符修复 20 处 / 非法转义告警与致命异常退出码 fail-open 修复 / 彩色输出路径在真人终端崩溃修复 / 新增宿主接入说明）。\n版本五件对齐 0.19.28；安装器 / 路由 / hook 契约零变更。\n\n## v0.19.27 (2026-09-27)\n\n清单同步元安 `0.3.0`（新增教育版学生数据隐私扫描：`--target edu` + 15 条规则 + 固定脱敏报告）。\n版本五件对齐 0.19.27；安装器 / 路由 / hook 契约零变更。\n\n## v0.19.26 (2026-09-27)\n\n清单同步元忆 `0.18.1`（蒸馏分类型提取 + 行号溯源 + 实测质量指标；`consolidate` 相对日期绝对化 + 归档巩固标记；`maintain --rules` 只读规则晋升建议；记忆守则新增权威顺序与写入纪律）。\n版本五件对齐 0.19.26；安装器 / 路由 / hook 契约零变更。\n\n## v0.19.25 (2026-09-26)\n\n清单同步元忆 `0.18.0`（命中打点与容量水位 / `consolidate` 提案闸门 / `doctor` 规模分级 / `context --audit` 上下文压缩审计；`archive --dry-run` 真只读 + MCP 只读面）。\n版本五件对齐 0.19.25；安装器 / 路由 / hook 契约零变更。\n\n## v0.19.24 (2026-09-26)\n\n清单同步元忆 `0.17.4`（新增 `rename` 改名命令，用于消除平铺 / 分层同序号冲突）。\n版本五件对齐 0.19.24；安装器 / 路由 / hook 契约零变更。\n\n## v0.19.23 (2026-09-26)\n\n清单同步元忆 `0.17.3`（顶层帮助去掉逐项重复的「做什么：」前缀，仅文案变化）。\n版本五件对齐 0.19.23；安装器 / 路由 / hook 契约零变更。\n\n## v0.19.22 (2026-09-25)\n\n口径修正：安装 / 更新权限边界写清楚（ClawHub LLM 复核）。\n\n- SKILL.md 新增权限边界：`install` / `update` 属有副作用操作，执行前先用 `--dry-run` 展示目标目录与技能清单、由用户确认；批量安装不是一次性授权，新增目标目录要重新确认；不静默写宿主配置、不自动安装缺失技能、不 `-g` 污染全局。\n- 安装器加固：拒绝对符号链接目标写入、不做整目录删除；批量安装（`-g`）必须显式加 `--yes`。\n- 元忆清单一并同步 0.17.2。\n\n**清单同步：元忆 0.17.1**\n\n- `skills.json` / `references/skill-list.md` 的 yotta-memory 版本 0.17.0 → 0.17.1，承接「view 删除 AI 身份时输入错误 ID 无提示」修复。\n- 版本对齐：package.json / SKILL.md frontmatter / skill-manifest.json / 引擎 VERSION / MCP VERSION / CHANGELOG = 0.19.21。\n\n## v0.19.21 (2026-09-25)\n\n## v0.19.20 (2026-09-25)\n\n**清单同步：元忆 0.17.0 + 信任层四件 + 元公 0.1.2**\n\n- `skills.json` / `references/skill-list.md` 的 yotta-memory 版本 0.16.7 → 0.17.0；清单更新日期 → 2026-09-25。\n- 补记信任层四件（元规 0.1.0 / 元镜 0.1.0 / 元案 0.1.0 / 元题 0.1.0）与元公 0.1.2，人工可读清单从 22 技能补齐到 27 技能，并补「合规与信任」「教育与学习」两个家族分区。\n- 修正 `skill-list.md` 与 `skills.json` 的技能集合 / 版本一致性回归；`--list`、install、install 幂等、update 的测试计数改为读取清单长度，后续新增技能不再硬编码数量。\n- 版本对齐：package.json / SKILL.md frontmatter / skill-manifest.json / 引擎 VERSION / MCP VERSION / CHANGELOG = 0.19.20。\n\n## v0.19.19 (2026-09-23)\n\n**清单同步：元忆 0.16.7（迁移口令安全 + view 根指纹）**\n\n- `skills.json` / `references/skill-list.md` 的 yotta-memory 版本 0.16.6 → 0.16.7。\n- 同步元忆迁移文档的编码安全修正，以及 `view` 端口复用前的 memory_home 指纹校验。\n- 版本对齐：package.json / SKILL.md frontmatter / skill-manifest.json / 引擎 VERSION / CHANGELOG = 0.19.19。\n\n## v0.19.18 (2026-09-23)\n\n**插件载荷完整性修复：lib/ + skills.json**\n\n- `tools/build_standalone_plugins.py` 的 `PAYLOAD_DIRS` 补 `lib`，插件载荷含元阁 12 个运行时模块；新增 `PAYLOAD_EXTRA_FILES` 把 `skills.json` 带入载荷。\n- 修复插件内 `reindex` / `route_request` 报 `Cannot find module '../lib/install-evidence'` 与清单读取失败。\n- 新增回归 `tools/test_plugin_payload_runtime.py`：构建后插件载荷必须跑通 reindex + route_request。\n- 清单同步元忆 0.16.6；版本对齐 package.json / SKILL.md frontmatter / skill-manifest.json / 引擎 VERSION / CHANGELOG = 0.19.18。\n\n## v0.19.17 (2026-09-22)\n\n**清单同步：元忆 0.16.5（doctor JSON 稳定契约）**\n\n- `skills.json` / `references/skill-list.md` 的 yotta-memory 版本 0.16.4 → 0.16.5。\n- 同步 `doctor --json` 顶层 `schemaVersion` / `encryption` / `migration_required` 契约，确保全家安装取得正确版本。\n- 版本对齐：package.json / SKILL.md frontmatter / skill-manifest.json / 引擎 VERSION / CHANGELOG = 0.19.17。\n\n## v0.19.16 (2026-09-22)\n\n**清单同步：元忆 0.16.4（agent-key 提示范围修复）**\n\n- `skills.json` / `references/skill-list.md` 的 yotta-memory 版本 0.16.3 → 0.16.4，清单更新日期 → 2026-09-22。\n- 同步元忆缺 `--agent-key-file` 的提示范围修复，确保全家安装按清单取得正确版本。\n- 版本对齐：package.json / SKILL.md frontmatter / skill-manifest.json / 引擎 VERSION / CHANGELOG = 0.19.16。\n\n## v0.19.15 (2026-09-22)\n\n**清单同步：元忆 0.16.3（迁移授权最短路径）**\n\n- `skills.json` / `references/skill-list.md` 的 yotta-memory 版本 0.16.2 → 0.16.3，`updated` → 2026-09-22。\n- 同步内容：明文库迁移最短命令、`view` / `key bind` 授权等价口径、CLI 帮助与技能文档统一。\n- 安装器 / 路由 / hook 契约零变更；本版仅为清单与版本同步。\n\n## v0.19.14 (2026-09-21)\n\n**清单同步：元忆 0.16.2（首启修复）**\n\n- `skills.json` / `references/skill-list.md` 的 yotta-memory 版本 0.16.1 → 0.16.2，`updated` → 2026-09-21。\n- 同步内容：元忆 0.16.2 首启修复——空加密库 `view` 恢复钥匙解锁、非 TTY `--password-stdin`、`--recovery-key-out`、缺 `agent-key` 降级未授权、空明文 `migrate`、doctor 分档与 `view` 端口健康检查。\n- 安装器 / 路由 / hook 契约零变更；本版仅为清单与版本同步。\n\n## v0.19.13 (2026-09-19)\n\n**安全修复：校验器（元信）发现改为「受信安装记录 + 身份 + 摘要」三重绑定。**\n\n- 背景（平台扫描发现，T07 工具劫持）：旧实现通过本地技能注册表里 `slug=yotta-verify` 的\n  `source_dirs` 发现扫描引擎，而注册表身份来自被扫描技能自己 `SKILL.md` frontmatter 的 `name`。\n  任意目录只要自称 `yotta-verify` 并提供 `scripts/yotta_verify.py`，就会被当作引擎执行——\n  既可直接执行任意代码，也能伪造 `SAFE TO INSTALL` 放行后续安装。\n- 修复：\n  - 新增 `lib/trusted-verifier.js`：受信记录 `~/.yottaskills/trusted-verifier.json`\n    （与注册表同目录，支持 `YOTTA_SKILLS_REGISTRY_FILE` 多 agent 隔离），只在安装管线\n    校验通过、元信安装 / 更新成功后写入。\n  - `findVerifier` 只认两类来源：用户显式指定（`--verify` / `YOTTA_SKILLS_VERIFY`）与\n    受信记录；候选须通过「路径 realpath 无符号链接跳转 + 包身份（slug / package / trust /\n    SKILL.md 与 manifest 版本一致）+ 引擎 SHA-256 与记录一致」。\n  - 任一环节不满足即 fail-closed：不再回退到注册表 / 目标目录里的同名引擎，改走自举安装\n    （从 npm 重装一份干净的元信，装完立即写记录）。\n  - 自举安装后新增身份 / 摘要复核，未通过不返回引擎。\n- 测试：新增 `test/trusted-verifier.test.js` 8 项（含 T07 回归、摘要不符、身份不符、版本不符、\n  裸引擎不被采用、记录读写往返）；测试夹具 `test/helpers/fake-npm.js` 按真实元信包形态\n  生成 manifest；`node --test \"test/*.test.js\"` 180/180。\n- 清单同步：`skills.json` 元信 0.3.1 → 0.3.2（`references/skill-list.md` 同步）。\n\n## v0.19.12 (2026-09-19)\n\n同步家族维护批次清单版本：元安全 0.2.6 / 元盾 0.1.4 / 元察 0.2.9 / 元析 0.1.7 / 元安 0.2.4 / 元审 0.2.5。\n\n## v0.19.11 (2026-09-19)\n\n**OpenClaw / QClaw 目录识别 + 清单同步**\n\n- `--inventory` / `--reindex` 等盘点能力新增识别 OpenClaw / QClaw 技能目录（`~/.openclaw/skills`，支持 `OPENCLAW_STATE_DIR` 覆盖）——QClaw 基于 OpenClaw，同一目录下的技能现在可被盘点、去重与路由覆盖；新增 `test/skills-scan.test.js` 用例。\n- 清单同步：`skills.json` 与 `references/skill-list.md` 更新元真 `0.2.1`（位置参数修复）与元忆 `0.16.1`（维护性重发）。\n\n## v0.19.10 (2026-09-19)\n\n**台账口径维护**\n\n- `references/skill-list.md` 元忆行由 `0.15.0` 更正为 `0.16.0`，清单更新日期改为 `2026-09-19`；`skills.json` 为机器权威源，`test/skill-list.test.js` 强制两者一致。\n- 更正 v0.19.7 条目表述：元伴 `yotta-partner` 不在全家清单内（`skills.json` 与 `skill-list.md` 均未收录该技能，元伴通过自带安装器单独安装）。\n- 本次只维护清单口径与文档表述，不改变安装器、路由、hook 契约与清单技能集合（仍为 22 项）。\n\n## v0.19.9 (2026-09-18)\n\n- 同步元链 `0.1.4` 到 skills.json / skill-list：新增 `scannedFiles` 扫描输入证据，统一 stdout / stderr UTF-8。\n- 不改变安装器、路由与 hook 契约。\n\n## v0.19.8 (2026-09-17)\n\n- 同步 O6 候选清单：元链 0.1.3 / 元守 0.4.2 / 元引 0.2.2 / 元习 0.2.1 / 元测 0.3.1 / 元鉴 0.1.3。\n- 不改变安装器、路由与 hook 契约；版本四件与 OpenCode 锁文件统一更新。\n\n## v0.19.7 (2026-09-17)\n\n**MCP registry 按 agent 隔离**\n\n- 新增 `YOTTA_SKILLS_REGISTRY_FILE`：CLI 与 MCP 统一读取该环境变量，允许为不同 agent 指定独立 `registry.json`；未设置时保持 `~/.yottaskills/registry.json`。\n- MCP `list_installed_skills` / `reindex` 返回实际注册表路径，便于宿主核对隔离位置。\n- OpenCode 锁文件将配置 `<dataDir>/yottaskills/<agentId>/registry.json`，避免多 agent 共用同一注册表。\n- `install.sh --dir` 改为只安装技能本体与 MCP / 清单资产，清理旧的 `.github`、`bin`、`lib`、`test`、`package.json` 等开发文件；新增自用安装回归。\n- 同步清单中的元质 `0.4.1`、元伴 `0.2.1`、元引 `0.2.1` 与元忆 `0.15.0` 候选版本。\n- 本里程碑只隔离 registry；安装快照、安装证据、更新缓存和 hook 绑定仍保持现有用户级位置。\n\n## v0.19.6 (2026-09-16)\n\n- 清单同步：yotta-memory 0.13.2（调用者认证 / agent_key 绑定安全修复）。\n- 更新 `skills.json` / `references/skill-list.md` 的元忆版本与 updated 日期。\n- 安装器版本四件对齐 0.19.6；本次不改变安装 / 路由算法。\n\n## v0.19.5 (2026-09-15)\n\n**多源技能盘点版本修复**：\n\n- 同名技能多副本扫描新增 `variants` 明细，代表版本取合法版本中的最高 semver；版本差异持久化为 `conflicts`，不再由首个来源副本决定显示版本。\n- `--inventory` / `--route` 显示代表版本与多副本摘要；`doctor` 优先按目标目录匹配精确副本版本，旧注册表缺少 `variants` 时回退聚合版本。\n- 回归覆盖多副本 semver 选择、注册表幂等、CLI 文本/JSON 与 doctor 精确匹配；`npm test` 168/168。\n\n## v0.19.4 (2026-09-14)\n\n**元造 0.1.2 清单同步**：\n\n- `skills.json` / `references/skill-list.md` 将 `yotta-skill-creator` 版本\n  从 0.1.1 同步到 0.1.2，清单更新日期同步为 2026-09-14。\n- 本次为清单同步版本，安装器、路由与 hook 逻辑无行为变更。\n\n## v0.19.3 (2026-09-13)\n\n**自装契约修复 + 扫描误报消除**：\n\n- `skill-manifest.json` 的 `before_install` 声明由 `install_gate` 改为 `scan_skill`，与安装管线实际提供的检查项对齐；此前自装会被自己的 hook 判为 missing → block（只能 `--skip-scan` 绕过）。\n- `permissions.note` 调整措辞，避免同时出现「下载 / 执行」触发元信 PIJ-020 误报（high）。\n- 新增 `test/self-install-contract.test.js`：锁定「声明 = 管线检查项」「扫描通过放行 / 失败阻断」「note 不触发 PIJ-020」三条契约。\n\n## v0.19.2 (2026-09-13)\n\n**授权边界整改（平台安全评估反馈）**：\n\n- SKILL.md「使用须知」由「首次使用必须写入宿主全局记忆」改为**可选步骤 + 显式确认**：写入前展示目标文件、完整文本与后果，用户拒绝则不写任何文件并保持 CLI 用法。\n- 删除常驻授权表述：可选注入文本不再要求每个会话无条件重扫或代用户安装、调用其他技能；组合建议统一改为「先建议、经用户确认后安装与调用」。\n- MCP 配置写入改为显式确认后落盘；用户拒绝或无法改配置时继续 CLI 降级。\n- 安装版本策略默认改为 `--pin`（清单精确版本，可复现）；`--range` 为显式可选项，不再默认跟随浮动 patch。\n- 同步 SKILL.md / README 中英 / FAQ / 教程 / 编排表 / install-flow / MCP server 说明；新增文档授权边界回归测试。\n\n## v0.19.1 (2026-09-13)\n\n- 文档去本机硬编码：Codex 永久记忆写入位置从本机绝对路径改为 `$CODEX_HOME/AGENTS.md`（未设置时 `~/.codex/AGENTS.md`）。\n- 清理测试夹具中的本机路径；新增发布前机器路径硬编码扫描闸门后，此类问题不允许再进入发布件。\n\n## v0.19.0 (2026-09-13)\n\n**元守家族分类假阳性修复**：\n\n- 元守 0.4.1 内置分类副本补入 `yotta-skills` 非安全家族排除，消除元阁 Defense Triple 假阳性。\n- `skills.json` / `references/skill-list.md` 同步 yotta-publish-guard 0.4.1。\n\n## v0.18.0 (2026-09-13)\n\n**Advisory 仓库文档 hygiene 清理**：\n\n- 元察 0.2.8 / 元析 0.1.6 / 元安 0.2.3 / 元造 0.1.1 / 元鉴 0.1.2 清理历史公开文档中的内部表述。\n- 五个技能 preflight、validate、测试与 pack 全部通过。\n- `skills.json` / `references/skill-list.md` 同步五个版本。\n\n## v0.17.0 (2026-09-13)\n\n**P0-6 全家族铺开覆盖验收**：\n\n- 新增 26 技能 manifest 覆盖测试：全部技能必须能解析包内 manifest 或家族默认契约。\n- 强制 8 技能必须提供包内 manifest 和 hook 声明；补齐 `yotta-verify-mcp` 与 `yotta-skills` 两个缺口。\n- 版本与发布件同步 0.17.0。\n\n## v0.16.0 (2026-09-13)\n\n**P0-4.6 元忆 after_milestone 试点**：\n\n- 元忆 manifest 声明 `after_milestone` / `remember_commit` / `fallback: explicit-unverified`。\n- 元阁真实 manifest 回归验证：有记忆文件证据时 allow/verified；缺证据或写入失败时 `explicit-unverified` + 一次纠偏。\n- `skills.json` / `references/skill-list.md` 同步 yotta-memory 0.13.0。\n\n## v0.15.0 (2026-09-13)\n\n**P0-4.5 元守 before_publish 试点**：\n\n- 元守 manifest 声明 `before_publish` / `publish_gate` / `fallback: wrapper`。\n- 元阁真实 manifest 回归验证：wrapper 已注册且门禁失败时 block；wrapper 未注册时 `explicit-unverified`。\n- `skills.json` / `references/skill-list.md` 同步 yotta-publish-guard 0.4.0。\n\n## v0.14.0 (2026-09-13)\n\n**P0-4.4 元序 before_start / after_milestone 试点**：\n\n- 元序 manifest 声明 `before_start` / `read_state` 与 `after_milestone` / `write_state`。\n- 元阁真实 manifest 回归验证：有状态文件证据时 allow；缺证据或落盘失败时 `explicit-unverified` + 一次纠偏。\n- `skills.json` / `references/skill-list.md` 同步 yotta-workflow 0.4.1。\n\n## v0.13.0 (2026-09-13)\n\n**P0-4.3 元盾 before_tool 试点**：\n\n- 元盾 manifest 声明 `before_tool` / `guard_check` / `fallback: explicit-unverified`。\n- 元阁真实 manifest 回归验证 Codex `native-audit` 只输出纠偏与 `unverified`，不宣称动作前硬拦截。\n- `skills.json` / `references/skill-list.md` 同步 yotta-guardian 0.1.3。\n\n## v0.12.0 (2026-09-13)\n\n**P0-4.1 元信 before_install 试点**：\n\n- 安装管线接入统一 hook 适配器：包内 `before_install` 声明在落位前评估，manifest 声明 `on_fail: block` 时扫描失败会阻断并保留旧版本。\n- 适配器证据写入 `~/.yottaskills/hook-log.jsonl`；`--skip-scan` 仍走人工应急路径，标记 `explicit-unverified`，不会被误报为已验证。\n- `skills.json` / `references/skill-list.md` 同步 yotta-verify 0.3.0。\n- 新增安装管线 hook 阻断回归；真实 yotta-verify manifest 随 0.3.0 发布。\n\n## v0.11.0 (2026-09-13)\n\n**P0-3 运行时 hook 适配层**：\n\n- 新增 `lib/hook-adapter.js`：六个统一事件、Codex 四档能力矩阵、manifest hook 声明校验、四档决策聚合和 `explicit-unverified` 降级。\n- 新增 `hook capabilities / evaluate / bind / unbind` CLI：可查看宿主能力、评估事件、写入结构化证据、幂等注册与反注册声明。\n- 证据写入 `~/.yottaskills/hook-log.jsonl`；绑定注册表写入 `~/.yottaskills/hook-bindings.json`，不直接改写宿主配置。\n- `native-audit` 不宣称强制；失败时输出 `explicit-unverified` 与纠偏信号。未核验宿主一律 `unsupported`。\n- 新增 `test/hook-adapter.test.js` 与 `test/hook-cli.test.js`；全量测试 131/131。\n- 本版只交付适配器内核，具体技能接入留待 P0-4 试点。\n\n## v0.10.0 (2026-09-13)\n\n**更新检查缓存与后台周检**：\n\n- 新增 `update --check --scheduled`：默认 7 天加 0 到 24 小时随机抖动，未到期不联网；到期只检查一次并把结果写入 `~/.yottaskills/update-check.json`。\n- 后台周检网络失败时文本模式静默、退出码 0；`--json` 保留 `error` / `cache` 诊断字段，不把后台调度失败变成用户噪音。\n- 手动 `update --check` 保持每次联网和 0 / 3 / 1 退出码；检查结果同样写入本地缓存，避免手动检查后立即重复周检。\n- `update --auto` 继续复用完整安装管线，`--skip-scan` 不能绕过元信门禁；`DO NOT INSTALL` 阻断、保留旧版本并写入证据。\n- SKILL / README / FAQ / 教程 / 走查同步：移除“会话开工默认联网检查”，明确手动检查与后台周检边界。\n- 新增 `lib/update-check.js`、`test/update-check-state.test.js`，并扩展 scheduled / auto 门禁回归。\n\n## v0.9.0 (2026-09-13)\n\n**doctor / rollback 与自定义生命周期**：\n\n- 新增 `doctor`：只读检查技能目录、`SKILL.md`、版本、manifest 身份、注册表一致性和自定义 doctor 脚本；支持 `--json`。\n- 新增 `rollback`：列出并校验快照，恢复最近一次安装或更新；恢复前后都保留快照与安装证据。\n- 安装管线接入包内 `setup` / `doctor` / `rollback` 生命周期脚本；setup 或 doctor 失败时自动恢复旧版本，脚本路径只能指向包内相对路径。\n- 新快照写入 SHA-256 元数据；旧快照仍可按结构校验和恢复。\n- `--slug` 用于 doctor / rollback 定向处理单个技能。\n- 新增生命周期、doctor、快照完整性与 CLI 回归测试。\n\n## v0.8.0 (2026-09-12)\n\n**P0-2.1 安装编排与元信自举**：\n\n- 安装链路读取包内 `skill-manifest.json`，缺失时使用 `skills.json` 家族默认契约。\n- 元信缺失时自动自举，随后对所有家族包执行装前扫描。\n- `DO NOT INSTALL` 和扫描失败阻断安装；`CAUTION` / `REVIEW` 继续但显示风险。\n- 安装改为快照、暂存、原子切换，失败不删除旧版本。\n- 新增 `~/.yottaskills/install-log.jsonl` 安装证据。\n- `--skip-scan` 仅保留为人工应急路径，并记录 `explicit-unverified`。\n\n## v0.7.2 (2026-09-10)\n\nskills.json 清单同步（元序路径模型澄清升版后，元阁安装清单随包更新）：\n\n- yotta-workflow 0.3.0 → 0.4.0。\n- skills.json 与 references/skill-list.md 同步，updated → 2026-09-10。\n- 版本四件对齐 0.7.2；无功能代码变更。\n\n## v0.7.1 (2026-09-09)\n\nskills.json 清单同步（评测批 2 六技能升版后，元阁安装清单随包更新）：\n\n- yotta-learn 0.1.4 → 0.2.0；yotta-humanize 0.1.3 → 0.2.0；\n  yotta-security-testing 0.2.4 → 0.3.0；yotta-publish-guard 0.2.1 → 0.3.0；\n  yotta-intel 0.1.1 → 0.2.0；yotta-secret 0.1.2 → 0.2.0。\n- skills.json 与 references/skill-list.md 全量同步，updated → 2026-09-09。\n- 版本四件对齐 0.7.1；无功能代码变更。\n\n## v0.7.0 (2026-09-08)\n\n**评测驱动完善**：新增 FAQ 与复杂场景走查；同步 22 技能清单并新增清单一致性测试，防止人工文档版本漂移；CLI 增加统一异常提示。\n\n- 新增 references/faq.md 与 references/walkthroughs.md。\n- skills.json 与 references/skill-list.md 全量同步，新增 test/skill-list.test.js 强制版本一致。\n- CLI 增加顶层异常提示与修复建议。\n\n## v0.6.2 (2026-09-06)\n\n**更新检查 / 自动更新（`update --check` / `update --auto`）**：元阁 CLI 新增联网只读检查本地已装技能是否有更新（对 npm `dist-tags.latest`，版本源唯一），\n按本地 `SKILL.md` 版本对比，无论技能源自哪个安装渠道（npm / git clone / 本地拷贝等）都兼容。`--check` 只读列清单，退出码 0=全部最新 / 3=有更新 / 1=查失败；\n`--auto` 检测到家族（`yotta-*` / 清单内）可更新时走安装管线（含元信装前安全扫描）自动更新，非元阁家族（非 yotta-*）技能绝不自动更新。\n新增 `--registry <url>` 自定义版本源；网络异常优雅降级（不阻塞会话）。SKILL.md「使用须知」注入文本同步加入「会话开工跑 `update --check`」规则。（v0.19.2 起：该规则已从注入文本移除，改为用户确认后的可选说明。）\n测试：新增 update-check / update-auto 本地 HTTP registry 离线用例，npm test 47/47。\n## v0.6.1 (2026-09-06)\n\n**skills.json 全量清单对齐（22 技能 vs npm latest 全一致）**：yotta-memory 0.10.1 → 0.11.0（MCP 协议对齐批次发布后同步，元阁 install 按清单版本拉包，不同步会装到旧版）；源清单 + 构建副本双份同步；其余 21 技能核对无滞后。无功能代码变更。\n\n## v0.6.0 (2026-09-06)\n\n**MCP 协议对齐最新版 2026-07-28（无状态时代）**：yotta-skills MCP 升级 dual-era——modern 直连（server/discover 免握手、逐请求 _meta 版本声明、resultType、-32022）服务新客户端；legacy（initialize 握手，protocolVersion 2025-11-25）兼容旧客户端，旧形状响应零惊扰。SKILL 标注「基于 MCP 最新协议 2026-07-28（向后兼容 2025-11-25 及更早握手）」。npm test 42/42（含 modern MCP e2e）。\n\n## v0.5.1 (2026-09-06)\n\nskills.json 三处滞后同步修复（yotta-skills 0.5.0→0.5.1）：元真 0.1.2→0.1.3 / 元忆 0.8.5→0.10.1 / 元守 0.1.1→0.2.1 + updated 改期 2026-09-06 + yotta-skills 四件对齐 0.5.1 + 技能分发清单副本 + 插件同步。\n\n## v0.5.0 (2026-08-31)\n\n方案 A（其他已装技能候选编排）：路由输出从「只编排元阁组合」扩展为「组合 + 并列候选提示」。\n\n- 新增 `--route` / `route_request` 输出「其他已装技能候选」：注册表中非元阁家族的已装技能，按 frontmatter `description` 与需求文本做本地机械匹配（英文词项 + 中文二字组交集），Top N（默认 3）并列展示，标注来源、得分、命中词项与扫描状态。\n- 安全边界：只读 frontmatter `description` 做机械匹配，不读取全文指令、不做语义推理、不自动调用；候选默认标注「未扫描」，使用/安装前需先做装前安全扫描；数据不出本机。\n- 确定性：同输入同输出，无状态、无个人数据；候选不参与组合融合排序，7 个静态组合输出保持不变。\n- CLI 文本输出追加「其他已装技能候选」段；`--json` 追加 `other_skill_candidates` / `other_skills_note` 字段；MCP `route_request` 同步。\n- 测试：路由核心新增候选匹配 / 元技能排除 / Top N 与排序 / 确定性 / 空结果；CLI JSON 与文本输出用例。\n- 版本升至 0.5.0。\n\n## v0.4.0 (2026-08-31)\n\n阶段 C（O1 静态编排 playbook + 路由指引）：从「知道装了什么」升级为「给出该用哪几个、什么顺序」。\n\n- 新增静态编排 playbook（7 个场景组合）：输出呈现、长生命周期、交付质量门、装前安全门、造技能发版、安全事件响应、入口安装。\n- 新增 CLI `--route \"<需求摘要>\"`：先更新本地注册表，再输出候选组合、调用顺序、技能角色、置信度、命中依据、已装/缺失状态、安装命令与应用模式提醒；支持 `--json`。\n- 新增 MCP `route_request` 工具，与 CLI 复用同一套路由核心；MCP 工具扩展为四个。\n- 缺失技能只建议安装，不自动安装；安装命令需用户确认并先执行装前安全扫描。应用模式默认显式调用，切换为按场景自动调用需用户确认。\n- 文档：SKILL.md / README 中英 / orchestration.md / tutorial.md 同步「编排路由」层与边界；banner 同步升级为编排层定位。\n- 测试：新增路由核心（playbook 完整性 / 命中顺序 / 缺失建议 / 无匹配兜底 / 应用模式）、CLI JSON 与文本输出、MCP e2e 用例。\n- 版本升至 0.4.0。\n\n## v0.3.0 (2026-08-31)\n\n阶段 B（D2 re-index 自动钩子）：新装技能自动被发现。\n\n- 新增 CLI `--reindex`：重扫所有技能目录并增量合并注册表，变化聚焦输出（文本 / `--json` 机器可读），供钩子与手动调用；`--rescan` 为同义别名。\n- 装技能后自动 re-index：`install` / `updat...","readmeExcerpt":"Skill: 元阁 yotta-skills Owner: yottameta Summary: 元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点 + 本机技能 Hub + 运行时 hook 适配。Hub 层：hub hosts 只读发现本机已装智能体与技能目录（文件系统优先，不读元忆；已核实 / 自动发现 / 桥接分类 + 状态细分：可用 / 残留（实体未确认）/ 未创建 / 仅标记）；hub hosts add/remove/list/mark/exclude/include/set 注册自定义宿主目录、手动标记、不接管开关与目录覆盖（只注册不建目录、移除不删目录；残留清理 hub hosts remove --purge 默认预览、目录入回收站 7 天；YottaCode 不纳入接管）；install-self / where 把元阁管理引擎独立安装（默认 ~/.yottaskills/yo","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# 1) See the hosts and skill directories on this machine (states: available / orphan / missing / marker-only)\nnpx -y @yottameta/yotta-skills hub hosts\n\n# 2) Install into the Hub source of truth (default ~/.yottaskills/hub; no agent needed)\nnpx -y @yottameta/yotta-skills hub install\n\n# 3) Distribute to every verified host (Windows junction / macOS·Linux symlink)\nnpx -y @yottameta/yotta-skills hub link --all\n\n# 4) Manage from the local panel (host matrix / links & health / adoption / rollback)\nnpx -y @yottameta/yotta-skills view"},{"language":"bash","snippet":"npx -y @yottameta/yotta-skills install-self                    # default: ~/.yottaskills/yotta-skills\nnpx -y @yottameta/yotta-skills install-self --dir ~/tools/yotta-skills\nnpx -y @yottameta/yotta-skills where                           # running CLI / standalone installs / Hub location"},{"language":"bash","snippet":"# List the whole family (no network, no changes)\nnpx -y @yottameta/yotta-skills --list\n\n# Install everything into an agent's default user-level skills dir\nnpx -y @yottameta/yotta-skills install --agent codex\n\r\n# Install everything into any directory (each skill lands in <dir>/<slug>)\r\nnpx -y @yottameta/yotta-skills install --dir ~/my-skills\r\n\r\n# Install only selected skills\r\nnpx -y @yottameta/yotta-skills install yotta-memory yotta-verify --dir ~/my-skills\r\n\r\n# Incrementally update installed skills\r\nnpx -y @yottameta/yotta-skills update --agent codex\r\n\r\n# Check for updates manually (read-only, no changes)\r\nnpx -y @yottameta/yotta-skills update --check\r\n\r\n# Weekly background entry (stays offline until due; writes ~/.yottaskills/update-check.json)\r\nnpx -y @yottameta/yotta-skills update --check --scheduled\r\n\r\n# Check and auto-update the installed YottaMeta family (pre-install gate applies; non-family skills untouched)\nnpx -y @yottameta/yotta-skills update --auto\n\n# Adopt only the family skills already installed on this machine (no backfill)\nnpx -y @yottameta/yotta-skills update --installed-only --dir ~/my-skills\n\n# Read-only health check (optionally with --slug / --json)\nnpx -y @yottameta/yotta-skills doctor --dir ~/my-skills --slug yotta-memory\r\n\r\n# List snapshots; restore the latest install or update\r\nnpx -y @yottameta/yotta-skills rollback --list --dir ~/my-skills\r\nnpx -y @yottameta/yotta-skills rollback --slug yotta-memory --dir ~/my-skills\r\n\r\n# Inspect host hook capability and evaluate one manifest event\r\nnpx -y @yottameta/yotta-skills hook capabilities --host codex --json\r\nnpx -y @yottameta/yotta-skills hook evaluate --host codex --event before_send --manifest ./skill-manifest.json --json\r\n\r\n# Preview what would be installed (no network, no changes)\r\nnpx -y @yottameta/yotta-skills --dry-run\r\n\r\n# Route a task to a combination, call order, and missing-skill install suggestion\nnpx -y @yottameta/yotta-skills --route \"Review this code carefully before release\"\n\n# Insp"},{"language":"text","snippet":"openclaw skills install @yottameta/yotta-skills   # install (with ClawHub security audit)\nopenclaw skills update @yottameta/yotta-skills    # update"},{"language":"bash","snippet":"npx -y @yottameta/yotta-skills --agent codex\nnpx -y @yottameta/yotta-skills --dir /path/to/skills"},{"language":"bash","snippet":"YOTTA_SKILLS_NPM_FLAGS=\"--registry=https://registry.npmmirror.com\" npx -y @yottameta/yotta-skills --agent codex"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\r\nname: yotta-skills\r\nslug: yotta-skills\r\nversion: 0.29.10\r\ndisplayName: 元阁·技能编排助手\r\nsummary: 元阁全家技能编排：组合策划、路由建议、一键安装、技能盘点，装前摘要供用户决策。\r\ndescription: '元阁 -- 元阁全家技能的总编排策划 + 编排路由 + 一键安装器 + 技能盘点 + 本机技能 Hub + 运行时 hook 适配。Hub 层：hub hosts 只读发现本机已装智能体与技能目录（文件系统优先，不读元忆；已核实 / 自动发现 / 桥接分类 + 状态细分：可用 / 残留（实体未确认）/ 未创建 / 仅标记）；hub hosts add/remove/list/mark/exclude/include/set 注册自定义宿主目录、手动标记、不接管开关与目录覆盖（只注册不建目录、移除不删目录；残留清理 hub hosts remove --purge 默认预览、目录入回收站 7 天；YottaCode 不纳入接管）；install-self / where 把元阁管理引擎独立安装（默认 ~/.yottaskills/yotta-skills，--dir 指定）并查看运行位置；hub config get/set/clear/rollback 持久化 Hub 位置（config.json；优先级 --hub > YOTTA_SKILLS_HUB > config > 默认；--move 迁移旧 Hub + 重链 + 回收站；lastMigration 记录 + 一键回滚 = 位置回退；仅切换且旧 Hub 非空时记录未迁移供面板一键迁移）；hub cleanup-backups 清理历史备份 / 暂存残留（回收站 7 天）；hub install / update 把技能装到 ~/.yottaskills/hub 单点真源（清单 27 + 特殊家族 5，特殊家族跟随各自 npm latest；update / hub update 只升不降，--force 才显式降级）；hub link --all 用 Windows junction / POSIX symlink 分发到全部已核实宿主（默认范围；--include-discovered 显式纳入自动发现目录；锁 / 数据桥接目录永不链接），元技能在链接时收敛宿主旧副本（移入 ~/.yottaskills/trash 保留 7 天、版本闸门 Hub ≥ 宿主）；hub unlink 只删链接、fail-closed；非元技能不参与更新（用户自行处理）；hub status 显示来源、版本、链接与异常；view 启动本机技能枢纽面板（默认 127.0.0.1:8789，六视图 + 高级 CLI 页，写操作需页面令牌与确认）；兼容 agentskills.io 技能格式、Vercel Labs skills CLI 的 .agents/skills 通用目录与 .skill-lock.json v3（只读）。路由层：--route / route_request 按需求摘要给出候选组合、调用顺序、角色、置信度、依据、已装/缺失状态与安装命令，只建议不自动安装；非元阁家族已装技能按 frontmatter description 机械匹配作并列候选（标注来源与未扫描状态，只读不自动调用）；M1 记忆裁决层：usage enable/mark 本地结构化记录 + decide-memory / MCP decide_memory 输出 promote / hold / demote 只读建议（需授权 provider；只建议不删除、不自动写元忆）；策划层：按场景给出「该组合哪几个元技能、组合强在哪、怎么组合使用（安装与调用均由用户确认后执行）」；安装层：一条命令把 YottaMeta 已发布的全部 yotta-* 技能装进指定智能体或目录（默认 --pin 锁死清单精确版本）；盘点层：--inventory / --reindex 扫描本机已装技能生成/更新注册表，新装技能自动被发现（install/update 后自动 re-index，会话开工只建议跑本地 --reindex；更新检查走手动 --check 或后台 --check --scheduled）；运行时适配层：hook capabilities / evaluate / bind / unbind 按宿主能力矩阵执行六个统一事件并留证降级，元信 before_install 已接入安装管线；自包含零依赖，不依赖任何元技能；MCP 按需加载且需用户确认后写入配置（可选：list_installed_skills/describe_skill/reindex/route_request/decide_memory，不常驻，未加载降级 CLI）。支持 --list 清单 / --route 路由 / usage 使用记录 / decide-memory 记忆裁决 / hub 技能 Hub / install-self 独立安装 / where 位置查看 / install / update / update --check（只读检查）/ update --check --scheduled（后台周检）/ update --auto（家族自动更新）/ hook 适配 / --inventory / --reindex / --dry-run 预览 / --pin（默认）/ --range。触发：需要批量安装或更新元阁全家技能、单点安装并分发到多个智能体、查看本机装了哪些智能体与技能目录、接管非元技能、按场景组合多个元技能、路由或判断该用哪些技能、判断哪些技能值得长期记忆、查看或记录技能使用信号、盘点或查看本机已装技能、重扫技能注册表、给某个智能体或目录一次性铺齐 yotta-* 技能、评估宿主 hook 能力、预览安装清单、锁版本安装、或用户说 元阁/装全家/一次装齐/yotta-skills/install-all/更新全家/检查更新/自动更新/hook 适配/该用哪个技能/路由技能/记忆裁决/技能该不该记住/盘点技能/查看已装技能/技能 Hub/单点安装/链接分发/接管技能/技能枢纽面板/图形化面板/独立安装元阁/查看元阁位置/持久化 Hub 位置/换 Hub 目录/迁移 Hub/迁移回滚/回滚 Hub 位置/清理备份残留/自定义宿主/残留清理/宿主状态 等。边界（Do NOT trigger）：只做「组合策划 + 静态路由建议 + M1 记忆裁决只读建议 + 清单 + 下载 + 落位 + 汇总 + 盘点 + re-index + Hub 本机真源与链接分发 + hook 适配」，不含技能本体、不做技能内容开发、不 -g 污染全局、不自动安装缺失技能、不静默写宿主配置或全局记忆、不自动删除技能或记忆；家族安装先自举或调用元信装前门禁，DO NOT INSTALL 阻断，非元阁家族包不自动安装。'\r\ntags: [技能编排, 路由, 一键安装, 技能盘点, orchestrati"},{"path":"README.md","content":"<p align=\"center\"><b>Language</b>: English · <a href=\"./README.zh-CN.md\">中文</a></p>\r\n\r\n<p align=\"center\">\r\n  <img src=\"assets/banner.png\" alt=\"yotta-skills banner\" width=\"100%\" />\r\n</p>\r\n\r\n<h1 align=\"center\">yotta-skills · 元阁 (YuanGe)</h1>\r\n\r\n<p align=\"center\">YottaMeta's skill-family <b>orchestration router, inventory, and one-command installer</b>: route which skills to combine for a task, then one <code>npx</code> line installs the published <code>yotta-*</code> skills (currently <b>27</b>) into any agent or directory.</p>\n<p align=\"center\">List the family, route a task, install everything, incrementally update, preview with <code>--dry-run</code>, pin exact versions - idempotent and zero-dependency (Node.js 18+), pure npm ecosystem.</p>\r\n<p align=\"center\">This package contains <b>no skill bodies</b> — only a manifest, a downloader, a placer and a summary. Each skill still comes from its own npm package.</p>\r\n\r\n<p align=\"center\">\r\n  <a href=\"LICENSE\"><img alt=\"License: MIT\" src=\"https://img.shields.io/badge/license-MIT-blue\" /></a>\r\n  <a href=\"https://agentskills.io/\"><img alt=\"Standard: agentskills.io\" src=\"https://img.shields.io/badge/standard-agentskills.io-orange\" /></a>\r\n  <a href=\"https://www.npmjs.com/package/@yottameta/yotta-skills\"><img alt=\"npm package\" src=\"https://img.shields.io/npm/v/@yottameta/yotta-skills\" /></a>\r\n  <a href=\"https://github.com/YottaMeta/yotta-skills\"><img alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/YottaMeta/yotta-skills\" /></a>\r\n  <a href=\"https://github.com/YottaMeta/yotta-skills/commits/main\"><img alt=\"last commit\" src=\"https://img.shields.io/github/last-commit/YottaMeta/yotta-skills\" /></a>\r\n  <a href=\"https://github.com/YottaMeta/yotta-skills\"><img alt=\"PRs welcome\" src=\"https://img.shields.io/badge/PRs-welcome-brightgreen\" /></a>\r\n</p>\r\n\r\n## What it is\r\n\r\nInstalling the whole YottaMeta family used to mean running <code>npx</code> for each skill one by one. 元阁 turns it into a single command: it reads a built-in manifest (27 published skills), downloads each from its own npm package, places it into the target skills directory, and prints a summary (success / skipped / failed).\n\r\n元阁 is also the **family orchestration planner**: given a task, check the orchestration table first — which skills to combine, in what order, and why — then install exactly those. The decision table ships in the package as <code>references/orchestration.md</code> and is summarized in <code>SKILL.md</code>.\r\n\r\n- **List** - see the whole family: slug, Chinese name, package, version and a one-line description.\n- **Orchestration routing** - <code>--route</code> turns a task summary into a candidate combination, call order, per-skill roles, confidence, evidence, installed/missing status, and an install command; it only suggests installation and never installs automatically. An optional local provider may add or re-order installed skills within the allow-list and return <code>confidence</code> / <code>reasons</code> / <code>"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn72sqpz1re8bd5phwfbj87nq584bdkv\",\n  \"slug\": \"yotta-skills\",\n  \"version\": \"0.29.10\",\n  \"publishedAt\": 1791558579015\n}"},{"path":"references/faq.md","content":"# 元阁常见问题\n\n## 速查索引\n\n- **安装目标**：未指定目标怎么办 · 支持哪些智能体 · 装完为什么看不到\n- **网络与源**：国内访问慢 · 镜像延迟 · 网络失败\n- **更新**：`update --check` 退出码 · 后台周检缓存 · 自动更新边界 · 幂等\n- **版本**：默认 `--pin` 与 `--range` · 清单漂移 · 单技能安装\n- **安全**：装前扫描 · 目标目录校验 · 失败恢复\n- **授权**：会不会自动装技能 / 自动写全局记忆 / 自动改 MCP 配置\n\n---\n\n## 1. 安装时提示「未指定目标」怎么办？\n\n这表示当前目录没有检测到项目级技能目录。两种解决方式：\n\n```bash\nnpx -y @yottameta/yotta-skills --agent codex\nnpx -y @yottameta/yotta-skills --dir /path/to/skills\n```\n\n`--agent` 使用内置智能体默认目录；`--dir` 适合自定义目录或未收录智能体。\n\n## 2. 支持哪些智能体？\n\n内置 17 个键名：`claude`、`cursor`、`codex`、`gemini`、`goose`、`amp`、`opencode`、`windsurf`、`workbuddy`、`kiro`、`trae`、`trae-cn`、`qwen`、`comate`、`codebuddy`、`kimi`、`agents`。未收录的智能体用 `--dir` 指定目录。\n\n## 3. 国内访问 npm 慢或失败怎么办？\n\n可用 `YOTTA_SKILLS_NPM_FLAGS` 追加 registry 参数：\n\n```bash\nYOTTA_SKILLS_NPM_FLAGS=\"--registry=https://registry.npmmirror.com\" npx -y @yottameta/yotta-skills --agent codex\n```\n\n新版本发布后镜像可能有延迟；如需立即获取，可临时改回 npm 官方源并配置代理。\n\n## 4. `update --check` 的退出码是什么意思？\n\n- `0`：全部最新\n- `3`：存在可更新技能\n- `1`：检查失败（网络或 registry 异常）\n\n该命令只读，不修改文件。\n\n## 4.1 `update --check --scheduled` 什么时候用？\n\n它是后台周检入口：默认 7 天加 0 到 24 小时随机抖动，未到期不联网；到期只检查一次，\n结果写入 `~/.yottaskills/update-check.json`。文本模式网络失败静默并退出 0，\n`--json` 可读取 `error` / `cache` 诊断字段。会话开工只建议做本地 `--reindex`，\n不默认联网更新检查。\n\n## 5. `update --auto` 会更新所有技能吗？\n\n只自动更新元阁家族内技能（`yotta-*` 且在清单中）。其他已装技能只提示，不自动改动。\n\n## 6. 重复安装会重复占空间吗？\n\n不会。默认按清单版本判断，已一致的技能跳过；需要强制覆盖时加 `--force`。\n\n## 7. `--pin` 和 `--range` 怎么选？\n\n默认是 `--pin`：按清单精确版本安装，完全可复现、不会静默跟随浮动版本。\n只有你明确想跟随同 major 的最新 patch 时才加 `--range`。\n\n## 8. 为什么清单和文档版本会不一致？\n\n人工文档可能滞后。机器权威源是 `skills.json`，人工可读副本是 `references/skill-list.md`；当前版本已加入自动测试，两者不一致会导致测试失败。\n\n## 9. 如何只安装部分技能？\n\n```bash\nnpx -y @yottameta/yotta-skills install yotta-memory yotta-workflow --agent codex\n```\n\n也可以先用 `--route` 查看建议组合，再按需安装。\n\n## 10. 安装前安全扫描怎么用？\n\n家族安装默认执行元信门禁：没有元信时先自动自举，再扫描待装包。`DO NOT INSTALL`\n和扫描失败会阻断；`INSTALL WITH CAUTION` / `REVIEW REQUIRED` 会继续但显示风险。\n可用 `--verify <path>` 指定引擎。`--skip-scan` 只是人工应急路径，会标记\n`explicit-unverified`，`update --auto` 不使用它。\n\n## 11. 安装失败后如何恢复？\n\n查看汇总中的失败原因。setup / doctor 失败时元阁会自动恢复旧版本；旧版本快照仍保存在\n`~/.yottaskills/snapshots/`。可以先用 `doctor` 自检，再用 `rollback` 恢复最近快照：\n\n```bash\nnpx -y @yottameta/yotta-skills doctor --dir /path/to/skills --slug <slug>\nnpx -y @yottameta/yotta-skills rollback --list --dir /path/to/skills\nnpx -y @yottameta/yotta-skills rollback --slug <slug> --dir /path/to/skills\n```\n\n如果只是安装源或网络问题，再单独安装失败技能：\n\n```bash\nnpx -y @yottameta/yotta-skills install <slug> --dir /path/to/skills\n```\n\n## 12. 装完为什么智能体里看不到？\n\n确认安装目录与智能体实际读取目录一致；安装后通常需要重启会话或重新加载技能列表。\n\n## 13. `hook evaluate` 会真的拦截动作吗？\n\n不一定。适配层先探测宿主能力：`native-block` 才能声明动作前阻断；`native-audit` 只能审计并触发一次纠偏，结果会标记 `explicit-unverified`；`wrapper-only` 仅在 wrapper 注册后保证；未知宿主全部按 `unsupported` 处理。当前 Codex 已实测能力见 `hook capabilities --host codex`。\n\n## 14. 元阁会自动安装技能、写全局记忆或改 MCP 配置吗？\n\n不会。元阁只给建议：`--route` 输出缺失技能与安装命令，安装动作由你执行或确认后才发生；\n写客户端 `mcpServers` 配置、把编排护栏写进全局记忆（如 `AGENTS.md` / `CLAUDE.md`）都需要**事先明确同意**，\n并会先展示目标文件与完整文本。你拒绝写入时，元阁不写任何文件，直接以 CLI 方式继续工作。\n\n## 15. `decide-memory` 会替我删除技能或写"},{"path":"references/hub.md","content":"# Hub（本机单点安装 + 链接分发）\n\n## 它解决什么\n\n多智能体各自维护技能目录时，同一技能会被复制多份，升级后容易版本漂移。Hub 把\n技能集中到本机一份真源，再按宿主建立链接（Windows junction / macOS·Linux\nsymlink），升级只改真源，已链接宿主即时生效。\n\n## 默认位置\n\n- Hub 真源：`~/.yottaskills/hub`\n- 技能台账：`<hub>/.yotta-hub.json`\n- 链接台账：`<hub>/.yotta-links.json`\n- 收敛回收站：`~/.yottaskills/trash/<时间戳>/<宿主>/<技能>/`（保留 7 天，可用 `YOTTA_SKILLS_TRASH` 覆盖）\n- 覆盖方式（优先级）：`--hub <dir>` > `YOTTA_SKILLS_HUB` > `config.json`（`hub config set`）> 默认\n\n## Hub 位置持久化（0.29.2 起；0.29.5 迁移向导 / 回滚 / 残留清理）\n\n`hub config` 把 Hub 位置写进用户级配置（与 hosts.json / self.json 同根）：\n\n```bash\nnpx -y @yottameta/yotta-skills hub config get                # 生效位置 + 来源 + 配置文件\nnpx -y @yottameta/yotta-skills hub config set --hub \"D:\\my-hub\"        # 只换指针（旧 Hub 保留）\nnpx -y @yottameta/yotta-skills hub config set --hub \"D:\\my-hub\" --move # 迁移：复制校验 → 重链 → 旧 Hub 入回收站\nnpx -y @yottameta/yotta-skills hub config rollback           # 回滚预览（上次迁移前的原位置）\nnpx -y @yottameta/yotta-skills hub config rollback --yes     # 执行回滚（位置回退，用当前内容）\nnpx -y @yottameta/yotta-skills hub config clear              # 清除覆盖，回到 flag > env > 默认\n```\n\n- 配置文件：`<YOTTA_SKILLS_HOME>/config.json`（默认 `~/.yottaskills/config.json`；schema v1，原子写）。\n- 校验（fail-closed）：路径不能是文件、不能与配置根 / 独立安装目录重叠、不能是锁 / 数据桥接目录；路径不存在允许（首次使用时创建）。\n- `--move` 语义：旧 Hub 复制到新位置 → 逐技能 treeHash 校验 → 切换配置 → `hub link` 以新 Hub 为源 `--force` 重链 → 旧 Hub 入回收站（保留 7 天）。校验失败不切配置；重链未全部完成时旧 Hub 保留供重试（新旧内容一致，混合链接均可用）。\n- 目标目录只含元阁自己的空台账残留（`.yotta-hub.json` / `.yotta-hub-audit.jsonl`）时，`--move` 默认 fail-closed 并提示；确认后加 `--clean-residue`（残留移入回收站）再迁移。\n- 迁移记录：`config.json` 的 `lastMigration` 记录时间 / from→to / 校验技能数 / 重链目录数 / 回收站与剩余天数；`hub config get` 展示「最近一次迁移」块与回滚命令。\n- 回滚语义：`hub config rollback` 默认预览、`--yes` 执行 = 位置回退（把当前 Hub 内容复制校验回原位置，再重链、当前 Hub 入回收站 7 天）；**不是**恢复旧快照。目标非空 fail-closed（不合并）。\n- 仅切换指针（不带 `--move`）时，若旧 Hub 非空会记录「未迁移」并在面板提示「旧 Hub 还有 N 个技能未迁移」+ 一键迁移；执行迁移 / 回滚后该提示自动清除。\n- 面板「Hub 位置」区显示来源 / 配置覆盖 / 重启提示，并提供「设置新位置（迁移向导：迁移 / 仅切换，默认迁移）/ 最近一次迁移 + 一键回滚 / 清除覆盖」（写操作需页面令牌 + `hub-config` 确认串）；已在运行的 `view` 需重启后生效。\n- 误用防护：`--hub` 只允许与 `hub` / `view` / `where` 一起使用；其它命令（含裸 `--hub`）fail-closed 报错，不再静默忽略。\n\n## 备份 / 暂存残留清理（0.29.5 起）\n\n`hub link --force` 替换真目录时，旧副本移入回收站（不再原地留 `<name>.yottaskills-backup-*`，宿主不会把备份当技能扫描）。历史残留可用：\n\n```bash\nnpx -y @yottameta/yotta-skills hub cleanup-backups          # 预览（Hub + 已核实宿主）\nnpx -y @yottameta/yotta-skills hub cleanup-backups --yes    # 移入回收站（7 天可恢复）\n```\n\n- 识别标记：`.yottaskills-backup-*` / `.yottaskills-import-*` / `.yottaskills-rollback-*` / `.yottaskills-staging`。\n- `hub doctor` 会只读报告 `backup_residue:*` 警告并给出清理命令；`--dir` / `--agent` 可收窄范围。\n\n## 元技能唯一性收敛（`hub link` 执行时）\n\n元技能（清单 27 + 特殊家族 5：元开 / 元伴 / 元呈 / 元阁本体 / 元信MCP）在\n`hub link`（含面板链接动作）执行时收敛唯一性，不做事后全机扫描：\n\n1. 收集宿主目录中的同名真目录与 `yotta-X__*` 重命名副本（frontmatter `name` 相同）；\n2. 版本闸门：Hub 版本 ≥ 宿主副本版本才收敛；宿主更高 → 跳过并提示先 `hub update`；\n   版本无法解析 → 跳过提示（fail-safe）；\n3. 旧副本移入回收站（保留 7 天、输出恢复路径）→ 建立指向 Hub 的链接；\n   跨盘（源目录在其它卷，或经 junction / symlink 落在其它卷）时 `rename`\n   会报 `EXDEV`，自动回退「复制 → 校验（treeHash + 文件数 + 字节数）→ 删除源」；\n   建链失败后的恢复同样支持跨盘回退，校验不通过不会删除源；\n4. 先移后链；建链失败"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1827,"uniquenessScore":36,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T20:57:30.615Z","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-09T20:57:30.615Z","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-10T05:00:06.193Z","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"}]}}}