[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70FYTESF5WQYBVRX8BXYJQF":3,"skill-same:01M70FYTESF5WQYBVRX8BXYJQF":56},{"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":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M70FYTESF5WQYBVRX8BXYJQF","thread-object-realignment",null,"长 thread 切题后的对象重定协议——thread 历史 ≥5 条且检测到切题信号时，回复前必做「用户最后显式问题对象 vs 待发回复对象」一致性校验，不一致则改写或反问。Use when Slack thread 历史 ≥5 条且当前用户消息出现切题信号（主题词突变、问句指向新实体、时间线跳跃、出现「另外」「话说」「回到 X」「换个话题」等切题语，或 ≥3 turn 后用户显式问题对象与最近 assistant 回复对象不同）。","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\u002Fthread-object-realignment\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28],"object","thread","thread object realignment","assistant","slack","校验","user","use","slack thread","when","2026-11-10 10:12:30",false,"---\nname: thread-object-realignment\ndescription: 长 thread 切题后的对象重定协议——thread 历史 ≥5 条且检测到切题信号时，回复前必做「用户最后显式问题对象 vs 待发回复对象」一致性校验，不一致则改写或反问。Use when Slack thread 历史 ≥5 条且当前用户消息出现切题信号（主题词突变、问句指向新实体、时间线跳跃、出现「另外」「话说」「回到 X」「换个话题」等切题语，或 ≥3 turn 后用户显式问题对象与最近 assistant 回复对象不同）。\nprovenance: user-authored\n---\n\n# Thread 对象重定（Realignment）协议\n\n长 thread 切题后，agent 容易沿最近技术支线惯性续答，导致回复对象失焦。本 skill 给出切题信号识别 + 一致性校验 + 改写\u002F反问模板。\n\n## When to Use\n\n满足以下**任一**条件时召回：\n- Slack thread 历史 ≥5 条\n- 当前用户消息含切题信号词（见下）\n- 最近 ≥3 turn 都在某技术支线，但当前用户消息的对象不在那条线上\n\n短 thread（≤4 条）\u002F 单一对象的连续追问 → 跳过本协议。\n\n## 切题信号识别\n\n**显式信号（高置信度）：**\n- 转折词：「另外」「话说」「对了」「顺便」「换个话题」\n- 重定向：「回到 X」「先不说 Y」「我们回 Z」\n- 元问句：「我刚才问的是…」「你没回答…」「我说的是…」\n\n**隐式信号（中置信度，需结合上下文判断）：**\n- 主题词突变：thread 一直在讨论 A，当前消息出现完全不相干的 B 实体（人名\u002F项目名\u002F系统名）\n- 问句指向新实体：用户用具体名词指代但前文没出现过该名词\n- 时间线跳跃：thread 在讨论今天，用户突然问昨天\u002F上周\n- 编号引用错位：用户说「1」「2」但当前 thread 中编号语义已变\n\n**陷阱（看似切题实则未切题）：**\n- 用「这个」「那个」指代最近对象 → 不是切题，按 § 上下文先行 第 3 条处理\n- 在同一对象下追问细节 → 不是切题，正常深入\n\n## 一致性校验流程（回复前必做）\n\n1. **抽对象**：从「用户最后一条消息」抽出**显式问题对象**（is what \u002F who \u002F which）。注意是「最后一条」，不是 thread 整体主题\n2. **看回复**：当前草稿回复在讨论的对象是什么\n3. **比对**：\n   - 一致 → 正常发出\n   - 不一致 → **改写或反问**，不要带过渡句蒙混（如「关于这个，顺便也说下…」）\n\n## 改写 \u002F 反问模板\n\n**完全不一致 → 改写**：直接回答用户最后显式问题，丢掉惯性支线内容。如要保留可放结尾一行「（关于刚才 X 支线，要继续吗？）」交给用户决定\n\n**不确定切题对象 → 反问**：\n- 「你这条问的是 A 还是 B？thread 上文有提到两个对象，怕答错」\n- 「『1』『2』指的是 [候选 A] 还是 [候选 B]？」\n\n**部分相关 → 分层回复**：先答用户最后显式问题（主体），再用一句话挂上下文支线（备注）\n\n## Gotchas\n\n- **别假装\"对象一致\"**：明知道切题了还硬接最近支线 + 加过渡句，比直接说\"我刚才偏了\"更糟。Karry 比较敏感\n- **反问不是逃避**：但反问要有具体候选项（A\u002FB），不要泛泛问「你指什么」\n- **thread 历史读全**：不能只看最近 1-2 条。切题判断需要看用户最后显式问题，可能是 3-5 条之前的元问句\n- **不在每个 turn 都做校验**：短 thread \u002F 同对象追问跳过，否则反而拖慢响应。trigger 严格按 § When to Use\n- **代码任务里编号歧义最容易翻车**：「1 改一下」在长 thread 里可能指列表项 1 \u002F 第一步 \u002F 选项 1，三者完全不同对象\n","# Thread 对象重定（Realignment）协议\n\n长 thread 切题后，agent 容易沿最近技术支线惯性续答，导致回复对象失焦。本 skill 给出切题信号识别 + 一致性校验 + 改写\u002F反问模板。\n\n## When to Use\n\n满足以下**任一**条件时召回：\n- Slack thread 历史 ≥5 条\n- 当前用户消息含切题信号词（见下）\n- 最近 ≥3 turn 都在某技术支线，但当前用户消息的对象不在那条线上\n\n短 thread（≤4 条）\u002F 单一对象的连续追问 → 跳过本协议。\n\n## 切题信号识别\n\n**显式信号（高置信度）：**\n- 转折词：「另外」「话说」「对了」「顺便」「换个话题」\n- 重定向：「回到 X」「先不说 Y」「我们回 Z」\n- 元问句：「我刚才问的是…」「你没回答…」「我说的是…」\n\n**隐式信号（中置信度，需结合上下文判断）：**\n- 主题词突变：thread 一直在讨论 A，当前消息出现完全不相干的 B 实体（人名\u002F项目名\u002F系统名）\n- 问句指向新实体：用户用具体名词指代但前文没出现过该名词\n- 时间线跳跃：thread 在讨论今天，用户突然问昨天\u002F上周\n- 编号引用错位：用户说「1」「2」但当前 thread 中编号语义已变\n\n**陷阱（看似切题实则未切题）：**\n- 用「这个」「那个」指代最近对象 → 不是切题，按 § 上下文先行 第 3 条处理\n- 在同一对象下追问细节 → 不是切题，正常深入\n\n## 一致性校验流程（回复前必做）\n\n1. **抽对象**：从「用户最后一条消息」抽出**显式问题对象**（is what \u002F who \u002F which）。注意是「最后一条」，不是 thread 整体主题\n2. **看回复**：当前草稿回复在讨论的对象是什么\n3. **比对**：\n   - 一致 → 正常发出\n   - 不一致 → **改写或反问**，不要带过渡句蒙混（如「关于这个，顺便也说下…」）\n\n## 改写 \u002F 反问模板\n\n**完全不一致 → 改写**：直接回答用户最后显式问题，丢掉惯性支线内容。如要保留可放结尾一行「（关于刚才 X 支线，要继续吗？）」交给用户决定\n\n**不确定切题对象 → 反问**：\n- 「你这条问的是 A 还是 B？thread 上文有提到两个对象，怕答错」\n- 「『1』『2』指的是 [候选 A] 还是 [候选 B]？」\n\n**部分相关 → 分层回复**：先答用户最后显式问题（主体），再用一句话挂上下文支线（备注）\n\n## Gotchas\n\n- **别假装\"对象一致\"**：明知道切题了还硬接最近支线 + 加过渡句，比直接说\"我刚才偏了\"更糟。Karry 比较敏感\n- **反问不是逃避**：但反问要有具体候选项（A\u002FB），不要泛泛问「你指什么」\n- **thread 历史读全**：不能只看最近 1-2 条。切题判断需要看用户最后显式问题，可能是 3-5 条之前的元问句\n- **不在每个 turn 都做校验**：短 thread \u002F 同对象追问跳过，否则反而拖慢响应。trigger 严格按 § When to Use\n- **代码任务里编号歧义最容易翻车**：「1 改一下」在长 thread 里可能指列表项 1 \u002F 第一步 \u002F 选项 1，三者完全不同对象\n",{"name":5,"provenance":34,"description":7},"user-authored","main","cb33813b8990e4602b7c2d501659f77ebba5999f","profiles\u002F.claude\u002Fskills\u002Fthread-object-realignment",8,"https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb","https:\u002F\u002Fgithub.com\u002FKarryViber","2026-05-14 18:44:03",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add KarryViber\u002FOrb --skill thread-object-realignment",{"tool":48,"command":49},"bunx","bunx skills add KarryViber\u002FOrb --skill thread-object-realignment",{"tool":51,"command":52},"pnpm","pnpm dlx skills add KarryViber\u002FOrb --skill thread-object-realignment","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fthread-object-realignment\u002FSKILL.md",true,[],[57,91,105,127,146,174],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":61,"licenseFileUrl":62,"sourceHtmlUrl":63,"categories":64,"keywords":73,"publishedAt":29},"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",[65,70],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":71,"categoryName":72,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000009","前端开发",[74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],"webapp","testing","webapp testing","ui","screenshots","browser","behavior","web","playwright","with","for","applications","local","frontend","debugging","toolkit","logs",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":29},"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",[],[98,99,100,101,102,26,103,28,104,25],"vendor","doc","vendor doc actionability","文档","poc","提案","URL",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":119,"publishedAt":29},"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",[111,114],{"categoryNo":112,"categoryName":113,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":115,"categoryName":116,"taxonomyType":117,"taxonomyTypeDesc":118},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[120,121,122,98,28,123,25,26,124,101,125,23,126],"api","vendor api param validation","validation","endpoint","checklist","llm api","sdk",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":134,"publishedAt":29},"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",[133],{"categoryNo":115,"categoryName":116,"taxonomyType":117,"taxonomyTypeDesc":118},[135,136,137,138,120,139,28,26,140,141,142,143,144,23,145],"ladder","truth ladder","status","cron","code","exit","true","报告","ok","project","project status",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":61,"licenseFileUrl":150,"sourceHtmlUrl":151,"categories":152,"keywords":156,"publishedAt":29},"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",[153],{"categoryNo":154,"categoryName":155,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000015","视觉设计",[157,158,159,160,161,83,162,163,89,164,165,166,167,168,169,84,170,171,172,173],"theme factory","factory","theme","themes","artifact","fonts","can","apply","artifacts","you","generate","pages","landing","slides","SET","styling","fly",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":29},"01M70FXZ7DTCA3VKYZD1VJ1GKG","terse-intent-classifier","短指令作用层判定协议——对 ≤15 字、含指代词或动词型短指令（改\u002F删\u002F切\u002F跑\u002F停\u002F加）或元问句（更优雅\u002F更好\u002F有没有办法）的输入，先判层再动手。Use when 用户消息 ≤15 字且含「这个\u002F那个\u002F上面\u002F刚才\u002F它」指代，或形如「改一下」「删掉它」「跑一下」「有没有更优雅的方法」「切回 X」这类省略了对象或意图的短输入。","https:\u002F\u002Fgithub.com\u002FKarryViber\u002FOrb\u002Fblob\u002Fmain\u002Fprofiles\u002F.claude\u002Fskills\u002Fterse-intent-classifier\u002FSKILL.md",[],[181,182,183,184,28,26],"intent","classifier","terse","terse intent classifier"]