[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M72XAF4WHWD9XHWCEFRXNJVC":3,"skill-same:01M72XAF4WHWD9XHWCEFRXNJVC":48},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M72XAF4WHWD9XHWCEFRXNJVC","click-path-audit",null,"追踪每个面向用户的按钮\u002F触点的完整状态变化序列，以发现功能单独工作但相互抵消、产生错误最终状态或使UI处于不一致状态的错误。适用于：系统调试未发现错误但用户报告按钮失效，或在任何涉及共享状态存储的重大重构之后。","SriramGandhiS\u002FSkills","SriramGandhiS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F211849986?v=4","01M72WQCW12BYX71C6WN584TTA","Sriram S","01M72WQCWTJ2RD0ET1X31AF1RC",1,"MIT","https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills\u002Fblob\u002Fmaster\u002Fdocs\u002Fzh-CN\u002Fskills\u002Fclick-path-audit\u002FSKILL.md",[],[],"2026-11-10 22:39:42",false,"---\nname: click-path-audit\ndescription: \"追踪每个面向用户的按钮\u002F触点的完整状态变化序列，以发现功能单独工作但相互抵消、产生错误最终状态或使UI处于不一致状态的错误。适用于：系统调试未发现错误但用户报告按钮失效，或在任何涉及共享状态存储的重大重构之后。\"\norigin: community\n---\n\n# \u002Fclick-path-audit — 行为流审计\n\n发现静态代码审查遗漏的缺陷：状态交互副作用、顺序调用间的竞态条件，以及相互静默撤销的处理程序。\n\n## 解决的问题\n\n传统调试检查：\n\n* 函数是否存在？（缺少连接）\n* 是否崩溃？（运行时错误）\n* 是否返回正确类型？（数据流）\n\n但未检查：\n\n* **最终 UI 状态是否与按钮标签承诺一致？**\n* **函数 B 是否静默撤销了函数 A 刚刚执行的操作？**\n* **共享状态（Zustand\u002FRedux\u002Fcontext）是否存在抵消预期操作的副作用？**\n\n真实案例：一个\"新邮件\"按钮依次调用了 `setComposeMode(true)` 和 `selectThread(null)`。两者单独工作正常。但 `selectThread` 有一个副作用重置了 `composeMode: false`。按钮毫无反应。系统化调试发现了 54 个缺陷——这个被遗漏了。\n\n***\n\n## 工作原理\n\n针对目标区域内的每个交互触点：\n\n```\n1. 识别处理函数（onClick、onSubmit、onChange 等）\n2. 按顺序追踪处理函数中的每个函数调用\n3. 对于每个函数调用：\n   a. 它读取了哪些状态？\n   b. 它写入了哪些状态？\n   c. 它是否对共享状态产生了副作用？\n   d. 它是否作为副作用重置\u002F清除了任何状态？\n4. 检查：后续调用是否会撤销前面调用的状态变更？\n5. 检查：最终状态是否符合用户对按钮标签的预期？\n6. 检查：是否存在竞态条件（异步调用以错误顺序解析）？\n```\n\n***\n\n## 执行步骤\n\n### 步骤 1：映射状态存储\n\n在审计任何触点之前，构建每个状态存储操作的副作用映射：\n\n```\n对于作用域内的每个 Zustand 存储 \u002F React 上下文：\n  对于每个操作\u002F设置器：\n    - 它设置了哪些字段？\n    - 它是否作为副作用重置了其他字段？\n    - 文档：actionName → {sets: [...], resets: [...]}\n```\n\n这是关键参考。\"新邮件\"缺陷在不知道 `selectThread` 重置了 `composeMode` 的情况下是不可见的。\n\n**输出格式：**\n\n```\nSTORE: emailStore\n  setComposeMode(bool) → 设置: {composeMode}\n  selectThread(thread|null) → 设置: {selectedThread, selectedThreadId, messages, drafts, selectedDraft, summary} 重置: {composeMode: false, composeData: null, redraftOpen: false}\n  setDraftGenerating(bool) → 设置: {draftGenerating}\n  ...\n\n危险的重置（清除不属于自身状态的操作）：\n  selectThread → 重置 composeMode（由 setComposeMode 拥有）\n  reset → 重置所有内容\n```\n\n### 步骤 2：审计每个触点\n\n针对目标区域内的每个按钮\u002F开关\u002F表单提交：\n\n```\nTOUCHPOINT: [按钮标签] 在 [组件:行]\n  HANDLER: onClick → {\n    调用 1: functionA() → 设置 {X: true}\n    调用 2: functionB() → 设置 {Y: null} 重置 {X: false}  ← 冲突\n  }\n  EXPECTED: 用户看到 [按钮标签所承诺的描述]\n  ACTUAL: X 为 false，因为 functionB 重置了它\n  VERDICT: BUG — [描述]\n```\n\n**检查以下每种缺陷模式：**\n\n#### 模式 1：顺序撤销\n\n```\nhandler() {\n  setState_A(true)     \u002F\u002F 设置 X = true\n  setState_B(null)     \u002F\u002F 副作用：重置 X = false\n}\n\u002F\u002F 结果：X 为 false。第一次调用毫无意义。\n```\n\n#### 模式 2：异步竞态\n\n```\nhandler() {\n  fetchA().then(() => setState({ loading: false }))\n  fetchB().then(() => setState({ loading: true }))\n}\n\u002F\u002F 结果：最终的 loading 状态取决于哪个先完成\n```\n\n#### 模式 3：过期闭包\n\n```\nconst [count, setCount] = useState(0)\nconst handler = useCallback(() => {\n  setCount(count + 1)  \u002F\u002F 捕获了过时的 count\n  setCount(count + 1)  \u002F\u002F 同样的过时 count — 只增加 1，而不是 2\n}, [count])\n```\n\n#### 模式 4：缺失状态转换\n\n```\n\u002F\u002F 按钮显示\"保存\"，但处理程序仅验证，从未实际保存\n\u002F\u002F 按钮显示\"删除\"，但处理程序设置了一个标志而未调用API\n\u002F\u002F 按钮显示\"发送\"，但API端点已被移除\u002F损坏\n```\n\n#### 模式 5：条件死路径\n\n```\nhandler() {\n  if (someState) {        \u002F\u002F 此时 someState 始终为 false\n    doTheActualThing()    \u002F\u002F 永远不会执行到\n  }\n}\n```\n\n#### 模式 6：useEffect 干扰\n\n```\n\u002F\u002F Button 设置 stateX = true\n\u002F\u002F useEffect 监听 stateX 并将其重置为 false\n\u002F\u002F 用户看不到任何变化\n```\n\n### 步骤 3：报告\n\n针对发现的每个缺陷：\n\n```\nCLICK-PATH-NNN: [严重性: 严重\u002F高\u002F中\u002F低]\n  触点: [按钮标签] 位于 [文件:行号]\n  模式: [顺序撤销 \u002F 异步竞态 \u002F 过期闭包 \u002F 缺失过渡 \u002F 死路径 \u002F useEffect 干扰]\n  处理函数: [函数名或内联]\n  追踪:\n    1. [调用] → 设置 {字段: 值}\n    2. [调用] → 重置 {字段: 值}  ← 冲突\n  预期: [用户期望的结果]\n  实际: [实际发生的结果]\n  修复: [具体修复方案]\n```\n\n***\n\n## 范围控制\n\n此审计成本较高。请适当限定范围：\n\n* **全应用审计：** 在发布或重大重构后使用。按页面启动并行代理。\n* **单页面审计：** 在构建新页面或用户报告按钮失效后使用。\n* **存储聚焦审计：** 在修改 Zustand 存储后使用——审计所有使用已更改操作的消费者。\n\n### 全应用推荐的代理拆分：\n\n```\nAgent 1：映射所有状态存储（步骤 1）——这是所有其他代理的共享上下文\nAgent 2：仪表盘（任务、笔记、日志、想法）\nAgent 3：聊天（DanteChatColumn、JustChatPage）\nAgent 4：邮件（ThreadList、DraftArea、EmailsPage）\nAgent 5：项目（ProjectsPage、ProjectOverviewTab、NewProjectWizard）\nAgent 6：CRM（所有子标签页）\nAgent 7：个人资料、设置、保险库、通知\nAgent 8：管理套件（所有页面）\n```\n\n代理 1 必须首先完成。其输出是所有其他代理的输入。\n\n***\n\n## 何时使用\n\n* 系统化调试发现\"无缺陷\"但用户报告 UI 失效后\n* 修改任何 Zustand 存储操作后（检查所有调用者）\n* 任何涉及共享状态的重构后\n* 发布前，针对关键用户流程\n* 当按钮\"无反应\"时——这是解决该问题的工具\n\n## 何时不使用\n\n* 针对 API 级别缺陷（错误的响应结构、缺失端点）——使用系统化调试\n* 针对样式\u002F布局问题——视觉检查\n* 针对性能问题——性能分析工具\n\n***\n\n## 与其他技能的集成\n\n* 在 `\u002Fsuperpowers:systematic-debugging`（发现其他 54 种缺陷类型）之后运行\n* 在 `\u002Fsuperpowers:verification-before-completion`（验证修复是否有效）之前运行\n* 反馈至 `\u002Fsuperpowers:test-driven-development`——此处发现的每个缺陷都应添加测试\n\n***\n\n## 示例：启发此技能的缺陷\n\n**ThreadList.tsx \"新邮件\"按钮：**\n\n```\nonClick={() => {\n  useEmailStore.getState().setComposeMode(true)   \u002F\u002F ✓ 设置 composeMode = true\n  useEmailStore.getState().selectThread(null)      \u002F\u002F ✗ 重置 composeMode = false\n}}\n```\n\n存储定义：\n\n```\nselectThread: (thread) => set({\n  selectedThread: thread,\n  selectedThreadId: thread?.id ?? null,\n  messages: [],\n  drafts: [],\n  selectedDraft: null,\n  summary: null,\n  composeMode: false,     \u002F\u002F ← 这个静默重置导致按钮失效\n  composeData: null,\n  redraftOpen: false,\n})\n```\n\n**系统化调试遗漏了它**，因为：\n\n* 按钮有 onClick 处理程序（未失效）\n* 两个函数都存在（无缺失连接）\n* 两个函数均未崩溃（无运行时错误）\n* 数据类型正确（无类型不匹配）\n\n**点击路径审计捕获了它**，因为：\n\n* 步骤 1 映射出 `selectThread` 重置了 `composeMode`\n* 步骤 2 追踪处理程序：调用 1 设置为 true，调用 2 重置为 false\n* 判定：顺序撤销——最终状态与按钮意图矛盾\n","# \u002Fclick-path-audit — 行为流审计\n\n发现静态代码审查遗漏的缺陷：状态交互副作用、顺序调用间的竞态条件，以及相互静默撤销的处理程序。\n\n## 解决的问题\n\n传统调试检查：\n\n* 函数是否存在？（缺少连接）\n* 是否崩溃？（运行时错误）\n* 是否返回正确类型？（数据流）\n\n但未检查：\n\n* **最终 UI 状态是否与按钮标签承诺一致？**\n* **函数 B 是否静默撤销了函数 A 刚刚执行的操作？**\n* **共享状态（Zustand\u002FRedux\u002Fcontext）是否存在抵消预期操作的副作用？**\n\n真实案例：一个\"新邮件\"按钮依次调用了 `setComposeMode(true)` 和 `selectThread(null)`。两者单独工作正常。但 `selectThread` 有一个副作用重置了 `composeMode: false`。按钮毫无反应。系统化调试发现了 54 个缺陷——这个被遗漏了。\n\n***\n\n## 工作原理\n\n针对目标区域内的每个交互触点：\n\n```\n1. 识别处理函数（onClick、onSubmit、onChange 等）\n2. 按顺序追踪处理函数中的每个函数调用\n3. 对于每个函数调用：\n   a. 它读取了哪些状态？\n   b. 它写入了哪些状态？\n   c. 它是否对共享状态产生了副作用？\n   d. 它是否作为副作用重置\u002F清除了任何状态？\n4. 检查：后续调用是否会撤销前面调用的状态变更？\n5. 检查：最终状态是否符合用户对按钮标签的预期？\n6. 检查：是否存在竞态条件（异步调用以错误顺序解析）？\n```\n\n***\n\n## 执行步骤\n\n### 步骤 1：映射状态存储\n\n在审计任何触点之前，构建每个状态存储操作的副作用映射：\n\n```\n对于作用域内的每个 Zustand 存储 \u002F React 上下文：\n  对于每个操作\u002F设置器：\n    - 它设置了哪些字段？\n    - 它是否作为副作用重置了其他字段？\n    - 文档：actionName → {sets: [...], resets: [...]}\n```\n\n这是关键参考。\"新邮件\"缺陷在不知道 `selectThread` 重置了 `composeMode` 的情况下是不可见的。\n\n**输出格式：**\n\n```\nSTORE: emailStore\n  setComposeMode(bool) → 设置: {composeMode}\n  selectThread(thread|null) → 设置: {selectedThread, selectedThreadId, messages, drafts, selectedDraft, summary} 重置: {composeMode: false, composeData: null, redraftOpen: false}\n  setDraftGenerating(bool) → 设置: {draftGenerating}\n  ...\n\n危险的重置（清除不属于自身状态的操作）：\n  selectThread → 重置 composeMode（由 setComposeMode 拥有）\n  reset → 重置所有内容\n```\n\n### 步骤 2：审计每个触点\n\n针对目标区域内的每个按钮\u002F开关\u002F表单提交：\n\n```\nTOUCHPOINT: [按钮标签] 在 [组件:行]\n  HANDLER: onClick → {\n    调用 1: functionA() → 设置 {X: true}\n    调用 2: functionB() → 设置 {Y: null} 重置 {X: false}  ← 冲突\n  }\n  EXPECTED: 用户看到 [按钮标签所承诺的描述]\n  ACTUAL: X 为 false，因为 functionB 重置了它\n  VERDICT: BUG — [描述]\n```\n\n**检查以下每种缺陷模式：**\n\n#### 模式 1：顺序撤销\n\n```\nhandler() {\n  setState_A(true)     \u002F\u002F 设置 X = true\n  setState_B(null)     \u002F\u002F 副作用：重置 X = false\n}\n\u002F\u002F 结果：X 为 false。第一次调用毫无意义。\n```\n\n#### 模式 2：异步竞态\n\n```\nhandler() {\n  fetchA().then(() => setState({ loading: false }))\n  fetchB().then(() => setState({ loading: true }))\n}\n\u002F\u002F 结果：最终的 loading 状态取决于哪个先完成\n```\n\n#### 模式 3：过期闭包\n\n```\nconst [count, setCount] = useState(0)\nconst handler = useCallback(() => {\n  setCount(count + 1)  \u002F\u002F 捕获了过时的 count\n  setCount(count + 1)  \u002F\u002F 同样的过时 count — 只增加 1，而不是 2\n}, [count])\n```\n\n#### 模式 4：缺失状态转换\n\n```\n\u002F\u002F 按钮显示\"保存\"，但处理程序仅验证，从未实际保存\n\u002F\u002F 按钮显示\"删除\"，但处理程序设置了一个标志而未调用API\n\u002F\u002F 按钮显示\"发送\"，但API端点已被移除\u002F损坏\n```\n\n#### 模式 5：条件死路径\n\n```\nhandler() {\n  if (someState) {        \u002F\u002F 此时 someState 始终为 false\n    doTheActualThing()    \u002F\u002F 永远不会执行到\n  }\n}\n```\n\n#### 模式 6：useEffect 干扰\n\n```\n\u002F\u002F Button 设置 stateX = true\n\u002F\u002F useEffect 监听 stateX 并将其重置为 false\n\u002F\u002F 用户看不到任何变化\n```\n\n### 步骤 3：报告\n\n针对发现的每个缺陷：\n\n```\nCLICK-PATH-NNN: [严重性: 严重\u002F高\u002F中\u002F低]\n  触点: [按钮标签] 位于 [文件:行号]\n  模式: [顺序撤销 \u002F 异步竞态 \u002F 过期闭包 \u002F 缺失过渡 \u002F 死路径 \u002F useEffect 干扰]\n  处理函数: [函数名或内联]\n  追踪:\n    1. [调用] → 设置 {字段: 值}\n    2. [调用] → 重置 {字段: 值}  ← 冲突\n  预期: [用户期望的结果]\n  实际: [实际发生的结果]\n  修复: [具体修复方案]\n```\n\n***\n\n## 范围控制\n\n此审计成本较高。请适当限定范围：\n\n* **全应用审计：** 在发布或重大重构后使用。按页面启动并行代理。\n* **单页面审计：** 在构建新页面或用户报告按钮失效后使用。\n* **存储聚焦审计：** 在修改 Zustand 存储后使用——审计所有使用已更改操作的消费者。\n\n### 全应用推荐的代理拆分：\n\n```\nAgent 1：映射所有状态存储（步骤 1）——这是所有其他代理的共享上下文\nAgent 2：仪表盘（任务、笔记、日志、想法）\nAgent 3：聊天（DanteChatColumn、JustChatPage）\nAgent 4：邮件（ThreadList、DraftArea、EmailsPage）\nAgent 5：项目（ProjectsPage、ProjectOverviewTab、NewProjectWizard）\nAgent 6：CRM（所有子标签页）\nAgent 7：个人资料、设置、保险库、通知\nAgent 8：管理套件（所有页面）\n```\n\n代理 1 必须首先完成。其输出是所有其他代理的输入。\n\n***\n\n## 何时使用\n\n* 系统化调试发现\"无缺陷\"但用户报告 UI 失效后\n* 修改任何 Zustand 存储操作后（检查所有调用者）\n* 任何涉及共享状态的重构后\n* 发布前，针对关键用户流程\n* 当按钮\"无反应\"时——这是解决该问题的工具\n\n## 何时不使用\n\n* 针对 API 级别缺陷（错误的响应结构、缺失端点）——使用系统化调试\n* 针对样式\u002F布局问题——视觉检查\n* 针对性能问题——性能分析工具\n\n***\n\n## 与其他技能的集成\n\n* 在 `\u002Fsuperpowers:systematic-debugging`（发现其他 54 种缺陷类型）之后运行\n* 在 `\u002Fsuperpowers:verification-before-completion`（验证修复是否有效）之前运行\n* 反馈至 `\u002Fsuperpowers:test-driven-development`——此处发现的每个缺陷都应添加测试\n\n***\n\n## 示例：启发此技能的缺陷\n\n**ThreadList.tsx \"新邮件\"按钮：**\n\n```\nonClick={() => {\n  useEmailStore.getState().setComposeMode(true)   \u002F\u002F ✓ 设置 composeMode = true\n  useEmailStore.getState().selectThread(null)      \u002F\u002F ✗ 重置 composeMode = false\n}}\n```\n\n存储定义：\n\n```\nselectThread: (thread) => set({\n  selectedThread: thread,\n  selectedThreadId: thread?.id ?? null,\n  messages: [],\n  drafts: [],\n  selectedDraft: null,\n  summary: null,\n  composeMode: false,     \u002F\u002F ← 这个静默重置导致按钮失效\n  composeData: null,\n  redraftOpen: false,\n})\n```\n\n**系统化调试遗漏了它**，因为：\n\n* 按钮有 onClick 处理程序（未失效）\n* 两个函数都存在（无缺失连接）\n* 两个函数均未崩溃（无运行时错误）\n* 数据类型正确（无类型不匹配）\n\n**点击路径审计捕获了它**，因为：\n\n* 步骤 1 映射出 `selectThread` 重置了 `composeMode`\n* 步骤 2 追踪处理程序：调用 1 设置为 true，调用 2 重置为 false\n* 判定：顺序撤销——最终状态与按钮意图矛盾\n",{"name":5,"origin":24,"description":7},"community","master","d6ca01da0f24a3b0e26e4a8b7b66cbd25d429f5d","docs\u002Fzh-CN\u002Fskills\u002Fclick-path-audit",0,"https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills","https:\u002F\u002Fgithub.com\u002FSriramGandhiS","https:\u002F\u002Fsriram.website\u002F","Curious guy who keeps tinkering until something works","2026-05-20 16:21:34",{"source":8,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add SriramGandhiS\u002FSkills --skill click-path-audit",{"tool":40,"command":41},"bunx","bunx skills add SriramGandhiS\u002FSkills --skill click-path-audit",{"tool":43,"command":44},"pnpm","pnpm dlx skills add SriramGandhiS\u002FSkills --skill click-path-audit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills\u002Fblob\u002Fmaster\u002Fdocs\u002Fzh-CN\u002Fskills\u002Fclick-path-audit\u002FSKILL.md",true,[],[49,57,62,68,75,82],{"skillNo":50,"name":51,"nameZh":6,"description":52,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":53,"categories":54,"keywords":55,"publishedAt":56},"01M732609EPJWV13PVTX3GT4TM","webgpu-threejs-tsl","Comprehensive guide for developing WebGPU-enabled Three.js applications using TSL (Three.js Shading Language). Covers WebGPU renderer setup, TSL syntax and node materials, compute shaders, post-processing effects, and WGSL integration. Use this skill when working with Three.js WebGPU, TSL shaders, node materials, or GPU compute in Three.js.","https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills\u002Fblob\u002Fmaster\u002Fwebgpu-threejs-tsl\u002Fskills\u002Fwebgpu-threejs-tsl\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":58,"name":51,"nameZh":6,"description":52,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":56},"01M7325XM47AGWB6K6C4VXKE6B","https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills\u002Fblob\u002Fmaster\u002Fwebgpu-threejs-tsl\u002FSKILL.md",[],[],{"skillNo":63,"name":64,"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":65,"categories":66,"keywords":67,"publishedAt":56},"01M7325WP6DES69JKC840VMFEP","verification-loop","https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills\u002Fblob\u002Fmaster\u002Fweb-assets\u002Fdocs\u002Fzh-TW\u002Fskills\u002Fverification-loop\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":56},"01M7325TFQF1DZTQ6J3WGQQ1VR","tdd-workflow","Use this skill when writing new features, fixing bugs, or refactoring code. Enforces test-driven development with 80%+ coverage including unit, integration, and E2E tests.","https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills\u002Fblob\u002Fmaster\u002Fweb-assets\u002Fdocs\u002Fzh-TW\u002Fskills\u002Ftdd-workflow\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":56},"01M7325RGV9AY9PK92D2V8KKPW","strategic-compact","Suggests manual context compaction at logical intervals to preserve context through task phases rather than arbitrary auto-compaction.","https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills\u002Fblob\u002Fmaster\u002Fweb-assets\u002Fdocs\u002Fzh-TW\u002Fskills\u002Fstrategic-compact\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":56},"01M7325MZC28SE86E7NMCNEFS4","security-review","Use this skill when adding authentication, handling user input, working with secrets, creating API endpoints, or implementing payment\u002Fsensitive features. Provides comprehensive security checklist and patterns.","https:\u002F\u002Fgithub.com\u002FSriramGandhiS\u002FSkills\u002Fblob\u002Fmaster\u002Fweb-assets\u002Fdocs\u002Fzh-TW\u002Fskills\u002Fsecurity-review\u002FSKILL.md",[],[]]