# TOOLS.md - Local Notes Skills define _how_ tools work. This file is for _your_ specifics — the stuff that's unique to your setup. ## What Goes Here Things like: - Camera names and locations - SSH hosts and aliases - Preferred voices for TTS - Speaker/room names - Device nicknames - Anything environment-specific ## Examples ```markdown ### Cameras - living-room → Main area, 180° wide angle - front-door → Entrance, motion-triggered ### SSH - home-server → 192.168.1.100, user: admin ### TTS - Preferred voice: "Nova" (warm, slightly British) - Default speaker: Kitchen HomePod ``` ## Why Separate? Skills are shared. Your setup is yours. Keeping them apart means you can update skills without losing your notes, and share skills without leaking your infrastructure. --- Add whatever helps you do your job. This is your cheat sheet. ## Web Routing Preset (Auto) - Site registry file: `/root/.openclaw/workspace/websites.yaml` - First apply `routing_rules.hard_route_rules`, then fallback to `sites[].purposes/keywords`. - Hard rule: if request mentions "市场分析/行业分析/类目分析/竞品分析/趋势分析", force `ecommerce-market-analysis`. - Hard rule: if request mentions "销售数据/业绩/售后/退款/费比/店铺业绩", force `company-sales-db-analysis` (SQLServer), not web page scraping. - In forced market-analysis route, do not start with `web_search`; go directly to `https://hq.yucekj.com` login flow. - In forced sales/aftersale route, run `company-db` commands directly (`health`, `tables`, `columns`, `query`, `run-file`). - If matched site has `login_required: true`, use env credentials first (`username_env/password_env`), then 1Password fallback. - If task does not need login, use `public-search` or direct public site access. - If OTP/CAPTCHA appears, pause and ask user in chat, then continue. - Never operate outside `allowed_domains`. ## Product Info Helper - Command: `product-info "" --days 30 --limit 20` - Returns: 1) Product master info (`cost_price`, `board_material`, `preview_pic_url`) 2) Last N days shipped/aftersale counts 3) Last N days shop distribution by shipped piece count 4) Last N days daily shipped pieces by SKU 5) Stock risk estimation (`available_qty`, `avg_daily_shipped_30d`, `estimated_stockout_days`, `suggest_replenish_qty_to_10d`) 6) Last 30d sold product-id counts by shop channel 7) Product-id to shop/operator mapping (for notification) 8) Risk-only contact list (`purchaser_name`, `factory_name`, `warehouse_name`, `operator_name`) - Data source: SQLServer `JSDataMiddlePlatform` - Command: `product-skus-by-id "<商品id>" --limit 1000` - Returns all SKU codes and SKU names under the given product ID (style_code/product_no/spu/shopproid). - `product-info` now also returns aftersale insight for matched SKU: - aftersale summary, type/result matrix, reason TOP (last N days) - Command: `stock-risk-alerts --days 30 --limit 500` - Purpose: Query all selling SKUs with potential stockout warning details. - Output: 1) summary counters (`sold_sku_count_30d`, `stock_risk_sku_count`, `urgent_sku_count`, `warning_sku_count`) 2) detailed risk list with `sku_id`, `estimated_stockout_days`, `suggest_replenish_qty_to_lead_days`, `purchaser_name`, `factory_name`, `warehouse_name`, `operator_name` - Command: `stock-risk-to-feishu --days 30 --top 100` - Purpose: Push stock risk report to Feishu in structured rows (not one-cell long text). - Output: - summary record + detail records, with batch id and Feishu link - columns include `SKU编码/SKU名称/风险等级/预计缺货天数/建议补货件数/采购/运营/工厂/仓库/渠道/店铺` ## Customer Service Experience Helper - Command: `customer-service-analysis --start 2026-02-01 --end 2026-02-09 --shop "亿家达" --limit 20` - Purpose: Analyze customer feedback experience + service wording quality in a date range. - Output: overall quality, reason structure, shop comparison score, wording coverage, risk phrase hits, daily trend, dialogue cases, capability score by agent name (S/A/B/C/D). - Replenishment warning rule: when `estimated_stockout_days <= 10`, mark as urgent restock.