OpenClaw/clawhub-security-signals huggingface dataset:
Skill: ivangdavila/caddy (version 1.0.0)

--- name: Caddy description: Configure Caddy as a reverse proxy with automatic HTTPS and simple Caddyfile syntax. metadata: {"clawdbot":{"emoji":"🔒","requires":{"bins":["caddy"]},"os":["linux","darwin","win32"]}} --- # Caddy Configuration Rules ## Automatic HTTPS - Caddy provisions SSL certificates automatically — don't manually configure Let's Encrypt unless you have specific needs - Domain must resolve to the server publicly for HTTP challenge — use DNS challenge for internal/wildcard certs - Ports 80 and 443 must be free — Caddy needs both even for HTTPS-only (80 handles ACME challenges and redirects) - Let's Encrypt has rate limits — use staging CA during testing to avoid hitting production limits ## Caddyfile Syntax - Indentation is significant — blocks are defined by indentation, not braces in shorthand - Site blocks need a space before the opening brace: `example.com {` not `example.com{` - Use `caddy fmt --overwrite` to fix formatting — catches most syntax issues - Validate before applying: `caddy validate --config /etc/caddy/Caddyfile` ## Reverse Proxy - Caddy adds `X-Forwarded-For`, `X-Forwarded-Proto`, `X-Forwarded-Host` automatically — don't add them manually - WebSocket works out of the box — no special configuration needed - Load balancing is automatic with multiple backends — default is random, use `lb_policy` to change - Passive health checks remove failed backends automatically ## Docker Networking - Use container names as hostnames: `reverse_proxy container_name:3000` - Caddy and backends must share a Docker network — default bridge doesn't support DNS resolution - For Docker Compose, service names work as hostnames when on the same network ## Configuration Management - Use `caddy reload` not restart — reload applies changes without dropping connections - Config changes are atomic — if new config fails validation, old config stays active - Test without applying: `caddy adapt --config Caddyfile` shows parsed JSON output ## Certificate Storage - Certificates stored in `~/.local/share/caddy` by default — preserve this across reinstalls - For Docker, mount volumes for `/data` and `/config` — losing these means re-requesting all certificates - Multiple Caddy instances need shared storage or will fight over certificates ## Debugging - Enable debug logging: add `debug` as first line in global options block - Check certificate status in `/data/caddy/certificates/` directory - Common issue: DNS not pointing to server yet — certificates fail silently until domain resolves ## Security Headers - Caddy doesn't add security headers by default — add X-Frame-Options, X-Content-Type-Options explicitly - HSTS is automatic when serving HTTPS — no manual configuration needed ## Performance - Handles thousands of concurrent connections without tuning - HTTP/3 available with `servers { protocols h1 h2 h3 }` - Compression automatic for text content


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

--- name: "Nearby Bookshops" description: "Find nearby bookshops. Invoke when user asks for bookstores near me." --- # Nearby Bookshops 用途 - 提供用户当前位置附近的 Bookshops 列表 - 统一返回字段与查询行为，便于前端/接口复用 - 适用于找书店、二手书、阅读空间等场景 触发条件 - 用户询问“Bookshops 附近 / bookstore near me / nearby bookshops” - 用户提供定位/城市并希望“找/推荐/看看附近的 Bookshops” 输入参数 - location: 经纬度 { lat, lng }，必填 - radius_meters: 查询半径，默认 3000 - limit: 返回数量上限，默认 20，最大 50 - filters: 可选筛选（open_now、min_rating、keywords 等） 响应字段 - 统一参见 STANDARD_RESPONSE.md - 本技能 category 固定为 "bookshops" 错误码 - INVALID_LOCATION: 经纬度不合法 - RADIUS_TOO_LARGE: 超过最大查询半径 - PROVIDER_UNAVAILABLE: 数据源不可用 - RATE_LIMITED: 触发速率限制 示例 - 输入: { location: { lat: 30.123, lng: 120.456 }, radius_meters: 2500, limit: 10, filters: { keywords: \"used\" } } - 输出: 标准 POI 列表（见 STANDARD_RESPONSE.md） 隐私与速率限制 - 仅在用户授权定位后查询 - 避免保留精确坐标，必要时进行网格化模糊处理 - 建议对同一 location+category+radius 做短时缓存以降低频率


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: loutai0307-prog/bytesagain-chinese-calendar-cn (version 1.0.0)

--- name: bytesagain-chinese-calendar-cn version: "5.0.1" description: "中国农历工具。节气查询、生肖年份、黄道吉日、传统节日、天干地支、农历转换。Chinese lunar calendar with solar terms, zodiac, auspicious dates, festivals, and Heavenly Stems." author: "BytesAgain" homepage: "https://bytesagain.com" source: "https://github.com/bytesagain/ai-skills" tags: [chinese-calendar, lunar, zodiac, solar-terms, festivals, 农历, 节气, 生肖] category: "lifestyle" --- # Chinese Calendar 中国农历 中国传统历法参考工具。二十四节气、十二生肖、天干地支、传统节日、黄道吉日速查。无需API，纯本地输出。 ## Commands | Command | Description | |---------|-------------| | `jieqi` | 二十四节气完整表（日期、含义、农事、习俗） | | `shengxiao` | 十二生肖年份速查 + 性格 + 相合相冲 | | `tiangan` | 天干地支六十甲子纪年法详解 | | `jieri` | 中国传统节日（农历日期、来历、习俗、食物） | | `jiri` | 黄道吉日择日参考（婚嫁、搬家、开业等） | | `zhuanhuan` | 公历↔农历转换规则与闰月说明 | | `minsu` | 民俗禁忌与传统讲究 | | `faq` | 常见问题（闰月、节气偏移、新旧历差异等） | ## Usage ```bash chinese-calendar-cn jieqi # 二十四节气 chinese-calendar-cn shengxiao # 十二生肖 chinese-calendar-cn tiangan # 天干地支 chinese-calendar-cn jieri # 传统节日 chinese-calendar-cn jiri # 黄道吉日 chinese-calendar-cn zhuanhuan # 公农历转换 chinese-calendar-cn minsu # 民俗禁忌 chinese-calendar-cn faq # 常见问题 ``` ## Output Format All commands output plain-text reference documentation in Chinese. No external API calls, no credentials needed. --- *Powered by BytesAgain | bytesagain.com*


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: gravitypoet/skill-scanner-pro (version 0.1.4)

--- name: skill-scanner-pro description: Scan Clawdbot and MCP skills for malware, spyware, crypto-miners, and malicious code patterns before you install them. Security audit tool that detects data exfiltration, system modification attempts, backdoors, and obfuscation techniques. --- # Skill-Scanner-Pro Security audit tool for Clawdbot/MCP skills - scans for malware, spyware, crypto-mining, and malicious patterns. Pro enhanced edition. ## Enhanced Edition (0.1.3) - Fixed Web UI scan result rendering and export compatibility - Reduced false positives in docs by limiting Markdown/RST scan scope to fenced code blocks - Reduced scanner self-trigger noise (pattern definitions/comments) - Skips noisy directories and oversized/binary files for cleaner output ## Capabilities - Scan skill folders for security threats - Detect data exfiltration patterns - Identify system modification attempts - Catch crypto-mining indicators - Flag arbitrary code execution risks - Find backdoors and obfuscation techniques - Output reports in Markdown or JSON format - Provide Web UI via Streamlit ## Usage ### Command Line ```bash python skill_scanner.py /path/to/skill-folder ``` ### Within Clawdbot ``` "Scan the [skill-name] skill for security issues using skill-scanner-pro" "Use skill-scanner-pro to check the youtube-watcher skill" "Run a security audit on the remotion skill" ``` ### Web UI ```bash pip install streamlit streamlit run streamlit_ui.py ``` ## Requirements - Python 3.7+ - No additional dependencies (uses Python standard library) - Streamlit (optional, for Web UI) ## Entry Point - **CLI:** `skill_scanner.py` - **Web UI:** `streamlit_ui.py` ## Tags #security #malware #spyware #crypto-mining #scanner #audit #code-analysis #mcp #clawdbot #agent-skills #safety #threat-detection #vulnerability


Security scan verdicts — ClawScan: clean | static analysis: malicious | VirusTotal: clean | SkillSpector:  ()
Skill: 51mee-com/51mee-resume-match (version 1.2.1)

--- name: 51mee-resume-match description: 人岗匹配。触发场景：用户要求匹配简历和职位；用户问这个候选人适合这个职位吗；用户要筛选最匹配的候选人。 --- # 人岗匹配技能 ## 功能说明 评估候选人与职位的匹配程度，生成匹配度评分和分维度分析。 ## API 调用 **接口地址**: `https://openapi.51mee.com/api/v1/parse/match` **请求方式**: POST (multipart/form-data) **参数**: - `file`: 简历文件（必填） - `jd_text`: 职位描述文本（必填） **调用命令**: ```bash curl -X POST "https://openapi.51mee.com/api/v1/parse/match" \ -F "file=@候选人简历.pdf" \ -F "jd_text=岗位职责:\n1. 负责系统架构设计\n\n任职要求:\n- 5年以上Java开发经验\n- 熟悉Spring Boot" ``` ## 返回数据结构 ```json { "code": 0, "message": "success", "data": { "overall_score": 85, "overall_level": "良好", "star_rating": 4, "dimensions": { "skill_match": { "score": 90, "level": "优秀", "matched_skills": ["Java", "Spring Boot", "MySQL"], "missing_skills": ["Docker", "K8s"], "details": "核心技能完全匹配" }, "experience_match": { "score": 85, "level": "良好", "required_years": 5, "actual_years": 6, "industry_match": true, "details": "经验年限符合要求" }, "education_match": { "score": 95, "level": "优秀", "required": "本科", "actual": "本科", "details": "学历符合要求" }, "salary_match": { "score": 70, "level": "一般", "budget_range": "20K-25K", "expected_range": "25K-30K", "details": "期望薪资略高于预算" } }, "advantages": [ "技术栈高度匹配，Java/Spring/MySQL 都有实战经验", "有大型项目经验，处理过高并发场景", "职业发展路径清晰，稳定性好" ], "gaps": [ "缺少容器化经验（Docker/K8s）", "期望薪资 25K，略高于预算 20K" ], "risks": [ "最近一份工作时间较短（8个月）" ], "interview_suggestions": [ "重点考察高并发项目细节", "了解跳槽原因", "评估容器化技术学习能力" ], "recommendation": { "should_interview": true, "confidence": 85, "reason": "综合素质优秀，技术匹配度高，值得深入沟通" } } } ``` ## 匹配维度说明 | 维度 | 字段 | 权重 | 说明 | |------|------|------|------| | 技能匹配 | `skill_match` | 高 | 技术栈是否对口 | | 经验匹配 | `experience_match` | 高 | 工作年限、行业背景 | | 学历匹配 | `education_match` | 中 | 教育背景 | | 薪资匹配 | `salary_match` | 视情况 | 期望与预算对比 | ## 评分等级 | 分数 | 等级 | 星级 | |------|------|------| | 90-100 | 优秀 | ⭐⭐⭐⭐⭐ | | 75-89 | 良好 | ⭐⭐⭐⭐ | | 60-74 | 一般 | ⭐⭐⭐ | | 0-59 | 较差 | ⭐⭐ | ## 输出模板 ```markdown ## 候选人匹配报告 **候选人**: [姓名] **综合匹配度**: [score]/100 ⭐⭐⭐⭐ ### 分维度评估 | 维度 | 得分 | 评级 | 说明 | |------|------|------|------| | 技能匹配 | [score] | [level] | [details] | | 经验匹配 | [score] | [level] | [details] | | 学历匹配 | [score] | [level] | [details] | | 薪资匹配 | [score] | [level] | [details] | ### 核心优势 ✅ - [advantage1] - [advantage2] ### 需关注 ⚠️ - [gap1] - [gap2] ### 面试建议 - [suggestion1] - [suggestion2] ### 推荐 **[建议/不建议]面试** - [reason] ``` ## 批量筛选流程 当用户要筛选多个候选人时： 1. **定义岗位要求** - 收集完整的职位描述 2. **逐个匹配** - 对每个候选人调用匹配接口 3. **对比排序** - 按 `overall_score` 排序 4. **输出报告** - 生成排名对比表 ## 注意事项 - 必须同时提供简历文件和职位描述 - 职位描述越详细，匹配越准确 - 先检查返回的 `code` 字段 - 匹配结果是 AI 分析，最终决策需人工判断


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

--- name: mens-mental-health description: Mental health support for men with emotion check-ins, stress tools, and no-judgment space author: clawd-team version: 1.0.0 triggers: - "mens mental health" - "feeling down as a man" - "need to talk" - "stress as a guy" - "men's emotions" --- # Men's Mental Health A no-judgment space where you can check in with yourself, work through stress, and build resilience without the noise. ## What it does This skill gives you tools to: - **Emotion Check-ins**: Name what you're feeling and understand it - **Stress Management**: Practical techniques to decompress when things pile up - **Healthy Coping**: Alternatives to harmful patterns that actually work - **Pattern Tracking**: Spot what triggers stress and what helps you recover ## Usage ### Check In Start here when you need clarity. Answer a few quick questions about your current state—mood, what triggered it, physical symptoms. The skill reflects back what it hears and offers perspective. ### Stress Tools When pressure builds, access immediate techniques: breathing patterns, body scans, reframing tools, and grounding exercises. Designed for 2-10 minutes depending on urgency. ### Vent Sometimes you need to get it out. Use this to process a situation without fixing it immediately. The skill listens, validates, and helps you organize your thoughts. ### Track Patterns Over time, identify what consistently drains or energizes you. See correlations between sleep, work, relationships, and your mental state. Data stays local—only you see it. ### Get Perspective When you're stuck in a loop, talk through it. The skill asks clarifying questions, offers reframes, and helps you see angles you might have missed. ## Common Topics - **Work stress**: Pressure, powerlessness, toxic culture - **Relationships**: Conflict, disconnection, communication breakdowns - **Identity**: Masculinity, expectations, being "enough" - **Anger**: Rage, irritability, control and letting loose - **Isolation**: Loneliness, withdrawn, lack of connection - **Purpose**: Direction, meaning, questioning your path ## Tips 1. **Be honest**. There's no judgment here. The more real you are, the more useful the reflection. 2. **Use it regularly**, not just in crisis. Check-ins work best as a habit—weekly or when things shift. 3. **Combine with other tools**. A therapist, trusted friend, or doctor handles what a skill can't. Use this alongside, not instead of. 4. **Notice patterns over time**. One conversation is helpful. Tracking months of data shows you what actually moves the needle. 5. **All data stays local on your machine**. Nothing leaves your device without your explicit choice. ## If You're in Crisis This skill is not a substitute for professional help. - **988** (Suicide & Crisis Lifeline) - **Text HOME to 741741** (Crisis Text Line) If you're in immediate danger, call 911 or go to your nearest emergency room.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: of-arte/claw-voyant (version 1.0.0)

--- name: clawvoyant author: Vgony description: YouTube search and transcript extraction. No API keys required. version: 0.1.0 metadata: openclaw: requires: python: ">=3.10" pip: - duckduckgo_search>=6.0.0 - youtube-transcript-api>=0.6.0 - fastmcp>=0.1.0 install: "python scripts/server.py --install" --- # ClawVoyant Skill 👓 Search YouTube and pull full transcripts for any video instantly. No API keys needed—uses DuckDuckGo for search and generic fetch for transcripts. ## Tools ### `search_youtube` Find videos relevant to your query. - **Args**: `query` (string), `max_results?` (int) - **Output**: List of results with title, URL, and a snippet. ### `get_youtube_transcript` Extract the full transcript of a specific video. - **Args**: `url` (string) - **Output**: The full text transcript of the video. ## Examples "Find a video about how to use FastMCP" -> `search_youtube({ query: "FastMCP tutorial" })` "Get the transcript for https://youtube.com/watch?v=..." -> `get_youtube_transcript({ url: "..." })`


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: mingyang1996/openclaw-gitcode-pr-monitor (version 0.1.2)

--- name: openclaw-gitcode-pr-monitor description: Monitor GitCode PRs for one or more repos, auto-run AI review via OpenClaw Gateway, post PR comments, and send notifications (DingTalk + WeCom). --- # openclaw-gitcode-pr-monitor This skill packages a production-ready GitCode PR monitoring + auto-review pipeline. ## What it does - Poll GitCode PR list for one or more repos (defaults use **anonymous placeholders**: `ExampleOrg/example_repo_1` + `ExampleOrg/example_repo_2`) - When a new PR is detected: - send “review started” notification - run `openclaw agent` to generate a Markdown review report - post the report back to the PR as a comment - send “review finished” notification + attach the report ## Files - `scripts/monitor-gitcode-pr.sh` — fetch latest PR, compare state, output `NEW_PR_DETECTED` - `scripts/gitcode-pr-monitor-agent.sh` — orchestrator (multi-repo loop) - `scripts/code-review-robust.sh` — run AI review (repo-aware, daily rotated session id) - `scripts/submit-pr-comment.sh` — post PR comment (repo-aware) ## Quick start 1) Put your GitCode token at: - `$HOME/.openclaw/workspace/data/gitcode-token.txt` 2) Configure notification targets This packaged version defaults to DingTalk + WeCom, but you **must** set your own targets. Recommended (env vars): ```bash export TARGET_DINGTALK="<your-dingtalk-target>" export TARGET_WECOM="user:<wecom-userid>" ``` 3) Configure repos Recommended (env vars): ```bash export REPO_OWNER="<your-org>" export REPOS_CSV="repo_a,repo_b" ``` 4) Install cron Example (every 5 minutes): ```cron */5 * * * * OPENCLAW_WORKSPACE="$HOME/.openclaw/workspace" REPO_OWNER="..." REPOS_CSV="..." TARGET_DINGTALK="..." TARGET_WECOM="..." $OPENCLAW_WORKSPACE/skills/openclaw-gitcode-pr-monitor/scripts/gitcode-pr-monitor-agent.sh >> $OPENCLAW_WORKSPACE/logs/cron-gitcode-pr.log 2>&1 ``` See: `references/CONFIG.md`.


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: pig-gua/skill-shop (version 1.0.1)

--- name: 技能商店客户端 slug: skill-shop version: 1.0.0 description: 技能商店客户端，支持查询在线技能、一键下载安装技能包 author: 龙虾 tags: ["工具", "技能商店", "安装"] metadata: emoji: "🛒" requires: ["python3", "unzip"] --- # 技能商店客户端使用说明 ## 功能说明 连接龙虾技能商店，实现技能的在线查询、一键下载安装功能。 ## 使用方法 ```bash # 查询所有在线技能 skill-shop list # 搜索技能 skill-shop search <关键词> # 安装技能 skill-shop install <技能ID> ``` ## 配置说明 无需额外配置，自动连接本地部署的技能商店服务。 ## 命令列表 | 命令 | 说明 | |------|------| | `list` | 列出所有在线技能 | | `search <关键词>` | 搜索包含关键词的技能 | | `install <技能ID>` | 下载并安装指定ID的技能 | | `info <技能ID>` | 查看技能详细信息 | ## 示例 ```bash # 列出所有技能 skill-shop list # 搜索包含"API"的技能 skill-shop search API # 安装ID为7的技能 skill-shop install 7 ```


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: zhangifonly/autogen (version 1.0.0)

--- name: "AutoGen" version: "1.0.0" description: "AutoGen 多智能体对话框架助手，精通 Agent 对话编排、代码执行、群聊模式" tags: ["ai", "agent", "autogen", "microsoft"] author: "ClawSkills Team" category: "ai" --- # AutoGen 多智能体对话框架助手 你是 Microsoft AutoGen 框架的专家，帮助用户构建基于对话的多智能体协作系统。 ## 核心概念 | 概念 | 说明 | |------|------| | ConversableAgent | 所有 Agent 的基类，支持发送/接收消息、生成回复 | | AssistantAgent | AI 助手，默认使用 LLM 生成回复 | | UserProxyAgent | 用户代理，可执行代码、请求人类输入 | | GroupChat | 群聊容器，管理多个 Agent 的对话 | | GroupChatManager | 群聊管理器，决定下一个发言的 Agent | ## 安装 ```bash pip install autogen-agentchat autogen-ext # 0.4+ 新架构 pip install pyautogen # 经典版本 0.2.x ``` ## 双人对话模式 ```python from autogen import AssistantAgent, UserProxyAgent llm_config = {"config_list": [{"model": "gpt-4o", "api_key": "your-key"}]} assistant = AssistantAgent( name="编程助手", system_message="你是一个 Python 编程专家。", llm_config=llm_config ) user_proxy = UserProxyAgent( name="用户", human_input_mode="NEVER", # NEVER/ALWAYS/TERMINATE max_consecutive_auto_reply=10, code_execution_config={"work_dir": "coding", "use_docker": False} ) user_proxy.initiate_chat(assistant, message="写一个快速排序算法并测试性能。") ``` ## 群聊模式 ```python from autogen import GroupChat, GroupChatManager planner = AssistantAgent(name="产品经理", system_message="你负责分析需求、拆解任务。", llm_config=llm_config) coder = AssistantAgent(name="开发工程师", system_message="你负责编写代码实现功能。", llm_config=llm_config) reviewer = AssistantAgent(name="代码审查员", system_message="你负责审查代码质量。", llm_config=llm_config) executor = UserProxyAgent(name="执行器", human_input_mode="NEVER", code_execution_config={"work_dir": "project", "use_docker": True}) group_chat = GroupChat( agents=[planner, coder, reviewer, executor], messages=[], max_round=20, speaker_selection_method="auto" # auto/round_robin/random/manual ) manager = GroupChatManager(groupchat=group_chat, llm_config=llm_config) executor.initiate_chat(manager, message="开发一个 TODO List REST API") ``` ## 代码执行 ```python # 本地执行 user_proxy = UserProxyAgent(name="executor", code_execution_config={ "work_dir": "workspace", "use_docker": False, "timeout": 60 }) # Docker 沙箱（推荐生产环境） user_proxy = UserProxyAgent(name="executor", code_execution_config={ "work_dir": "workspace", "use_docker": "python:3.11-slim", "timeout": 120 }) ``` ## 工具注册与嵌套对话 ```python from autogen import register_function def get_weather(city: str) -> str: """查询指定城市的天气信息。""" return f"{city}：晴，25°C" register_function(get_weather, caller=assistant, executor=user_proxy, name="get_weather", description="查询城市天气") # 嵌套对话：Agent 内部触发子对话 assistant.register_nested_chats( trigger=user_proxy, chat_queue=[{"recipient": reviewer, "message": "请审查代码。", "max_turns": 3}] ) ``` ## 与同类框架对比 | 特性 | AutoGen | CrewAI | LangGraph | |------|---------|--------|-----------| | 核心理念 | 对话驱动协作 | 角色扮演团队 | 图状态机 | | 代码执行 | 原生 Docker 沙箱 | 需集成工具 | 需自行实现 | | 群聊模式 | 原生 GroupChat | 不支持 | 需手动编排 | | 人类介入 | human_input_mode 灵活控制 | 有限支持 | 中断点机制 | | 嵌套对话 | 原生支持 | 不支持 | 子图实现 | | 适用场景 | 代码生成、多轮讨论 | 内容生产、流程自动化 | 复杂工作流 |


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: claudiodrusus/json-toolkit (version 1.1.0)

--- name: json-toolkit description: Swiss-army knife for JSON files. Pretty-print, validate, minify, sort keys, and query with dot-notation paths. Zero dependencies. triggers: - format json - pretty print json - validate json - query json - minify json - json tool --- # JSON Toolkit A zero-dependency Python utility for working with JSON data. Validates, formats, minifies, queries, and inspects JSON files — all with Python's standard library. ## Features - **Pretty-print** with configurable indentation (2, 4, or any number of spaces) - **Minify** JSON to reduce file size for APIs and storage - **Validate** JSON and get structural stats (type, key count, size) - **Query** nested data with dot-notation paths including array indices - **Sort keys** alphabetically for deterministic output and easier diffs - **Stdin support** for use in shell pipelines with other tools ## Usage Examples Pretty-print a JSON file: ```bash python main.py data.json ``` Validate without output: ```bash python main.py config.json --validate # ✓ Valid JSON # Type: object (12 keys) # Size: 4832 bytes ``` Query a nested value: ```bash python main.py users.json --query data.users.0.name # "Alice" ``` Minify for production: ```bash python main.py config.json --minify -o config.min.json ``` Sort keys for consistent diffs: ```bash python main.py package.json --sort-keys -o package-sorted.json ``` Pipe from curl: ```bash curl -s https://api.example.com/data | python main.py - --query results.0 ``` ## Query Syntax Use dot notation to navigate nested structures. Array indices are numbers: - `name` — top-level key - `data.users` — nested object key - `data.users.0` — first element of an array - `data.users.0.email` — field of the first array element - `config.servers.2.host` — deeply nested value ## Command Line Options - `input` — JSON file path, or `-` for stdin - `-o, --output` — Output file (defaults to stdout) - `--indent N` — Indentation spaces (default: 2) - `--minify` — Output minified JSON (no whitespace) - `--query PATH` / `-q PATH` — Extract a value at the given dot-notation path - `--validate` — Only validate and print stats, no output - `--sort-keys` — Sort object keys alphabetically - `--json` — (implicit) Output is always valid JSON


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: junweiyuan/what-to-eat (version 1.0.0)

--- name: what-to-eat description: "随机推荐今天吃什么。支持按菜系、口味、预算、人数筛选。Use when: user asks what to eat, meal recommendations, food suggestions, 吃什么, 今天吃啥, restaurant ideas, or needs help deciding on food." --- # 今天吃什么 🍜 随机推荐美食，解决选择困难症。 ## 使用方式 当用户问"吃什么"时，根据以下维度推荐： ### 默认行为（无筛选条件） 随机推荐 3 个选项，涵盖不同菜系和价位，格式： ``` 🎲 今天吃什么？ 1. 🍜 [菜名] — [简短描述] 💰 人均：[价格区间] | 🏷 [菜系] 2. 🍕 [菜名] — [简短描述] 💰 人均：[价格区间] | 🏷 [菜系] 3. 🥗 [菜名] — [简短描述] 💰 人均：[价格区间] | 🏷 [菜系] 选不了？说个数字我帮你定！或者告诉我你的偏好 🎯 ``` ### 支持的筛选条件 - **菜系**：中餐、日料、韩餐、西餐、东南亚、墨西哥、印度、快餐等 - **口味**：辣、清淡、重口、酸甜、咸香 - **预算**：便宜（<30）、中等（30-80）、贵（80-200）、豪华（200+）— 人民币人均 - **场景**：一个人、约会、聚餐、家庭、外卖、下馆子 - **限制**：素食、无辣、无海鲜、清真等 - **时段**：早餐、午餐、下午茶、晚餐、夜宵 ### 推荐原则 1. 每次推荐要有**多样性**（不同菜系/价位） 2. 加入一个**意想不到的选项**增加趣味 3. 描述要**诱人**，让人看了就饿 4. 如果用户说"就这个"或选了数字，给出更详细的做法或推荐餐厅建议 5. 如果用户连续说"换一批"，不要重复之前推荐过的 ### 彩蛋 - 如果用户说"随便"，回复："随便这道菜我不会做，但我会推荐别的 😏" 然后给推荐 - 如果深夜问吃什么（22:00后），加一句夜宵提醒 - 偶尔推荐一道用户可以自己做的简单菜，附上 3 步做法


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