[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70FTSQFC2F42P35N65GZ1VW":3,"skill-same:01M70FTSQFC2F42P35N65GZ1VW":54},{"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":18,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M70FTSQFC2F42P35N65GZ1VW","adopt-from-external-repo",null,"调研开源 repo 看「可偷什么」时，用这个流程——克隆读全源、按 ROI 排清单、审视现有系统、偷抽象不偷代码、融入现有机制不做加法。Use when 用户发 GitHub 链接 + 问「可以偷师 \u002F 借鉴什么」，或你提议要参考外部项目。","KarryViber\u002FOrb","KarryViber","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F223777671?v=4","01M70FTGZ485AP97T3CJCYW1Z2","Karryz","01M70FTGZRWF3FEQBYZ3JWTSPR",66,"MIT","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fadopt-from-external-repo\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"adopt","repo","adopt from external repo","github","roi","use","when","user","2026-11-10 10:12:30",false,"---\nname: adopt-from-external-repo\ndescription: 调研开源 repo 看「可偷什么」时，用这个流程——克隆读全源、按 ROI 排清单、审视现有系统、偷抽象不偷代码、融入现有机制不做加法。Use when 用户发 GitHub 链接 + 问「可以偷师 \u002F 借鉴什么」，或你提议要参考外部项目。\nprovenance: user-authored\n---\n\n# Adopt From External Repo — 抽象收敛而非功能堆砌\n\n## 核心原则\n\n> *偷代码是加法，偷抽象是结构性收敛。*\n\n当现有系统已经有一套机制在转（Orb 有 18 cron \u002F 4 文档轴 \u002F holographic \u002F handlers），加功能几乎总是错的——应该找「把现有机制闭环起来的缺失抽象」。\n\n## 五步工作流\n\n### 1. 克隆 + 读全源（不要只看 README）\n\n```bash\ncd \u002Ftmp && rm -rf \u003Cname> && git clone --depth 1 \u003Curl>\nwc -l \u003Cname>\u002F**\u002F*.{py,js,ts,md}     # 先知道总量\n```\n\n小仓库（\u003C2000 行）全部读。大仓库按 README 的核心模块图挑 3-5 个关键文件。\n\n### 2. 列「可偷清单」，按 ROI 初排\n\n按什么标准判 ROI：\n- *P0 立即可落地* — 一段可复用的工具函数 \u002F 一个简单 pattern\n- *P1 新能力* — 当前系统没有的机制（发散采样 \u002F lifecycle \u002F 反馈通道）\n- *P2 治理增强* — doctor \u002F schema \u002F 日志\n- *P3 小增强* — 命名 \u002F 模板 \u002F 辅助\n\n### 3. *审视自身系统*（最关键的一步，别跳）\n\n*盘 3 件事*：\n- 有多少类似机制已在跑？（cron 数 \u002F 文档轴数 \u002F 积累的候选池 \u002F 已有 handler）\n- 哪些是「沉淀但不晋升」「产出但不消费」「存了但不打分」的*断点*？\n- 偷的清单里哪些是**复制**现有（不做），哪些是**补断点**（做）？\n\n*运行真实命令查数据*（见 lesson `data-reality-before-design`）：\n```bash\nwc -l \u003Cpool>              # 候选池真实行数\nsqlite3 \u003Cdb> \"SELECT COUNT(*) WHERE ...\"   # DB 当前状态\nls \u003Ccron-jobs>            # 现有调度\n```\n\n### 4. 翻转清单：从「加法」收敛为「一件结构性事」\n\n最终输出*不是*偷来清单的子集，*是*一个把现有 N 处断点连起来的抽象。剩下的清单条目分类为：\n- ✅ *做*（1-2 件结构性）\n- 🔧 *小补丁*（健壮性级）\n- ❌ *不做*（加法 \u002F 已有功能重复 \u002F 概念负担）\n\n每条「不做」都要写出*为什么不做*（避免未来某天又想加）。\n\n### 5. 融入而非叠加\n\n*铁律*：零新 cron、零新文档轴、零新概念。新逻辑插进现有 cron 的 prompt \u002F 现有 handler \u002F 现有 pipeline。\n\n实战手法：\n- 新功能接进已存在但空转的基础设施（如 `skill-candidates.jsonl` 空着就直接用它）\n- 周期性任务挂在现有 cron 的附加步骤，用「失败不阻塞主体」模式\n- Slack 按钮复用 `handlers\u002F` 框架（新增 handler 脚本 + action_id）\n\n## 反模式\n\n- ❌ 读 README 就开始列清单（源码里的约束 \u002F 边角机制全漏掉）\n- ❌ 直接抄单个脚本（加了新 cron、新文档轴、新概念负担）\n- ❌ 跳过「审视自身」→ 叠加式膨胀\n- ❌ 把「偷清单」本身当交付（应该是收敛后的一件结构性事）\n\n## 验收标准\n\n出结果时能清晰回答：\n- *真正做的那一件* 是什么？解决哪 N 处断点？\n- *不做的每条* 的理由是什么？\n- *改动文件数* 和 *新增概念数* 分别是多少？（后者应该接近 0）\n\n## 案例\n\n本 profile 2026-04-23 的 *six6 → Seed Lifecycle* 调研就是典型落地：\n- six6 6 模块 906 行全读\n- 列出 9 条可偷（deadletter \u002F atomic write \u002F daydream \u002F lifecycle \u002F doctor \u002F schema \u002F pulse 语义 \u002F evolution.md \u002F tag 输出）\n- 盘自身：Orb 有 18 cron \u002F 4 文档轴 \u002F 3 候选池但都不闭环 \u002F trust_score = 0 的隐藏 bug\n- 收敛为：*Seed Lifecycle 抽象* 一件事，把 `skill-candidates + evolution\u002Fsuggestions + idea` 三池用 maturity + 浇水 + 晋升统一\n- 零新 cron（复用 01:15 自进化 + 周一 10:30 归档建议周检），零新 handler 框架（复用现有）\n","# Adopt From External Repo — 抽象收敛而非功能堆砌\n\n## 核心原则\n\n> *偷代码是加法，偷抽象是结构性收敛。*\n\n当现有系统已经有一套机制在转（Orb 有 18 cron \u002F 4 文档轴 \u002F holographic \u002F handlers），加功能几乎总是错的——应该找「把现有机制闭环起来的缺失抽象」。\n\n## 五步工作流\n\n### 1. 克隆 + 读全源（不要只看 README）\n\n```bash\ncd \u002Ftmp && rm -rf \u003Cname> && git clone --depth 1 \u003Curl>\nwc -l \u003Cname>\u002F**\u002F*.{py,js,ts,md}     # 先知道总量\n```\n\n小仓库（\u003C2000 行）全部读。大仓库按 README 的核心模块图挑 3-5 个关键文件。\n\n### 2. 列「可偷清单」，按 ROI 初排\n\n按什么标准判 ROI：\n- *P0 立即可落地* — 一段可复用的工具函数 \u002F 一个简单 pattern\n- *P1 新能力* — 当前系统没有的机制（发散采样 \u002F lifecycle \u002F 反馈通道）\n- *P2 治理增强* — doctor \u002F schema \u002F 日志\n- *P3 小增强* — 命名 \u002F 模板 \u002F 辅助\n\n### 3. *审视自身系统*（最关键的一步，别跳）\n\n*盘 3 件事*：\n- 有多少类似机制已在跑？（cron 数 \u002F 文档轴数 \u002F 积累的候选池 \u002F 已有 handler）\n- 哪些是「沉淀但不晋升」「产出但不消费」「存了但不打分」的*断点*？\n- 偷的清单里哪些是**复制**现有（不做），哪些是**补断点**（做）？\n\n*运行真实命令查数据*（见 lesson `data-reality-before-design`）：\n```bash\nwc -l \u003Cpool>              # 候选池真实行数\nsqlite3 \u003Cdb> \"SELECT COUNT(*) WHERE ...\"   # DB 当前状态\nls \u003Ccron-jobs>            # 现有调度\n```\n\n### 4. 翻转清单：从「加法」收敛为「一件结构性事」\n\n最终输出*不是*偷来清单的子集，*是*一个把现有 N 处断点连起来的抽象。剩下的清单条目分类为：\n- ✅ *做*（1-2 件结构性）\n- 🔧 *小补丁*（健壮性级）\n- ❌ *不做*（加法 \u002F 已有功能重复 \u002F 概念负担）\n\n每条「不做」都要写出*为什么不做*（避免未来某天又想加）。\n\n### 5. 融入而非叠加\n\n*铁律*：零新 cron、零新文档轴、零新概念。新逻辑插进现有 cron 的 prompt \u002F 现有 handler \u002F 现有 pipeline。\n\n实战手法：\n- 新功能接进已存在但空转的基础设施（如 `skill-candidates.jsonl` 空着就直接用它）\n- 周期性任务挂在现有 cron 的附加步骤，用「失败不阻塞主体」模式\n- Slack 按钮复用 `handlers\u002F` 框架（新增 handler 脚本 + action_id）\n\n## 反模式\n\n- ❌ 读 README 就开始列清单（源码里的约束 \u002F 边角机制全漏掉）\n- ❌ 直接抄单个脚本（加了新 cron、新文档轴、新概念负担）\n- ❌ 跳过「审视自身」→ 叠加式膨胀\n- ❌ 把「偷清单」本身当交付（应该是收敛后的一件结构性事）\n\n## 验收标准\n\n出结果时能清晰回答：\n- *真正做的那一件* 是什么？解决哪 N 处断点？\n- *不做的每条* 的理由是什么？\n- *改动文件数* 和 *新增概念数* 分别是多少？（后者应该接近 0）\n\n## 案例\n\n本 profile 2026-04-23 的 *six6 → Seed Lifecycle* 调研就是典型落地：\n- six6 6 模块 906 行全读\n- 列出 9 条可偷（deadletter \u002F atomic write \u002F daydream \u002F lifecycle \u002F doctor \u002F schema \u002F pulse 语义 \u002F evolution.md \u002F tag 输出）\n- 盘自身：Orb 有 18 cron \u002F 4 文档轴 \u002F 3 候选池但都不闭环 \u002F trust_score = 0 的隐藏 bug\n- 收敛为：*Seed Lifecycle 抽象* 一件事，把 `skill-candidates + evolution\u002Fsuggestions + idea` 三池用 maturity + 浇水 + 晋升统一\n- 零新 cron（复用 01:15 自进化 + 周一 10:30 归档建议周检），零新 handler 框架（复用现有）\n",{"name":5,"provenance":32,"description":7},"user-authored","main","cb33813b8990e4602b7c2d501659f77ebba5999f","profiles\u002F.claude\u002Fskills\u002Fadopt-from-external-repo",8,"https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb","https:\u002F\u002Fgithub.com\u002FKarryViber","2026-05-14 18:44:03",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add KarryViber\u002FOrb --skill adopt-from-external-repo",{"tool":46,"command":47},"bunx","bunx skills add KarryViber\u002FOrb --skill adopt-from-external-repo",{"tool":49,"command":50},"pnpm","pnpm dlx skills add KarryViber\u002FOrb --skill adopt-from-external-repo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fadopt-from-external-repo\u002FSKILL.md",true,[],[55,89,103,126,145,158],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":59,"licenseFileUrl":60,"sourceHtmlUrl":61,"categories":62,"keywords":71,"publishedAt":27},"01M70G0637CFCHAY3DYTMYS07K","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[63,68],{"categoryNo":64,"categoryName":65,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":69,"categoryName":70,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000009","前端开发",[72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88],"webapp","testing","webapp testing","playwright","screenshots","ui","behavior","web","for","with","browser","logs","toolkit","debugging","frontend","local","applications",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":27},"01M70FZXCJ5AHJ3JW2Q12F04TA","vendor-doc-actionability","对外合作文档（交付文档 \u002F POC 文档 \u002F Solution Doc \u002F 提案书）必须为每个「需对方执行」的动作写清具体操作入口（URL \u002F 工单系统 \u002F 脚本路径 \u002F 联系人 + 联系方式 \u002F 步骤编号）。Use when 给客户、vendor、合作方写交付文档、POC 文档、Solution Doc、提案书；或检视已有对外文档是否抽象到无法执行。","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fvendor-doc-actionability\u002FSKILL.md",[],[96,97,98,99,100,24,101,25,102,26],"vendor","doc","vendor doc actionability","poc","文档","提案","URL",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":117,"publishedAt":27},"01M70FZARY5P7VRJKVFATTCVX9","vendor-api-param-validation","第三方 API \u002F SDK 集成开工前，强制先列参数 checklist 并对照官方文档逐项验证（名称 \u002F 类型 \u002F 必填 \u002F 默认 \u002F 上限），通过后再编码——不是「写完再调通」。Use when 新接 vendor API\u002FSDK（Slack \u002F LongPort \u002F freee \u002F LLM API 等）、既有集成追加新 endpoint 或新字段、用户说「调通某接口」「接入 X」「集成 X」。","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fvendor-api-param-validation\u002FSKILL.md",[109,112],{"categoryNo":110,"categoryName":111,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[118,119,96,120,121,122,123,100,124,24,25,26,125],"vendor api param validation","validation","api","slack","sdk","llm api","checklist","endpoint",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":133,"publishedAt":27},"01M70FYW81TRN7VAS8WTN08STH","truth-ladder","状态放行三层阶梯（attempted \u002F observed \u002F confirmed）—— 汇报任务、API、命令、消息或外部动作状态时强制分层，避免把\"动作已发起\"误写成\"结果已达成\"。Use when 准备写「任务已完成」「API 返回成功」「exit code 0」「用户已收到」「ok:true」类状态汇报；或在 cron 报告 \u002F Slack 回报 \u002F project status \u002F receipt 中表达完成度时。","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Ftruth-ladder\u002FSKILL.md",[132],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[134,135,136,120,137,25,24,138,139,140,141,142,143,121,144],"ladder","truth ladder","ok","code","exit","true","status","报告","cron","project","project status",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":27},"01M70FYTESF5WQYBVRX8BXYJQF","thread-object-realignment","长 thread 切题后的对象重定协议——thread 历史 ≥5 条且检测到切题信号时，回复前必做「用户最后显式问题对象 vs 待发回复对象」一致性校验，不一致则改写或反问。Use when Slack thread 历史 ≥5 条且当前用户消息出现切题信号（主题词突变、问句指向新实体、时间线跳跃、出现「另外」「话说」「回到 X」「换个话题」等切题语，或 ≥3 turn 后用户显式问题对象与最近 assistant 回复对象不同）。","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fthread-object-realignment\u002FSKILL.md",[],[152,153,154,121,155,26,156,25,157,24],"object","thread","thread object realignment","校验","slack thread","assistant",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":59,"licenseFileUrl":162,"sourceHtmlUrl":163,"categories":164,"keywords":168,"publishedAt":27},"01M70FYFC1Y2J16FJFEFQ5WYRE","theme-factory","Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors\u002Ffonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Ftheme-factory\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Ftheme-factory\u002FSKILL.md",[165],{"categoryNo":166,"categoryName":167,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000015","视觉设计",[169,170,171,172,173,174,175,176,81,177,178,84,179,180,181,182,183,80,184,185],"theme factory","factory","theme","apply","styling","fly","generate","artifact","fonts","can","artifacts","you","themes","pages","landing","slides","SET"]