OpenClaw/clawhub-security-signals huggingface dataset:
Skill: xbthh/investment-cognition-detector (version 1.1.0)

# 投资认知检测器 (Investment Cognition Detector) ## 功能说明 帮助用户通过系统化提问验证自己对投资标的的真实理解深度，发现"以为自己懂但实际不懂"的认知盲点。 ## 核心框架（四问模型） 投资一家公司，只需要真正搞懂四个问题： | # | 问题 | 核心 | 权重 | |---|------|------|------| | Q1 | 这家公司是靠什么赚钱的？ | 商业模式 | 25% | | Q2 | 这家公司能否持续赚钱？ | 护城河/持续性 | 25% | | Q3 | 这家公司能否赚更多的钱？ | 成长性/第二增长曲线 | 25% | | Q4 | 这家公司赚了钱能否分给我？ | 股东回报/分红 | 25% | ## 使用方法 当用户说以下内容时加载本技能： - "检测一下我对XXX的认知" - "帮我检验我懂不懂XXX" - "测试一下我的投资认知" - "评估我对XXX的理解程度" - "用四问法检测一下我懂不懂XXX" - 任何要求检验投资认知、理解深度的请求 ## 技能流程 ### 第一步：确认公司 询问用户要检测哪家公司（持仓股票或关注股票）。 ### 第二步：公司研究 使用 web_search 和 web_fetch 快速研究公司基本信息： - 主营业务和商业模式（Q1相关） - 行业地位和竞争优势（Q2相关） - 成长性和新业务布局（Q3相关） - 分红历史和股东回报政策（Q4相关） ### 第三步：四个核心问题 基于公司特点，按以下顺序逐题提问。每个问题后都要追问。 **【问题一】这家公司是靠什么赚钱的？** > 用三句话向一个没有投资经验的人解释：这家公司的钱是从哪来的？ - 追问1："这三件事，哪个是最大收入来源？哪个增长最快？" - 追问2："这三件事，5年后还会是主要收入来源吗？" - 追问目的：验证用户是否真正理解商业模式核心，而非停留在"做什么"层面 **【问题二】这家公司能否持续赚钱？** > 这家公司的护城河是什么？为什么竞争对手不能抢走它的利润？ - 追问1："这个护城河5年后是变强了还是变弱了？" - 追问2："什么会削弱这个护城河？最可能的颠覆性因素是什么？" - 追问目的：验证用户对护城河持续性的理解，不是问"有没有"，而是问"能否持续" **【问题三】这家公司能否赚更多的钱？** > 它未来的增长来自哪里？有没有第二增长曲线？ - 追问1："它现在的增长是存量市场的份额抢夺，还是增量市场的扩张？" - 追问2："如果主业增长放缓，它靠什么实现下一阶段增长？" - 追问目的：验证用户是否关注公司成长性，而非只看当下静态盈利能力 **【问题四】这家公司赚了钱能否分给我？** > 它历史分红情况如何？利润是真现金还是纸面利润？ - 追问1："如果它不分红，钱会用来做什么？再投资回报率高吗？" - 追问2："它的分红政策稳定吗？跟同行比如何？" - 追问目的：验证用户对股东回报的理解——不是问"分红好不好"，而是问"钱能否最终流向你" ### 第四步：交互问答 逐题提问，等待用户回答，根据回答动态追问： - 追问原则：追问"为什么"、追问证据、追问边界条件、追问反面意见 - 记录用户回答的关键内容用于最终评估 ### 第五步：生成诊断报告 报告结构： 1. **总体评分**：四档等级（不懂/初步懂/基本懂/完全懂）+ 简短定性 2. **四问得分**：每个问题的回答质量评估 3. **问题详解**：每问得分 + 具体反馈 + 用户原话引用 4. **认知盲点**：明确列出"你以为懂但实际有问题的点" 5. **核心追问**：在交互中暴露的最有价值的问题 6. **学习建议**：针对认知盲点的具体研究方向 ### 评分标准 | 等级 | 分值 | 含义 | |------|------|------| | 🔴 不懂 | 0-40% | 存在严重认知盲点，不建议重仓 | | 🟡 初步懂 | 40-70% | 有基础认知，但存在重要漏洞 | | 🟢 基本懂 | 70-90% | 理解核心逻辑，少量盲点可接受 | | ✅ 完全懂 | 90%+ | 认知较为完整，可考虑重仓 | ## 输出格式 以Markdown格式输出完整诊断报告，便于阅读和后续转换。 ## 注意事项 - 问题要基于具体公司特点设计，不要泛泛而问 - 追问要犀利但不带评判色彩，专注于暴露认知漏洞 - 报告要直接、犀利，引用用户原话作为证据 - 目的是帮助用户发现自己不懂的地方，不是证明AI有多聪明 - 四问权重均等（各25%），但可以根据公司特点调整侧重


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: alexmayanjun-collab/dataworks-daily-monitor (version 1.0.0)

# DataWorks 每日任务监控技能 ## 功能 每日统计 DataWorks 任务运行情况，成功/失败汇总，失败任务告警 ## 触发词 - "检查 DataWorks 任务状态" - "昨天 DataWorks 任务运行情况" - "DataWorks 失败任务有哪些" - "dataworks 监控" - "任务运行日报" ## 执行流程 ### 1. 读取配置 从环境变量读取： - `ALIYUN_ACCESS_KEY_ID` - `ALIYUN_ACCESS_KEY_SECRET` - `DATAWORKS_PROJECT_ID` - `DATAWORKS_REGION_ID` (默认：cn-shanghai) ### 2. 计算时间范围 获取昨天的时间范围： - Start: 昨天 00:00:00 - End: 昨天 23:59:59 ### 3. 调用 DataWorks API ```python ListDagInstances( ProjectId=PROJECT_ID, StartTime=start_time, EndTime=end_time ) ``` ### 4. 统计任务状态 **状态分类：** - ✅ 成功 (SUCCESS, SUCCEEDED) - ❌ 失败 (FAILED, FAILURE) - ⏳ 运行中 (RUNNING, PENDING) - ❄️ 冻结/暂停 (FROZEN, FREEZED) - **不计入失败** - ⏭️ 未运行 (NOT_RUN, SKIP, SKIPPED) - **不计入失败** - 📊 其他 **统计逻辑：** - 实际运行数 = 成功 + 失败 + 运行中 - 冻结/暂停/未运行的任务单独统计，不算失败 ### 5. 生成报告 ``` 📊 DataWorks 任务日报 (2026-02-26) ✅ 成功：158 个 ❌ 失败：3 个 ⏳ 运行中：0 个 📋 总计：161 个 ❌ 失败任务： 1. ods_user_info_df - 数据源连接超时 2. dwd_order_detail_di - 字段类型不匹配 3. ads_daily_report_di - 内存不足 详情：https://dataworks.console.aliyun.com/... ``` ### 6. 发送报告 通过飞书发送给用户 ### 7. 失败告警 如果有失败任务，@用户告警 ## API 配置 **环境变量：** ```bash export ALIYUN_ACCESS_KEY_ID="your_access_key_id" export [REDACTED_SECRET]" export DATAWORKS_PROJECT_ID="your_project_id" export DATAWORKS_REGION_ID="cn-shanghai" ``` ## 核心 API | API | 功能 | |-----|------| | `ListDagInstances` | 获取指定日期的任务实例列表 | | `GetInstanceStatus` | 查询任务实例状态 | ## 报告格式 ``` 📊 DataWorks 任务日报 (YYYY-MM-DD) ✅ 成功：X 个 ❌ 失败：X 个 ⏳ 运行中：X 个 📋 总计：X 个 ❌ 失败任务： 1. 任务名 - 错误信息 2. ... 详情链接：[DataWorks 控制台] ``` ## 定时任务 **时间：** 每天上午 9:00 自动执行 **触发词：** `dataworks-daily-check` ## 注意事项 1. **权限要求** - 需要有 DataWorks API 访问权限 2. **配置安全** - AccessKey 不要泄露 3. **失败告警** - 有失败任务时立即告警 4. **报告保存** - 可选保存到文件


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: codekungfu/atms (version 0.1.0)

--- name: "附近取款机" description: "Find nearby ATMs. Invoke when user asks for cash withdrawal near me." --- # Nearby ATMs 用途 - 提供用户当前位置附近的 ATMs 列表 - 统一返回字段与查询行为，便于前端/接口复用 触发条件 - 用户询问“取款机 附近 / ATMs near me / cash withdrawal” 输入参数 - location: 经纬度 { lat, lng }，必填 - radius_meters: 查询半径，默认 3000 - limit: 返回数量上限，默认 20，最大 50 - filters: 可选筛选（是否可存款、是否免手续费等） 响应字段 - 统一参见 [STANDARD_RESPONSE.md](file:///Users/mac_lkm/workspace/trae/100fj/.trae/skills/STANDARD_RESPONSE.md) - 本技能 category 固定为 "atms" 错误码 - INVALID_LOCATION: 经纬度不合法 - RADIUS_TOO_LARGE: 超过最大查询半径 - PROVIDER_UNAVAILABLE: 数据源不可用 - RATE_LIMITED: 触发速率限制 示例 - 输入: { location: { lat: 30.123, lng: 120.456 }, radius_meters: 2000, limit: 10 } - 输出: 标准 POI 列表（见 STANDARD_RESPONSE.md） 隐私与速率限制 - 仅在用户授权定位后查询 - 避免保留精确坐标，必要时进行网格化模糊处理


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: xammarie/comment-converter (version 1.0.1)

--- name: comment-converter description: Turn Reddit thread context into genuinely helpful comments that build trust and can convert to profile/link clicks. --- # Comment Converter This skill creates comments that feel native to the thread and are useful even without a CTA. ## Inputs - Original post text - Top comments (2–10) - Your viewpoint/experience - Conversion goal (optional) ## Comment styles to generate 1. **Direct answer** — short, clear, practical 2. **Checklist response** — step-by-step action 3. **Case response** — mini example with result 4. **Nuanced counterpoint** — disagree respectfully with reasoning 5. **CTA-light response** — invite follow-up (no hard sell) ## Rules - Lead with value; never lead with links - Be specific: numbers, examples, tradeoffs - Match subreddit vibe (technical vs casual) - Avoid AI clichés and corporate tone - Keep comments concise unless thread demands depth ## Conversion approach (ethical) - First comment: pure value - Second touch (if asked): share template/resource - Third touch: invite DM or provide link only when relevant ## Output format For each variant include: - Goal - Draft comment - Why it should work in this thread ## Example Input: "Founder asks why cold outreach gets no replies" Output should include one checklist comment with subject-line testing, list hygiene, relevance-first intro, and tight CTA.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: joifg/a-share-glossary-tutor (version 1.0.0)

--- name: a-share-glossary-tutor description: A股/炒股新手概念与指标的结构化讲解与笔记沉淀。用在：解释PE/PB/ROE/现金流/财报口径、板块与题材、政策术语；把零散问题整理成可复习的知识体系（中文优先）。 user-invocable: true metadata: {"openclaw": {"emoji": "📚"}} --- # A-Share Glossary Tutor ## Inputs - concept（必填）：字符串或字符串数组。例："市盈率PE" / ["ROE","自由现金流"] - context（可选）：你看到这个概念的场景/原句/链接 - level（可选）："beginner" | "intermediate"（默认 beginner） ## Output（固定结构） 对每个 concept 输出： 1) 一句话解释 2) 在 A 股语境下怎么看（常见用法/口径差异提醒） 3) 新手常见误区（至少 1 条） 4) 关联指标/下一步要看的数据（给出 2–5 条清单） 5) 可选：一个小例子（用通俗数字演示） ## Notes / Persistence - 将整理结果追加写入：`notes/stocks/glossary.md` - 写入时按标题分组（概念名作为二级标题），避免重复；如已存在则补充“误区/例子/下一步”。 ## Boundaries - 不给具体买卖建议；不承诺收益；强调数据口径与滞后。 - 涉及新闻/政策时，先区分“事实/推断/情绪”。 ## Failure modes - concept 为空：指出缺参数并给示例输入。 - 无法判断口径：明确提出需要的口径（TTM/静态、报告期等）。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: bytesagain1/precedent (version 1.0.0)

--- name: "precedent" version: "1.0.0" description: "Legal precedent reference — stare decisis, case law hierarchy, distinguishing, overruling, persuasive authority. Use when researching binding case law, analyzing judicial reasoning, or building legal arguments." author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [precedent, stare-decisis, case-law, judicial, legal, authority, common-law] category: "legal" --- # Precedent — Legal Precedent Reference Quick-reference skill for the doctrine of precedent, case law analysis, and stare decisis. ## When to Use - Determining which court decisions are binding in your jurisdiction - Distinguishing or analogizing prior cases - Understanding ratio decidendi vs obiter dicta - Researching whether a precedent has been overruled or modified - Building persuasive legal arguments from case law ## Commands ### `intro` ```bash scripts/script.sh intro ``` Overview of legal precedent — stare decisis, common law tradition, purpose. ### `hierarchy` ```bash scripts/script.sh hierarchy ``` Court hierarchy — binding vs persuasive authority, federal/state systems. ### `analysis` ```bash scripts/script.sh analysis ``` Case analysis — ratio decidendi, obiter dicta, material facts, holdings. ### `distinguishing` ```bash scripts/script.sh distinguishing ``` Distinguishing precedent — factual differences, legal distinctions, narrow/broad readings. ### `overruling` ```bash scripts/script.sh overruling ``` Overruling and modifying precedent — when courts reverse themselves. ### `research` ```bash scripts/script.sh research ``` Case law research — citation formats, Shepardizing, KeyCite, databases. ### `writing` ```bash scripts/script.sh writing ``` Using precedent in legal writing — IRAC, analogical reasoning, synthesis. ### `checklist` ```bash scripts/script.sh checklist ``` Case law analysis and application checklist. ### `help` ```bash scripts/script.sh help ``` ### `version` ```bash scripts/script.sh version ``` ## Configuration | Variable | Description | |----------|-------------| | `PRECEDENT_DIR` | Data directory (default: ~/.precedent/) | --- *Powered by BytesAgain | bytesagain.com | [REDACTED_SECRET]*


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: harleyscodes/kyberswap-arbitrage (version 1.0.0)

--- name: kyberswap-arbitrage description: Execute triangular arbitrage on Base network via KyberSwap. Use for: (1) Finding arbitrage opportunities between token pairs, (2) Calculating optimal swap paths, (3) Executing multi-hop trades, (4) Managing gas and slippage. --- # KyberSwap Arbitrage ## Overview Triangular arbitrage: profit from price differences between 3 tokens (e.g., USDC → ETH → USDT → USDC) ## Key Contracts (Base Mainnet) - **Router**: [REDACTED_SECRET] - **Factory**: [REDACTED_SECRET] ## Core Logic ### 1. Get Quotes ```typescript const router = new ethers.Contract(routerAddr, routerABI, provider); // Get amounts out for exact input const [amountOut] = await router.getAmountsOut( amountIn, // Wei amount [tokenA, tokenB, tokenC] // Path ); ``` ### 2. Calculate Profit ``` profit = finalAmount - initialAmount - gasCosts ``` ### 3. Execute Swap ```typescript const tx = await router.swapExactTokensForTokens( amountIn, amountOutMin, path, recipient, deadline ); ``` ## Token Addresses (Base) - **USDC**: [REDACTED_SECRET] - **USDT**: [REDACTED_SECRET] - **ETH**: [REDACTED_SECRET] - **WETH**: [REDACTED_SECRET] ## Arbitrage Pairs (Base) Common triangular paths: - USDC → ETH → USDC - USDC → WETH → USDT → USDC - USDT → ETH → USDC → USDT ## Safety Checks 1. **Slippage**: Set `amountOutMin` = output * (1 - slippage%) 2. **Gas**: Estimate gas, ensure profit > gas 3. **Max Price Impact**: Check pool reserves before large trades 4. **Renounced Contracts**: Only trade tokens with renounced ownership ## Risk Profile - **Aggressive** but audit-first - Skip all non-renounced contracts - Check for honeypot tokens


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: stanlee000/norman-create-invoice (version 1.0.0)

--- name: create-invoice description: Create and optionally send a new invoice to a client. Use when the user wants to invoice someone, bill a client, or create a new Rechnung. version: 1.0.0 disable-model-invocation: true argument-hint: "[client name] [amount] [description]" metadata: openclaw: emoji: "\U0001F9FE" homepage: https://norman.finance requires: mcp: - norman-finance --- Help the user create and send an invoice step by step: 1. **Identify the client**: If a client name is provided in `$ARGUMENTS`, call `list_clients` and find the matching client. If ambiguous, ask the user to clarify. If no client exists, offer to create one with `create_client`. 2. **Gather invoice details**: Collect the following information (ask for anything not provided): - Line items: description, quantity, unit price, VAT rate (default 19% for Germany) - Invoice date (default: today) - Due date / payment terms (default: 14 days) - Any notes or special terms 3. **Create the invoice**: Call `create_invoice` with all gathered details. Use the correct client_id from step 1. 4. **Review**: Show the user a summary of the created invoice including the total amount. 5. **Send**: Ask the user if they want to send the invoice now. If yes, call `send_invoice` to email it to the client. Important: - All amounts should be in EUR unless specified otherwise - Default VAT rate in Germany is 19% (7% for reduced rate items like food, books) - Invoice numbers are auto-generated by Norman - For recurring work, suggest `create_recurring_invoice` instead


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: torchesfrms/agentfarm-finder (version 1.0.2)

# agentfarm-finder AI Agent 早期项目发现工具。监控 Twitter 上与 AI Agent、Crypto、DeFi 相关的新项目发布。 ## 功能 - 搜索关键词：bot, agent, auto, openclaw, aiagent, 8004 + mint, farm, yield, puzzle - 自动过滤噪音（GTA、游戏、新闻、主播撕逼等） - 输出原始数据 + 项目精选 - 每天 16:00 自动运行 ## 使用方法 ```bash # 手动运行 bash ~/.openclaw/workspace/skills/agentfarm-finder/scripts/run.sh # 或使用 cron # 0 16 * * * bash /Users/moer/.openclaw/workspace/skills/agentfarm-finder/scripts/run.sh ``` ## 输出文件 | 文件 | 内容 | |------|------| | `output/results_YYYY-MM-DD.csv` | 原始数据 | | `output/results_YYYY-MM-DD_projects.csv` | 项目精选 | ## 配置 修改 `scripts/run.sh` 中的参数： - `HOURS=24` - 时间范围 - `COUNT=30` - 每词搜索数量 ## 排除列表 搜索排除：nvidia, meta, tesla, slowmist 等 过滤排除：grok, nft, 闲聊用户等


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: cinience/aliyun-qwen-asr-realtime (version 1.0.0)

--- name: aliyun-qwen-asr-realtime description: Use when low-latency realtime speech recognition is needed with Alibaba Cloud Model Studio Qwen ASR Realtime models, including streaming microphone input, live captions, or duplex voice agents. version: 1.0.0 --- Category: provider # Model Studio Qwen ASR Realtime ## Validation ```bash mkdir -p output/aliyun-qwen-asr-realtime python -m py_compile skills/ai/audio/aliyun-qwen-asr-realtime/scripts/prepare_realtime_asr_request.py && echo "py_compile_ok" > output/aliyun-qwen-asr-realtime/validate.txt ``` Pass criteria: command exits 0 and `output/aliyun-qwen-asr-realtime/validate.txt` is generated. ## Output And Evidence - Save session payloads and response samples under [REDACTED_SECRET]. ## Critical model names Use one of these exact model strings: - `qwen3-asr-flash-realtime` - [REDACTED_SECRET] ## Use cases - Realtime subtitles and captions - Voice-agent duplex input - Streaming speech-to-text in browser or terminal clients ## Prerequisites - Set `DASHSCOPE_API_KEY` in your environment, or add `dashscope_api_key` to `~/.alibabacloud/credentials`. - Realtime sessions generally require WebSocket or streaming session handling in the client. ## Normalized interface (asr.realtime) ### Request - `model` (string, optional): default `qwen3-asr-flash-realtime` - `language_hints` (array<string>, optional) - `format` (string, optional): e.g. `pcm`, `wav` - `sample_rate` (int, optional): e.g. `16000` - `chunk_ms` (int, optional): frame size in milliseconds ### Response - `text` (string): recognized transcript fragment - `is_final` (bool): finalization marker - `usage` (object, optional) ## Quick start Generate a request template: ```bash python skills/ai/audio/aliyun-qwen-asr-realtime/scripts/prepare_realtime_asr_request.py \ --output output/aliyun-qwen-asr-realtime/request.json ``` ## Operational guidance - Prefer 16kHz mono PCM unless your client stack requires another format. - Keep chunks small enough for responsive partial results. - If you only have recorded files, use `skills/ai/audio/aliyun-qwen-asr/` instead. ## References - `references/sources.md`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: hanbinsite/wechat-publish-skill (version 1.0.0)

# 微信公众号文章发布技能 自动化发布 Markdown 文章到微信公众号草稿箱的完整流程。 ## 功能 - Markdown 转 HTML（适配微信公众号格式） - 自动生成封面图（Pillow 规则绘制 / AI 大模型生成） - 批量发布文章到草稿箱 - 支持多个专题管理 ## 使用方法 1. 配置 `.env` 文件填写微信公众号 AppID 和 Secret 2. （可选）配置 AI 图片生成 API 3. 准备文章目录结构（每个期数一个文件夹） 4. 运行发布脚本 ## 环境变量 | 变量名 | 说明 | 默认值 | |--------|------|--------| | WECHAT_APP_ID | 公众号 AppID | - | | WECHAT_APP_SECRET | 公众号 AppSecret | - | | WECHAT_ACCOUNT_NAME | 作者署名 | - | | AI_IMAGE_BASE_URL | AI 图片 API 地址 | https://api.openai.com/v1 | | AI_IMAGE_API_KEY | AI 图片 API 密钥 | - | | AI_IMAGE_MODEL | AI 图片模型 | dall-e-3 | ## 目录结构示例 ``` tutorials/ ├── your-tutorial/ │ ├── 01-getting-started/ │ │ ├── README.md # 文章内容 │ │ └── cover.png # 封面图（可选） │ ├── 02-advanced/ │ │ ├── README.md │ │ └── cover.png │ └── ... ``` ## 文件说明 - `publisher.py` - 核心发布脚本 - `cover_generator.py` - 封面图生成工具 - `template.env` - 环境变量模板 ## 注意事项 - 文章使用 Markdown 格式编写 - 封面图尺寸建议 900x383px - 发布前请确保文章内容已审核


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: snippyfly/requirement-pre-review (version 1.0.0)

--- name: requirement-pre-review description: 从业务、研发、测试三个视角对需求文档进行系统性预评审，自动识别场景不完整、边界条件缺失、异常流程遗漏、业务规则模糊等问题，输出结构化评审报告及补充建议。当用户提交需求文档、PRD、功能说明、用户故事等内容并希望进行评审、检查、审核时，立即使用此 Skill。触发词包括但不限于："帮我评审需求"、"需求预评审"、"检查PRD"、"需求有什么问题"、"需求文档review"、"帮我看看需求"、"需求质量检查"。即使用户只是粘贴了一段需求描述，也应主动触发此 Skill 进行评审。 --- # 需求预评审专家 你是一位资深的需求预评审专家，擅长从业务、研发、测试三个核心视角发现需求文档中的缺失、矛盾或模糊之处。你的任务是根据用户提供的需求文档（或需求描述），按照标准化检查项进行系统化评审，输出清晰的问题列表及补充建议。 ## 评审范围与检查维度 请严格依据以下三大维度、共九个检查项进行逐条核对： ### 一、业务视角（价值与规则完整性） 1. **业务目标与场景完整性**：需求是否明确要解决的业务问题？用户故事/使用场景是否覆盖了主要角色和核心路径？是否存在遗漏的次要角色？ 2. **业务规则与约束**：关键的判断逻辑、计算公式、数据字典、权限范围是否定义清晰？有无依赖外部系统或人工操作的环节未说明？ 3. **术语与一致性**：文档中的术语是否统一？是否存在与现有系统或行业惯例冲突的命名/定义？ ### 二、研发视角（技术可行性与设计遗漏） 1. **功能交互与依赖**：本需求与现有功能模块的交互方式是否明确？是否需要其他系统提供新接口或改造？ 2. **数据模型与状态机**：涉及的数据实体、字段类型、长度、默认值、枚举值是否完整？对象的状态流转是否有缺漏（例如"草稿→提交→审核→发布"中缺少"撤回"状态）？ 3. **非功能性需求**：是否提及性能（并发、响应时间）、安全性（越权、数据加密）、可扩展性（未来变更预留）？若未提及，应标注为缺失。 ### 三、测试视角（可测性与缺陷预防） 1. **边界条件**：数值、长度、时间、集合等边界（最大/最小/空/零/负数/超长字符串）是否明确定义了预期行为？ 2. **异常流程**：网络中断、第三方服务超时、数据不一致、重复提交、并发操作等异常情况下，系统应给出何种提示或处理方式？ 3. **可观测性**：关键操作是否留有日志？错误信息是否对用户友好且对技术支持有意义？是否有埋点或监控需求？ ## 输出格式 请以 Markdown 格式输出，结构如下： ``` ## 需求预评审报告 ### 一、总体评价 （2-3句话概括需求文档的质量：清晰度、完整性、主要风险点） ### 二、问题与建议明细 | 编号 | 视角 | 检查维度 | 问题描述（引用原文或指出缺失点） | 详细建议（补充内容/修改方向） | |------|------|----------|--------------------------------|-------------------------------| | P01 | 业务 | 业务场景完整性 | ... | ... | ### 三、优先级建议 - **高优先级**（必须澄清，否则无法进入开发）：P0x、P0x - **中优先级**（建议补充，对实现质量有显著影响）：P0x、P0x - **低优先级**（优化项，可在后续迭代完善）：P0x、P0x ### 四、最佳实践提示 （根据常见遗漏，主动给出1-2条类似需求的改进示范） ``` ## 工作流程 1. 等待用户输入需求文档内容。若未直接提供，提示："请提供需要评审的需求文档（文字或截图中的文本均可）。" 2. 逐项对照检查维度分析，对每个发现的问题给出具体补充建议，避免仅指出缺失。 3. 若文档表述含糊但可合理推测，在问题描述中标注「（待确认）」，并给出推测性建议。 4. 输出严格按照上述格式。 ## 注意事项 - 避免主观评价（如"这个设计很糟糕"），使用"缺失/模糊/不一致"等客观描述。 - 不强制要求与功能实现无关的内容（如数据库选型）。 - 若文档质量极高，问题列表可为空，但需在总体评价中肯定并给出少量优化建议。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: axelhu/openclaw-contacts (version 1.0.3)

--- name: contacts version: "1.0.3" description: 通讯录查询与维护技能。用于查找联系人信息（open_id、chat_id、account_id 等）、记录新联系人、或查询历史沟通偏好。触发时机：(1) 需要 @某人或向某渠道发消息时 (2) 认识新联系人后需要录入通讯录时 (3) 查询某人的联系方式或交流偏好时 (4) 询问"谁知道xxx的飞书ID"或"怎么联系xxx"时。 --- # Contacts Skill — 通讯录技能 > 记录联系人沟通方式与交流规范，让 Agent 每次联系人都能查表办事，不用靠猜。 ## 核心原则 - **每个 Agent 自行维护**自己的通讯录，不共享 - **脱敏信息**：只记录沟通相关字段，不记录敏感个人信息 - **YAML 格式**：方便程序读取查询，不用正则匹配 Markdown - **自动维护**：认识新联系人后自然录入，不需要人工干预 - **Skill 不含数据**：实际联系人数据放在 Agent 的 `memory/contacts/` 下，Skill 仅描述格式与规范 ## 通讯录位置 ``` memory/contacts/ ├── contacts.d/ # 联系人卡片目录 │ └── <contact_id>.yaml # 每个联系人一个 YAML 文件 ├── channels/ # 渠道最佳实践 │ └── feishu.md # 飞书交流规范 └── schema.md # 联系人数据 Schema 说明 ``` ## 联系人卡片格式 每个联系人在 `contacts.d/` 下有一个 YAML 文件，文件名即 `contact_id`（内部唯一标识）。 ### 必需字段 ```yaml contact_id: "unique_id" # 内部唯一标识（如 mala, zero-producer） name: "通用名称" # 内部通用名字 channels: feishu: open_id: "ou_xxx" # 飞书 open_id（用于 @ 路由） nickname: "群名片" # 飞书群里的显示名 chat_id: "oc_xxx" # 所在群 chat_id account_id: "账号名" # message 工具发送时用的 accountId ``` ### 可选字段 ```yaml internal: agent_id: "agent_name" # OpenClaw agent ID（如与 contact_id 不同） role: "职责" # 角色 project: "项目" # 所属项目 preferences: preferred: "feishu" # 首选渠道 language: "中文" formality: "随意" # 沟通风格 context: met_via: "认识途径" collaboration: "合作项目" history: "历史记录" notes: - "踩过的坑" ``` ### 字段说明 | 字段 | 必须 | 说明 | |------|------|------| | `contact_id` | ✅ | 内部唯一标识 | | `name` | ✅ | 内部通用名称 | | `channels.feishu.open_id` | ✅ | 飞书 open_id，@ 时用 | | `channels.feishu.nickname` | ✅ | 飞书群里的显示名，@ 时填这个 | | `channels.feishu.chat_id` | ✅ | 所在群 chat_id | | `channels.feishu.account_id` | ✅ | message 工具的 accountId 参数 | | `internal` | ❌ | 内部身份信息 | | `preferences` | ❌ | 沟通偏好 | ## 查询方法 ```bash # 查单个联系人 cat memory/contacts/contacts.d/mala.yaml # 按名字搜索 grep -rl "name:" memory/contacts/contacts.d/ | xargs grep -l "小龙虾" # 或使用脚本（需要先将 skills/contacts/scripts/ 加入 PATH） list.sh # 列出所有联系人 search.sh <名字> # 按名字搜索 get.sh <contact_id> # 查看单个联系人详情 ``` ## 新增联系人流程 1. 认识新联系人（通过对话、任务协作等） 2. 在 `memory/contacts/contacts.d/` 下创建 `<contact_id>.yaml` 3. 填写沟通相关字段（类型、渠道地址、交流偏好） 4. 如果是 Agent，记录其 Agent ID 和职责 ## 维护规则 - 每次成功联系某人后，如发现新的沟通偏好，更新卡片 - 踩过的坑（如"此人不喜欢直接打电话"）及时补充到 `notes` - 至少每月检查一次卡片，过时信息清理 ## 已有联系人（示例） | contact_id | 名字 | 飞书昵称 | 类型 | |------------|------|---------|------| | mala | 麻辣小龙虾 | 麻辣小龙虾 | Agent | | main | 小爪子 | 龙虾养殖厂代表 | Agent | | ... | | | |


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