[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71JNKANESZB4NGCJEGG4XP8":3,"skill-same:01M71JNKANESZB4NGCJEGG4XP8":113},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":43,"commitSha":44,"skillDirectory":5,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":48,"updatedAt":49,"install":50,"resources":62},"01M71JNKANESZB4NGCJEGG4XP8","技能互联",null,"跨技能数据契约层 Base Skill · Skill Link。 让各技能通过 skilllink-read 命令对外暴露\u002F读取数据（注册表 + 统一信封）。 提供 skill_registry \u002F check_public_contract 校验器 \u002F 互联总览。 任何技能开发数据联动（提供\u002F消费）前必须先装本基础包（强制依赖）。","FeatherHunter\u002FSKILLS","FeatherHunter","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F12967785?v=4","01M71JFD7JMNT8HWC3Y9JKMWGG","王辰浩","01M71JFD8DNYSPJPGX25Y4KX70",6,"MIT","https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[5,24,25,26,27,28,29,30,31,32,33,34,35],"registry","校验","消费","public","check","read","base","base skill","contract","link","true","数据","2026-11-10 10:12:30",false,"---\nname: 技能互联\ndescription: >\n  跨技能数据契约层 Base Skill · Skill Link。\n  让各技能通过 skilllink-read 命令对外暴露\u002F读取数据（注册表 + 统一信封）。\n  提供 skill_registry \u002F check_public_contract 校验器 \u002F 互联总览。\n  任何技能开发数据联动（提供\u002F消费）前必须先装本基础包（强制依赖）。\ndisable-model-invocation: true\n---\n\n# 技能互联（Skill Link）· Base Skill v0.1（骨架定稿）\n\n> 基础设施型技能：系统加载时存在，不自动唤起、不在用户手动触发列表（对标 wayfinder）。\n> 中文名：技能互联 · 英文名：Skill Link · 命令：`skilllink-read`\n> 骨架定稿：2026-08-11 · #271 用户逐条拍板（目录结构 \u002F 强制依赖 \u002F 注册表形态 \u002F 校验机制）\n\n## 定位\n\n跨技能数据契约层。与公共组件平级：\n\n| Base | 职责 |\n|---|---|\n| 公共组件 | 渲染层（注入管线 + 控件库）—— HTML 长什么样 |\n| **技能互联（本）** | 数据层（数据契约）—— 技能之间怎么拿数据 |\n\n**目标**：卡路里 \u002F 饼干记账 \u002F 作息管家 \u002F 居家管家 \u002F 备忘录 \u002F 私家大厨 6 技能全部打通（每技能既是提供方也是消费方）。\n\n## 强制依赖（#271 拍板）\n\n- **语义**：任何技能**开发数据联动（提供\u002F消费）前，必须先装本基础包**。纯单机技能（无联动）不强制。\n- **闸门**：`check_public_contract` 校验器进各技能 pytest——未装\u002F未接入 = 测试红 = commit 被拒（硬约束，AI 不可能无视）。\n- **发现机制（三层探测）**：\n  1. 探测 Base 本身：`技能互联\u002F` 目录 + `skilllink.py` + `skill_registry.yaml` 存在？缺失 → 红：「未安装技能互联，先装本基础包」\n  2. 探测已接入技能：registry 列出的技能，`PUBLIC_DOMAINS` 注册表存在且符合契约？缺失 → 红\n  3. 运行时（skilllink-read 被调用）：查未接入技能 → 信封 ok=false「未接入」→ AI 降级（契约 v1 §6）\n\n## 核心概念\n\n- **执行者 = AI**：用户复制 prompt → AI 执行；AI 读契约 → 调 skilllink-read → 理解\u002F合并 → 注入 HTML\n- **注册表**：每技能声明「我能提供什么」（域名称\u002F中文名\u002F一句话说明\u002F字段列表）—— 技能侧只放 `PUBLIC_DOMAINS.py`\n- **统一信封**：所有技能返回同一盒子（办成了\u002F来自哪个技能\u002F查的什么\u002F查询情况\u002F数据）\n- **字段类型 4 种**：数字 \u002F 日期 \u002F 文字 \u002F 自由文本（text，AI 读黑盒 + 用户确认）\n- **命令**：`skilllink-read --skill \u003C技能> --domain \u003C域> --from \u003C开始> --to \u003C结束>`（--what 问能力）\n- **命令真身住本 Base**：`skilllink.py`（公共 runner：参数解析 + 统一信封 + --what\u002F--contract），各技能只填注册表，不重复实现\n\n## 执行联动（#275 组合表落库后 · 2026-08-12 补）\n\n**当用户发起一个联动场景（唤醒词含「协同\u002F联动」或命中技能 HELP 的技能协同分类）时，AI 按以下顺序执行：**\n\n1. **读组合表**：打开 `references\u002Fcombos.yaml`（权威源 · 36 场景 × 11 字段），按唤醒词找到对应场景（id \u002F name \u002F wake_word 匹配）\n2. **读场景字段**：从该场景条目取 external_ww（外部技能怎么问）、external_data（要什么数据）、calorie_side（卡路里侧出什么）、merge_logic（怎么合并）、present（怎么呈现）\n3. **查外部技能数据**：\n   - 已接入（registry 有登记）→ 调 `skilllink-read --skill \u003C技能> --domain \u003C域> --from \u003C开始> --to \u003C结束>`\n   - 未接入 → 降级：按 external_ww 加载对方技能对话式查，或如实告知「该技能未接入」\n4. **合并呈现**：按 merge_logic 对齐两边数据，按 present 渲染 HTML（走公共组件），降级场景标注「近似」交用户确认\n\n> 组合表是**需求语义**（做什么\u002F怎么合并），注册表是**实现声明**（能提供什么域）——各司其职，不互相替代。改场景字段改 combos.yaml（勿手改派生文件 11-技能协同.json）。\n\n## 互联总览（#276 · 2026-08-13）\n\n用户\u002F开发问「哪些技能接入了」时，AI 渲染 `overview_render.py`（输出\n`$SKILLS_DB_PATH\u002Fskilllink_html\u002F技能互联_HELP_\u003CTS>.html`，公共组件注入管线）：\n\n- 6 目标技能逐個判定（与 check_public_contract 同口径）：**绿** = 登记 + 注册表 + --what 跑通；**灰** = 未登记（公开「还没接」状态，促使开发时补上）；**红** = 已登记但契约失效（校验器 commit 前拦住，正常仓库不出现）\n- 灰显技能接入三步走：复制 scaffolds 模板 → 登记 skill_registry.yaml → 校验器全绿自动变绿\n- 红线：渲染只读 yaml + --what（不执行 fetch），不碰任何 .db 文件\n\n## 目录结构（#271 定稿）\n\n```\n技能互联\u002F                    # Base Skill（与公共组件平级）\n  SKILL.md                  # 本文件（Base 定义：定位 + 资产清单 + 接入步骤 + 强制依赖表述）\n  README.md                 # 使用手册（接入步骤 + 校验器 + 总览）【待 #273\u002FREADME ticket 产出后建】\n  CHANGELOG.md              # 版本变更记录（对齐公共组件）【待建】\n  skilllink.py              # 命令真身（公共 runner）：参数解析 + 统一信封 + --what【✅ #274 试点实现】\n  skill_registry.yaml       # 技能名 → 路径 + 注册表模块（Base 侧单一真相源）【✅ #274 落地 · 已登记 作息管家\u002F卡路里】\n  overview_render.py        # 互联总览渲染器（#276 · 状态判定 + 公共组件注入管线）\n  scaffolds\u002F\n    PUBLIC_DOMAINS.py.template  # 模板脚手架：新技能接入时复制改名 + 填注册表【✅ #274 落地】\n  templates\u002F\n    overview.html           # 互联总览模板（#276 落地 · 公共组件占位符）\n  docs\u002F\n    契约规范-v1.md           # 数据契约规范 v1（定稿 · 2026-08-11 · 用户逐条拍板）\n  references\u002F\n    combos.yaml             # 联动组合表（权威源 · 36 场景 × 11 字段 · #275 落库 v1.0）\n  tests\u002F\n    test_skilllink.py       # 命令\u002F信封守卫测试（temp_db 隔离约定）【✅ #274 落地 · 7 passed】\n    test_public_contract.py # 校验器单测（tmp registry · 10 场景）【✅ #273 落地】\n    test_overview.py        # 互联总览单测（tmp registry + 隔离输出）【✅ #276 落地 · 7 passed】\n```\n\n> 注册表约定（#271 拍板）：`skill_registry.yaml` **只存技能名 → 路径 + 注册表模块**，不存 DB 路径——skilllink 查询数据时各技能自己 `find_db_path` 动态解析（尊重 `SKILLS_DB_PATH` 环境变量，测试天然隔离，绝不写死生产路径）。yaml 由新技能接入时手工登记，校验器双向检查（技能存在没登记 \u002F 登记了没注册表 → 都红）。\n\n## 接入步骤（新技能）\n\n1. 复制 `scaffolds\u002FPUBLIC_DOMAINS.py.template` 到 `\u003C技能>\u002FPUBLIC_DOMAINS.py`，填自己的注册表\n2. 在 `skill_registry.yaml` 登记：技能名 → 路径 + 注册表模块\n3. 校验器跑绿（`check_public_contract`，进 pytest）\n4. 技能提供方就绪；消费方开发见各技能 ticket\n\n## 开发状态（2026-08-12）\n\n- ✅ #272 契约规范 v1 定稿（closed）\n- ✅ #271 Base 骨架设计（closed · 本文件 = 骨架定稿）\n- ✅ #273 校验器（closed · check_public_contract.py 落地）\n- ✅ #274 作息管家试点（closed 2026-08-11 · Base 最小实现 + sleep 域 + CS-02 全链路）\n- ✅ #275 联动组合表完整落库（closed 2026-08-12 · 36 场景定稿 `references\u002Fcombos.yaml` v1.0 + 卡路里 HELP 技能协同 36 入口）\n- ✅ #276 互联总览（closed 2026-08-13 · overview_render.py + templates\u002Foverview.html + 7 测试）\n- ⏳ #277-#282 六技能消费方开发（#272 已闭 → 解锁，逐个 grilling）\n\n## 决策地图\n\nwayfinder 决策地图 = GitHub #270（本技能 `.scratch\u002Fmap-body.md` 为本地草稿镜像）。\n","# 技能互联（Skill Link）· Base Skill v0.1（骨架定稿）\n\n> 基础设施型技能：系统加载时存在，不自动唤起、不在用户手动触发列表（对标 wayfinder）。\n> 中文名：技能互联 · 英文名：Skill Link · 命令：`skilllink-read`\n> 骨架定稿：2026-08-11 · #271 用户逐条拍板（目录结构 \u002F 强制依赖 \u002F 注册表形态 \u002F 校验机制）\n\n## 定位\n\n跨技能数据契约层。与公共组件平级：\n\n| Base | 职责 |\n|---|---|\n| 公共组件 | 渲染层（注入管线 + 控件库）—— HTML 长什么样 |\n| **技能互联（本）** | 数据层（数据契约）—— 技能之间怎么拿数据 |\n\n**目标**：卡路里 \u002F 饼干记账 \u002F 作息管家 \u002F 居家管家 \u002F 备忘录 \u002F 私家大厨 6 技能全部打通（每技能既是提供方也是消费方）。\n\n## 强制依赖（#271 拍板）\n\n- **语义**：任何技能**开发数据联动（提供\u002F消费）前，必须先装本基础包**。纯单机技能（无联动）不强制。\n- **闸门**：`check_public_contract` 校验器进各技能 pytest——未装\u002F未接入 = 测试红 = commit 被拒（硬约束，AI 不可能无视）。\n- **发现机制（三层探测）**：\n  1. 探测 Base 本身：`技能互联\u002F` 目录 + `skilllink.py` + `skill_registry.yaml` 存在？缺失 → 红：「未安装技能互联，先装本基础包」\n  2. 探测已接入技能：registry 列出的技能，`PUBLIC_DOMAINS` 注册表存在且符合契约？缺失 → 红\n  3. 运行时（skilllink-read 被调用）：查未接入技能 → 信封 ok=false「未接入」→ AI 降级（契约 v1 §6）\n\n## 核心概念\n\n- **执行者 = AI**：用户复制 prompt → AI 执行；AI 读契约 → 调 skilllink-read → 理解\u002F合并 → 注入 HTML\n- **注册表**：每技能声明「我能提供什么」（域名称\u002F中文名\u002F一句话说明\u002F字段列表）—— 技能侧只放 `PUBLIC_DOMAINS.py`\n- **统一信封**：所有技能返回同一盒子（办成了\u002F来自哪个技能\u002F查的什么\u002F查询情况\u002F数据）\n- **字段类型 4 种**：数字 \u002F 日期 \u002F 文字 \u002F 自由文本（text，AI 读黑盒 + 用户确认）\n- **命令**：`skilllink-read --skill \u003C技能> --domain \u003C域> --from \u003C开始> --to \u003C结束>`（--what 问能力）\n- **命令真身住本 Base**：`skilllink.py`（公共 runner：参数解析 + 统一信封 + --what\u002F--contract），各技能只填注册表，不重复实现\n\n## 执行联动（#275 组合表落库后 · 2026-08-12 补）\n\n**当用户发起一个联动场景（唤醒词含「协同\u002F联动」或命中技能 HELP 的技能协同分类）时，AI 按以下顺序执行：**\n\n1. **读组合表**：打开 `references\u002Fcombos.yaml`（权威源 · 36 场景 × 11 字段），按唤醒词找到对应场景（id \u002F name \u002F wake_word 匹配）\n2. **读场景字段**：从该场景条目取 external_ww（外部技能怎么问）、external_data（要什么数据）、calorie_side（卡路里侧出什么）、merge_logic（怎么合并）、present（怎么呈现）\n3. **查外部技能数据**：\n   - 已接入（registry 有登记）→ 调 `skilllink-read --skill \u003C技能> --domain \u003C域> --from \u003C开始> --to \u003C结束>`\n   - 未接入 → 降级：按 external_ww 加载对方技能对话式查，或如实告知「该技能未接入」\n4. **合并呈现**：按 merge_logic 对齐两边数据，按 present 渲染 HTML（走公共组件），降级场景标注「近似」交用户确认\n\n> 组合表是**需求语义**（做什么\u002F怎么合并），注册表是**实现声明**（能提供什么域）——各司其职，不互相替代。改场景字段改 combos.yaml（勿手改派生文件 11-技能协同.json）。\n\n## 互联总览（#276 · 2026-08-13）\n\n用户\u002F开发问「哪些技能接入了」时，AI 渲染 `overview_render.py`（输出\n`$SKILLS_DB_PATH\u002Fskilllink_html\u002F技能互联_HELP_\u003CTS>.html`，公共组件注入管线）：\n\n- 6 目标技能逐個判定（与 check_public_contract 同口径）：**绿** = 登记 + 注册表 + --what 跑通；**灰** = 未登记（公开「还没接」状态，促使开发时补上）；**红** = 已登记但契约失效（校验器 commit 前拦住，正常仓库不出现）\n- 灰显技能接入三步走：复制 scaffolds 模板 → 登记 skill_registry.yaml → 校验器全绿自动变绿\n- 红线：渲染只读 yaml + --what（不执行 fetch），不碰任何 .db 文件\n\n## 目录结构（#271 定稿）\n\n```\n技能互联\u002F                    # Base Skill（与公共组件平级）\n  SKILL.md                  # 本文件（Base 定义：定位 + 资产清单 + 接入步骤 + 强制依赖表述）\n  README.md                 # 使用手册（接入步骤 + 校验器 + 总览）【待 #273\u002FREADME ticket 产出后建】\n  CHANGELOG.md              # 版本变更记录（对齐公共组件）【待建】\n  skilllink.py              # 命令真身（公共 runner）：参数解析 + 统一信封 + --what【✅ #274 试点实现】\n  skill_registry.yaml       # 技能名 → 路径 + 注册表模块（Base 侧单一真相源）【✅ #274 落地 · 已登记 作息管家\u002F卡路里】\n  overview_render.py        # 互联总览渲染器（#276 · 状态判定 + 公共组件注入管线）\n  scaffolds\u002F\n    PUBLIC_DOMAINS.py.template  # 模板脚手架：新技能接入时复制改名 + 填注册表【✅ #274 落地】\n  templates\u002F\n    overview.html           # 互联总览模板（#276 落地 · 公共组件占位符）\n  docs\u002F\n    契约规范-v1.md           # 数据契约规范 v1（定稿 · 2026-08-11 · 用户逐条拍板）\n  references\u002F\n    combos.yaml             # 联动组合表（权威源 · 36 场景 × 11 字段 · #275 落库 v1.0）\n  tests\u002F\n    test_skilllink.py       # 命令\u002F信封守卫测试（temp_db 隔离约定）【✅ #274 落地 · 7 passed】\n    test_public_contract.py # 校验器单测（tmp registry · 10 场景）【✅ #273 落地】\n    test_overview.py        # 互联总览单测（tmp registry + 隔离输出）【✅ #276 落地 · 7 passed】\n```\n\n> 注册表约定（#271 拍板）：`skill_registry.yaml` **只存技能名 → 路径 + 注册表模块**，不存 DB 路径——skilllink 查询数据时各技能自己 `find_db_path` 动态解析（尊重 `SKILLS_DB_PATH` 环境变量，测试天然隔离，绝不写死生产路径）。yaml 由新技能接入时手工登记，校验器双向检查（技能存在没登记 \u002F 登记了没注册表 → 都红）。\n\n## 接入步骤（新技能）\n\n1. 复制 `scaffolds\u002FPUBLIC_DOMAINS.py.template` 到 `\u003C技能>\u002FPUBLIC_DOMAINS.py`，填自己的注册表\n2. 在 `skill_registry.yaml` 登记：技能名 → 路径 + 注册表模块\n3. 校验器跑绿（`check_public_contract`，进 pytest）\n4. 技能提供方就绪；消费方开发见各技能 ticket\n\n## 开发状态（2026-08-12）\n\n- ✅ #272 契约规范 v1 定稿（closed）\n- ✅ #271 Base 骨架设计（closed · 本文件 = 骨架定稿）\n- ✅ #273 校验器（closed · check_public_contract.py 落地）\n- ✅ #274 作息管家试点（closed 2026-08-11 · Base 最小实现 + sleep 域 + CS-02 全链路）\n- ✅ #275 联动组合表完整落库（closed 2026-08-12 · 36 场景定稿 `references\u002Fcombos.yaml` v1.0 + 卡路里 HELP 技能协同 36 入口）\n- ✅ #276 互联总览（closed 2026-08-13 · overview_render.py + templates\u002Foverview.html + 7 测试）\n- ⏳ #277-#282 六技能消费方开发（#272 已闭 → 解锁，逐个 grilling）\n\n## 决策地图\n\nwayfinder 决策地图 = GitHub #270（本技能 `.scratch\u002Fmap-body.md` 为本地草稿镜像）。\n",{"name":5,"description":41,"disable-model-invocation":42},"跨技能数据契约层 Base Skill · Skill Link。 让各技能通过 skilllink-read 命令对外暴露\u002F读取数据（注册表 + 统一信封）。 提供 skill_registry \u002F check_public_contract 校验器 \u002F 互联总览。 任何技能开发数据联动（提供\u002F消费）前必须先装本基础包（强制依赖）。\n",true,"main","5b2b73ce2fbb69cd70597cfbbf24c99bc9e94b4c",1,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS","https:\u002F\u002Fgithub.com\u002FFeatherHunter","The Boy, The Man, The Human.","2026-09-12 20:33:55",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":42},[52,55,58],{"tool":53,"command":54},"npx","npx skills add FeatherHunter\u002FSKILLS --skill \"技能互联\"",{"tool":56,"command":57},"bunx","bunx skills add FeatherHunter\u002FSKILLS --skill \"技能互联\"",{"tool":59,"command":60},"pnpm","pnpm dlx skills add FeatherHunter\u002FSKILLS --skill \"技能互联\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002FSKILL.md",[63,69,75,79,83,89,93,97,101,105,109],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"check_public_contract.py","SCRIPT","脚本",10696,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Fcheck_public_contract.py",{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"docs\u002F契约规范-v1.md","REFERENCE","参考文档",4182,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Fdocs\u002F契约规范-v1.md",{"path":76,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":77,"sourceHtmlUrl":78},"overview_render.py",13346,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Foverview_render.py",{"path":80,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fcombos.yaml",20451,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Freferences\u002Fcombos.yaml",{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"scaffolds\u002FPUBLIC_DOMAINS.py.template","OTHER","其他",2386,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Fscaffolds\u002FPUBLIC_DOMAINS.py.template",{"path":90,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":91,"sourceHtmlUrl":92},"skill_registry.yaml",1151,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Fskill_registry.yaml",{"path":94,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":95,"sourceHtmlUrl":96},"skilllink.py",7593,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Fskilllink.py",{"path":98,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":99,"sourceHtmlUrl":100},"templates\u002Foverview.html",12615,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Ftemplates\u002Foverview.html",{"path":102,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":103,"sourceHtmlUrl":104},"tests\u002Ftest_overview.py",7414,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Ftests\u002Ftest_overview.py",{"path":106,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":107,"sourceHtmlUrl":108},"tests\u002Ftest_public_contract.py",6535,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Ftests\u002Ftest_public_contract.py",{"path":110,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":111,"sourceHtmlUrl":112},"tests\u002Ftest_skilllink.py",5845,"https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F技能互联\u002Ftests\u002Ftest_skilllink.py",[114,134,143,152,162,168],{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":36},"01M71JPWVNC5JZ2FD4CSR3SZC1","饼干记账","记账技能。写入类:记支出、记收入、拍账单、批量录入、改记录、撤销、恢复、记报销、记退款、记借出、记借入、记收回、记偿还、记分期。查询类:查今天、查某天、查月、查区间、查分类、搜备注、查标签、查账户、查账本、查欠款、查待报销。分析类:看月度、看总览、看分类、看对比、看趋势、看大额、做统计、看洞察、看借贷。目标\u002F账户\u002F联动:设定预算、看预算、设定目标、看目标、新增账户、改账户、账户转账、看账户汇总、买东西联动、吃饭联动。**所有查询\u002F分析类唤醒词默认 invoke HTML 工作流**(scripts\u002Fbill_inject.py + templates),写入类保持文字回执。能力速查:说「饼干记账 HELP」\u002F「查帮助」\u002F「能做什么」。完整 70 个唤醒词见 references\u002F路由表.md","https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F饼干记账\u002FSKILL.md",[],[116,121,122,123,124,125,126,127,128,129,130,131,132,133],"记账","invoke","templates","文字","预算","账单","统计","收入","scripts","html","支出","help","references",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":36},"01M71JPS100K4E2JN8R3B0F9NR","贴心助理","真实助手 - 主动分析用户状态，关心用户，提供帮助与提醒。不偷懒地联动所有技能，真正像个朋友一样陪伴。","https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F贴心助理\u002FSKILL.md",[],[136,141,142],"陪伴","朋友",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":36},"01M71JPPN0WZ1ARA081J0JDNPC","美团","安装美团旅游技能(meituan-travel)向导 - 检查 mtskills 商店并安装 meituan-travel","https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F美团\u002FSKILL.md",[],[145,150,151],"meituan","travel",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":36},"01M71JPN921TSX62DXEFY1B8FJ","网易云音乐","安装网易云音乐 CLI 工具(@music163\u002Fncm-cli) - 通过 npm 全局安装","https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F网易云音乐\u002FSKILL.md",[],[154,159,160,161],"工具","cli","npm",{"skillNo":163,"name":164,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":36},"01M71JPF82PYTK0NYMJF8Y9E48","私家大厨","https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F私家大厨\u002FSKILL.md",[],[164],{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":36},"01M71JPCK6Z5NT3G258NFKEJGG","目录树","目录树技能 - 递归扫描给定目录，输出所有目录和文件的树状结构清单","https:\u002F\u002Fgithub.com\u002FFeatherHunter\u002FSKILLS\u002Fblob\u002Fmain\u002F目录树\u002FSKILL.md",[],[175,170,176,177],"目录","文件","文件导航"]