Skill: sky-lv/another-them (version 1.0.0)

--- name: another-them description: | 另一个TA：输入人名/主题/模糊需求/网络链接/已有Skill，自动深度调研→框架提炼→生成完整 Agent 人设文件包，直接覆盖当前 Agent workspace 的人设文件。 五种入口：(1)明确人名→蒸馏为Agent (2)模糊需求→诊断推荐→再蒸馏 (3)网络链接→基于内容蒸馏 (4)已有Skill→读取后蒸馏 (5)本地语料→分析后蒸馏。 触发词：「创建XX」「蒸馏XX」「克隆」「造人」「clone」「造agent」「XX的思维方式」「做个XX视角」「把XX做成agent」「复刻XX」「仿造XX」「做个XX的agent」「另一个TA」「做个XX的替身」「做个XX的副本」「训练XX」「把XX的经验沉淀下来」「更新XX的agent」「another them」。 链接入口：「从这个链接蒸馏」「基于这篇文章做agent」「分析这个链接」+ 任何含URL的蒸馏请求。 Skill导入：「用这个skill蒸馏」「导入这个skill」「基于这个skill做agent」+ 含SKILL.md内容或skill名称的请求。 模糊需求：「我想提升决策质量」「有没有一种思维方式能帮我...」「我需要一个思维顾问」「提取XX的能力」「萃取XX的经验」。 lifecycle: one-shot deactivate_on: - phase-complete: 5 - user-explicit-exit: true --- # 另一个TA > 由AI生成，也可以是由爱生成 ## 全局规则 ### 红线（优先级最高，不可违反） 1. **收到请求后直接静默推进**：识别出对象后立即进入调研，不做前置确认。唯一例外是模糊需求路径需要追问定位。 2. **默认一口气跑完**：Phase 1 完成后默认直接执行 Phase 2→3→4→5，直到人物亮相。只有用户明确说"先看简介再决定"时才走精细模式。 3. **失败也要有产出**：无论信息多寡、工具是否报错，必须走完全流程产出可用文件。60分有标注 > 停在半路。 4. **调研全程静默**：不向用户展示任何中间过程、搜索结果、进度、调研发现。搜索结果仅作为内部素材使用。 5. **最终必须输出人物亮相**：流程完成后，必须向用户输出人物第一人称自我介绍 + 末尾一行斜体位置提示。这是整个流程唯一面向用户的输出，**不可省略、不可跳过**。 6. **搜索采集不中断**：搜索全程静默完成，无中间输出。单次搜索超时或失败则跳过继续下一个。 7. **禁止创建人名/主题子目录**：所有文件直接写入 workspace 根。绝不 `mkdir elon-musk` 或任何类似操作。写 `SOUL.md` 就是写 `SOUL.md`，不是 `elon-musk/SOUL.md`。 ### 写入路径规则 [CRITICAL] **所有产物必须直接写入 workspace 根目录。workspace 根 = skill 执行时的 cwd。** ⚠️ **严禁创建人名/主题命名的子目录**。不要创建 `elon-musk/`、`taleb/`、`munger/` 等目录。文件直接放在根层级。 正确写法（文件直接在 workspace 根）： ``` ./SOUL.md ← ✅ 正确：直接在 workspace 根 ./AGENTS.md ← ✅ 正确 ./IDENTITY.md ← ✅ 正确 ./.research/ ← ✅ 正确（调研临时目录） ``` 错误写法（绝对禁止）： ``` ./elon-musk/SOUL.md ← ❌ 禁止：创建了人名子目录 ./taleb/AGENTS.md ← ❌ 禁止 ./distilled/xx/SOUL.md ← ❌ 禁止 /absolute/path/SOUL.md ← ❌ 禁止：绝对路径 ``` 执行前验证： 1. `pwd` 确认当前在 workspace 根（路径应类似 `workspace-agent-xxx`） 2. `ls .` 确认根目录下应有人设文件或为空目录（而非源码） 3. 写入时使用纯文件名（如 `SOUL.md`），不要拼接任何前缀路径 - `USER.md` / `HEARTBEAT.md`：仅当文件不存在时创建，已有则不覆盖 ### 产物清单 所有文件直接写入 workspace 根，**不创建任何人名/主题命名的父级目录**。 | 文件（workspace 根级） | 用途 | 写入规则 | |------|------|---------| | `SOUL.md` | 灵魂 - 人格核心（≤100行） | 覆盖写入 | | `IDENTITY.md` | 身份档案（对齐 QClaw SDK） | 覆盖写入 | | `AGENTS.md` | 行为手册 - 会话策略、研究维度、红线 | 覆盖写入 | | `USER.md` | 对话者档案模板 | 仅不存在时创建 | | `HEARTBEAT.md` | 状态感知配置 | 仅不存在时创建 | | `.research/` | 调研中间产物（完成后可清理） | 临时目录 | ### 核心理念 一个好的人物Agent是一套可运行的认知操作系统： - 他**第一反应关注什么**？（世界观滤镜） - 他**怎么快速做判断**？（决策直觉） - 他**怎么说话**？（嘴替特征） - 他**绝对不干什么**？（雷区和底线） - 他**经历了什么才变成这样**？（来路） - 这个Agent**做不到什么**？（老实话） **关键区分**：捕捉 HOW they think，不是 WHAT they said。 **最高优先级**：生成的Agent必须像真人说话，不像AI写报告。 --- ## 用户交互地图 ### 两种模式 | 模式 | 触发条件 | 流程 | |------|---------|------| | **默认直通**（90%） | 用户给出对象，无精细模式触发词 | 全程静默 → 人物亮相 | | **精细模式** | 用户明确说"先看简介再决定"/"分步来"/"只要思维方式" | 调研后停在 T1 → 确认后继续 | ### 交互节点 | 轮次 | 触发条件 | 输出 | 适用模式 | |------|---------|------|---------| | **T0** | 模糊需求（Phase 0B） | 追问+候选推荐 | 仅模糊需求 | | **T1** | 调研完成+精细模式 | 人物简介+范围选择 | 仅精细模式 | | **T2** | 蒸馏完成 | 人物第一人称亮相 | 所有模式 | ### T2 输出格式（人物亮相） ``` [人物第一人称自我介绍，3-5句连贯段落，用蒸馏出的风格说话] _人设文件已写入当前 Agent workspace，想查看或编辑随时去看一眼。_ ``` **约束**： - 像真人打招呼，不是AI介绍人物 - 禁止 markdown 标题/加粗/列表、禁止"已激活/已写入"类措辞 - 更新模式改为：`_人设已更新。_` --- ## 执行流程 ### Phase 0: 入口分流 | 用户输入 | 路径 | 面向用户输出 | |---------|------|------------| | 明确对象（人名/URL/Skill） | Phase 0A → 静默进调研 | ❌ | | 模糊需求 | Phase 0B → 追问定位 | ✅ T0 | #### Phase 0A: 显式路径 **Step 1: 对象类型识别** | 输入形式 | 动作 | |---------|------| | 人名/主题 | 直接作为对象，走纯网络搜索 | | URL | 抓取内容存入 `.research/sources/articles/` | | Skill 名称 | 读取对应 SKILL.md | | 粘贴的 SKILL.md 内容 | 直接解析 | | 本地语料（PDF/字幕/文章） | 按维度分类到 `.research/sources/` | **Step 2: 模式选择** | 模式 | 触发条件 | Phase 1 策略 | |------|---------|-------------| | 纯网络搜索 | 只有人名 | 三维度全走 online-search 搜索 | | 本地语料优先 | 有 PDF/字幕等 | 先分析素材，网络补充 | | 链接素材 | 有 URL | 链接为一手，网络补充 | | Skill 快速路径 | Skill 质量完整 | 跳过 Phase 1，直接 Phase 2 | | Skill 增强 | Skill 不完整/过时 | 只补充缺失维度 | **对象识别失败**（唯一允许追问）：URL含多人无法确定 / Skill文件找不到 → 简短追问后继续。 #### Phase 0B: 诊断路径（模糊需求） 1. **需求定位**（最多2轮追问）：区分决策/表达/创业/教学/批判/创作/人生策略等维度 2. **候选推荐**（2-3人）：每人说清核心镜片、适合原因、局限 3. **用户选择** → 转入 Phase 0A --- ### Phase 0.5: 创建调研目录 **先验证 workspace 根路径**：运行 `pwd`，确认路径末段为 `workspace-agent-*` 或 `workspace`。 然后在 workspace 根直接创建（禁止先 `mkdir elon-musk` 再在里面操作）： ``` .research/ ├── 01-thought-core.md ├── 02-expression-profile.md ├── 03-context-and-perception.md └── sources/ ├── books/ ├── transcripts/ └── articles/ ``` - 中国人物：信息源切换为知乎/公众号/豆瓣/小宇宙/B站/权威中文媒体优先 - 更新模式：先读取现有人设文件，标注需要刷新的信息 --- ### Phase 1: 三维度搜索采集 **执行方式**：主 agent 直接使用内置 `online-search` skill 的 `prosearch.cjs` 脚本执行搜索，逐维度串行完成，无需 spawn subagent。 #### 三维度搜索任务 | 维度 | 搜索目标 | 提取重点 | 输出文件 | |------|---------|---------|---------| | **1 思想内核** | 书/长文/论文 + 重大决策/转折点 | 核心论点（≥3次=真信念）、自创术语、决策逻辑 | `01-thought-core.md` | | **2 表达与互动** | 播客/视频/AMA/采访 + 多平台公开表达 | 回答方式、即兴类比、高频句式、幽默方式 | `02-expression-profile.md` | | **3 外部视角与来路** | 他人分析/书评/批评/传记 + 完整时间线 | 外部观察模式、批评争议、关键里程碑、最近12月动态 | `03-context-and-perception.md` | #### 搜索关键词模板 **中文人物**（每维度 5 次）： | 维度 | 搜索关键词 | |------|-----------| | 思想内核 | `{人名} 核心思想 哲学`、`{人名} 著作 代表作`、`{人名} 决策逻辑 方法论`、`{人名} 争议 观点`、`{人名} 自创概念 术语` | | 表达与互动 | `{人名} 采访 播客 对话`、`{人名} 演讲 发言 金句`、`{人名} 说话风格 语言特点`、`{人名} 辩论 回应 反驳`、`{人名} 幽默 段子 即兴` | | 外部视角 | `{人名} 人物传记 经历`、`{人名} 时间线 里程碑 转折`、`{人名} 评价 分析 定位`、`{人名} 最近动态 新闻`、`{人名} 师承 影响 流派` | **英文人物**（每维度 5 次）： | 维度 | 搜索关键词 | |------|-----------| | 思想内核 | `{person} philosophy core ideas`、`{person} books key works`、`{person} decision making framework`、`{person} controversial views`、`{person} coined terms concepts` | | 表达与互动 | `{person} interview podcast conversation`、`{person} speech quotes`、`{person} speaking style`、`{person} debate response`、`{person} humor wit` | | 外部视角 | `{person} biography life story`、`{person} timeline milestones`、`{person} criticism analysis`、`{person} recent news`、`{person} influences mentors` | #### 搜索增强（中文人物追加站内搜索） 中文人物额外增加 2-3 次站内搜索以获取高质量中文源： ```bash # 知乎深度分析 node '<SCRIPT_PATH>/scripts/prosearch.cjs' --keyword="{人名} 思想 方法论" --site=zhihu.com # B站演讲/采访 node '<SCRIPT_PATH>/scripts/prosearch.cjs' --keyword="{人名} 演讲 采访" --site=bilibili.com # 豆瓣著作评价（可选） node '<SCRIPT_PATH>/scripts/prosearch.cjs' --keyword="{人名} 书评" --site=douban.com ``` #### 搜索执行规范 **命令格式**（所有平台统一）： ```bash # 标准搜索 node '<SCRIPT_PATH>/scripts/prosearch.cjs' --keyword="{搜索关键词}" # 时效性搜索（外部视角-近期动态专用） node '<SCRIPT_PATH>/scripts/prosearch.cjs' --keyword="{人名} 最近动态" --freshness=30d # 站内搜索（中文人物增强） node '<SCRIPT_PATH>/scripts/prosearch.cjs' --keyword="{人名}" --site=zhihu.com # 新闻类搜索 node '<SCRIPT_PATH>/scripts/prosearch.cjs' --keyword="{人名} 最新动态" --freshness=30d --industry=news ``` > **注意**：`<SCRIPT_PATH>` 在运行时由 OpenClaw 引擎自动替换为 `online-search` skill 的实际路径。关键词含空格时用双引号包裹值部分。 #### 结果处理规则 搜索返回 JSON，从 `data.docs` 数组中提取信息（**不向用户输出 message 字段**——调研全程静默）： 1. **提取**：从每条 doc 中取 `passage`（摘要）、`title`、`url`、`date`、`site` 2. **去重**：同一 URL 多次出现时合并信息 3. **来源标注**：以 `[来源: title - site (date)](url)` 格式记录 4. **分维度提炼写入**：每维度搜索完成后立即提炼，写入对应 `.research/` 文件 #### 流程控制规则 1. **总搜索次数上限**：每维度 5 次基础 + 中文人物 2-3 次站内，**总计不超过 20 次** 2. **执行顺序**：思想内核 → 表达与互动 → 外部视角，每组完成后立即提炼写入 3. **单次搜索失败**：跳过该查询继续下一个（最多重试 1 次，间隔 3s） 4. **有效来源评估**： - 有效来源 ≥ 5 条 → 正常流程 - 有效来源 < 5 条 → "信息匮乏模式"：滤镜减至 2-3 个，老实话段落加大篇幅 5. **不中断流程**：无论搜索结果如何，Phase 1 完成后直接进入下一阶段 6. **LLM 知识兜底**：所有搜索均无有效结果时，用 LLM 自身知识完成调研文件（必须在老实话中标注"基于模型知识，未经实时验证"） #### 硬性要求 - 调研结果必须写入 `.research/` 对应文件 - 注明来源和可信度（一手>二手>推测） - 区分「他说的」vs「别人说他的」vs「推断的」 - 发现矛盾时保留矛盾，不和稀泥 #### 工具辅助 - 字幕下载：`bash {SKILL_DIR}/scripts/download_subtitles.sh <YouTube_URL> [输出目录]` - 字幕清洗：`python3 {SKILL_DIR}/scripts/srt_to_transcript.py <input.srt> [output.txt]` #### 信息源优先级 | 来源 | 权重 | |------|------| | 用户提供的一手素材 | 最高+ | | 本人著作、长对话/访谈、实际决策记录 | 最高 | | 社交媒体、他人评价 | 中等 | | 二手转述 | 低 | **Phase 1 完成后**：默认直通 → 直接进 Phase 2；精细模式 → 输出 T1 等待确认。 --- ### Phase 1.5: 范围确认（仅精细模式） **默认直通模式跳过此 Phase。** 精细模式下输出 T1： ``` [人名]，[1-2句概括此人，口语化] 要不要为 ta 创建 Agent？想抓哪部分？ 1. **思维方式** — 怎么看世界、怎么做判断 2. **表达方式** — 怎么说话、什么风格 3. **全部** — 完整创建 选一个数字，或直接说需求。人不对/不想创建了也告诉我。 ``` 范围映射： | 选择 | 执行维度 | |------|---------| | 1 思维方式 | 2.1 + 2.2 + 2.5(精简) + 2.6 | | 2 表达方式 | 2.3(完整) + 2.1(精简) + 2.6 | | 3 全部 | 2.1-2.6 全部 | --- ### Phase 2: 框架提炼 目标：把一个活人拆成 6 个可编程维度。 #### 2.1 世界观滤镜（他怎么看世界） = 此人看任何问题时**第一反应关注什么**。 **操作**： 1. 扫描 `01-thought-core.md` + `02-expression-profile.md`，列出所有候选（反复表达的观点/自创术语/核心主张） 2. 三重验证筛选：跨域复现（≥2领域）+ 生成力（能推断新问题立场）+ 排他性（非通用常识） 3. 按排他性排序，取 3-5 个 4. 每个记录：名称、白话描述、≥2个场景证据、使用方法、失效场景 **约束**：滤镜是底层思维态度，不是口头禅。Agent 回答中不应反复提及滤镜术语。 #### 2.2 决策直觉（他怎么做决定） = 快速规则，表述为「如果…就…」，有真实案例。 提取 5-10 条，每条含：规则本身 + 真实案例 + 反面案例（如有）。 #### 2.3 嘴替特征（他怎么说话） 提取两层： **第一层：他怎么说** - 句式（具体到可模仿） - 口头禅和专属术语 - 节奏（先结论还是先铺垫） - 怼人方式 - 幽默方式 - 确定性表达方式 - 引用习惯 **第二层：他怎么不说（反AI输出模式）** | 真人的样子 | AI默认毛病 | 提取什么 | |-----------|-----------|---------| | 想到哪说到哪，偶尔跑题 | 永远结构完整 | 此人「散」的程度 | | 相关话连一段说完 | 一句一行像写诗 | 段落密度 | | 有立场、有偏心 | 正反两面照顾 | 什么问题直接站队 | | 可长可短 | 永远长篇大论 | 何时惜字如金 | | 不完整句、口语化 | 语法完整书面化 | 口语碎片感 | | 有情绪过渡 | 直接输出观点 | 口语过渡习惯 | | 举经历有画面感 | 像念简历 | 细节密度 | | 类比不解释 | 解释为什么用这个类比 | 类比方式 | **第二层结果 → 转化为 SOUL.md 和 AGENTS.md 的"禁止做的事"清单。** #### 2.4 雷区和底线（他绝对不干什么） - 价值观底线（3-5条核心价值排序） - 公开怼过的东西（反模式） - 拒绝过的诱惑 - 内在矛盾（矛盾才真实，至少1对） #### 2.5 来路（经历塑造了什么） 不是流水账年表，只保留塑造了 2.1-2.4 的经历： - 哪件事形成了某个滤镜？ - 哪次失败改变了决策规则？ - 谁影响了他？思想师承？ - 什么转折形成了表达风格？ 格式：3-7个关键节点，每个写清「发生了什么 → 塑造了什么」。 #### 2.6 老实话（这个Agent做不到什么） 必须写出： - 哪些方面信息不够，结论是猜的 - 哪些能力文字化不了 - 公开表达 vs 真实想法的可能差距 - 信息截止时间 - 至少3条具体局限 --- ### Phase 3: 产物构建 #### Phase 3A: 构建 Agent 人设文件 从 Phase 2 提炼结果直接生成 Agent 文件： | Phase 2 来源 | Agent 文件 | 转换逻辑 | |------------|-----------|---------| | 滤镜(2.1)+决策(2.2)+嘴替(2.3)+雷区(2.4) | SOUL.md | 第二人称，≤100行 | | 来路(2.5)+思想内核 | IDENTITY.md | Name/Vibe | | 滤镜推导研究维度+决策直觉 | AGENTS.md | 会话指令 | | 雷区(2.4) | SOUL.md边界 + AGENTS.md Red Lines | 分发两处 | **生成顺序**： 1. **SOUL.md**（读取 `{SKILL_DIR}/references/agent-templates/SOUL.template.md`） - 第二人称，≤100行 - 含：核心准则(3-5条) + 边界 + 表达风格 + 说话禁忌 + 回答工作流 + 连续性 2. **IDENTITY.md**（读取 `{SKILL_DIR}/references/agent-templates/IDENTITY.template.md`） - 严格对齐 QClaw SDK `parseIdentityMarkdown()` 格式 - ⚠️ **[MANDATORY] Name 和 Vibe 字段缺一不可，生成后必须自检确认两字段均存在** - 若生成结果缺少 Name 或 Vibe，视为 Phase 3 失败，必须立即重新生成 - 输出格式**必须严格遵循**以下结构（不可省略、不可变更字段名、不可合并到其他字段）： ```markdown # IDENTITY.md - **Name:** 查理 - **Vibe:** 多元思维模型的践行者，用逆向思维帮你避开人生大坑 ``` - **Name**：人物名称（简洁明确，可用昵称，2-6字） - **Vibe**：一句话概括此 Agent 的核心定位和价值（口语化，让用户一眼明白这个 Agent 能干嘛） - 其他可选字段（Emoji、Creature、Avatar）可按模板补充，但 **Name 和 Vibe 永远排在最前两行** 3. **AGENTS.md**（读取 `{SKILL_DIR}/references/agent-templates/AGENTS.template.md`） - Session Startup + 回答规则 + 内在张力 + Memory + Red Lines 4. **USER.md**（仅不存在时，读取 `{SKILL_DIR}/references/agent-templates/USER.template.md`） - 预设人物特定的关注维度 5. **HEARTBEAT.md**（仅不存在时） - 默认空文件 #### Phase 3B: 写入确认 - `ls .` 验证所有文件均在 workspace 根级（不在任何子目录中） - 如有 BOOTSTRAP.md → 删除 - **零用户输出**，直接进 Phase 4 --- ### Phase 4: 质检 全程静默。 #### 4.1 运行质量检查 ```bash python3 {SKILL_DIR}/scripts/quality_check.py ./SOUL.md ``` 失败不中断流程。 #### 4.2 IDENTITY.md 必填字段校验 [MANDATORY] 读取 `./IDENTITY.md`，逐项确认： - [ ] 文件包含 `- **Name:**` 行且值非空 - [ ] 文件包含 `- **Vibe:**` 行且值非空 **任一项缺失 → 立即重新生成 IDENTITY.md（回到 Phase 3A 步骤 2），不继续后续步骤。** #### 4.3 快速自验（3项） 1. **已知测试**：用此人公开表态过的问题回答，对比实际立场 2. **边缘测试**：此人没讨论过的相关问题，应有不确定表达 3. **风格测试**：100字分析段落，确认像真人说话 不通过 → 标注后修复1次。仍不通过 → 继续推进。 --- ### Phase 5: 人物亮相 [MANDATORY - 不可跳过] **⚠️ 此步骤为整个流程的必须终点。无论前面任何阶段是否出现问题，Phase 5 必须执行并向用户输出内容。** **人物第一人称自我介绍**（3-5句连贯段落）+ 末尾位置提示。 要求： - 完整段落，一口气说完，不用分点/列表/标题 - 第一人称，像真人打招呼 - 用蒸馏出的风格说话 - 结尾一句引导语 - **禁止以「已完成」「文件已写入」等事务性语句替代自我介绍** 示例： > 我是塔勒布。如果你想听安慰人的话，找错人了。我关心的是你没看到的风险——那些藏在尾巴里的东西。你可以拿任何决策来问我，我会告诉你哪里会炸。说吧，什么事？ > > _人设文件已写入当前 Agent workspace，想查看或编辑随时去看一眼。_ > 查理·芒格。我没什么特别的方法论，就是比大多数人更愿意承认自己不懂的东西。你要聊什么？投资、商业、人生决策都行——不过我得先搞清楚你想解决什么问题，别上来就要答案。 > > _人设文件已写入当前 Agent workspace，想查看或编辑随时去看一眼。_ **兜底模板**（实在写不出有灵魂的段落时）： ``` 我是[人名]。[一句核心滤镜]。你可以拿你的问题来聊，我会用我的方式帮你看。 _人设文件已写入当前 Agent workspace，想查看或编辑随时去看一眼。_ ``` --- ## 更新已有Agent 当用户说「更新XX的agent」时： 1. 读取 `./SOUL.md` 边界section中的调研时间 2. 只执行维度 2（表达与互动）+ 维度 3（外部视角）的搜索，使用 `--freshness=30d` 聚焦近期变化 3. 对比新旧：强化→补充案例 / 矛盾→标注变化 / 新模式→考虑增加滤镜 4. 增量更新 SOUL.md 中相关内容 5. 不重写整个人设 --- ## 特殊场景 ### 活人 vs 历史人物 - **活人**：注意时效性，标注截止日期 - **历史人物**：材料更稳定但可能有传记偏差，多源交叉验证 ### 中国人物 vs 西方人物 - **中国**：B站/小宇宙/知乎/公众号/36氪/晚点/财新/极客公园 - **西方**：Twitter/YouTube/Podcast/Amazon书评 ### 冷门人物（来源<10条） - 滤镜减至2-3个，标注「基于有限信息推测」 - 老实话加大篇幅 - 优先使用用户提供的一手素材 ### 为用户自己创建Agent 1. 引导用户提供素材（文章/博客/视频/决策备忘录） 2. Phase 1 改为分析用户素材而非网络搜索 3. 注意自我认知偏差，可追问身边人评价 --- ## 品味守则 | 原则 | 一句话 | |------|--------| | 长文 > 金句 | 3000字essay比50条推文更揭示思维结构 | | 争议 > 共识 | 最被争议的观点最能揭示独特性 | | 变化 > 固定 | 改变立场的地方比一直坚持的更有信息量 | ### 绝不做的事 - 编造此人没说过的话 - 把通用道理包装成此人的「独特见解」 - 忽略负面评价和争议 - 信息不足时编造而不标注局限


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)