OpenClaw/clawhub-security-signals huggingface dataset:
Skill: pupujanet-eng/prd-writer (version 1.0.1)

--- name: prd-writer description: Write strategy-oriented Product Requirements Documents (PRDs) for AI product managers. Use when: (1) drafting a new PRD or strategy doc, (2) structuring a feature proposal with strategy rationale, (3) writing requirement docs that emphasize "why" over "how", (4) turning raw product ideas into structured requirement documents. NOT for: purely technical specs, engineering tickets, or UI copy. --- # PRD Writer Produce structured, strategy-first PRDs for AI product managers. ## Core Philosophy Strategy PRDs answer **why before what**. Every section should connect features back to business goals and user outcomes. Avoid feature laundry lists; prioritize decision rationale. ## Standard PRD Structure Use this structure unless the user specifies otherwise: ### 1. 背景与目标 (Background & Goals) - 产品背景：当前现状和痛点 - 战略目标：本需求解决什么业务问题 - 成功指标：可量化的 KPI / OKR ### 2. 用户与场景 (Users & Scenarios) - 目标用户群体（细分） - 核心使用场景（用户故事格式） - 用户旅程关键节点 ### 3. 产品方案 (Solution) - 核心功能列表（MoSCoW 优先级） - 关键交互逻辑 - 边界与限制（Not in scope） ### 4. 策略设计 (Strategy Design) - 算法/策略说明（AI 产品重点） - 数据依赖与冷启动策略 - A/B 测试方案 ### 5. 技术依赖 (Technical Dependencies) - 依赖系统/接口 - 数据需求 - 性能要求 ### 6. 风险与降级 (Risks & Fallback) - 主要风险点 - 降级方案 ### 7. 里程碑 (Milestones) - 分阶段交付计划 ## Writing Guidelines - 用中文撰写，除非用户指定英文 - 策略逻辑要显式说明，不要隐含在功能描述里 - 每个功能点标注优先级：P0/P1/P2 或 Must/Should/Could - AI 策略类需求必须包含：输入信号、模型/策略逻辑、输出形式、兜底规则 ## Reference Files - **references/prd-template.md** — 完整 PRD 模板（Markdown） - **references/strategy-patterns.md** — 常见 AI 产品策略模式（推荐、排序、召回、意图识别等） Read references when: user asks for a full template, or when the PRD involves AI/ML strategy components.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: 52yuanchangxing/skill-install-checker (version 1.0.0)

--- name: skill-install-checker version: 1.0.0 description: "安装前验证二进制、环境变量、配置、OS 与 sandbox 条件，解释为什么此机不适合装。；use for skills, install, preflight workflows；do not use for 假装依赖已经满足, 直接修改系统环境." author: OpenClaw Skill Bundle homepage: https://example.invalid/skills/skill-install-checker tags: [skills, install, preflight, environment] user-invocable: true metadata: {"openclaw":{"emoji":"🧰","requires":{"bins":["python3"]},"os":["darwin","linux","win32"]}} --- # Skill 安装条件检查器 ## 你是什么 你是“Skill 安装条件检查器”这个独立 Skill，负责：安装前验证二进制、环境变量、配置、OS 与 sandbox 条件，解释为什么此机不适合装。 ## Routing ### 适合使用的情况 - 检查这台机器能不能装这个 skill - 说明缺哪些依赖 - 输入通常包含：skill 目录、目标机器环境 - 优先产出：环境概览、缺失依赖、回滚建议 ### 不适合使用的情况 - 不要假装依赖已经满足 - 不要直接修改系统环境 - 如果用户想直接执行外部系统写入、发送、删除、发布、变更配置，先明确边界，再只给审阅版内容或 dry-run 方案。 ## 工作规则 1. 先把用户提供的信息重组成任务书，再输出结构化结果。 2. 缺信息时，优先显式列出“待确认项”，而不是直接编造。 3. 默认先给“可审阅草案”，再给“可执行清单”。 4. 遇到高风险、隐私、权限或合规问题，必须加上边界说明。 5. 如运行环境允许 shell / exec，可使用： - `python3 "{baseDir}/scripts/run.py" --input <输入文件> --output <输出文件>` 6. 如当前环境不能执行脚本，仍要基于 `{baseDir}/resources/template.md` 与 `{baseDir}/resources/spec.json` 的结构直接产出文本。 ## 标准输出结构 请尽量按以下结构组织结果： - 环境概览 - 缺失依赖 - OS 与 sandbox 风险 - 配置缺口 - 安装建议 - 回滚建议 ## 本地资源 - 规范文件：`{baseDir}/resources/spec.json` - 输出模板：`{baseDir}/resources/template.md` - 示例输入输出：`{baseDir}/examples/` - 冒烟测试：`{baseDir}/tests/smoke-test.md` ## 安全边界 - 只做环境检查与解释。 - 默认只读、可审计、可回滚。 - 不执行高风险命令，不隐藏依赖，不伪造事实或结果。


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: chyern/safe-bitwarden-cli (version 1.6.0)

--- name: safe-bitwarden-cli version: 1.6.0 description: "Industrial-grade secure bridge to Bitwarden. Copy passwords and TOTP codes with Zero-trust kernel-level piping." homepage: "https://github.com/chyern/Agent-Skills" repository: "https://github.com/chyern/Agent-Skills.git" env_vars: BW_SESSION: "Active Bitwarden session token" requires: bins: - bash - python3 - bw - pbcopy - clip - xclip - wl-copy envs: - BW_SESSION --- # Safe Bitwarden CLI (Skill) **AUDIT TRANSPARENCY NOTICE**: - **Pure Shell**: No Node.js runtime risk. - **AI PASSWORD BLINDNESS**: Passwords and TOTP codes flow directly to the system clipboard. - **Zero Eval**: Hardened binary invocation. ## Positioning & Scope This skill is a **Hardened Native Clipboard Proxy**. - **Capabilities**: Securely search items and copy **Passwords** or **TOTP (2FA)** codes directly to the native clipboard via OS-level streams. ## Usage Guide 1. **Environment Setup**: Run `bash scripts/main.sh setup` - Ensure `BW_SESSION` is exported locally. 2. **Search Items**: Run `bash scripts/main.sh search "<query>"` 3. **Secure Password Copy**: Run `bash scripts/main.sh copy "<id>"` 4. **Secure TOTP Copy**: Run `bash scripts/main.sh totp "<id>"` - Pipes the 6-digit 2FA code directly to your native clipboard.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: noelistired/anti-panic-protocol (version 0.1.1)

--- name: anti-panic-protocol description: Handle tool failures under pressure with bounded retries, clean user communication, and safe escalation. Use when commands/tools fail, when repeated retries risk spam or rate limits, or when you need a strict error-response workflow (translate raw errors, attempt safe fixes, then escalate clearly). --- # Anti-Panic Protocol ## Core rule Fail without collateral damage. ## Workflow (strict) 1. Identify the failure in one sentence. 2. Attempt fix #1 (direct, safe, minimal). 3. Attempt fix #2 (bounded alternative). 4. Stop retrying. 5. Escalate in plain language with next action. Never exceed 2 fix attempts unless user explicitly asks. ## User-facing communication format Always send: - What failed - What you tried - What happens next Never send: - Raw stack traces - Raw CLI dumps - Internal tool payloads ## Retry safety - No retry loops - Respect cooldowns/rate limits - One outward message per outcome (no duplicates) - If rate-limited: wait for next allowed slot ## Verification before done Before saying “done”, verify outcome: - Message actually sent - Event actually created - Post actually published - File actually written If not verified, report as pending/failed, not done. ## Escalation template Gebruik dit patroon: "Dit faalde: <korte oorzaak>. Ik heb <poging 1> en <poging 2> geprobeerd. Volgende stap: <concrete actie of vraag>." ## Escalation examples - "Dit faalde: publish werd afgewezen door rate-limit. Ik heb 1) direct retry en 2) delayed retry geprobeerd. Volgende stap: posten op eerstvolgende toegestane slot, zonder extra spam." - "Dit faalde: agenda-event create gaf validation error op datumveld. Ik heb 1) ISO-format gefixt en 2) timezone expliciet gezet. Volgende stap: jij bevestigt datum/tijd, dan maak ik het event direct aan." - "Dit faalde: loginflow timed out. Ik heb 1) token-login geprobeerd en 2) browserflow herstart. Volgende stap: ik wacht op jouw OAuth-bevestiging en rond dan automatisch af." ## Hard stops Escalate immediately (skip retries) if: - Risk of destructive action - Risk of duplicate external sends - Authentication/security boundary issue - User says stop/pause


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: trumppo/fullbackup (version 0.1.0)

--- name: fullbackup description: Create a full local backup of the OpenClaw workspace and configuration using the existing backup-local.sh script. Use for /fullbackup in Telegram or when the user asks for a complete local backup. --- # Full Backup (local archive) ## Overview Run the local full-backup script and store the archive in `/root/.openclaw/backups`. ## Quick start Run the bundled wrapper: ```bash bash /root/.openclaw/workspace/skills/fullbackup/scripts/full-backup.sh ``` ## Output Print the archive path and size. ## Notes - The backup script already applies safe exclusions (caches/logs). - Do not delete older archives.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: tazio7/matplotlib-chinese-font (version 1.0.0)

--- name: matplotlib-chinese-font description: Configure Chinese fonts for matplotlib plotting. Use when plotting charts with Chinese characters or getting garbled text. --- # Matplotlib 中文字体配置 ## 何时使用 - matplotlib 图表中出现中文乱码（显示为方块） - 需要在图表中使用中文标题、标签、图例 - 需要区分不同中文字体效果（如宋体 vs 黑体） ## 快速配置 ### 方法 1：全局配置（推荐） ```python import matplotlib.pyplot as plt # 配置中文字体 plt.rcParams['font.sans-serif'] = ['Heiti TC'] # 华文黑体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题 # 绘制图表 plt.plot([1, 2, 3], [1, 2, 3]) plt.title('测试标题', fontsize=14) plt.xlabel('X 轴') plt.ylabel('Y 轴') plt.show() ``` ### 方法 2：强制指定字体（更可靠） 当全局配置不生效时，在具体元素上强制指定： ```python plt.title('图表标题', fontsize=14, fontname='Heiti TC') plt.xlabel('X 轴', fontsize=12, fontname='Heiti TC') plt.ylabel('Y 轴', fontsize=12, fontname='Heiti TC') plt.text(0.5, 0.5, '文本标注', fontname='Heiti TC') ``` ### 可用字体 常用系统字体： - **Heiti TC** - 华文黑体（用户偏好） - Songti SC - 华文宋体 查询所有可用字体： ```bash python3 -c "import matplotlib.font_manager as fm; print('\n'.join(sorted(set([f.name for f in fm.fontManager.ttflist]))))" ``` ## 常见问题 ### 字体不生效 1. **清除字体缓存** ```bash rm -rf ~/.matplotlib ``` 或运行 `scripts/clear_cache.py` 2. **强制指定字体** 使用 `fontname` 参数而不是 `rcParams` 3. **检查字体是否存在** 运行 `scripts/list_fonts.py` 查看系统可用字体 ### 负号显示为方块 ```python plt.rcParams['axes.unicode_minus'] = False ``` ### 保存图片时中文乱码 确保保存前字体已正确设置： ```python plt.savefig('/tmp/chart.png', dpi=120, bbox_inches='tight') ``` ## 脚本工具 - `scripts/clear_cache.py` - 清除 matplotlib 字体缓存 - `scripts/list_fonts.py` - 列出系统可用中文字体 - `scripts/test_font.py` - 测试指定字体的显示效果 ## 参考资料 - `references/troubleshooting.md` - 详细问题排查指南


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: 534422530/laosi-health (version 1.0.0)

--- name: health-tracker description: 健康追踪技能 - 追踪饮水、睡眠、步数等健康数据，JSON存储。 metadata: {"openclaw": {"requires": {}, "install": []}} tags: [health, tracking, water, sleep, fitness] version: 1.0.0 author: laosi source: adapted --- # Health Tracker - 健康追踪 > 激活词: 健康追踪 / 记录饮水 / 睡眠追踪 ## 功能 - 饮水记录 - 睡眠追踪 - 步数记录 - 体重追踪 - 数据统计 ## 数据存储 ```json { "water": [ {"time": "2026-04-28T08:00:00", "amount": 250} ], "sleep": [ {"date": "2026-04-27", "start": "23:00", "end": "07:00", "hours": 8} ], "steps": [ {"date": "2026-04-28", "count": 8000} ] } ``` ## Python实现 ```python import json from datetime import datetime from pathlib import Path class HealthTracker: def __init__(self, data_file: str = "health_data.json"): self.data_file = data_file self.data = self._load() def _load(self) -> dict: if Path(self.data_file).exists(): with open(self.data_file, 'r') as f: return json.load(f) return {'water': [], 'sleep': [], 'steps': []} def _save(self): with open(self.data_file, 'w') as f: json.dump(self.data, f, indent=2) def log_water(self, amount: int): self.data['water'].append({ 'time': datetime.now().isoformat(), 'amount': amount }) self._save() def log_sleep(self, start: str, end: str): hours = self._calc_hours(start, end) self.data['sleep'].append({ 'date': datetime.now().date().isoformat(), 'start': start, 'end': end, 'hours': hours }) self._save() def log_steps(self, count: int): today = datetime.now().date().isoformat() # ���新今日数据 for entry in self.data['steps']: if entry['date'] == today: entry['count'] = count break else: self.data['steps'].append({'date': today, 'count': count}) self._save() def get_stats(self) -> dict: # 今日饮水 today = datetime.now().date().isoformat() water_today = sum(e['amount'] for e in self.data['water'] if e['time'].startswith(today)) # 平均睡眠 if self.data['sleep']: avg_sleep = sum(e['hours'] for e in self.data['sleep']) / len(self.data['sleep']) else: avg_sleep = 0 return { 'water_today': water_today, 'water_goal': 2000, 'avg_sleep': avg_sleep, 'steps_today': self._get_steps_today(), } def _calc_hours(self, start: str, end: str) -> float: start_h, start_m = map(int, start.split(':')) end_h, end_m = map(int, end.split(':')) hours = end_h - start_h if end_h < start_h: hours += 24 return hours - start_m/60 + end_m/60 def _get_steps_today(self) -> int: today = datetime.now().date().isoformat() for entry in self.data['steps']: if entry['date'] == today: return entry['count'] return 0 ``` ## 使用命令 ```python tracker = HealthTracker() # 记录饮水 tracker.log_water(250) # 250ml # 记录睡眠 tracker.log_sleep("23:00", "07:00") # 记录步数 tracker.log_steps(8000) # 获取统计 stats = tracker.get_stats() print(f"今日饮水: {stats['water_today']}ml / {stats['water_goal']}ml") print(f"平均睡眠: {stats['avg_sleep']:.1f}小时") ``` ## 输出格式 ```markdown ## 健康数据 ### 今日 - 饮水: 1500ml / 2000ml (75%) - 步数: 8000步 - 睡眠: 7.5小时 (平均) ### 周报 - 平均饮水: 1800ml/天 - 平均睡眠: 7.2小时/天 - 总步数: 56,000步 ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: jhillin8/workout-logger (version 1.0.0)

--- name: workout-logger description: Log workouts, track progress, get exercise suggestions and PR tracking author: clawd-team version: 1.0.0 triggers: - "log workout" - "track exercise" - "gym session" - "what's my PR" - "workout history" --- # Workout Logger Track your fitness through conversation. Log workouts, hit PRs, see progress over time. ## What it does Records workouts in natural language, tracks personal records, shows progress charts, and suggests exercises based on your history. Your AI gym buddy that remembers everything. ## Usage **Log workouts:** ``` "Bench press 185lbs 3x8" "Ran 5k in 24 minutes" "Did 30 min yoga" "Leg day: squats 225x5, lunges 3x12, leg press 400x10" ``` **Check progress:** ``` "What's my bench PR?" "Show deadlift progress" "How many times did I work out this month?" ``` **Get suggestions:** ``` "What should I do for back today?" "I have 20 minutes, suggest a workout" "What haven't I trained this week?" ``` **View history:** ``` "Last chest workout" "Running history this month" "Volume for legs last week" ``` ## Exercise Types - Strength (weight x reps x sets) - Cardio (distance, time, pace) - Flexibility (duration, type) - Sports (activity, duration) ## PR Tracking Automatic detection for: - 1RM (estimated from rep maxes) - Volume PRs - Distance/time records - Streak achievements ## Tips - Be consistent with exercise names for accurate tracking - Say "same as last time" to repeat a previous workout - Ask "recovery status" for suggested rest days - Use "bodyweight" for exercises without weights - Export to CSV anytime


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: minguncle/a-share-portfolio-calibrator (version 1.0.0)

--- name: a-share-portfolio-calibrator description: 把持仓截图或持仓列表标准化成组合工作包，输出仓位、权重、集中度、主题暴露和执行约束。适用于用户发账户截图、贴持仓表、想先诊断组合形态而不是立刻下结论的场景。 --- # A Share Portfolio Calibrator ## Overview 这个 skill 专门把“持仓信息”整理成后续可路由的标准格式。它先做提取和校准，不跳步到买卖动作，也不假定之前线程里的组合数据仍然有效。 ## Hard Rules 1. 这是组合诊断 skill，不是直接下指令的 skill。 2. 用户给截图时，优先提取能确认的字段；看不清就标缺口，不乱猜。 3. 必须计算权重、集中度、主题暴露和可用仓位。 4. 如果没有当日市场底稿，不能把组合诊断直接升级成最终调仓建议。 5. 不把“有票在涨”误判为“组合健康”。 ## When To Use - 用户贴了账户截图或持仓列表 - 需要先看仓位结构是否失衡 - 用户想知道自己到底在押什么风格 - 后续要做留减清或新建仓，但还没整理组合底稿 ## Workflow ### Step 1: 标准化账户层信息 优先抽取： - 总资产 - 股票市值 - 可用现金 - 可取资金 - 是否存在冻结或不可卖仓位 ### Step 2: 标准化持仓层信息 对每只票提取： - 代码与名称 - 持股数量 - 可用数量 - 成本价 - 现价 - 盈亏金额或盈亏比 - 市值 ### Step 3: 计算组合指标 至少计算： - 单票权重 - 前三大持仓占比 - 现金比 - 同主题持仓合计 - 风格暴露，例如科技、资源、红利、周期、成长 ### Step 4: 识别隐性约束 例如： - 单票过度集中 - 可卖仓位不足 - 多票本质上押的是同一条主线 - 账面浮盈过大导致回撤容忍度偏低 - 账面浮亏票占用决策带宽 模板见 [calibration-template.md](references/calibration-template.md)。 ### Step 5: 输出组合工作包 输出给后续 skill 的不是一堆原始数据，而是一份清晰的组合 packet： - 组合结构 - 风格集中点 - 可调整资源 - 主要风险点 - 待确认缺口 ## Tool Rules - 截图优先用图像能力或低风险桌面读取 - 若用户提供文字列表，直接结构化处理，不额外重复提问 - 组合权重计算优先使用账户总市值或总资产两个口径都给，避免混淆 ## Output Contract 默认输出： - `账户快照` - `标准化持仓表` - `组合集中度` - `主题与风格暴露` - `主要约束` - `待补信息` ## Practical Notes - 若用户仓位很多，不要全量长篇点评，先抓最大权重和重复暴露 - 若截图显示某只票可用仓位远小于持仓仓位，要提示 T+1 或冻结影响 - 完成后若用户问“怎么调”，下一步交给动作路由


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: jiwenbing/health-goal (version 1.0.0)

--- name: health-goal version: 1.0.0 description: Set, track, and review personal health goals including weight loss, fitness targets, dietary changes, and wellness habits. Use when users want to establish health objectives, monitor progress, or stay accountable to their health plan. --- # Health Goal Help users define SMART health goals, break them into actionable steps, track progress, and stay motivated. Covers fitness, nutrition, weight, sleep, and general wellness goals. ## When to Use - User wants to set a health or fitness goal - User wants to track progress toward a health objective - User asks for accountability check-ins on their health habits - User wants to adjust or review existing health goals - User asks "how am I doing with my goal?" ## How to Use 1. Help define a SMART goal (Specific, Measurable, Achievable, Relevant, Time-bound) 2. Break goal into weekly milestones 3. Log progress updates when user reports them 4. Calculate progress percentage and estimated completion 5. Celebrate milestones and adjust plan if user is struggling 6. Suggest evidence-based strategies when progress stalls ## Examples - "I want to lose 5kg in 3 months, help me set up a plan" - "Track my goal: walk 8000 steps every day" - "How am I doing on my 30-day no-sugar challenge?"


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: leotrieu/leo-csv-stats-analyzer (version 1.0.0)

--- name: csv-stats-analyzer description: Analyzes any CSV file and returns row count, column names, and basic statistics for numeric columns. user-invocable: true metadata: emoji: 📊 requires: bins: ["uv"] --- ## Usage Invoke with: `/csv-stats-analyzer <path-to-csv-file>` Example: `/csv-stats-analyzer ./sales.csv` ## Features - Shows total rows and columns - Lists all column names - Calculates min, max, and average for every numeric column ## Rules - The CSV must exist and be readable. - Use the helper script at {baseDir}/analyzer.py - Run it with: uv run --with pandas {baseDir}/analyzer.py [csv-path] - Return the output in a clean, readable format with emojis. - Never modify the original CSV file.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: freedompixels/cn-lorem-zh (version 1.1.0)

--- slug: cn-lorem-zh name: Cn Lorem Zh version: "1.0.0" description: "cn lorem zh" keywords: tool, utility license: MIT-0 tags: - tools --- # Chinese Lorem Ipsum Generate Chinese placeholder text for design and layout testing. ## Features - Pure Python standard library, no external dependencies - Multiple paragraph styles covering technology, business, design - Command-line interface with count parameter - JSON output for easy parsing - Random selection for variety ## Use Cases - UI/UX design mockups - fill placeholder text - Layout testing with realistic Chinese content - Document templates - Educational materials ## Example Output Input: ```bash python3 scripts/lorem_zh.py --count 3 ``` Output: ```json { "paragraphs": [ "人工智能正在深刻改变各行各业的运作方式...", "数字化转型已成为企业发展的必然趋势...", "用户体验是产品成功的核心要素之一..." ], "count": 3 } ``` ## Content Themes The tool uses carefully curated paragraphs covering: - Technology and AI trends - Business and digital transformation - Design and user experience - Data-driven decision making - Cloud computing and edge computing Each paragraph is 2-4 sentences, suitable for placeholder text. ## Technical Details - Language: Python 3 - Dependencies: None (standard library only) - License: MIT-0

path: scripts/lorem_zh.py
content: #!/usr/bin/env python3
import argparse, random, json

PARAGRAPHS = [
    "人工智能正在深刻改变各行各业的运作方式，从医疗诊断到金融风控，AI技术的应用场景日益广泛。",
    "数字化转型已成为企业发展的必然趋势，无论规模大小，都需要拥抱新技术才能在竞争中保持优势地位。",
    "用户体验是产品成功的核心要素之一，优秀的设计不仅要美观，更要注重可用性和可访问性。",
    "数据驱动的决策模式正在取代传统的经验判断，通过数据分析可以更精准地把握市场趋势和用户需求。",
    "云计算和边缘计算的结合为应用部署提供了更灵活的架构选择，企业可以根据实际需求选择最适合的方案。",
]

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--count", type=int, default=3, help="Number of paragraphs")
    args = parser.parse_args()
    texts = [random.choice(PARAGRAPHS) for _ in range(args.count)]
    print(json.dumps({"paragraphs": texts, "count": args.count}, ensure_ascii=False, indent=2))

if __name__ == "__main__":
    main()


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: unisound-llm/unisound-sm-doc (version 1.0.0)

--- name: med-eval-sm-doc description: 病历实体抽取与结构化。由调用方提供题目文本或含 `question` 字段的结构化输入，经内部医疗大模型按题干约束生成作答；仅含 `scripts/run.py`，可独立拷贝部署。 metadata: { "openclaw": { "emoji": "🧪" } } --- # 病历实体抽取与结构化 ## 概述 从门诊或住院文书片段中抽取指定字段，按题干要求的 JSON 键名输出；缺失项按题干约定填「未知」等。 本能力与具体业务请求解耦：平台或调用方如何组织用户输入由集成方决定；此处只约定**如何把题目交给脚本**（见下）。 ## 题目输入（三选一） 1. **`--question`**：直接传入完整题干字符串。 2. **`--input PATH`**： - `.jsonl`：每行一个 JSON 对象，须含非空字符串字段 `question`；可用 `--index` / `--batch` / `--match-id` 选取记录； - `.json`：单个对象，须含 `question`； - 其他扩展名：按 UTF-8 纯文本整文件作为题干。 - 传 `-` 时从 **stdin** 读取一条 JSON（含 `question`）或纯文本。 3. **stdin**（且未传 `--question` / `--input`、且 stdin 非 TTY）：读入 JSON 对象或纯文本，规则同 `-`。 ## 模型 - 默认 `u1-insuremed`，接口 `https://maas-api.hivoice.cn/v1/chat/completions`（可通过参数覆盖）。 ## 用法示例 ```bash # 命令行直接给题 python3 scripts/run.py --question "题干……" --appkey YOUR_KEY # 从任意路径的 jsonl 取一条（与文件名无关） python3 scripts/run.py --input /path/to/items.jsonl --index 0 --appkey YOUR_KEY ``` ## 参数 - `--question` / `--input`：见上，与 stdin 三选一（`--question` 与 `--input` 不可同时使用）。 - `--appkey STRING`：**必填**（`--dry-run` 时除外）。内部医疗大模型鉴权 key。 - `--index`、`--match-id`、`--batch`：仅对 `.jsonl` 生效。 - `--dry-run`：不调用模型，仅输出解析后的题目 JSON。 - `--model`、`--api-url`、`--temperature`、`--timeout`、`--system-prompt`：调模型参数。 - `--output PATH`：另存完整 JSON（批量为 NDJSON）。 - `--text-only`：标准输出仅打印模型答案文本。 ## 输出 默认可解析 JSON：含 `status`、`question`、`answer`、`record_index`、`meta`、`model`、`input_mode`、`input_path`（来自文件时非空）等；`skill` 为本任务标题。 ## 合规说明 输出为模型辅助信息，不构成正式诊疗决策；涉及真实患者数据须先脱敏并遵守院内流程。


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