diff --git a/README.md b/README.md index 48dfd290..16f8bc57 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,70 @@ opencli list # Now you can use it anywhere! npm install -g @jackwener/opencli@latest ``` +## Install the OpenCLI Skill (opencli-skill) + +Skill location in this repo: + +```bash +skills/opencli-skill/ +``` + +### Codex + +Install to Codex user skills directory: + +```bash +mkdir -p ~/.codex/skills +cp -R skills/opencli-skill ~/.codex/skills/opencli-skill +``` + +Then restart Codex. + +### Cursor + +You can use either legacy `.cursorrules` or project rules (`.cursor/rules/*.mdc`): + +```bash +mkdir -p .cursor/rules +cat > .cursor/rules/opencli-skill.mdc <<'EOF' +# OpenCLI Skill + +When user requests OpenCLI command usage: +1. Read `skills/opencli-skill/SKILL.md` +2. Read `skills/opencli-skill/references/commands/.md` +3. Prefer command examples with `-f json` +4. If browser command fails, run `opencli doctor` +EOF +``` + +### Claude Code + +Add project memory and optional slash command: + +```bash +# Project memory +cat > CLAUDE.md <<'EOF' +For OpenCLI command requests: +1. Read `skills/opencli-skill/SKILL.md` +2. Read `skills/opencli-skill/references/commands/.md` +3. Use exact command + required args and prefer `-f json` +4. Run `opencli doctor` before first browser command +EOF + +# Optional slash command: /opencli +mkdir -p .claude/commands +cat > .claude/commands/opencli.md <<'EOF' +Use OpenCLI skill docs for: $ARGUMENTS +1. Read `skills/opencli-skill/SKILL.md` +2. Read platform file under `skills/opencli-skill/references/commands/` +3. Return concrete commands and args only +EOF +``` + +Skill prerequisites: +- installed `opencli` binary +- manually installed Chrome Browser Bridge extension (`chrome://extensions`) + ## Built-in Commands Run `opencli list` for the live registry. diff --git a/README.zh-CN.md b/README.zh-CN.md index 624760a7..d0785a72 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -114,6 +114,70 @@ opencli list # 可以在任何地方使用了! npm install -g @jackwener/opencli@latest ``` +## 安装 OpenCLI Skill(opencli-skill) + +本仓库内 Skill 路径: + +```bash +skills/opencli-skill/ +``` + +### Codex + +安装到 Codex 用户技能目录: + +```bash +mkdir -p ~/.codex/skills +cp -R skills/opencli-skill ~/.codex/skills/opencli-skill +``` + +安装后重启 Codex。 + +### Cursor + +可使用旧版 `.cursorrules`,也可使用项目规则(`.cursor/rules/*.mdc`): + +```bash +mkdir -p .cursor/rules +cat > .cursor/rules/opencli-skill.mdc <<'EOF' +# OpenCLI Skill + +当用户询问 OpenCLI 命令时: +1. 读取 `skills/opencli-skill/SKILL.md` +2. 读取 `skills/opencli-skill/references/commands/.md` +3. 优先给出带 `-f json` 的命令示例 +4. 浏览器命令失败时先执行 `opencli doctor` +EOF +``` + +### Claude Code + +添加项目记忆,并可选配置 slash command: + +```bash +# 项目记忆 +cat > CLAUDE.md <<'EOF' +For OpenCLI command requests: +1. Read `skills/opencli-skill/SKILL.md` +2. Read `skills/opencli-skill/references/commands/.md` +3. Use exact command + required args and prefer `-f json` +4. Run `opencli doctor` before first browser command +EOF + +# 可选 slash command:/opencli <平台与意图> +mkdir -p .claude/commands +cat > .claude/commands/opencli.md <<'EOF' +Use OpenCLI skill docs for: $ARGUMENTS +1. Read `skills/opencli-skill/SKILL.md` +2. Read platform file under `skills/opencli-skill/references/commands/` +3. Return concrete commands and args only +EOF +``` + +该 Skill 依赖: +- 已安装 `opencli` 命令 +- 已手动安装 Chrome Browser Bridge 扩展(`chrome://extensions`) + ## 内置命令 运行 `opencli list` 查看完整注册表。 diff --git a/SKILL.md b/SKILL.md index 8ffd402a..ea20bcea 100644 --- a/SKILL.md +++ b/SKILL.md @@ -43,6 +43,15 @@ Browser commands require: 2. **opencli Browser Bridge** Chrome extension installed (load `extension/` as unpacked in `chrome://extensions`) 3. No further setup needed — the daemon auto-starts on first browser command +## Skill Package in Repo + +OpenCLI platform command skill is located at: + +- `skills/opencli-platform-router/SKILL.md` +- `skills/opencli-platform-router/references/commands/*.md` + +Use this skill when an agent needs per-platform command usage + args reference. + > **Note**: You must be logged into the target website in Chrome before running commands. Tabs opened during command execution are auto-closed afterwards. Public API commands (`hackernews`, `v2ex`) need no browser. @@ -542,7 +551,8 @@ opencli synthesize # Generate: one-shot explore → synthesize → register opencli generate --goal "hot" -# Record: YOU operate the page, opencli captures every API call → YAML candidates +# Record Workflow (critical for dynamic/auth-heavy sites) +# YOU operate the page, opencli captures every API call and generates YAML candidates. # Opens the URL in automation window, injects fetch/XHR interceptor into ALL tabs, # polls every 2s, auto-stops after 60s (or press Enter to stop early). opencli record # 录制,site name 从域名推断 diff --git a/skills/opencli-skill/SKILL.md b/skills/opencli-skill/SKILL.md new file mode 100644 index 00000000..99c331a7 --- /dev/null +++ b/skills/opencli-skill/SKILL.md @@ -0,0 +1,42 @@ +--- +name: opencli-skill +description: Make any website or Electron app your CLI — reuse Chrome login to search, post, download, publish, follow, automate, and more across 60+ platforms (bilibili, zhihu, twitter, xiaohongshu, douyin, youtube, reddit, linkedin, pixiv, jd, weibo, xueqiu, notion, discord, etc.) with zero credential risk. Covers browser-based, public API, and desktop (CDP/Electron) adapters, plus AI-powered API discovery and record workflows for new sites. +--- + +Use this skill as a platform command router. + +Prerequisites and bootstrap: + +- Ensure `opencli` is available. If missing, install: + - `npm install -g @jackwener/opencli` + - verify: `opencli --version` +- Before first real command, run: + - `opencli doctor` +- If doctor reports extension/browser connectivity issue, prompt user to install Chrome Browser Bridge extension manually (same as README): + - Install location: Chrome extension management page `chrome://extensions` + - Option A (recommended): download `opencli-extension.zip` from OpenCLI Releases and install + - Option B (dev mode): open `chrome://extensions` → enable Developer mode → click "Load unpacked" → select OpenCLI repo `extension/` directory + - After install: keep Chrome open and logged into target platforms, then rerun `opencli doctor` + +1. Detect target platform from user request. +2. Load `references/commands/.md`. +3. Select the command and fill required args. +4. Prefer `-f json` for parseable output. +5. If platform/command is unclear, ask one minimal clarification or run `opencli list` / `opencli --help`. + +All command docs live in: +- `references/commands/*.md` + +Record workflow (for dynamic/auth-heavy pages): + +- Start recording: `opencli record ` +- Optional args: + - `--site ` specify site name + - `--timeout ` recording timeout (default 60000) + - `--poll ` polling interval (default 2000) + - `--out ` output directory +- During recording, manually operate the page in browser to trigger API calls. +- Output files: + - `.opencli/record//captured.json` + - `.opencli/record//candidates/*.yaml` +- Use record when `explore` cannot fully discover requests due to login state, SPA routing, or interaction-dependent APIs. diff --git a/skills/opencli-skill/references/commands/antigravity.md b/skills/opencli-skill/references/commands/antigravity.md new file mode 100644 index 00000000..2d792e45 --- /dev/null +++ b/skills/opencli-skill/references/commands/antigravity.md @@ -0,0 +1,46 @@ +# antigravity + +## Commands + +### dump +- Purpose: Dump the DOM to help AI understand the UI +- Args: None +- Usage: `opencli antigravity dump [options] -f json` + +### extract-code +- Purpose: Extract multi-line code blocks from the current Antigravity conversation +- Args: None +- Usage: `opencli antigravity extract-code [options] -f json` + +### model +- Purpose: Switch the active LLM model in Antigravity +- Args: + - `name`(required): Target model name (e.g. claude, gemini, o1) +- Usage: `opencli antigravity model [options] -f json` + +### new +- Purpose: Start a new conversation / clear context in Antigravity +- Args: None +- Usage: `opencli antigravity new [options] -f json` + +### read +- Purpose: Read the latest chat messages from Antigravity AI +- Args: + - `last`(optional): Number of recent messages to read (not fully implemented due to generic structure, currently returns full history text or latest chunk) +- Usage: `opencli antigravity read [options] -f json` + +### send +- Purpose: Send a message to Antigravity AI via the internal Lexical editor +- Args: + - `message`(required): The message text to send +- Usage: `opencli antigravity send [options] -f json` + +### status +- Purpose: Check Antigravity CDP connection and get current page state +- Args: None +- Usage: `opencli antigravity status [options] -f json` + +### watch +- Purpose: Stream new chat messages from Antigravity in real-time +- Args: None +- Usage: `opencli antigravity watch [options] -f json` diff --git a/skills/opencli-skill/references/commands/apple-podcasts.md b/skills/opencli-skill/references/commands/apple-podcasts.md new file mode 100644 index 00000000..8481edf5 --- /dev/null +++ b/skills/opencli-skill/references/commands/apple-podcasts.md @@ -0,0 +1,24 @@ +# apple-podcasts + +## Commands + +### episodes +- Purpose: List recent episodes of an Apple Podcast (use ID from search) +- Args: + - `id`(required): Podcast ID (collectionId from search output) + - `limit`(optional): type: int; default: 15; Max episodes to show +- Usage: `opencli apple-podcasts episodes [options] -f json` + +### search +- Purpose: Search Apple Podcasts +- Args: + - `query`(required): Search keyword + - `limit`(optional): type: int; default: 10; Max results +- Usage: `opencli apple-podcasts search [options] -f json` + +### top +- Purpose: Top podcasts chart on Apple Podcasts +- Args: + - `limit`(optional): type: int; default: 20; Number of podcasts (max 100) + - `country`(optional): default: 'us'; Country code (e.g. us, cn, gb, jp) +- Usage: `opencli apple-podcasts top [options] -f json` diff --git a/skills/opencli-skill/references/commands/arxiv.md b/skills/opencli-skill/references/commands/arxiv.md new file mode 100644 index 00000000..c13b89da --- /dev/null +++ b/skills/opencli-skill/references/commands/arxiv.md @@ -0,0 +1,16 @@ +# arxiv + +## Commands + +### paper +- Purpose: Get arXiv paper details by ID +- Args: + - `id`(required): arXiv paper ID (e.g. 1706.03762) +- Usage: `opencli arxiv paper [options] -f json` + +### search +- Purpose: Search arXiv papers +- Args: + - `query`(required): Search keyword (e.g. "transformer") + - `limit`(optional): type: int; default: 10; Max results (max 25) +- Usage: `opencli arxiv search [options] -f json` diff --git a/skills/opencli-skill/references/commands/barchart.md b/skills/opencli-skill/references/commands/barchart.md new file mode 100644 index 00000000..2a6d76ab --- /dev/null +++ b/skills/opencli-skill/references/commands/barchart.md @@ -0,0 +1,32 @@ +# barchart + +## Commands + +### flow +- Purpose: Barchart unusual options activity / options flow +- Args: + - `type`(optional): type: str; default: 'all'; Filter: all, call, or put + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli barchart flow [options] -f json` + +### greeks +- Purpose: Barchart options greeks overview (IV, delta, gamma, theta, vega) +- Args: + - `symbol`(required): Stock ticker (e.g. AAPL) + - `expiration`(optional): type: str; Expiration date (YYYY-MM-DD). Defaults to the nearest available expiration. + - `limit`(optional): type: int; default: 10; Number of near-the-money strikes per type +- Usage: `opencli barchart greeks [options] -f json` + +### options +- Purpose: Barchart options chain with greeks, IV, volume, and open interest +- Args: + - `symbol`(required): Stock ticker (e.g. AAPL) + - `type`(optional): type: str; default: 'Call'; Option type: Call or Put + - `limit`(optional): type: int; default: 20; Max number of strikes to return +- Usage: `opencli barchart options [options] -f json` + +### quote +- Purpose: Barchart stock quote with price, volume, and key metrics +- Args: + - `symbol`(required): Stock ticker (e.g. AAPL, MSFT, TSLA) +- Usage: `opencli barchart quote [options] -f json` diff --git a/skills/opencli-skill/references/commands/bbc.md b/skills/opencli-skill/references/commands/bbc.md new file mode 100644 index 00000000..15ccf316 --- /dev/null +++ b/skills/opencli-skill/references/commands/bbc.md @@ -0,0 +1,9 @@ +# bbc + +## Commands + +### news +- Purpose: BBC News headlines (RSS) +- Args: + - `limit`(optional): type: int; default: 20; Number of headlines (max 50) +- Usage: `opencli bbc news [options] -f json` diff --git a/skills/opencli-skill/references/commands/bilibili.md b/skills/opencli-skill/references/commands/bilibili.md new file mode 100644 index 00000000..a19b7453 --- /dev/null +++ b/skills/opencli-skill/references/commands/bilibili.md @@ -0,0 +1,87 @@ +# bilibili + +## Commands + +### download +- Purpose: Download Bilibili video (requires yt-dlp) +- Args: + - `bvid`(required): Video BV ID (e.g., BV1xxx) + - `output`(optional): default: './bilibili-downloads'; Output directory + - `quality`(optional): default: 'best'; Video quality (best, 1080p, 720p, 480p) +- Usage: `opencli bilibili download [options] -f json` + +### dynamic +- Purpose: Get Bilibili user dynamic feed +- Args: + - `limit`(optional): type: int; default: 15 +- Usage: `opencli bilibili dynamic [options] -f json` + +### favorite +- Purpose: My default favorites folder +- Args: + - `limit`(optional): type: int; default: 20; Number of results + - `page`(optional): type: int; default: 1; Page number +- Usage: `opencli bilibili favorite [options] -f json` + +### feed +- Purpose: Following feed timeline +- Args: + - `limit`(optional): type: int; default: 20; Number of results + - `type`(optional): default: 'all'; Filter: all, video, article +- Usage: `opencli bilibili feed [options] -f json` + +### following +- Purpose: Get a Bilibili user's following list +- Args: + - `uid`(optional): Target user ID (defaults to current logged-in user) + - `page`(optional): type: int; default: 1; Page number + - `limit`(optional): type: int; default: 50; Items per page (max 50) +- Usage: `opencli bilibili following [options] -f json` + +### history +- Purpose: My watch history +- Args: + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli bilibili history [options] -f json` + +### hot +- Purpose: Bilibili hot videos +- Args: + - `limit`(optional): type: int; default: 20; Number of videos +- Usage: `opencli bilibili hot [options] -f json` + +### me +- Purpose: My Bilibili profile info +- Args: None +- Usage: `opencli bilibili me [options] -f json` + +### ranking +- Purpose: Get Bilibili video ranking board +- Args: + - `limit`(optional): type: int; default: 20 +- Usage: `opencli bilibili ranking [options] -f json` + +### search +- Purpose: Search Bilibili videos or users +- Args: + - `query`(required): Search keyword + - `type`(optional): default: 'video'; video or user + - `page`(optional): type: int; default: 1; Result page + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli bilibili search [options] -f json` + +### subtitle +- Purpose: Get subtitles for a Bilibili video +- Args: + - `bvid`(required) + - `lang`(optional): Subtitle language code (e.g. zh-CN, en-US, ai-zh); defaults to first available +- Usage: `opencli bilibili subtitle [options] -f json` + +### user-videos +- Purpose: List videos posted by a specific user +- Args: + - `uid`(required): User UID or username + - `limit`(optional): type: int; default: 20; Number of results + - `order`(optional): default: 'pubdate'; Sort: pubdate, click, stow + - `page`(optional): type: int; default: 1; Page number +- Usage: `opencli bilibili user-videos [options] -f json` diff --git a/skills/opencli-skill/references/commands/bloomberg.md b/skills/opencli-skill/references/commands/bloomberg.md new file mode 100644 index 00000000..73df646f --- /dev/null +++ b/skills/opencli-skill/references/commands/bloomberg.md @@ -0,0 +1,62 @@ +# bloomberg + +## Commands + +### businessweek +- Purpose: Bloomberg Businessweek top stories (RSS) +- Args: + - `limit`(optional): type: int; default: 1; Number of feed items to return (max 20) +- Usage: `opencli bloomberg businessweek [options] -f json` + +### economics +- Purpose: Bloomberg Economics top stories (RSS) +- Args: + - `limit`(optional): type: int; default: 1; Number of feed items to return (max 20) +- Usage: `opencli bloomberg economics [options] -f json` + +### feeds +- Purpose: List the Bloomberg RSS feed aliases used by the adapter +- Args: None +- Usage: `opencli bloomberg feeds [options] -f json` + +### industries +- Purpose: Bloomberg Industries top stories (RSS) +- Args: + - `limit`(optional): type: int; default: 1; Number of feed items to return (max 20) +- Usage: `opencli bloomberg industries [options] -f json` + +### main +- Purpose: Bloomberg homepage top stories (RSS) +- Args: + - `limit`(optional): type: int; default: 1; Number of feed items to return (max 20) +- Usage: `opencli bloomberg main [options] -f json` + +### markets +- Purpose: Bloomberg Markets top stories (RSS) +- Args: + - `limit`(optional): type: int; default: 1; Number of feed items to return (max 20) +- Usage: `opencli bloomberg markets [options] -f json` + +### news +- Purpose: Read a Bloomberg story/article page and return title, full content, and media links +- Args: + - `link`(required): Bloomberg story/article URL or relative Bloomberg path +- Usage: `opencli bloomberg news [options] -f json` + +### opinions +- Purpose: Bloomberg Opinion top stories (RSS) +- Args: + - `limit`(optional): type: int; default: 1; Number of feed items to return (max 20) +- Usage: `opencli bloomberg opinions [options] -f json` + +### politics +- Purpose: Bloomberg Politics top stories (RSS) +- Args: + - `limit`(optional): type: int; default: 1; Number of feed items to return (max 20) +- Usage: `opencli bloomberg politics [options] -f json` + +### tech +- Purpose: Bloomberg Tech top stories (RSS) +- Args: + - `limit`(optional): type: int; default: 1; Number of feed items to return (max 20) +- Usage: `opencli bloomberg tech [options] -f json` diff --git a/skills/opencli-skill/references/commands/boss.md b/skills/opencli-skill/references/commands/boss.md new file mode 100644 index 00000000..896bc6e6 --- /dev/null +++ b/skills/opencli-skill/references/commands/boss.md @@ -0,0 +1,108 @@ +# boss + +## Commands + +### batchgreet +- Purpose: Send batch greetings to recommended candidates on BOSS Zhipin +- Args: + - `job-id`(optional): default: ''; Filter by encrypted job ID (greet all jobs if empty) + - `limit`(optional): type: int; default: 5; Max candidates to greet + - `text`(optional): default: ''; Custom greeting message (uses default if empty) +- Usage: `opencli boss batchgreet [options] -f json` + +### chatlist +- Purpose: View recruiter chat list on BOSS Zhipin +- Args: + - `page`(optional): type: int; default: 1; Page number + - `limit`(optional): type: int; default: 20; Number of results + - `job-id`(optional): default: '0'; Filter by job ID (0=all) +- Usage: `opencli boss chatlist [options] -f json` + +### chatmsg +- Purpose: View chat messages with a candidate on BOSS Zhipin +- Args: + - `uid`(required): Encrypted UID (from chatlist) + - `page`(optional): type: int; default: 1; Page number +- Usage: `opencli boss chatmsg [options] -f json` + +### detail +- Purpose: View job detail on BOSS Zhipin +- Args: + - `security-id`(required): Security ID from search results (securityId field) +- Usage: `opencli boss detail [options] -f json` + +### exchange +- Purpose: Request contact exchange (phone/WeChat) on BOSS Zhipin +- Args: + - `uid`(required): Encrypted UID of the candidate + - `type`(optional): default: 'phone'; Exchange type: phone or wechat +- Usage: `opencli boss exchange [options] -f json` + +### greet +- Purpose: Send greeting to a new candidate (start chat) on BOSS Zhipin +- Args: + - `uid`(required): Encrypted UID of the candidate (from recommend) + - `security-id`(required): Security ID of the candidate + - `job-id`(required): Encrypted job ID + - `text`(optional): default: ''; Custom greeting message (uses default template if empty) +- Usage: `opencli boss greet [options] -f json` + +### invite +- Purpose: Send interview invitation on BOSS Zhipin +- Args: + - `uid`(required): Encrypted UID of the candidate + - `time`(required): Interview time (e.g. 2025-04-01 14:00) + - `address`(optional): default: ''; Interview address (uses saved address if empty) + - `contact`(optional): default: ''; Contact person name (uses saved contact if empty) +- Usage: `opencli boss invite [options] -f json` + +### joblist +- Purpose: View my posted jobs on BOSS Zhipin +- Args: None +- Usage: `opencli boss joblist [options] -f json` + +### mark +- Purpose: Add labels to a candidate on BOSS Zhipin +- Args: + - `uid`(required): Encrypted UID of the candidate + - `label`(required): Label name (new-greet/in-chat/interview-scheduled/resume-received/phone-exchanged/wechat-exchanged/not-fit/favorite) or label ID + - `remove`(optional): type: boolean; default: false; Remove the label instead of adding +- Usage: `opencli boss mark [options] -f json` + +### recommend +- Purpose: View recommended candidates (new greetings list) on BOSS Zhipin +- Args: + - `limit`(optional): type: int; default: 20; Number of results to return +- Usage: `opencli boss recommend [options] -f json` + +### resume +- Purpose: View candidate resume on BOSS Zhipin (recruiter side) +- Args: + - `uid`(required): Encrypted UID of the candidate (from chatlist) +- Usage: `opencli boss resume [options] -f json` + +### search +- Purpose: Search jobs on BOSS Zhipin +- Args: + - `query`(required): Search keyword (e.g. AI agent, frontend) + - `city`(optional): default: 'Beijing'; City name or code (e.g. Hangzhou, Shanghai, 101010100) + - `experience`(optional): default: ''; Experience: new-grad/lt-1y/1-3y/3-5y/5-10y/10y+ + - `degree`(optional): default: ''; Degree: associate/bachelor/master/phd + - `salary`(optional): default: ''; Salary: lt-3K/3-5K/5-10K/10-15K/15-20K/20-30K/30-50K/gt-50K + - `industry`(optional): default: ''; Industry code or name (e.g. 100020, internet) + - `page`(optional): type: int; default: 1; Page number + - `limit`(optional): type: int; default: 15; Number of results +- Usage: `opencli boss search [options] -f json` + +### send +- Purpose: Send chat message on BOSS Zhipin +- Args: + - `uid`(required): Encrypted UID of the candidate (from chatlist) + - `text`(required): Message text to send +- Usage: `opencli boss send [options] -f json` + +### stats +- Purpose: Job stats on BOSS Zhipin +- Args: + - `job-id`(optional): default: ''; Encrypted job ID (show all if empty) +- Usage: `opencli boss stats [options] -f json` diff --git a/skills/opencli-skill/references/commands/chaoxing.md b/skills/opencli-skill/references/commands/chaoxing.md new file mode 100644 index 00000000..46509f84 --- /dev/null +++ b/skills/opencli-skill/references/commands/chaoxing.md @@ -0,0 +1,19 @@ +# chaoxing + +## Commands + +### assignments +- Purpose: Chaoxing assignments list +- Args: + - `course`(optional): type: string; Filter by course name (fuzzy match) + - `status`(optional): type: string; default: 'all'; Filter by status + - `limit`(optional): type: int; default: 20; Maximum number of results +- Usage: `opencli chaoxing assignments [options] -f json` + +### exams +- Purpose: Chaoxing exams list +- Args: + - `course`(optional): type: string; Filter by course name (fuzzy match) + - `status`(optional): type: string; default: 'all'; Filter by status + - `limit`(optional): type: int; default: 20; Maximum number of results +- Usage: `opencli chaoxing exams [options] -f json` diff --git a/skills/opencli-skill/references/commands/chatgpt.md b/skills/opencli-skill/references/commands/chatgpt.md new file mode 100644 index 00000000..02c6b7f6 --- /dev/null +++ b/skills/opencli-skill/references/commands/chatgpt.md @@ -0,0 +1,31 @@ +# chatgpt + +## Commands + +### ask +- Purpose: Send a prompt and wait for the AI response (send + wait + read) +- Args: + - `text`(required): Prompt to send + - `timeout`(optional): default: 30; Max seconds to wait for response (default: 30) +- Usage: `opencli chatgpt ask [options] -f json` + +### new +- Purpose: Open a new chat in ChatGPT Desktop App +- Args: None +- Usage: `opencli chatgpt new [options] -f json` + +### read +- Purpose: Read the last visible message from the focused ChatGPT Desktop window +- Args: None +- Usage: `opencli chatgpt read [options] -f json` + +### send +- Purpose: Send a message to the active ChatGPT Desktop App window +- Args: + - `text`(required): Message to send +- Usage: `opencli chatgpt send [options] -f json` + +### status +- Purpose: Check if ChatGPT Desktop App is running natively on macOS +- Args: None +- Usage: `opencli chatgpt status [options] -f json` diff --git a/skills/opencli-skill/references/commands/chatwise.md b/skills/opencli-skill/references/commands/chatwise.md new file mode 100644 index 00000000..427ae988 --- /dev/null +++ b/skills/opencli-skill/references/commands/chatwise.md @@ -0,0 +1,54 @@ +# chatwise + +## Commands + +### ask +- Purpose: Send a prompt and wait for the AI response (send + wait + read) +- Args: + - `text`(required): Prompt to send + - `timeout`(optional): default: 30; Max seconds to wait (default: 30) +- Usage: `opencli chatwise ask [options] -f json` + +### export +- Purpose: Export the current ChatWise conversation to a Markdown file +- Args: + - `output`(optional): default: /tmp/chatwise-export.md; Output file (default: /tmp/chatwise-export.md) +- Usage: `opencli chatwise export [options] -f json` + +### history +- Purpose: List conversation history in ChatWise sidebar +- Args: None +- Usage: `opencli chatwise history [options] -f json` + +### model +- Purpose: Get or switch the active AI model in ChatWise +- Args: + - `model-name`(optional): Model to switch to (e.g. gpt-4, claude-3) +- Usage: `opencli chatwise model [options] -f json` + +### new +- Purpose: Start a new conversation in ChatWise +- Args: None +- Usage: `opencli chatwise new [options] -f json` + +### read +- Purpose: Read the current ChatWise conversation history +- Args: None +- Usage: `opencli chatwise read [options] -f json` + +### screenshot +- Purpose: Capture a snapshot of the current ChatWise window (DOM + Accessibility tree) +- Args: + - `output`(optional): default: /tmp/chatwise-snapshot; Output file path (default: /tmp/chatwise-snapshot) +- Usage: `opencli chatwise screenshot [options] -f json` + +### send +- Purpose: Send a message to the active ChatWise conversation +- Args: + - `text`(required): Message to send +- Usage: `opencli chatwise send [options] -f json` + +### status +- Purpose: Check active CDP connection to ChatWise Desktop +- Args: None +- Usage: `opencli chatwise status [options] -f json` diff --git a/skills/opencli-skill/references/commands/codex.md b/skills/opencli-skill/references/commands/codex.md new file mode 100644 index 00000000..4e89635b --- /dev/null +++ b/skills/opencli-skill/references/commands/codex.md @@ -0,0 +1,64 @@ +# codex + +## Commands + +### ask +- Purpose: Send a prompt and wait for the AI response (send + wait + read) +- Args: + - `text`(required): Prompt to send + - `timeout`(optional): default: 60; Max seconds to wait for response (default: 60) +- Usage: `opencli codex ask [options] -f json` + +### dump +- Purpose: Dump the DOM and Accessibility tree of Codex for reverse-engineering +- Args: None +- Usage: `opencli codex dump [options] -f json` + +### export +- Purpose: Export the current Codex conversation to a Markdown file +- Args: + - `output`(optional): default: /tmp/codex-export.md; Output file (default: /tmp/codex-export.md) +- Usage: `opencli codex export [options] -f json` + +### extract-diff +- Purpose: Extract visual code review diff patches from Codex +- Args: None +- Usage: `opencli codex extract-diff [options] -f json` + +### history +- Purpose: List recent conversation threads in Codex +- Args: None +- Usage: `opencli codex history [options] -f json` + +### model +- Purpose: Get or switch the currently active AI model in Codex Desktop +- Args: + - `model-name`(optional): The ID of the model to switch to (e.g. gpt-4) +- Usage: `opencli codex model [options] -f json` + +### new +- Purpose: Start a new Codex conversation thread / isolated workspace +- Args: None +- Usage: `opencli codex new [options] -f json` + +### read +- Purpose: Read the contents of the current Codex conversation thread +- Args: None +- Usage: `opencli codex read [options] -f json` + +### screenshot +- Purpose: Capture a snapshot of the current Codex window (DOM + Accessibility tree) +- Args: + - `output`(optional): default: /tmp/codex-snapshot.txt; Output file path (default: /tmp/codex-snapshot.txt) +- Usage: `opencli codex screenshot [options] -f json` + +### send +- Purpose: Send text/commands to the Codex AI composer +- Args: + - `text`(required): Text, command (e.g. /review), or skill (e.g. $imagegen) +- Usage: `opencli codex send [options] -f json` + +### status +- Purpose: Check active CDP connection to OpenAI Codex App +- Args: None +- Usage: `opencli codex status [options] -f json` diff --git a/skills/opencli-skill/references/commands/coupang.md b/skills/opencli-skill/references/commands/coupang.md new file mode 100644 index 00000000..80dd94ec --- /dev/null +++ b/skills/opencli-skill/references/commands/coupang.md @@ -0,0 +1,19 @@ +# coupang + +## Commands + +### add-to-cart +- Purpose: Add a Coupang product to cart using logged-in browser session +- Args: + - `product-id`(optional): Coupang product ID + - `url`(optional): Canonical product URL +- Usage: `opencli coupang add-to-cart [options] -f json` + +### search +- Purpose: Search Coupang products with logged-in browser session +- Args: + - `query`(required): Search keyword + - `page`(optional): type: int; default: 1; Search result page number + - `limit`(optional): type: int; default: 20; Max results (max 50) + - `filter`(optional): Optional search filter (currently supports: rocket) +- Usage: `opencli coupang search [options] -f json` diff --git a/skills/opencli-skill/references/commands/ctrip.md b/skills/opencli-skill/references/commands/ctrip.md new file mode 100644 index 00000000..2534bc2b --- /dev/null +++ b/skills/opencli-skill/references/commands/ctrip.md @@ -0,0 +1,10 @@ +# ctrip + +## Commands + +### search +- Purpose: Ctrip travel search +- Args: + - `query`(required): Search keyword (city or attraction) + - `limit`(optional): type: int; default: 15; Number of results +- Usage: `opencli ctrip search [options] -f json` diff --git a/skills/opencli-skill/references/commands/cursor.md b/skills/opencli-skill/references/commands/cursor.md new file mode 100644 index 00000000..f36f7960 --- /dev/null +++ b/skills/opencli-skill/references/commands/cursor.md @@ -0,0 +1,58 @@ +# cursor + +## Commands + +### ask +- Purpose: Send a prompt and wait for the AI response (send + wait + read) +- Args: + - `text`(required): Prompt to send + - `timeout`(optional): default: 30; Max seconds to wait for response (default: 30) +- Usage: `opencli cursor ask [options] -f json` + +### composer +- Purpose: Send a prompt directly into Cursor Composer (Cmd+I shortcut) +- Args: + - `text`(required): Text to send into Composer +- Usage: `opencli cursor composer [options] -f json` + +### dump +- Purpose: Dump the DOM and Accessibility tree of Cursor for reverse-engineering +- Args: None +- Usage: `opencli cursor dump [options] -f json` + +### extract-code +- Purpose: Extract multi-line code blocks from the current Cursor conversation +- Args: None +- Usage: `opencli cursor extract-code [options] -f json` + +### history +- Purpose: List recent chat sessions from the Cursor sidebar +- Args: None +- Usage: `opencli cursor history [options] -f json` + +### model +- Purpose: Get or switch the currently active AI model in Cursor +- Args: + - `model-name`(optional): The ID of the model to switch to (e.g. claude-3.5-sonnet) +- Usage: `opencli cursor model [options] -f json` + +### new +- Purpose: Start a new Cursor chat or Composer session +- Args: None +- Usage: `opencli cursor new [options] -f json` + +### read +- Purpose: Read the current Cursor chat/composer conversation history +- Args: None +- Usage: `opencli cursor read [options] -f json` + +### send +- Purpose: Send a prompt directly into Cursor Composer/Chat +- Args: + - `text`(required): Text to send into Cursor +- Usage: `opencli cursor send [options] -f json` + +### status +- Purpose: Check active CDP connection to Cursor AI Editor +- Args: None +- Usage: `opencli cursor status [options] -f json` diff --git a/skills/opencli-skill/references/commands/devto.md b/skills/opencli-skill/references/commands/devto.md new file mode 100644 index 00000000..95b8a8fb --- /dev/null +++ b/skills/opencli-skill/references/commands/devto.md @@ -0,0 +1,23 @@ +# devto + +## Commands + +### tag +- Purpose: Latest DEV.to articles for a specific tag +- Args: + - `tag`(required): type: str; "Tag name (e.g. javascript, python, webdev)" + - `limit`(optional): type: int; default: 20; Number of articles +- Usage: `opencli devto tag [options] -f json` + +### top +- Purpose: Top DEV.to articles of the day +- Args: + - `limit`(optional): type: int; default: 20; Number of articles +- Usage: `opencli devto top [options] -f json` + +### user +- Purpose: Recent DEV.to articles from a specific user +- Args: + - `username`(required): type: str; "DEV.to username (e.g. ben, thepracticaldev)" + - `limit`(optional): type: int; default: 20; Number of articles +- Usage: `opencli devto user [options] -f json` diff --git a/skills/opencli-skill/references/commands/dictionary.md b/skills/opencli-skill/references/commands/dictionary.md new file mode 100644 index 00000000..eda5cf5d --- /dev/null +++ b/skills/opencli-skill/references/commands/dictionary.md @@ -0,0 +1,21 @@ +# dictionary + +## Commands + +### search +- Purpose: Search dictionary definitions, parts of speech, and pronunciations +- Args: + - `word`(required): Word to define (e.g., serendipity) +- Usage: `opencli dictionary search [options] -f json` + +### synonyms +- Purpose: Find synonyms for a given word +- Args: + - `word`(required): Word to find synonyms for +- Usage: `opencli dictionary synonyms [options] -f json` + +### examples +- Purpose: Get example sentences for a given word +- Args: + - `word`(required): Word to get examples for +- Usage: `opencli dictionary examples [options] -f json` diff --git a/skills/opencli-skill/references/commands/discord-app.md b/skills/opencli-skill/references/commands/discord-app.md new file mode 100644 index 00000000..9a043f5d --- /dev/null +++ b/skills/opencli-skill/references/commands/discord-app.md @@ -0,0 +1,41 @@ +# discord-app + +## Commands + +### channels +- Purpose: List channels in the current Discord server +- Args: None +- Usage: `opencli discord-app channels [options] -f json` + +### members +- Purpose: List online members in the current Discord channel +- Args: None +- Usage: `opencli discord-app members [options] -f json` + +### read +- Purpose: Read recent messages from the active Discord channel +- Args: + - `count`(optional): default: 20; Number of messages to read (default: 20) +- Usage: `opencli discord-app read [options] -f json` + +### search +- Purpose: Search messages in the current Discord server/channel (Cmd+F) +- Args: + - `query`(required): Search query +- Usage: `opencli discord-app search [options] -f json` + +### send +- Purpose: Send a message in the active Discord channel +- Args: + - `text`(required): Message to send +- Usage: `opencli discord-app send [options] -f json` + +### servers +- Purpose: List all Discord servers (guilds) in the sidebar +- Args: None +- Usage: `opencli discord-app servers [options] -f json` + +### status +- Purpose: Check active CDP connection to Discord Desktop +- Args: None +- Usage: `opencli discord-app status [options] -f json` diff --git a/skills/opencli-skill/references/commands/douban.md b/skills/opencli-skill/references/commands/douban.md new file mode 100644 index 00000000..116d9822 --- /dev/null +++ b/skills/opencli-skill/references/commands/douban.md @@ -0,0 +1,51 @@ +# douban + +## Commands + +### book-hot +- Purpose: Douban books hot list +- Args: + - `limit`(optional): type: int; default: 20; Number of books to return +- Usage: `opencli douban book-hot [options] -f json` + +### marks +- Purpose: Export personal movie marks +- Args: + - `status`(optional): default: 'collect'; Mark type: collect (watched), wish (want to watch), do (watching), all (all) + - `limit`(optional): type: int; default: 50; Export count, 0 means all + - `uid`(optional): User ID; uses current logged-in user if omitted +- Usage: `opencli douban marks [options] -f json` + +### movie-hot +- Purpose: Douban movies hot list +- Args: + - `limit`(optional): type: int; default: 20; Number of movies to return +- Usage: `opencli douban movie-hot [options] -f json` + +### reviews +- Purpose: Export personal movie reviews +- Args: + - `limit`(optional): type: int; default: 20; Export count + - `uid`(optional): User ID; uses current logged-in user if omitted + - `full`(optional): type: bool; default: false; Get full review content +- Usage: `opencli douban reviews [options] -f json` + +### search +- Purpose: Search Douban movies, books, or music +- Args: + - `type`(optional): default: 'movie'; Search type (movie, book, music) + - `keyword`(required): Search keyword + - `limit`(optional): type: int; default: 20; Number of results to return +- Usage: `opencli douban search [options] -f json` + +### subject +- Purpose: Get movie detail +- Args: + - `id`(required): type: str; Movie ID +- Usage: `opencli douban subject [options] -f json` + +### top250 +- Purpose: Douban Top 250 movies +- Args: + - `limit`(optional): type: int; default: 250; Number of results to return +- Usage: `opencli douban top250 [options] -f json` diff --git a/skills/opencli-skill/references/commands/doubao-app.md b/skills/opencli-skill/references/commands/doubao-app.md new file mode 100644 index 00000000..e169f8f7 --- /dev/null +++ b/skills/opencli-skill/references/commands/doubao-app.md @@ -0,0 +1,42 @@ +# doubao-app + +## Commands + +### ask +- Purpose: Send a message to Doubao desktop app and wait for the AI response +- Args: + - `text`(required): Prompt to send + - `timeout`(optional): type: int; default: 30; Max seconds to wait for response +- Usage: `opencli doubao-app ask [options] -f json` + +### dump +- Purpose: Dump Doubao desktop app DOM and snapshot to /tmp for debugging +- Args: None +- Usage: `opencli doubao-app dump [options] -f json` + +### new +- Purpose: Start a new chat in Doubao desktop app +- Args: None +- Usage: `opencli doubao-app new [options] -f json` + +### read +- Purpose: Read chat history from Doubao desktop app +- Args: None +- Usage: `opencli doubao-app read [options] -f json` + +### screenshot +- Purpose: Capture a screenshot of the Doubao desktop app window +- Args: + - `output`(optional): default: /tmp/doubao-screenshot.png; Output file path (default: /tmp/doubao-screenshot.png) +- Usage: `opencli doubao-app screenshot [options] -f json` + +### send +- Purpose: Send a message to Doubao desktop app +- Args: + - `text`(required): Message text to send +- Usage: `opencli doubao-app send [options] -f json` + +### status +- Purpose: Check CDP connection to Doubao desktop app +- Args: None +- Usage: `opencli doubao-app status [options] -f json` diff --git a/skills/opencli-skill/references/commands/doubao.md b/skills/opencli-skill/references/commands/doubao.md new file mode 100644 index 00000000..27941be6 --- /dev/null +++ b/skills/opencli-skill/references/commands/doubao.md @@ -0,0 +1,31 @@ +# doubao + +## Commands + +### ask +- Purpose: Send a prompt and wait for the Doubao response +- Args: + - `text`(required): Prompt to send + - `timeout`(optional): default: 60; Max seconds to wait (default: 60) +- Usage: `opencli doubao ask [options] -f json` + +### new +- Purpose: Start a new conversation in Doubao web chat +- Args: None +- Usage: `opencli doubao new [options] -f json` + +### read +- Purpose: Read the current Doubao conversation history +- Args: None +- Usage: `opencli doubao read [options] -f json` + +### send +- Purpose: Send a message to Doubao web chat +- Args: + - `text`(required): Message to send +- Usage: `opencli doubao send [options] -f json` + +### status +- Purpose: Check Doubao chat page availability and login state +- Args: None +- Usage: `opencli doubao status [options] -f json` diff --git a/skills/opencli-skill/references/commands/douyin.md b/skills/opencli-skill/references/commands/douyin.md new file mode 100644 index 00000000..0cb4a73d --- /dev/null +++ b/skills/opencli-skill/references/commands/douyin.md @@ -0,0 +1,98 @@ +# douyin + +## Commands + +### profile +- Purpose: Get creator account profile information +- Args: None +- Usage: `opencli douyin profile [options] -f json` + +### videos +- Purpose: Get creator video list +- Args: + - `limit`(optional): type: int; default: 20; Page size + - `page`(optional): type: int; default: 1; Page number + - `status`(optional): default: all; all/published/reviewing/scheduled +- Usage: `opencli douyin videos [options] -f json` + +### stats +- Purpose: Get analytics metrics for a specific video +- Args: + - `aweme_id`(required): Video aweme ID +- Usage: `opencli douyin stats [options] -f json` + +### activities +- Purpose: Get official activity list +- Args: None +- Usage: `opencli douyin activities [options] -f json` + +### collections +- Purpose: Get creator collections list +- Args: + - `limit`(optional): type: int; default: 20; Number of collections +- Usage: `opencli douyin collections [options] -f json` + +### drafts +- Purpose: Get draft video list +- Args: + - `limit`(optional): type: int; default: 20; Number of drafts +- Usage: `opencli douyin drafts [options] -f json` + +### draft +- Purpose: Upload a video and save it as draft +- Args: + - `video`(required): Local video file path + - `title`(required): Video title (<= 30 chars) + - `caption`(optional): default: ''; Caption text (<= 1000 chars, supports hashtags) + - `cover`(optional): default: ''; Cover image file path + - `visibility`(optional): default: public; public/friends/private +- Usage: `opencli douyin draft [options] -f json` + +### publish +- Purpose: Upload and schedule a Douyin video post +- Args: + - `video`(required): Local video file path + - `title`(required): Video title (<= 30 chars) + - `schedule`(required): Publish time (ISO8601 or Unix seconds, 2h to 14d later) + - `caption`(optional): default: ''; Caption text (<= 1000 chars, supports hashtags) + - `cover`(optional): default: ''; Cover image file path + - `visibility`(optional): default: public; public/friends/private + - `allow_download`(optional): type: bool; default: false; Allow downloads + - `collection`(optional): default: ''; Collection ID + - `activity`(optional): default: ''; Activity ID + - `poi_id`(optional): default: ''; Location POI ID + - `poi_name`(optional): default: ''; Location name + - `hotspot`(optional): default: ''; Hotspot keyword + - `no_safety_check`(optional): type: bool; default: false; Skip content safety check + - `sync_toutiao`(optional): type: bool; default: false; Sync to Toutiao +- Usage: `opencli douyin publish [options] -f json` + +### update +- Purpose: Update scheduled publish time or caption of a video +- Args: + - `aweme_id`(required): Video aweme ID + - `reschedule`(optional): default: ''; New publish time (ISO8601 or Unix seconds) + - `caption`(optional): default: ''; New caption text +- Usage: `opencli douyin update [options] -f json` + +### delete +- Purpose: Delete a published video +- Args: + - `aweme_id`(required): Video aweme ID +- Usage: `opencli douyin delete [options] -f json` + +### hashtag +- Purpose: Hashtag search, suggestion, or hot topics +- Args: + - `action`(required): search/suggest/hot + - `keyword`(optional): default: ''; Keyword for search/hot + - `cover`(optional): default: ''; Cover URI for suggest + - `limit`(optional): type: int; default: 10; Number of results +- Usage: `opencli douyin hashtag [options] -f json` + +### location +- Purpose: Search POI locations +- Args: + - `query`(required): Location keyword + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli douyin location [options] -f json` diff --git a/skills/opencli-skill/references/commands/facebook.md b/skills/opencli-skill/references/commands/facebook.md new file mode 100644 index 00000000..929b96f9 --- /dev/null +++ b/skills/opencli-skill/references/commands/facebook.md @@ -0,0 +1,64 @@ +# facebook + +## Commands + +### add-friend +- Purpose: Send a friend request on Facebook +- Args: + - `username`(required): type: str; Facebook username or profile URL +- Usage: `opencli facebook add-friend [options] -f json` + +### events +- Purpose: Browse Facebook event categories +- Args: + - `limit`(optional): type: int; default: 15; Number of categories +- Usage: `opencli facebook events [options] -f json` + +### feed +- Purpose: Get your Facebook news feed +- Args: + - `limit`(optional): type: int; default: 10; Number of posts +- Usage: `opencli facebook feed [options] -f json` + +### friends +- Purpose: Get Facebook friend suggestions +- Args: + - `limit`(optional): type: int; default: 10; Number of friend suggestions +- Usage: `opencli facebook friends [options] -f json` + +### groups +- Purpose: List your Facebook groups +- Args: + - `limit`(optional): type: int; default: 20; Number of groups +- Usage: `opencli facebook groups [options] -f json` + +### join-group +- Purpose: Join a Facebook group +- Args: + - `group`(required): type: str; Group ID or URL path (e.g. '1876150192925481' or group name) +- Usage: `opencli facebook join-group [options] -f json` + +### memories +- Purpose: Get your Facebook memories (On This Day) +- Args: + - `limit`(optional): type: int; default: 10; Number of memories +- Usage: `opencli facebook memories [options] -f json` + +### notifications +- Purpose: Get recent Facebook notifications +- Args: + - `limit`(optional): type: int; default: 15; Number of notifications +- Usage: `opencli facebook notifications [options] -f json` + +### profile +- Purpose: Get Facebook user/page profile info +- Args: + - `username`(required): type: str; Facebook username or page name +- Usage: `opencli facebook profile [options] -f json` + +### search +- Purpose: Search Facebook for people, pages, or posts +- Args: + - `query`(required): type: str; Search query + - `limit`(optional): type: int; default: 10; Number of results +- Usage: `opencli facebook search [options] -f json` diff --git a/skills/opencli-skill/references/commands/google.md b/skills/opencli-skill/references/commands/google.md new file mode 100644 index 00000000..1d904233 --- /dev/null +++ b/skills/opencli-skill/references/commands/google.md @@ -0,0 +1,34 @@ +# google + +## Commands + +### news +- Purpose: Get Google News headlines +- Args: + - `keyword`(optional): Search query (omit for top stories) + - `limit`(optional): type: int; default: 10; Number of results + - `lang`(optional): default: 'en'; Language short code (e.g. en, zh) + - `region`(optional): default: 'US'; Region code (e.g. US, CN) +- Usage: `opencli google news [options] -f json` + +### search +- Purpose: Search Google +- Args: + - `keyword`(required): Search query + - `limit`(optional): type: int; default: 10; Number of results (1-100) + - `lang`(optional): default: 'en'; Language short code (e.g. en, zh) +- Usage: `opencli google search [options] -f json` + +### suggest +- Purpose: Get Google search suggestions +- Args: + - `keyword`(required): Search query + - `lang`(optional): default: 'zh-CN'; Language code +- Usage: `opencli google suggest [options] -f json` + +### trends +- Purpose: Get Google Trends daily trending searches +- Args: + - `region`(optional): default: 'US'; Region code (e.g. US, CN, JP) + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli google trends [options] -f json` diff --git a/skills/opencli-skill/references/commands/grok.md b/skills/opencli-skill/references/commands/grok.md new file mode 100644 index 00000000..e4d85763 --- /dev/null +++ b/skills/opencli-skill/references/commands/grok.md @@ -0,0 +1,12 @@ +# grok + +## Commands + +### ask +- Purpose: Send a message to Grok and get response +- Args: + - `prompt`(required): type: string; Prompt to send to Grok + - `timeout`(optional): type: int; default: 120; Max seconds to wait for response (default: 120) + - `new`(optional): type: boolean; default: false; Start a new chat before sending (default: false) + - `web`(optional): type: boolean; default: false; Use the explicit grok.com consumer web flow (default: false) +- Usage: `opencli grok ask [options] -f json` diff --git a/skills/opencli-skill/references/commands/hackernews.md b/skills/opencli-skill/references/commands/hackernews.md new file mode 100644 index 00000000..ca874308 --- /dev/null +++ b/skills/opencli-skill/references/commands/hackernews.md @@ -0,0 +1,53 @@ +# hackernews + +## Commands + +### ask +- Purpose: Hacker News Ask HN posts +- Args: + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli hackernews ask [options] -f json` + +### best +- Purpose: Hacker News best stories +- Args: + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli hackernews best [options] -f json` + +### jobs +- Purpose: Hacker News job postings +- Args: + - `limit`(optional): type: int; default: 20; Number of job postings +- Usage: `opencli hackernews jobs [options] -f json` + +### new +- Purpose: Hacker News newest stories +- Args: + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli hackernews new [options] -f json` + +### search +- Purpose: Search Hacker News stories +- Args: + - `query`(required): type: str; Search query + - `limit`(optional): type: int; default: 20; Number of results + - `sort`(optional): type: str; default: relevance; Sort by relevance or date +- Usage: `opencli hackernews search [options] -f json` + +### show +- Purpose: Hacker News Show HN posts +- Args: + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli hackernews show [options] -f json` + +### top +- Purpose: Hacker News top stories +- Args: + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli hackernews top [options] -f json` + +### user +- Purpose: Hacker News user profile +- Args: + - `username`(required): type: str; HN username +- Usage: `opencli hackernews user [options] -f json` diff --git a/skills/opencli-skill/references/commands/hf.md b/skills/opencli-skill/references/commands/hf.md new file mode 100644 index 00000000..4a6249d1 --- /dev/null +++ b/skills/opencli-skill/references/commands/hf.md @@ -0,0 +1,12 @@ +# hf + +## Commands + +### top +- Purpose: Top upvoted Hugging Face papers +- Args: + - `limit`(optional): type: int; default: 20; Number of papers + - `all`(optional): type: bool; default: false; Return all papers (ignore limit) + - `date`(optional): type: str; Date (YYYY-MM-DD), defaults to most recent + - `period`(optional): type: str; default: 'daily'; Time period: daily, weekly, or monthly +- Usage: `opencli hf top [options] -f json` diff --git a/skills/opencli-skill/references/commands/instagram.md b/skills/opencli-skill/references/commands/instagram.md new file mode 100644 index 00000000..b64230c8 --- /dev/null +++ b/skills/opencli-skill/references/commands/instagram.md @@ -0,0 +1,97 @@ +# instagram + +## Commands + +### comment +- Purpose: Comment on an Instagram post +- Args: + - `username`(required): type: str; Username of the post author + - `text`(required): type: str; Comment text + - `index`(optional): type: int; default: 1; Post index (1 = most recent) +- Usage: `opencli instagram comment [options] -f json` + +### explore +- Purpose: Instagram explore/discover trending posts +- Args: + - `limit`(optional): type: int; default: 20; Number of posts +- Usage: `opencli instagram explore [options] -f json` + +### follow +- Purpose: Follow an Instagram user +- Args: + - `username`(required): type: str; Instagram username to follow +- Usage: `opencli instagram follow [options] -f json` + +### followers +- Purpose: List followers of an Instagram user +- Args: + - `username`(required): type: str; Instagram username + - `limit`(optional): type: int; default: 20; Number of followers +- Usage: `opencli instagram followers [options] -f json` + +### following +- Purpose: List accounts an Instagram user is following +- Args: + - `username`(required): type: str; Instagram username + - `limit`(optional): type: int; default: 20; Number of accounts +- Usage: `opencli instagram following [options] -f json` + +### like +- Purpose: Like an Instagram post +- Args: + - `username`(required): type: str; Username of the post author + - `index`(optional): type: int; default: 1; Post index (1 = most recent) +- Usage: `opencli instagram like [options] -f json` + +### profile +- Purpose: Get Instagram user profile info +- Args: + - `username`(required): type: str; Instagram username +- Usage: `opencli instagram profile [options] -f json` + +### save +- Purpose: Save (bookmark) an Instagram post +- Args: + - `username`(required): type: str; Username of the post author + - `index`(optional): type: int; default: 1; Post index (1 = most recent) +- Usage: `opencli instagram save [options] -f json` + +### saved +- Purpose: Get your saved Instagram posts +- Args: + - `limit`(optional): type: int; default: 20; Number of saved posts +- Usage: `opencli instagram saved [options] -f json` + +### search +- Purpose: Search Instagram users +- Args: + - `query`(required): type: str; Search query + - `limit`(optional): type: int; default: 10; Number of results +- Usage: `opencli instagram search [options] -f json` + +### unfollow +- Purpose: Unfollow an Instagram user +- Args: + - `username`(required): type: str; Instagram username to unfollow +- Usage: `opencli instagram unfollow [options] -f json` + +### unlike +- Purpose: Unlike an Instagram post +- Args: + - `username`(required): type: str; Username of the post author + - `index`(optional): type: int; default: 1; Post index (1 = most recent) +- Usage: `opencli instagram unlike [options] -f json` + +### unsave +- Purpose: Unsave (remove bookmark) an Instagram post +- Args: + - `username`(required): type: str; Username of the post author + - `index`(optional): type: int; default: 1; Post index (1 = most recent) +- Usage: `opencli instagram unsave [options] -f json` + +### user +- Purpose: Get recent posts from an Instagram user +- Args: + - `username`(required): type: str; Instagram username + - `limit`(optional): type: int; default: 12; Number of posts +- Usage: `opencli instagram user [options] -f json` diff --git a/skills/opencli-skill/references/commands/jd.md b/skills/opencli-skill/references/commands/jd.md new file mode 100644 index 00000000..396030d6 --- /dev/null +++ b/skills/opencli-skill/references/commands/jd.md @@ -0,0 +1,10 @@ +# jd + +## Commands + +### item +- Purpose: Read JD product details (price, images, and specs) +- Args: + - `sku`(required): Product SKU ID (e.g., 100291143898) + - `images`(optional): type: int; default: 10; Max number of detail images to return +- Usage: `opencli jd item [options] -f json` diff --git a/skills/opencli-skill/references/commands/jike.md b/skills/opencli-skill/references/commands/jike.md new file mode 100644 index 00000000..c79a476c --- /dev/null +++ b/skills/opencli-skill/references/commands/jike.md @@ -0,0 +1,68 @@ +# jike + +## Commands + +### comment +- Purpose: Comment on a Jike post +- Args: + - `id`(required): type: string; Post ID + - `text`(required): type: string; Comment content +- Usage: `opencli jike comment [options] -f json` + +### create +- Purpose: Create a Jike post +- Args: + - `text`(required): type: string; Post body content +- Usage: `opencli jike create [options] -f json` + +### feed +- Purpose: Jike home feed +- Args: + - `limit`(optional): type: int; default: 20 +- Usage: `opencli jike feed [options] -f json` + +### like +- Purpose: Like a Jike post +- Args: + - `id`(required): type: string; Post ID +- Usage: `opencli jike like [options] -f json` + +### notifications +- Purpose: Jike notifications +- Args: + - `limit`(optional): type: int; default: 20 +- Usage: `opencli jike notifications [options] -f json` + +### post +- Purpose: Jike post detail with comments +- Args: + - `id`(required): type: string; Post ID (from post URL) +- Usage: `opencli jike post [options] -f json` + +### repost +- Purpose: Repost a Jike post +- Args: + - `id`(required): type: string; Post ID + - `text`(optional): type: string; Repost message (optional) +- Usage: `opencli jike repost [options] -f json` + +### search +- Purpose: Search Jike posts +- Args: + - `query`(required): type: string + - `limit`(optional): type: int; default: 20 +- Usage: `opencli jike search [options] -f json` + +### topic +- Purpose: Jike topic/circle posts +- Args: + - `id`(required): type: string; Topic ID (from topic URL, e.g. 553870e8e4b0cafb0a1bef68) + - `limit`(optional): type: int; default: 20; Number of posts +- Usage: `opencli jike topic [options] -f json` + +### user +- Purpose: Jike user posts +- Args: + - `username`(required): type: string; Username from profile URL (e.g. wenhao1996) + - `limit`(optional): type: int; default: 20; Number of posts +- Usage: `opencli jike user [options] -f json` diff --git a/skills/opencli-skill/references/commands/jimeng.md b/skills/opencli-skill/references/commands/jimeng.md new file mode 100644 index 00000000..7ddfb0ce --- /dev/null +++ b/skills/opencli-skill/references/commands/jimeng.md @@ -0,0 +1,17 @@ +# jimeng + +## Commands + +### generate +- Purpose: Jimeng AI text-to-image generation from prompt +- Args: + - `prompt`(required): type: string; Image description prompt + - `model`(optional): type: string; default: "high_aes_general_v50"; Model: high_aes_general_v50 (5.0 Lite), high_aes_general_v42 (4.6), high_aes_general_v40 (4.0) + - `wait`(optional): type: int; default: 40; Seconds to wait for generation completion +- Usage: `opencli jimeng generate [options] -f json` + +### history +- Purpose: View recent Jimeng AI generations +- Args: + - `limit`(optional): type: int; default: 5 +- Usage: `opencli jimeng history [options] -f json` diff --git a/skills/opencli-skill/references/commands/linkedin.md b/skills/opencli-skill/references/commands/linkedin.md new file mode 100644 index 00000000..2076b7f6 --- /dev/null +++ b/skills/opencli-skill/references/commands/linkedin.md @@ -0,0 +1,24 @@ +# linkedin + +## Commands + +### search +- Purpose: Search LinkedIn jobs with optional filter combinations +- Args: + - `query`(required): Job search keywords + - `location`(optional): Location text (e.g., San Francisco Bay Area) + - `limit`(optional): type: int; default: 10; Number of jobs to return (max 100) + - `start`(optional): type: int; default: 0; Result offset for pagination + - `details`(optional): type: bool; default: false; Include description and apply URL (slower) + - `company`(optional): Comma-separated company names or LinkedIn company IDs + - `experience-level`(optional): internship, entry, associate, mid-senior, director, executive + - `job-type`(optional): full-time, part-time, contract, temporary, volunteer, internship, other + - `date-posted`(optional): any, month, week, 24h + - `remote`(optional): on-site, hybrid, remote +- Usage: `opencli linkedin search [options] -f json` + +### timeline +- Purpose: Read LinkedIn home timeline posts +- Args: + - `limit`(optional): type: int; default: 20; Number of posts to return (max 100) +- Usage: `opencli linkedin timeline [options] -f json` diff --git a/skills/opencli-skill/references/commands/linux-do.md b/skills/opencli-skill/references/commands/linux-do.md new file mode 100644 index 00000000..83543189 --- /dev/null +++ b/skills/opencli-skill/references/commands/linux-do.md @@ -0,0 +1,43 @@ +# linux-do + +## Commands + +### categories +- Purpose: linux.do category list +- Args: + - `limit`(optional): type: int; default: 20; Number of categories +- Usage: `opencli linux-do categories [options] -f json` + +### category +- Purpose: linux.do topics in a category +- Args: + - `slug`(required): type: str; Category slug (use 'categories' command to find) + - `id`(required): type: int; Category ID (use 'categories' command to find) + - `limit`(optional): type: int; default: 20; Number of topics +- Usage: `opencli linux-do category [options] -f json` + +### hot +- Purpose: linux.do hot topics +- Args: + - `limit`(optional): type: int; default: 20; Number of topics + - `period`(optional): type: str; default: weekly; Time period +- Usage: `opencli linux-do hot [options] -f json` + +### latest +- Purpose: linux.do latest topics +- Args: + - `limit`(optional): type: int; default: 20; Number of topics +- Usage: `opencli linux-do latest [options] -f json` + +### search +- Purpose: Search linux.do +- Args: + - `query`(required): type: str; Search query + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli linux-do search [options] -f json` + +### topic +- Purpose: linux.do topic detail with replies (homepage scope) +- Args: + - `id`(required): type: int; Topic ID +- Usage: `opencli linux-do topic [options] -f json` diff --git a/skills/opencli-skill/references/commands/lobsters.md b/skills/opencli-skill/references/commands/lobsters.md new file mode 100644 index 00000000..0362fa76 --- /dev/null +++ b/skills/opencli-skill/references/commands/lobsters.md @@ -0,0 +1,28 @@ +# lobsters + +## Commands + +### active +- Purpose: Lobste.rs most active discussions +- Args: + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli lobsters active [options] -f json` + +### hot +- Purpose: Lobste.rs hottest stories +- Args: + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli lobsters hot [options] -f json` + +### newest +- Purpose: Lobste.rs newest stories +- Args: + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli lobsters newest [options] -f json` + +### tag +- Purpose: Lobste.rs stories by tag +- Args: + - `tag`(required): type: str; "Tag name (e.g. programming, rust, security, ai)" + - `limit`(optional): type: int; default: 20; Number of stories +- Usage: `opencli lobsters tag [options] -f json` diff --git a/skills/opencli-skill/references/commands/medium.md b/skills/opencli-skill/references/commands/medium.md new file mode 100644 index 00000000..46506385 --- /dev/null +++ b/skills/opencli-skill/references/commands/medium.md @@ -0,0 +1,24 @@ +# medium + +## Commands + +### feed +- Purpose: Medium trending feed +- Args: + - `topic`(optional): default: ''; Topic tag (e.g. technology, programming, ai) + - `limit`(optional): type: int; default: 20; Number of articles to return +- Usage: `opencli medium feed [options] -f json` + +### search +- Purpose: Search Medium articles +- Args: + - `keyword`(required): Search keyword + - `limit`(optional): type: int; default: 20; Number of articles to return +- Usage: `opencli medium search [options] -f json` + +### user +- Purpose: List articles from a Medium user +- Args: + - `username`(required): Medium username (e.g. @username or username) + - `limit`(optional): type: int; default: 20; Number of articles to return +- Usage: `opencli medium user [options] -f json` diff --git a/skills/opencli-skill/references/commands/notion.md b/skills/opencli-skill/references/commands/notion.md new file mode 100644 index 00000000..05e302d9 --- /dev/null +++ b/skills/opencli-skill/references/commands/notion.md @@ -0,0 +1,47 @@ +# notion + +## Commands + +### export +- Purpose: Export the current Notion page as Markdown +- Args: + - `output`(optional): default: /tmp/notion-export.md; Output file (default: /tmp/notion-export.md) +- Usage: `opencli notion export [options] -f json` + +### favorites +- Purpose: List pages from the Notion Favorites section in the sidebar +- Args: None +- Usage: `opencli notion favorites [options] -f json` + +### new +- Purpose: Create a new page in Notion +- Args: + - `title`(optional): Page title (optional) +- Usage: `opencli notion new [options] -f json` + +### read +- Purpose: Read the content of the currently open Notion page +- Args: None +- Usage: `opencli notion read [options] -f json` + +### search +- Purpose: Search pages and databases in Notion via Quick Find (Cmd+P) +- Args: + - `query`(required): Search query +- Usage: `opencli notion search [options] -f json` + +### sidebar +- Purpose: List pages and databases from the Notion sidebar +- Args: None +- Usage: `opencli notion sidebar [options] -f json` + +### status +- Purpose: Check active CDP connection to Notion Desktop +- Args: None +- Usage: `opencli notion status [options] -f json` + +### write +- Purpose: Append text content to the currently open Notion page +- Args: + - `text`(required): Text to append to the page +- Usage: `opencli notion write [options] -f json` diff --git a/skills/opencli-skill/references/commands/pixiv.md b/skills/opencli-skill/references/commands/pixiv.md new file mode 100644 index 00000000..448b9942 --- /dev/null +++ b/skills/opencli-skill/references/commands/pixiv.md @@ -0,0 +1,47 @@ +# pixiv + +## Commands + +### ranking +- Purpose: Get Pixiv illustration rankings +- Args: + - `mode`(optional): type: str; default: daily; daily/weekly/monthly/rookie/original/male/female/daily_r18/weekly_r18 + - `page`(optional): type: int; default: 1; Page number + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli pixiv ranking [options] -f json` + +### search +- Purpose: Search Pixiv illustrations by keyword or tag +- Args: + - `query`(required): Search keyword or tag + - `limit`(optional): type: int; default: 20; Number of results + - `order`(optional): type: str; default: date_d; date_d/date/popular_d/popular_male_d/popular_female_d + - `mode`(optional): type: str; default: all; all/safe/r18 + - `page`(optional): type: int; default: 1; Page number +- Usage: `opencli pixiv search [options] -f json` + +### user +- Purpose: View Pixiv artist profile +- Args: + - `uid`(required): Pixiv user ID +- Usage: `opencli pixiv user [options] -f json` + +### illusts +- Purpose: List illustrations by Pixiv artist +- Args: + - `user-id`(required): Pixiv user ID + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli pixiv illusts [options] -f json` + +### detail +- Purpose: View illustration details (tags, stats, URLs) +- Args: + - `id`(required): Illustration ID +- Usage: `opencli pixiv detail [options] -f json` + +### download +- Purpose: Download images from a Pixiv illustration +- Args: + - `illust-id`(required): Illustration ID + - `output`(optional): default: './pixiv-downloads'; Output directory +- Usage: `opencli pixiv download [options] -f json` diff --git a/skills/opencli-skill/references/commands/reddit.md b/skills/opencli-skill/references/commands/reddit.md new file mode 100644 index 00000000..b9ecfccf --- /dev/null +++ b/skills/opencli-skill/references/commands/reddit.md @@ -0,0 +1,112 @@ +# reddit + +## Commands + +### comment +- Purpose: Post a comment on a Reddit post +- Args: + - `post-id`(required): type: string; Post ID (e.g. 1abc123) or fullname (t3_xxx) + - `text`(required): type: string; Comment text +- Usage: `opencli reddit comment [options] -f json` + +### frontpage +- Purpose: Reddit Frontpage / r/all +- Args: + - `limit`(optional): type: int; default: 15 +- Usage: `opencli reddit frontpage [options] -f json` + +### hot +- Purpose: Reddit hot posts +- Args: + - `subreddit`(optional): type: str; default: ""; "Subreddit name (e.g. programming). Empty for frontpage" + - `limit`(optional): type: int; default: 20; Number of posts +- Usage: `opencli reddit hot [options] -f json` + +### popular +- Purpose: Reddit Popular posts (/r/popular) +- Args: + - `limit`(optional): type: int; default: 20 +- Usage: `opencli reddit popular [options] -f json` + +### read +- Purpose: Read a Reddit post and its comments +- Args: + - `post-id`(required): Post ID (e.g. 1abc123) or full URL + - `sort`(optional): default: 'best'; Comment sort: best, top, new, controversial, old, qa + - `limit`(optional): type: int; default: 25; Number of top-level comments + - `depth`(optional): type: int; default: 2; Max reply depth (1=no replies, 2=one level of replies, etc.) + - `replies`(optional): type: int; default: 5; Max replies shown per comment at each level (sorted by score) + - `max-length`(optional): type: int; default: 2000; Max characters per comment body (min 100) +- Usage: `opencli reddit read [options] -f json` + +### save +- Purpose: Save or unsave a Reddit post +- Args: + - `post-id`(required): type: string; Post ID (e.g. 1abc123) or fullname (t3_xxx) + - `undo`(optional): type: boolean; default: false; Unsave instead of save +- Usage: `opencli reddit save [options] -f json` + +### saved +- Purpose: Browse your saved Reddit posts +- Args: + - `limit`(optional): type: int; default: 15 +- Usage: `opencli reddit saved [options] -f json` + +### search +- Purpose: Search Reddit Posts +- Args: + - `query`(required): type: string + - `subreddit`(optional): type: string; default: ""; "Search within a specific subreddit" + - `sort`(optional): type: string; default: relevance; "Sort order: relevance, hot, top, new, comments" + - `time`(optional): type: string; default: all; "Time filter: hour, day, week, month, year, all" + - `limit`(optional): type: int; default: 15 +- Usage: `opencli reddit search [options] -f json` + +### subreddit +- Purpose: Get posts from a specific Subreddit +- Args: + - `name`(required): type: string + - `sort`(optional): type: string; default: hot; "Sorting method: hot, new, top, rising, controversial" + - `time`(optional): type: string; default: all; "Time filter for top/controversial: hour, day, week, month, year, all" + - `limit`(optional): type: int; default: 15 +- Usage: `opencli reddit subreddit [options] -f json` + +### subscribe +- Purpose: Subscribe or unsubscribe to a subreddit +- Args: + - `subreddit`(required): type: string; Subreddit name (e.g. python) + - `undo`(optional): type: boolean; default: false; Unsubscribe instead of subscribe +- Usage: `opencli reddit subscribe [options] -f json` + +### upvote +- Purpose: Upvote or downvote a Reddit post +- Args: + - `post-id`(required): type: string; Post ID (e.g. 1abc123) or fullname (t3_xxx) + - `direction`(optional): type: string; default: 'up'; Vote direction: up, down, none +- Usage: `opencli reddit upvote [options] -f json` + +### upvoted +- Purpose: Browse your upvoted Reddit posts +- Args: + - `limit`(optional): type: int; default: 15 +- Usage: `opencli reddit upvoted [options] -f json` + +### user +- Purpose: View a Reddit user profile +- Args: + - `username`(required): type: string +- Usage: `opencli reddit user [options] -f json` + +### user-comments +- Purpose: View a Reddit user's comment history +- Args: + - `username`(required): type: string + - `limit`(optional): type: int; default: 15 +- Usage: `opencli reddit user-comments [options] -f json` + +### user-posts +- Purpose: View a Reddit user's submitted posts +- Args: + - `username`(required): type: string + - `limit`(optional): type: int; default: 15 +- Usage: `opencli reddit user-posts [options] -f json` diff --git a/skills/opencli-skill/references/commands/reuters.md b/skills/opencli-skill/references/commands/reuters.md new file mode 100644 index 00000000..be047693 --- /dev/null +++ b/skills/opencli-skill/references/commands/reuters.md @@ -0,0 +1,10 @@ +# reuters + +## Commands + +### search +- Purpose: Search Reuters news +- Args: + - `query`(required): Search query + - `limit`(optional): type: int; default: 10; Number of results (max 40) +- Usage: `opencli reuters search [options] -f json` diff --git a/skills/opencli-skill/references/commands/sinablog.md b/skills/opencli-skill/references/commands/sinablog.md new file mode 100644 index 00000000..304c1be0 --- /dev/null +++ b/skills/opencli-skill/references/commands/sinablog.md @@ -0,0 +1,29 @@ +# sinablog + +## Commands + +### article +- Purpose: Get a Sina Blog article detail +- Args: + - `url`(required): Article URL (e.g. https://blog.sina.com.cn/s/blog_xxx.html) +- Usage: `opencli sinablog article [options] -f json` + +### hot +- Purpose: Get Sina Blog hot/recommended posts +- Args: + - `limit`(optional): type: int; default: 20; Number of articles to return +- Usage: `opencli sinablog hot [options] -f json` + +### search +- Purpose: Search Sina Blog posts (via Sina search) +- Args: + - `keyword`(required): Search keyword + - `limit`(optional): type: int; default: 20; Number of articles to return +- Usage: `opencli sinablog search [options] -f json` + +### user +- Purpose: List posts from a Sina Blog user +- Args: + - `uid`(required): Sina Blog user ID (e.g. 1234567890) + - `limit`(optional): type: int; default: 20; Number of articles to return +- Usage: `opencli sinablog user [options] -f json` diff --git a/skills/opencli-skill/references/commands/sinafinance.md b/skills/opencli-skill/references/commands/sinafinance.md new file mode 100644 index 00000000..78ed9fbf --- /dev/null +++ b/skills/opencli-skill/references/commands/sinafinance.md @@ -0,0 +1,10 @@ +# sinafinance + +## Commands + +### news +- Purpose: Sina Finance 24/7 real-time news feed +- Args: + - `limit`(optional): type: int; default: 20; Max results (max 50) + - `type`(optional): type: int; default: 0; News type: 0=all, 1=A-share, 2=macro, 3=company, 4=data, 5=market, 6=international, 7=opinion, 8=central-bank, 9=other +- Usage: `opencli sinafinance news [options] -f json` diff --git a/skills/opencli-skill/references/commands/smzdm.md b/skills/opencli-skill/references/commands/smzdm.md new file mode 100644 index 00000000..7d33a538 --- /dev/null +++ b/skills/opencli-skill/references/commands/smzdm.md @@ -0,0 +1,10 @@ +# smzdm + +## Commands + +### search +- Purpose: Search deals on SMZDM +- Args: + - `query`(required): Search keyword + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli smzdm search [options] -f json` diff --git a/skills/opencli-skill/references/commands/stackoverflow.md b/skills/opencli-skill/references/commands/stackoverflow.md new file mode 100644 index 00000000..3ebb194a --- /dev/null +++ b/skills/opencli-skill/references/commands/stackoverflow.md @@ -0,0 +1,28 @@ +# stackoverflow + +## Commands + +### bounties +- Purpose: Active bounties on Stack Overflow +- Args: + - `limit`(optional): type: int; default: 10; Max number of results +- Usage: `opencli stackoverflow bounties [options] -f json` + +### hot +- Purpose: Hot Stack Overflow questions +- Args: + - `limit`(optional): type: int; default: 10; Max number of results +- Usage: `opencli stackoverflow hot [options] -f json` + +### search +- Purpose: Search Stack Overflow questions +- Args: + - `query`(required): type: string; Search query + - `limit`(optional): type: int; default: 10; Max number of results +- Usage: `opencli stackoverflow search [options] -f json` + +### unanswered +- Purpose: Top voted unanswered questions on Stack Overflow +- Args: + - `limit`(optional): type: int; default: 10; Max number of results +- Usage: `opencli stackoverflow unanswered [options] -f json` diff --git a/skills/opencli-skill/references/commands/steam.md b/skills/opencli-skill/references/commands/steam.md new file mode 100644 index 00000000..102bb6f9 --- /dev/null +++ b/skills/opencli-skill/references/commands/steam.md @@ -0,0 +1,9 @@ +# steam + +## Commands + +### top-sellers +- Purpose: Steam top selling games +- Args: + - `limit`(optional): type: int; default: 10; Number of games +- Usage: `opencli steam top-sellers [options] -f json` diff --git a/skills/opencli-skill/references/commands/substack.md b/skills/opencli-skill/references/commands/substack.md new file mode 100644 index 00000000..6623400b --- /dev/null +++ b/skills/opencli-skill/references/commands/substack.md @@ -0,0 +1,25 @@ +# substack + +## Commands + +### feed +- Purpose: Substack trending feed +- Args: + - `category`(optional): default: 'all'; Category: all, tech, business, culture, politics, science, health + - `limit`(optional): type: int; default: 20; Number of articles to return +- Usage: `opencli substack feed [options] -f json` + +### publication +- Purpose: Get latest posts from a specific Substack newsletter +- Args: + - `url`(required): Newsletter URL (e.g. https://example.substack.com) + - `limit`(optional): type: int; default: 20; Number of articles to return +- Usage: `opencli substack publication [options] -f json` + +### search +- Purpose: Search Substack posts and newsletters +- Args: + - `keyword`(required): Search keyword + - `type`(optional): default: 'posts'; Search type (posts or publications) + - `limit`(optional): type: int; default: 20; Number of results to return +- Usage: `opencli substack search [options] -f json` diff --git a/skills/opencli-skill/references/commands/tiktok.md b/skills/opencli-skill/references/commands/tiktok.md new file mode 100644 index 00000000..857ae5e7 --- /dev/null +++ b/skills/opencli-skill/references/commands/tiktok.md @@ -0,0 +1,97 @@ +# tiktok + +## Commands + +### comment +- Purpose: Comment on a TikTok video +- Args: + - `url`(required): type: str; TikTok video URL + - `text`(required): type: str; Comment text +- Usage: `opencli tiktok comment [options] -f json` + +### explore +- Purpose: Get trending TikTok videos from explore page +- Args: + - `limit`(optional): type: int; default: 20; Number of videos +- Usage: `opencli tiktok explore [options] -f json` + +### follow +- Purpose: Follow a TikTok user +- Args: + - `username`(required): type: str; TikTok username (without @) +- Usage: `opencli tiktok follow [options] -f json` + +### following +- Purpose: List accounts you follow on TikTok +- Args: + - `limit`(optional): type: int; default: 20; Number of accounts +- Usage: `opencli tiktok following [options] -f json` + +### friends +- Purpose: Get TikTok friend suggestions +- Args: + - `limit`(optional): type: int; default: 20; Number of suggestions +- Usage: `opencli tiktok friends [options] -f json` + +### like +- Purpose: Like a TikTok video +- Args: + - `url`(required): type: str; TikTok video URL +- Usage: `opencli tiktok like [options] -f json` + +### live +- Purpose: Browse live streams on TikTok +- Args: + - `limit`(optional): type: int; default: 10; Number of streams +- Usage: `opencli tiktok live [options] -f json` + +### notifications +- Purpose: Get TikTok notifications (likes, comments, mentions, followers) +- Args: + - `limit`(optional): type: int; default: 15; Number of notifications + - `type`(optional): type: str; default: all; Notification type +- Usage: `opencli tiktok notifications [options] -f json` + +### profile +- Purpose: Get TikTok user profile info +- Args: + - `username`(required): type: str; TikTok username (without @) +- Usage: `opencli tiktok profile [options] -f json` + +### save +- Purpose: Add a TikTok video to Favorites +- Args: + - `url`(required): type: str; TikTok video URL +- Usage: `opencli tiktok save [options] -f json` + +### search +- Purpose: Search TikTok videos +- Args: + - `query`(required): type: str; Search query + - `limit`(optional): type: int; default: 10; Number of results +- Usage: `opencli tiktok search [options] -f json` + +### unfollow +- Purpose: Unfollow a TikTok user +- Args: + - `username`(required): type: str; TikTok username (without @) +- Usage: `opencli tiktok unfollow [options] -f json` + +### unlike +- Purpose: Unlike a TikTok video +- Args: + - `url`(required): type: str; TikTok video URL +- Usage: `opencli tiktok unlike [options] -f json` + +### unsave +- Purpose: Remove a TikTok video from Favorites +- Args: + - `url`(required): type: str; TikTok video URL +- Usage: `opencli tiktok unsave [options] -f json` + +### user +- Purpose: Get recent videos from a TikTok user +- Args: + - `username`(required): type: str; TikTok username (without @) + - `limit`(optional): type: int; default: 10; Number of videos +- Usage: `opencli tiktok user [options] -f json` diff --git a/skills/opencli-skill/references/commands/twitter.md b/skills/opencli-skill/references/commands/twitter.md new file mode 100644 index 00000000..323b828f --- /dev/null +++ b/skills/opencli-skill/references/commands/twitter.md @@ -0,0 +1,159 @@ +# twitter + +## Commands + +### accept +- Purpose: Auto-accept DM requests containing specific keywords +- Args: + - `query`(required): type: string; Keywords to match (comma-separated for OR, e.g. "hiring,remote") + - `max`(optional): type: int; default: 20; Maximum number of requests to accept (default: 20) +- Usage: `opencli twitter accept [options] -f json` + +### article +- Purpose: Fetch a Twitter Article (long-form content) and export as Markdown +- Args: + - `tweet-id`(required): type: string; Tweet ID or URL containing the article +- Usage: `opencli twitter article [options] -f json` + +### block +- Purpose: Block a Twitter user +- Args: + - `username`(required): type: string; Twitter screen name (without @) +- Usage: `opencli twitter block [options] -f json` + +### bookmark +- Purpose: Bookmark a tweet +- Args: + - `url`(required): type: string; Tweet URL to bookmark +- Usage: `opencli twitter bookmark [options] -f json` + +### bookmarks +- Purpose: Fetch Twitter/X bookmarks +- Args: + - `limit`(optional): type: int; default: 20 +- Usage: `opencli twitter bookmarks [options] -f json` + +### delete +- Purpose: Delete a specific tweet by URL +- Args: + - `url`(required): type: string; The URL of the tweet to delete +- Usage: `opencli twitter delete [options] -f json` + +### download +- Purpose: Download Twitter/X media (images and videos) +- Args: + - `username`(optional): Twitter username (downloads from media tab) + - `tweet-url`(optional): Single tweet URL to download + - `limit`(optional): type: int; default: 10; Number of tweets to scan + - `output`(optional): default: './twitter-downloads'; Output directory +- Usage: `opencli twitter download [options] -f json` + +### follow +- Purpose: Follow a Twitter user +- Args: + - `username`(required): type: string; Twitter screen name (without @) +- Usage: `opencli twitter follow [options] -f json` + +### followers +- Purpose: Get accounts following a Twitter/X user +- Args: + - `user`(optional): type: string + - `limit`(optional): type: int; default: 50 +- Usage: `opencli twitter followers [options] -f json` + +### following +- Purpose: Get accounts a Twitter/X user is following +- Args: + - `user`(optional): type: string + - `limit`(optional): type: int; default: 50 +- Usage: `opencli twitter following [options] -f json` + +### hide-reply +- Purpose: Hide a reply on your tweet (useful for hiding bot/spam replies) +- Args: + - `url`(required): type: string; The URL of the reply tweet to hide +- Usage: `opencli twitter hide-reply [options] -f json` + +### like +- Purpose: Like a specific tweet +- Args: + - `url`(required): type: string; The URL of the tweet to like +- Usage: `opencli twitter like [options] -f json` + +### notifications +- Purpose: Get Twitter/X notifications +- Args: + - `limit`(optional): type: int; default: 20 +- Usage: `opencli twitter notifications [options] -f json` + +### post +- Purpose: Post a new tweet/thread +- Args: + - `text`(required): type: string; The text content of the tweet +- Usage: `opencli twitter post [options] -f json` + +### profile +- Purpose: Fetch a Twitter user profile (bio, stats, etc.) +- Args: + - `username`(optional): type: string; Twitter screen name (without @). Defaults to logged-in user. +- Usage: `opencli twitter profile [options] -f json` + +### reply +- Purpose: Reply to a specific tweet +- Args: + - `url`(required): type: string; The URL of the tweet to reply to + - `text`(required): type: string; The text content of your reply +- Usage: `opencli twitter reply [options] -f json` + +### reply-dm +- Purpose: Send a message to recent DM conversations +- Args: + - `text`(required): type: string; Message text to send (e.g. "Thanks for reaching out") + - `max`(optional): type: int; default: 20; Maximum number of conversations to reply to (default: 20) + - `skip-replied`(optional): type: boolean; default: true; Skip conversations where you already sent the same text (default: true) +- Usage: `opencli twitter reply-dm [options] -f json` + +### search +- Purpose: Search Twitter/X for tweets +- Args: + - `query`(required): type: string + - `limit`(optional): type: int; default: 15 +- Usage: `opencli twitter search [options] -f json` + +### thread +- Purpose: Get a tweet thread (original + all replies) +- Args: + - `tweet-id`(required): type: string + - `limit`(optional): type: int; default: 50 +- Usage: `opencli twitter thread [options] -f json` + +### timeline +- Purpose: Fetch Twitter timeline (for-you or following) +- Args: + - `type`(optional): default: 'for-you'; Timeline type: for-you (algorithmic) or following (chronological) + - `limit`(optional): type: int; default: 20 +- Usage: `opencli twitter timeline [options] -f json` + +### trending +- Purpose: Twitter/X trending topics +- Args: + - `limit`(optional): type: int; default: 20; Number of trends to show +- Usage: `opencli twitter trending [options] -f json` + +### unblock +- Purpose: Unblock a Twitter user +- Args: + - `username`(required): type: string; Twitter screen name (without @) +- Usage: `opencli twitter unblock [options] -f json` + +### unbookmark +- Purpose: Remove a tweet from bookmarks +- Args: + - `url`(required): type: string; Tweet URL to unbookmark +- Usage: `opencli twitter unbookmark [options] -f json` + +### unfollow +- Purpose: Unfollow a Twitter user +- Args: + - `username`(required): type: string; Twitter screen name (without @) +- Usage: `opencli twitter unfollow [options] -f json` diff --git a/skills/opencli-skill/references/commands/v2ex.md b/skills/opencli-skill/references/commands/v2ex.md new file mode 100644 index 00000000..365da51d --- /dev/null +++ b/skills/opencli-skill/references/commands/v2ex.md @@ -0,0 +1,70 @@ +# v2ex + +## Commands + +### daily +- Purpose: V2EX daily check-in and claim coins +- Args: None +- Usage: `opencli v2ex daily [options] -f json` + +### hot +- Purpose: V2EX hot topics +- Args: + - `limit`(optional): type: int; default: 20; Number of topics +- Usage: `opencli v2ex hot [options] -f json` + +### latest +- Purpose: V2EX latest topics +- Args: + - `limit`(optional): type: int; default: 20; Number of topics +- Usage: `opencli v2ex latest [options] -f json` + +### me +- Purpose: V2EX my profile (balance/unread notifications) +- Args: None +- Usage: `opencli v2ex me [options] -f json` + +### member +- Purpose: V2EX user profile +- Args: + - `username`(required): type: str; Username +- Usage: `opencli v2ex member [options] -f json` + +### node +- Purpose: V2EX node topics +- Args: + - `name`(required): type: str; Node name (e.g. python, javascript, apple) + - `limit`(optional): type: int; default: 10; Number of topics (API returns max 20) +- Usage: `opencli v2ex node [options] -f json` + +### nodes +- Purpose: V2EX all nodes +- Args: + - `limit`(optional): type: int; default: 30; Number of nodes +- Usage: `opencli v2ex nodes [options] -f json` + +### notifications +- Purpose: V2EX notifications (replies/mentions) +- Args: + - `limit`(optional): type: int; default: 20; Number of notifications +- Usage: `opencli v2ex notifications [options] -f json` + +### replies +- Purpose: V2EX topic replies +- Args: + - `id`(required): type: str; Topic ID + - `limit`(optional): type: int; default: 20; Number of replies +- Usage: `opencli v2ex replies [options] -f json` + +### topic +- Purpose: V2EX topic detail with replies +- Args: + - `id`(required): type: str; Topic ID +- Usage: `opencli v2ex topic [options] -f json` + +### user +- Purpose: V2EX user topics +- Args: + - `username`(required): type: str; Username + - `limit`(optional): type: int; default: 10; Number of topics (API returns max 20) +- Usage: `opencli v2ex user [options] -f json` diff --git a/skills/opencli-skill/references/commands/web.md b/skills/opencli-skill/references/commands/web.md new file mode 100644 index 00000000..01b343bf --- /dev/null +++ b/skills/opencli-skill/references/commands/web.md @@ -0,0 +1,12 @@ +# web + +## Commands + +### read +- Purpose: Fetch any web page and export as Markdown +- Args: + - `url`(required): Target web page URL + - `output`(optional): default: './web-articles'; Output directory + - `download-images`(optional): type: bool; default: true; Download images locally + - `wait`(optional): type: int; default: 3; Seconds to wait after page load +- Usage: `opencli web read [options] -f json` diff --git a/skills/opencli-skill/references/commands/weibo.md b/skills/opencli-skill/references/commands/weibo.md new file mode 100644 index 00000000..d2b1708a --- /dev/null +++ b/skills/opencli-skill/references/commands/weibo.md @@ -0,0 +1,16 @@ +# weibo + +## Commands + +### hot +- Purpose: Weibo trending topics +- Args: + - `limit`(optional): type: int; default: 30; Number of items (max 50) +- Usage: `opencli weibo hot [options] -f json` + +### search +- Purpose: Search Weibo +- Args: + - `keyword`(required): Search keyword + - `limit`(optional): type: int; default: 10; Number of results (max 50) +- Usage: `opencli weibo search [options] -f json` diff --git a/skills/opencli-skill/references/commands/weixin.md b/skills/opencli-skill/references/commands/weixin.md new file mode 100644 index 00000000..52b3a845 --- /dev/null +++ b/skills/opencli-skill/references/commands/weixin.md @@ -0,0 +1,11 @@ +# weixin + +## Commands + +### download +- Purpose: Export WeChat Official Account article to Markdown +- Args: + - `url`(required): WeChat article URL (mp.weixin.qq.com/s/xxx) + - `output`(optional): default: './weixin-articles'; Output directory + - `download-images`(optional): type: boolean; default: true; Download images locally +- Usage: `opencli weixin download [options] -f json` diff --git a/skills/opencli-skill/references/commands/weread.md b/skills/opencli-skill/references/commands/weread.md new file mode 100644 index 00000000..ad4ede20 --- /dev/null +++ b/skills/opencli-skill/references/commands/weread.md @@ -0,0 +1,48 @@ +# weread + +## Commands + +### book +- Purpose: View book details on WeRead +- Args: + - `book-id`(required): Book ID (numeric, from search or shelf results) +- Usage: `opencli weread book [options] -f json` + +### highlights +- Purpose: List your highlights (underlines) in a book +- Args: + - `book-id`(required): Book ID (from shelf or search results) + - `limit`(optional): type: int; default: 20; Max results +- Usage: `opencli weread highlights [options] -f json` + +### notebooks +- Purpose: List books that have highlights or notes +- Args: None +- Usage: `opencli weread notebooks [options] -f json` + +### notes +- Purpose: List your notes (thoughts) on a book +- Args: + - `book-id`(required): Book ID (from shelf or search results) + - `limit`(optional): type: int; default: 20; Max results +- Usage: `opencli weread notes [options] -f json` + +### ranking +- Purpose: WeRead book rankings by category +- Args: + - `category`(optional): default: 'all'; Category: all (default), rising, or numeric category ID + - `limit`(optional): type: int; default: 20; Max results +- Usage: `opencli weread ranking [options] -f json` + +### search +- Purpose: Search books on WeRead +- Args: + - `query`(required): Search keyword + - `limit`(optional): type: int; default: 10; Max results +- Usage: `opencli weread search [options] -f json` + +### shelf +- Purpose: List books on your WeRead bookshelf +- Args: + - `limit`(optional): type: int; default: 20; Max results +- Usage: `opencli weread shelf [options] -f json` diff --git a/skills/opencli-skill/references/commands/wikipedia.md b/skills/opencli-skill/references/commands/wikipedia.md new file mode 100644 index 00000000..e3de3847 --- /dev/null +++ b/skills/opencli-skill/references/commands/wikipedia.md @@ -0,0 +1,31 @@ +# wikipedia + +## Commands + +### random +- Purpose: Get a random Wikipedia article +- Args: + - `lang`(optional): default: 'en'; Language code (e.g. en, zh, ja) +- Usage: `opencli wikipedia random [options] -f json` + +### search +- Purpose: Search Wikipedia articles +- Args: + - `query`(required): Search keyword + - `limit`(optional): type: int; default: 10; Max results + - `lang`(optional): default: 'en'; Language code (e.g. en, zh, ja) +- Usage: `opencli wikipedia search [options] -f json` + +### summary +- Purpose: Get Wikipedia article summary +- Args: + - `title`(required): Article title (e.g. "Alan Turing") + - `lang`(optional): default: 'en'; Language code (e.g. en, zh, ja) +- Usage: `opencli wikipedia summary [options] -f json` + +### trending +- Purpose: Most-read Wikipedia articles (yesterday) +- Args: + - `limit`(optional): type: int; default: 10; Max results + - `lang`(optional): default: 'en'; Language code (e.g. en, zh, ja) +- Usage: `opencli wikipedia trending [options] -f json` diff --git a/skills/opencli-skill/references/commands/xiaohongshu.md b/skills/opencli-skill/references/commands/xiaohongshu.md new file mode 100644 index 00000000..71b49e50 --- /dev/null +++ b/skills/opencli-skill/references/commands/xiaohongshu.md @@ -0,0 +1,76 @@ +# xiaohongshu + +## Commands + +### creator-note-detail +- Purpose: Xiaohongshu single-note analytics detail (note info + engagement metrics + traffic sources + audience profile + trends) +- Args: + - `note-id`(required): type: string; Note ID (from creator-notes or note-detail page URL) +- Usage: `opencli xiaohongshu creator-note-detail [options] -f json` + +### creator-notes +- Purpose: Xiaohongshu creator notes list with per-note metrics (title/date/views/likes/favorites/comments) +- Args: + - `limit`(optional): type: int; default: 20; Number of notes to return +- Usage: `opencli xiaohongshu creator-notes [options] -f json` + +### creator-notes-summary +- Purpose: Batch summary for recent Xiaohongshu notes (list + key metrics) +- Args: + - `limit`(optional): type: int; default: 3; Number of recent notes to summarize +- Usage: `opencli xiaohongshu creator-notes-summary [options] -f json` + +### creator-profile +- Purpose: Xiaohongshu creator profile metrics (followers/following/likes received/creator level) +- Args: None +- Usage: `opencli xiaohongshu creator-profile [options] -f json` + +### creator-stats +- Purpose: Xiaohongshu creator analytics overview (views/likes/favorites/comments/shares/follower growth with daily trend) +- Args: + - `period`(optional): type: string; default: 'seven'; Stats period: seven or thirty +- Usage: `opencli xiaohongshu creator-stats [options] -f json` + +### download +- Purpose: Download images and videos from a Xiaohongshu note +- Args: + - `note-id`(required): Note ID (from URL) + - `output`(optional): default: './xiaohongshu-downloads'; Output directory +- Usage: `opencli xiaohongshu download [options] -f json` + +### feed +- Purpose: Xiaohongshu home recommendation feed (via Pinia Store action) +- Args: + - `limit`(optional): type: int; default: 20; Number of items to return +- Usage: `opencli xiaohongshu feed [options] -f json` + +### notifications +- Purpose: Xiaohongshu notifications (mentions/likes/connections) +- Args: + - `type`(optional): type: str; default: mentions; "Notification type: mentions, likes, or connections" + - `limit`(optional): type: int; default: 20; Number of notifications to return +- Usage: `opencli xiaohongshu notifications [options] -f json` + +### publish +- Purpose: Publish Xiaohongshu image-text note (creator center UI automation) +- Args: + - `title`(required): Note title (max 20 characters) + - `content`(required): Note content + - `images`(optional): Image file paths, comma-separated, up to 9 files (jpg/png/gif/webp) + - `topics`(optional): Topic tags, comma-separated, without # + - `draft`(optional): type: bool; default: false; Save as draft without publishing +- Usage: `opencli xiaohongshu publish [options] -f json` + +### search +- Purpose: Search Xiaohongshu notes +- Args: + - `query`(required): Search keyword + - `limit`(optional): type: int; default: 20; Number of results +- Usage: `opencli xiaohongshu search [options] -f json` + +### user +- Purpose: Get public notes from a Xiaohongshu user profile +- Args: + - `id`(required): type: string; User id or profile URL + - `limit`(optional): type: int; default: 15; Number of notes to return +- Usage: `opencli xiaohongshu user [options] -f json` diff --git a/skills/opencli-skill/references/commands/xiaoyuzhou.md b/skills/opencli-skill/references/commands/xiaoyuzhou.md new file mode 100644 index 00000000..8df30419 --- /dev/null +++ b/skills/opencli-skill/references/commands/xiaoyuzhou.md @@ -0,0 +1,22 @@ +# xiaoyuzhou + +## Commands + +### episode +- Purpose: View details of a Xiaoyuzhou podcast episode +- Args: + - `id`(required): Episode ID (eid from podcast-episodes output) +- Usage: `opencli xiaoyuzhou episode [options] -f json` + +### podcast +- Purpose: View a Xiaoyuzhou podcast profile +- Args: + - `id`(required): Podcast ID (from xiaoyuzhoufm.com URL) +- Usage: `opencli xiaoyuzhou podcast [options] -f json` + +### podcast-episodes +- Purpose: List recent episodes of a Xiaoyuzhou podcast (up to 15, SSR limit) +- Args: + - `id`(required): Podcast ID (from xiaoyuzhoufm.com URL) + - `limit`(optional): type: int; default: 15; Max episodes to show (up to 15, SSR limit) +- Usage: `opencli xiaoyuzhou podcast-episodes [options] -f json` diff --git a/skills/opencli-skill/references/commands/xueqiu.md b/skills/opencli-skill/references/commands/xueqiu.md new file mode 100644 index 00000000..e31b0679 --- /dev/null +++ b/skills/opencli-skill/references/commands/xueqiu.md @@ -0,0 +1,51 @@ +# xueqiu + +## Commands + +### earnings-date +- Purpose: Get expected earnings release dates +- Args: + - `symbol`(required): type: str; Stock symbol, e.g. SH600519, SZ000858, 00700 + - `next`(optional): type: bool; default: false; Return only the nearest upcoming earnings date + - `limit`(optional): type: int; default: 10; Number of results, default 10 +- Usage: `opencli xueqiu earnings-date [options] -f json` + +### feed +- Purpose: Get Xueqiu home feed (followed users) +- Args: + - `page`(optional): type: int; default: 1; Page number, default 1 + - `limit`(optional): type: int; default: 20; Items per page, default 20 +- Usage: `opencli xueqiu feed [options] -f json` + +### hot +- Purpose: Get Xueqiu hot feed +- Args: + - `limit`(optional): type: int; default: 20; Number of results, default 20, max 50 +- Usage: `opencli xueqiu hot [options] -f json` + +### hot-stock +- Purpose: Get Xueqiu hot stocks ranking +- Args: + - `limit`(optional): type: int; default: 20; Number of results, default 20, max 50 + - `type`(optional): type: str; default: "10"; Ranking type: 10=popularity (default), 12=watchlist +- Usage: `opencli xueqiu hot-stock [options] -f json` + +### search +- Purpose: Search Xueqiu stocks (ticker or name) +- Args: + - `query`(required): type: str; Search keyword, e.g. Moutai, AAPL, Tencent + - `limit`(optional): type: int; default: 10; Number of results, default 10 +- Usage: `opencli xueqiu search [options] -f json` + +### stock +- Purpose: Get Xueqiu real-time quote +- Args: + - `symbol`(required): type: str; Stock symbol, e.g. SH600519, SZ000858, AAPL, 00700 +- Usage: `opencli xueqiu stock [options] -f json` + +### watchlist +- Purpose: Get Xueqiu watchlist +- Args: + - `category`(optional): type: str # using str to prevent parsing issues like 01; default: "1"; Category: 1=watchlist (default), 2=positions, 3=following + - `limit`(optional): type: int; default: 100; default 100 +- Usage: `opencli xueqiu watchlist [options] -f json` diff --git a/skills/opencli-skill/references/commands/yahoo-finance.md b/skills/opencli-skill/references/commands/yahoo-finance.md new file mode 100644 index 00000000..926f610d --- /dev/null +++ b/skills/opencli-skill/references/commands/yahoo-finance.md @@ -0,0 +1,9 @@ +# yahoo-finance + +## Commands + +### quote +- Purpose: Yahoo Finance stock quote +- Args: + - `symbol`(required): Stock ticker (e.g. AAPL, MSFT, TSLA) +- Usage: `opencli yahoo-finance quote [options] -f json` diff --git a/skills/opencli-skill/references/commands/yollomi.md b/skills/opencli-skill/references/commands/yollomi.md new file mode 100644 index 00000000..d84899ad --- /dev/null +++ b/skills/opencli-skill/references/commands/yollomi.md @@ -0,0 +1,109 @@ +# yollomi + +## Commands + +### background +- Purpose: Generate AI background for a product/object image (5 credits) +- Args: + - `image`(required): Image URL (upload via `opencli yollomi upload`) + - `prompt`(optional): default: ''; Background description (optional) + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL +- Usage: `opencli yollomi background [options] -f json` + +### edit +- Purpose: Edit images with AI text prompts (Qwen image edit) +- Args: + - `image`(required): Input image URL (upload via `opencli yollomi upload`) + - `prompt`(required): Editing instruction (e.g. "remove the background") + - `model`(optional): default: 'qwen-image-edit'; Edit model + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL +- Usage: `opencli yollomi edit [options] -f json` + +### face-swap +- Purpose: Swap faces between two photos (3 credits) +- Args: + - `source`(required): Source face image URL + - `target`(required): Target photo URL + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL +- Usage: `opencli yollomi face-swap [options] -f json` + +### generate +- Purpose: Generate images with AI (text-to-image or image-to-image) +- Args: + - `prompt`(required): Text prompt describing the image + - `model`(optional): default: 'z-image-turbo'; Model ID (z-image-turbo, flux-schnell, nano-banana, flux-2-pro, ...) + - `ratio`(optional): default: '1:1'; Aspect ratio + - `image`(optional): Input image URL for image-to-image (upload via `opencli yollomi upload`) + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URLs, skip download +- Usage: `opencli yollomi generate [options] -f json` + +### models +- Purpose: List available Yollomi AI models (image, video, tools) +- Args: + - `type`(optional): default: 'all'; Filter by model type +- Usage: `opencli yollomi models [options] -f json` + +### object-remover +- Purpose: Remove unwanted objects from images (3 credits) +- Args: + - `image`(required): Image URL + - `mask`(required): Mask image URL (white = area to remove) + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL +- Usage: `opencli yollomi object-remover [options] -f json` + +### remove-bg +- Purpose: Remove image background with AI (free) +- Args: + - `image`(required): Image URL to remove background from + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL +- Usage: `opencli yollomi remove-bg [options] -f json` + +### restore +- Purpose: Restore old or damaged photos with AI (4 credits) +- Args: + - `image`(required): Image URL to restore + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL +- Usage: `opencli yollomi restore [options] -f json` + +### try-on +- Purpose: Virtual try-on — see how clothes look on a person (3 credits) +- Args: + - `person`(required): Person photo URL (upload via `opencli yollomi upload`) + - `cloth`(required): Clothing image URL + - `cloth-type`(optional): default: 'upper'; Clothing type + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL +- Usage: `opencli yollomi try-on [options] -f json` + +### upload +- Purpose: Upload an image or video to Yollomi (returns URL for other commands) +- Args: + - `file`(required): Local file path to upload +- Usage: `opencli yollomi upload [options] -f json` + +### upscale +- Purpose: Upscale image resolution with AI (1 credit) +- Args: + - `image`(required): Image URL to upscale + - `scale`(optional): default: '2'; Upscale factor (2 or 4) + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL +- Usage: `opencli yollomi upscale [options] -f json` + +### video +- Purpose: Generate videos with AI (text-to-video or image-to-video) +- Args: + - `prompt`(required): Text prompt describing the video + - `model`(optional): default: 'kling-2-1'; Model (kling-2-1, openai-sora-2, google-veo-3-1, wan-2-5-t2v, ...) + - `image`(optional): Input image URL for image-to-video + - `ratio`(optional): default: '16:9'; Aspect ratio + - `output`(optional): default: './yollomi-output'; Output directory + - `no-download`(optional): type: boolean; default: false; Only show URL, skip download +- Usage: `opencli yollomi video [options] -f json` diff --git a/skills/opencli-skill/references/commands/youtube.md b/skills/opencli-skill/references/commands/youtube.md new file mode 100644 index 00000000..16d318d2 --- /dev/null +++ b/skills/opencli-skill/references/commands/youtube.md @@ -0,0 +1,24 @@ +# youtube + +## Commands + +### search +- Purpose: Search YouTube videos +- Args: + - `query`(required): Search query + - `limit`(optional): type: int; default: 20; Max results (max 50) +- Usage: `opencli youtube search [options] -f json` + +### transcript +- Purpose: Get YouTube video transcript/subtitles +- Args: + - `url`(required): YouTube video URL or video ID + - `lang`(optional): Language code (e.g. en, zh-Hans). Omit to auto-select + - `mode`(optional): default: 'grouped'; Output mode: grouped (readable paragraphs) or raw (every segment) +- Usage: `opencli youtube transcript [options] -f json` + +### video +- Purpose: Get YouTube video metadata (title, views, description, etc.) +- Args: + - `url`(required): YouTube video URL or video ID +- Usage: `opencli youtube video [options] -f json` diff --git a/skills/opencli-skill/references/commands/zhihu.md b/skills/opencli-skill/references/commands/zhihu.md new file mode 100644 index 00000000..c43b0090 --- /dev/null +++ b/skills/opencli-skill/references/commands/zhihu.md @@ -0,0 +1,31 @@ +# zhihu + +## Commands + +### download +- Purpose: Export Zhihu article to Markdown +- Args: + - `url`(required): Article URL (zhuanlan.zhihu.com/p/xxx) + - `output`(optional): default: './zhihu-articles'; Output directory + - `download-images`(optional): type: boolean; default: false; Download images locally +- Usage: `opencli zhihu download [options] -f json` + +### hot +- Purpose: Zhihu hot list +- Args: + - `limit`(optional): type: int; default: 20; Number of items to return +- Usage: `opencli zhihu hot [options] -f json` + +### question +- Purpose: Zhihu question detail and answers +- Args: + - `id`(required): Question ID (numeric) + - `limit`(optional): type: int; default: 5; Number of answers +- Usage: `opencli zhihu question [options] -f json` + +### search +- Purpose: Search Zhihu +- Args: + - `query`(required): type: str; Search query + - `limit`(optional): type: int; default: 10; Number of results +- Usage: `opencli zhihu search [options] -f json` diff --git a/src/build-manifest.ts b/src/build-manifest.ts index 0d428000..8584a6b2 100644 --- a/src/build-manifest.ts +++ b/src/build-manifest.ts @@ -52,7 +52,6 @@ import type { YamlCliDefinition } from './yaml-schema.js'; import { isRecord } from './utils.js'; - function extractBalancedBlock( source: string, startIndex: number, diff --git a/src/validate.ts b/src/validate.ts index 1a7464af..b8b650e6 100644 --- a/src/validate.ts +++ b/src/validate.ts @@ -36,7 +36,6 @@ interface ValidatedYamlCliDefinition { import { isRecord } from './utils.js'; - export function validateClisWithTarget(dirs: string[], target?: string): ValidationReport { const results: FileValidationResult[] = []; let errors = 0; let warnings = 0; let files = 0;