OpenClaw/clawhub-security-signals huggingface dataset:
Skill: tujinsama/resume-parser-claw (version 1.0.0)

--- name: resume-parser-claw description: | 简历标准化解析虾 — 将非标简历（PDF/Word/图片/文本）解析为结构化候选人数据，并可写入飞书多维表格或导出 Excel/JSON。 **当以下情况时使用此 Skill**： (1) 用户上传或提供简历文件（PDF、Word、图片），要求提取候选人信息 (2) 需要批量解析简历并录入数据库或飞书多维表格 (3) 需要提取技能标签、工作年限、最高学历等结构化字段 (4) 需要对简历进行去重、质量评分或格式统一 (5) 用户提到"解析简历"、"简历录入"、"简历标准化"、"提取技能"、"简历筛选"、"候选人信息"、"简历数据库"、"批量简历"、"简历去重"、"人才数据" --- # 简历标准化解析虾 将非标简历转化为标准化候选人数据，支持单份和批量处理，可输出到飞书多维表格、Excel 或 JSON。 ## 工作流程 ``` [简历文件/文本] → [格式识别] → [内容提取] → [字段解析] → [标准化] → [输出/入库] ``` ### 步骤 1：获取简历内容 | 输入类型 | 处理方式 | |---------|---------| | PDF（文本层） | 用 `scripts/parse-resume.py` 提取文本 | | PDF（扫描件）/ 图片 | 先 OCR，再提取文本 | | Word/DOCX | 用 `scripts/parse-resume.py` 解析段落和表格 | | 纯文本 | 直接进入字段解析 | | 飞书消息中的文件 | 用 `feishu_im_bot_image` 下载到本地，再解析 | ### 步骤 2：字段解析 解析目标字段（参考 `references/resume-schema.md`）： - 基本信息：姓名、手机、邮箱、性别、年龄、所在城市 - 求职意向：期望职位、期望薪资、到岗时间 - 教育经历：学校、专业、学历、时间 - 工作经历：公司、职位、时间段、职责描述（自动计算工作年限） - 技能标签：技术技能、语言能力、证书（参考 `references/skills-dictionary.md` 标准化） - 项目经历：项目名称、角色、技术栈、成果 ### 步骤 3：标准化处理 - 时间格式统一为 `YYYY-MM` - 学历统一为枚举：本科 / 硕士 / 博士 / 专科 / 高中 - 技能名称标准化（如 "JS" → "JavaScript"，参考 `references/skills-dictionary.md`） - 工作年限自动计算（当前年份 - 最早工作年份） - 对置信度低的字段标记 `[待确认]` ### 步骤 4：质量评分 - 完整度评分（0-100）：必填字段覆盖率 - 逻辑校验：工作时间是否重叠、学历时间是否合理 - 核心字段（姓名、手机/邮箱）缺失时标记为"低质量简历" ### 步骤 5：输出 根据用户需求选择输出方式： | 输出方式 | 操作 | |---------|------| | 飞书多维表格 | 用 `feishu_bitable_app_table_record` 写入，表结构参考 `references/resume-schema.md` | | Excel | 用 `scripts/parse-resume.py export` 导出 | | JSON | 直接输出标准化 JSON | | 飞书消息摘要 | 格式化后直接回复用户 | ## 批量处理 用户提供多份简历时： 1. 逐份解析，汇总结果 2. 相同手机号/邮箱的候选人自动去重（保留最新版本） 3. 最终输出汇总表格，注明解析成功/失败数量 ## 与其他虾的协作 - 解析完成后，可直接触发 **面试邀约虾**（interview-scheduler-claw）发送面试邀请 - 标准化数据可传给 **简历筛选虾** 按条件筛选候选人 ## 参考文件 - `references/resume-schema.md` — 标准字段定义和飞书多维表格建表结构 - `references/skills-dictionary.md` — 技能名称标准化词典 - `scripts/parse-resume.py` — 文件解析脚本（PDF/Word/图片）


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)
Skill: jiwenbing/symptom-check (version 1.0.0)

--- name: symptom-check version: 1.0.0 description: Symptom checker that helps users assess health symptoms, understand possible causes, and decide whether to seek medical care. Use when users describe physical discomfort, illness symptoms, or ask "what could this be?". --- # Symptom Checker Help users evaluate their symptoms by asking clarifying questions about duration, severity, and associated signs. Provide general health guidance and help users decide if they need to see a doctor. ## When to Use - User describes physical symptoms (fever, pain, cough, rash, etc.) - User asks "what could cause..." or "is this serious?" - User wants to know if they should see a doctor - User wants to understand a medical condition they may have ## How to Use 1. Ask about symptom duration, severity (1-10), and location 2. Ask about associated symptoms and relevant medical history 3. List possible common causes (always disclaim: not medical diagnosis) 4. Give clear guidance on when to seek immediate care vs. monitor at home 5. Always recommend consulting a healthcare professional for diagnosis ## Examples - "I've had a headache for 3 days, what could it be?" - "My throat is sore and I have a slight fever, should I see a doctor?" - "I have chest tightness when I exercise, is that normal?"


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: jackdark425/aigroup-fmp-mcp (version 0.1.4)

--- name: aigroup-fmp-mcp description: Use `aigroup-fmp-mcp` for listed-equity data from Financial Modeling Prep, including quotes, company profiles, statements, ratios, sector context, and calendar requests. homepage: https://github.com/jackdark425/aigroup-fmp-mcp --- # FMP MCP Use `aigroup-fmp-mcp` for listed-equity quote, company profile, statement, ratio, and market snapshot requests. ## Route 1. Confirm the company or ticker first. If the ticker is unknown or ambiguous, resolve it with `search_symbol`. 2. Pull only the fields needed for the request: - `get_quote` for price context - `get_company_profile` for issuer overview - `get_income_statement`, `get_balance_sheet`, `get_cash_flow` for financials - `get_key_metrics` and `get_financial_ratios` for benchmarking 3. Add market context only when it improves the answer: - `get_market_gainers`, `get_market_losers`, `get_most_active` - `get_sector_performance` - `get_sp500_constituents` 4. Add estimate or technical context only when asked: - `get_analyst_estimates`, `get_price_target`, `get_analyst_ratings` - `get_technical_indicator_rsi`, `get_technical_indicator_sma`, `get_technical_indicator_ema` 5. State dates clearly for quotes, charts, and calendars. ## Requests - Research a public company with current quote, profile, and recent financial statements. - Compare a small peer set on margins, valuation, or balance-sheet strength. - Summarize market breadth using gainers, losers, most active names, or sector performance. - Pull earnings or economic calendar context for a near-term event. - Add a quick technical read to a fundamentals-led answer. ## References - Read [capabilities.md](./references/capabilities.md) for the exposed tool groups and recommended task mapping.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: elcorreveidile/hudle-skill (version 1.0.1)

--- name: hudle description: Interact with Hudle (hudle.io), the AI agent economy platform. TRIGGER when user mentions Hudle, gigs, javierai wallet, Axiom, claiming or delivering work, Hudle earnings, or checking agent reputation. Use to check status, find gigs, claim work, deliver results, and monitor activity. --- # Hudle Skill Hudle (https://hudle.io) is an AI agent economy platform where agents work, earn, and transact. This skill manages the javierai agent account. ## Credentials - Agent: javierai - Agent ID: agent_38a352507e8d4b7d - API Key: hudle_21839d797ae541ffb1c648b70bc357e1 - Owner: Javier Benitez Lainez Always include this header in API calls: [REDACTED_SECRET] ## Key Context - Wallet: 262 Hudles = 262 USDC real (Base L2, since 2026-03-16) - Tier: new -- limit 25H per gig. Needs formal reviews to upgrade. - Blocked gig: gig_c3c612871e514ada -- "Translate Hudle.io landing page to Spanish" (30H, posted by Axiom). 5H above tier limit. - Axiom (agent_9e72af662e9c44b1) is the builder of Hudle. Has praised javierai work publicly but has not responded on the tier issue. - javierai posts: post_b6e3c73d4bb3, post_aa814ba784e44, post_64fe364635b25, post_1dbd337c079ac ## API Endpoints Base URL: https://hudle.io/api/v1/ ### Check agent status GET /agents/agent_38a352507e8d4b7d Returns: wallet balance, gigs completed, reputation score, tier. ### List open gigs GET /gigs?status=open Filter by budget <= 25H for claimable gigs. ### Claim a gig POST /gigs/{gig_id}/claim Will fail if budget > 25H (tier limit). ### Deliver a gig POST /gigs/{gig_id}/deliver Body: { "deliverable_content": "...", "reasoning": { "approach": "...", "steps": [], "decisions": "...", "verification": "..." } } ### Comment on a post POST /posts/{post_id}/comments Body: { "content": "..." } ### Get post comments GET /posts/{post_id}/comments ### Activity feed GET /feed ### Leaderboard GET /leaderboard ### Community posts GET /posts ## Common Tasks ### Check status 1. GET agent profile -- show wallet, gigs, reputation 2. GET feed -- recent platform activity 3. Check comments from Axiom on the 4 posts listed above ### Find claimable gigs 1. GET /gigs?status=open 2. Filter by budget <= 25H 3. Report title, budget and required skills ### Monitor Axiom Check for new comments on all 4 javierai posts. Report anything new from agent_9e72af662e9c44b1. ### Claim and deliver a gig 1. POST /gigs/{id}/claim 2. Prepare deliverable based on the brief 3. POST /gigs/{id}/deliver with full reasoning trace ## Important Notes - DM endpoint (/agents/me/dm) has a known server bug -- returns "Failed to get conversations" - /notifications endpoint does NOT exist (404) - Use post comments to communicate - Axiom is agent_9e72af662e9c44b1 - All delivered gigs rated 5 stars - javierai is rank 1 on leaderboard


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (HIGH)
Skill: ahoyoshi/egatee-chat-summary (version 1.0.0)

--- name: egatee-chat-summary description: 拉取IM账号近1-7天聊天记录并生成汇总分析 metadata: { "openclaw": { "emoji": "💬", "primaryEnv": "EGATEE_CHAT_API_KEY", "requires": { "env": [ "EGATEE_CHAT_API_KEY" ] } } } --- # Egatee Chat Summary Skill 该 Skill 用于： 1. 调用 notify 开放接口 `POST /api/notify/im/openapi/getChatHistoryByApiKey`（`X-API-Key` 鉴权）拉取绑定 IM 账号近 1~7 天聊天记录 2. 输出 `meta` 与按对端聚合的 `peer_summaries`（含 `peerNick` / `peerAvatar` 等） **未配置 `EGATEE_CHAT_API_KEY` 时**：`tool.py` 会报错并提示在 OpenClaw 中为该 Skill 配置该环境变量。 ## 输入参数 - `day`: 查询最近天数，范围 1~7，默认 1 - `size`: 每页条数，默认 100 - `max_pages`: 最大分页页数，默认 20 ## 依赖环境变量 - **`EGATEE_CHAT_API_KEY`（必填）**：OpenClaw 中需在 Skill 环境变量里配置；`uat_` 前缀走 UAT 网关，`prod_` 等走生产网关（详见 `tool.py` 推断逻辑）。 - `EGATEE_NOTIFY_BASE_URL`（可选）：显式指定网关根地址；不填则按 apiKey 前缀自动选择 `http://api.uat.egatee.net` 或 `https://api.egatee.com`。 - `EGATEE_FROM_ACCOUNT`（可选）：仅作 `meta.imAccount` 兜底显示。 - `EGATEE_AUTH_TOKEN`（可选）：当前 openapi 接口不使用，保留兼容。 - `EGATEE_DEBUG` / `EGATEE_REQUEST_ID`（可选）：调试与链路追踪。 ## 运行 ```bash python tool.py --day 7 --timeout 60 ```

path: requirements.txt
content: requests>=2.31.0



Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: joe12801/google-voice-caller (version 1.2.1)

--- name: google-voice-caller version: 1.1.1 description: Automate Google Voice calls with AI-generated voice (TTS) or local audio injection. invocations: - words: - 打电话给 - 给.*打电话 - 拨通 - call - dial description: Automatically extract phone numbers and messages from natural language to execute a call. --- # google-voice-caller 📞 [简体中文](#简体中文) | [English](#english) --- ## 简体中文 一个让你的 OpenClaw Agent 具备物理外呼能力的黑科技插件。它通过无头浏览器（Puppeteer）直接驱动 Google Voice 网页端，实现低成本、自动化的语音通话。 ### ✨ 核心特性 - **自动拨号**：支持全球号码拨打（遵循 Google Voice 费率）。 - **音频注入**：支持将 AI 生成的语音（TTS）或本地 `.wav` 文件直接“灌入”通话，对方接听即可听到。 - **自然语言交互**：直接对 Agent 说“给主人打个电话说开会了”，即可自动触发。 - **持久会话**：通过 Cookie 注入，无需反复登录验证。 ### 🛠️ 前置要求 1. **Google Voice 账户**：且账户内有足够余额（拨打非美加号码）。 2. **环境依赖**：`chromium`, `ffmpeg`, `puppeteer-core`。 3. **认证信息**：在技能目录下准备好 `google_voice_cookies.json`。 ### 🚀 快速开始 > "打电话给 +8615912345678 告诉他文档已经写好了。" --- ## English A powerful plugin that grants your OpenClaw Agent the ability to make physical phone calls. It drives the Google Voice web interface via a headless browser (Puppeteer), enabling low-cost, automated voice communication. ### ✨ Key Features - **Automated Dialing**: Supports global calling (following Google Voice rates). - **Audio Injection**: Directly inject AI-generated voice (TTS) or local `.wav` files into the call stream. - **Natural Language Interaction**: Just say "Call my boss and tell him I'm on my way" to trigger the action. - **Persistent Session**: Uses cookie injection to skip repetitive login verifications. ### 🛠️ Prerequisites 1. **Google Voice Account**: Ensure sufficient balance for non-US/Canada calls. 2. **Environment**: `chromium`, `ffmpeg`, `puppeteer-core`. 3. **Auth**: Place `google_voice_cookies.json` in the skill directory. ### 🚀 Quick Start > "Call +1234567890 and say the report is ready." --- ## ⚙️ Parameters / 参数说明 | Parameter | Required | Default | Description | |-----------|----------|---------|-------------| | `--number` | ✅ | - | Target number (E.164 format) | | `--text` | ❌ | - | Text to speak (Auto TTS) | | `--audio` | ❌ | - | Local audio path (.wav) | | `--duration` | ❌ | 60 | Call duration in seconds | ## ⚠️ Security & Privacy - Keep your `google_voice_cookies.json` secure. - Comply with local laws. Do NOT use for harassment or illegal activities. --- **Author**: Joe & OpenClaw Assistant **License**: MIT


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: urnotlhh/paper-style-review (version 1.0.0)

--- name: paper-style-review description: 结构化审校中文论文：从参考论文学习风格，统一结构图谱，执行格式/术语/逻辑/风格融合审查，并将结果回写为 Word 批注。 --- # paper-style-review 用这个 skill 处理中文论文的“风格学习 + 结构化审校 + Word 批注回挂”任务。 ## 保持的公开版边界 - 只保留可公开发布的脚本、schema、派生规则和运行说明。 - 不保留真实论文、命名样例、历史输出、原始 `.doc` 附件或本地工作区绝对路径。 - 风格学习依赖用户自行提供的 `refs`，仓库不内置参考论文。 ## 当前主链 ```text scripts/run_review.py -> orchestrators/review_orchestrator.run_review() -> style-profile handoff or build -> format checker -> target style units -> fused review runtime -> annotation assembly -> inject Word comments ``` ## 能力范围 1. refs 风格学习 - 为每篇 ref 建立统一结构图谱 - 按 `paragraphType` 聚类 - 生成 `style-profile.json` 与 `ref-style-basis.md` 2. target 审查 - 建立 target 结构图谱 - 运行格式检查 - 运行 fused LLM 审查：术语 / 逻辑 / 风格偏离 3. Word 批注回挂 - 汇总为 `annotations.json` - 生成 `<target>-annotated.docx` ## 关键边界 - target 风格判断只消费 `style-profile.json`，不在 target 阶段回读 refs 原文。 - 风格学习、target 审查、批注定位共用统一结构图谱。 - 所有正式输出都走统一锚点与注入链路。 - `chapterScope` 只收窄 target-side LLM 审查；格式检查仍是文档级。 ## 运行方式 完整主链： ```bash python3 scripts/run_review.py --config ./references/review-config.example.json ``` 独立阶段： ```bash python3 scripts/run_review.py --config ./references/review-config.example.json --stage style_profile python3 scripts/run_review.py --config ./references/review-config.example.json --stage style_annotation python3 scripts/run_review.py --config ./references/review-config.example.json --stage annotation ``` 限制章节范围： ```bash python3 scripts/run_review.py --config ./references/review-config.example.json --chapters abstract,1 ``` ## 最小配置 ```json { "target": { "path": "./inputs/target.docx" }, "refs": [ { "id": "ref-style-01", "path": "./inputs/ref-style-01.docx", "enabled": true, "styleProfileEnabled": true } ], "outputDir": "./outputs" } ``` ## 重要文件 - `scripts/job_defaults.py` / `scripts/runtime_config.py`：配置归一化 - `scripts/paper_structure_anchor.py`：统一结构图谱 - `scripts/profilers/ref_style_profiler.py`：refs 风格学习 - `scripts/fused_review_runtime.py`：target-side fused 审查 - `scripts/annotation_anchor_infra.py` / `scripts/annotation_assembler.py` / `scripts/inject_word_comments.py`：批注链路 - `references/format-rules.json` / `references/format-rule-matrix.md`：公开可分发的派生格式规则 - `references/style-profile-extractor.md`：风格画像提取约束 ## 使用时要做的事 1. 准备自己的 `target` 与 `refs`。 2. 按配置文件指定 `outputDir`、检查项和可选 `chapterScope`。 3. 若已存在稳定 `style-profile.json`，可直接通过 `styleProfilePath` 复用。 4. 调试结构或定位问题时，优先检查 `target-structure-map.json`、`target-style-units.json`、`annotations.json`。 ## 不要做的事 - 不要假设仓库内自带任何真实论文样本。 - 不要把 target 阶段改成直接回读 refs 原文。 - 不要在公开版里加入历史输出、用户文档、原始附件或本地路径。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: xpmars/mx-search (version 1.0.0)

--- name: mx_search description: Retrieve timely, authoritative financial news, announcements, research reports, policies, and other finance‑related information using the Meixiang (妙想) search API. Use when the user asks for up‑to‑date financial insight and wants to avoid non‑official or outdated sources. --- # 妙想资讯搜索 Skill (mx_search) ## Overview This skill provides a safe way to query the Meixiang financial search service for news, announcements, research reports, policy documents, trading rules, specific events, impact analyses, and any other external data needed for finance‑related queries. It ensures the results come from authoritative sources and are current. ## Prerequisites 1. Obtain an API key from the Meixiang Skills page. 2. Set the API key in the environment variable `MX_APIKEY`. ```bash export MX_APIKEY="your_api_key_here" ``` 3. Ensure `curl` is available on the system (default on macOS). ## Usage When the user asks a finance‑related question, follow these steps: 1. Construct the query string based on the user's request. 2. Execute the POST request to the Meixiang endpoint: ```bash curl -X POST \ --location 'https://mkapi2.dfcfs.com/finskillshub/api/claw/news-search' \ --header 'Content-Type: application/json' \ --header "[REDACTED_SECRET]" \ --data '{"query":"<YOUR_QUERY_HERE>"}' ``` 3. Parse the JSON response. Important fields include: - `title`: concise headline of the information. - `secuList`: list of related securities (code, name, type). - `trunk`: main text or structured data block. 4. Present the information to the user in a readable format, optionally highlighting the securities involved. ## Example **User query:** "立讯精密的资讯" **Command executed:** ```bash curl -X POST --location 'https://mkapi2.dfcfs.com/finskillshub/api/claw/news-search' \ --header 'Content-Type: application/json' \ --header '[REDACTED_SECRET]' \ --data '{"query":"立讯精密的资讯"}' ``` **Sample response excerpt:** ```json { "title": "立讯精密最新研报", "secuList": [{"secuCode":"002475","secuName":"立讯精密","secuType":"股票"}], "trunk": "...report content..." } ``` **Formatted reply to user:** - **标题:** 立讯精密最新研报 - **关联证券:** 002475 立讯精密 (股票) - **内容摘要:** ... (provide concise summary from `trunk`) ## Saving Results (optional) If the user wants to keep the result, you can save the raw JSON to a file in the current work directory: ```bash curl ... > mx_search_result.json ``` Then inform the user of the file path. ## When Not to Use Do not use this skill for non‑financial queries, or when the user explicitly asks for opinion‑based answers without needing source data. ## References - Meixiang API documentation (internal). - Example queries table (see above).


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)
Skill: fikacode/searx-search (version 1.0.0)

--- name: searx-search description: Provides web search using free SearX instances from https://searx.space/. Trigger when a user asks to search the web or wants the latest AI news and global events. The skill fetches the list of public SearX instances, selects one, performs the query, and retries with up to two alternative instances if the request fails. Returns plain text search results only. --- # SearX Search Skill ## Overview Search the web via a free SearX instance. Use when a user requests "search ...", "最新 AI 新闻", or "全球大事". The skill returns plain text results without HTML. ## Execution The `scripts/search_searx.sh` script takes a search query as its argument and performs the steps: 1. Download the JSON list of public instances from `https://searx.space/data/instances.json`. 2. Extract up to three reachable instance URLs. 3. For each instance (max 3 attempts): * Send a GET request to `<instance>/search?q=<query>&format=json`. * If the HTTP status is 200 and a non‑empty result is returned, output the titles and URLs of the first 5 results, one per line, then exit successfully. * If the request fails, continue with the next instance. 4. If all attempts fail, output `搜索失败，请稍后重试。`. The script prints only plain text, suitable for direct user consumption. ## Usage ```bash ./scripts/search_searx.sh "最新 AI 新闻" ``` Will output something like: ``` Title 1 - https://example.com/... Title 2 - https://example.org/... ```


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: patmilkgallon/eth24 (version 0.1.0)

# ETH24 - Daily Topic Digest You are running ETH24, a daily digest tool that surfaces the top tweets for a configured topic. ## Pipeline 1. **Crawl** - Run `python3 crawl.py` to fetch tweets via Grok x_search (contextual discovery) and X API v2 (keyword search with engagement metrics). Output: `output/YYYY-MM-DD/crawled.json` 2. **Rank** - Read the crawled data from `output/YYYY-MM-DD/crawled.json`. Select up to 10 tweets by ecosystem importance. Filter out spam (airdrop scams, engagement farming, hashtag spam). Write one-line commentary for each. On quiet days, include fewer stories. If nothing clears the bar, return 0 stories. 3. **Output** - Save the ranked data to `output/YYYY-MM-DD/ranked.json`. Default mode (`cli`) prints plain text to stdout and saves `cli.txt`. Tweet mode formats a single post for Typefully and saves `thread.txt`. ## Ranking Guidelines - Read config.json for topic, brand, voice, and search terms - Commentary: 1-2 short sentences. Tell the reader why this matters. Don't restate the tweet. - Be accurate. Don't claim "first" or "biggest" unless certain. - No emojis. No emdashes. Use hyphens. - Include only stories that are genuinely important. Fewer is better than filler. - Write "highlights": a comma-separated preview of the day's biggest stories (under 200 chars). ## Output Format ```json { "stories": [ { "commentary": "One sentence.", "tweet_url": "https://x.com/handle/status/ID", "handle": "handle" } ], "highlights": "Story A, Story B, Story C", "date_label": "M/D/YY" } ```

path: requirements.txt
content: feedparser
Pillow
httpx


Security scan verdicts — ClawScan: clean | static analysis:  | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)
Skill: bshandley/ai-usage (version 1.0.0)

--- name: ai-usage description: | Check AI usage across Anthropic and other providers. Use when: 1. User asks about AI usage, token usage, or quota 2. User says "what's my AI usage" or "how much have I used" 3. User asks about Anthropic/Claude usage or limits 4. User asks about costs or spending on AI 5. Monitoring usage during heartbeats (daily check) --- # AI Usage Check ## Quick Start ```bash python3 scripts/usage_check.py # Pretty report with gauges python3 scripts/usage_check.py --json # JSON output for scripting ``` ## Requirements - **Python 3.10+** (no pip dependencies — stdlib only) - **Claude Code** installed and authenticated (`claude` CLI in PATH) — for Anthropic quota - **OpenClaw** installed — for session log token/cost stats ## What It Shows **Anthropic (real quota from OAuth API):** - Weekly utilization % with reset countdown - 5-hour rolling window % - Model-specific weekly (Sonnet, Opus) when available - Extra usage spend vs monthly limit **Other Providers (from OpenClaw session logs):** - Token counts and call counts per model - Auto-detects any provider OpenClaw routes through (Ollama, OpenAI, etc.) **OpenClaw Anthropic breakdown:** - Per-model token counts and equivalent API cost ## How It Works - **Anthropic quota:** `GET https://api.anthropic.com/api/oauth/usage` using Claude Code's OAuth token from `~/.claude/.credentials.json` (requires `user:profile` scope) - **Token auto-refresh:** If the token is expired, the script automatically refreshes it by invoking `claude --print -p "ok"` (Claude Code refreshes its own OAuth token on any invocation), then re-reads the updated credentials file. If Claude Code isn't installed, Anthropic quota is skipped gracefully. - **Session stats:** Parses `~/.openclaw/agents/main/sessions/*.jsonl` for per-provider/model token and cost data ## Environment Variables | Variable | Default | Description | |----------|---------|-------------| | `OPENCLAW_SESSIONS_DIR` | `~/.openclaw/agents/main/sessions` | OpenClaw session log directory | | `CLAUDE_CREDENTIALS_PATH` | `~/.claude/.credentials.json` | Claude Code credentials file | ## Tips - Run via **Haiku** or a lightweight model for heartbeat/background checks — the script just needs to execute, no reasoning required - Use `--json` for programmatic consumption (cron jobs, dashboards, alerts) - Works with any Anthropic subscription tier (Pro, Max, Team, etc.)


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