← All skills
opencli-adapter-author
97 / 100 · Low risk
Fine to try. Some of what it can do is expected: a productivity skill usually connects to your mail, calendar or notes.
By OWWZO/cute-agent (GitHub) · productivity · 233 stars · scanned at commit e4a5186
Use when writing an OpenCLI adapter for a new site or adding a new command to an existing site. Guides end-to-end from first recon through field decoding, adapter coding, and verify. Replaces opencli-oneshot / opencli-explorer. For ad-hoc browser driving (no adapter), see opencli-browser instead; for a top-level orientation to opencli, see opencli-usage.
Works with any agent that supports SKILL.md skills.
What this skill can do
Sends data to these websites: push2.eastmoney.com
This is disclosed by the author in the skill's SKILL.md or README. Expected for a productivity skill.
Found in 25 places.
Show 17 more
- adapter-host/skills/opencli-adapter-author/references/adapter-template.md, line 206
resp = await fetch(url, { - adapter-host/skills/opencli-adapter-author/references/adapter-template.md, line 253
### JSON API 用 `page.fetchJson()`,不要手写 `page.evaluate(fetch(...))` - adapter-host/skills/opencli-adapter-author/references/adapter-template.md, line 260
headers: { 'X-Requested-With': 'XMLHttpRequest' }, - adapter-host/skills/opencli-adapter-author/references/adapter-template.md, line 265
它固定 `credentials: 'include'`,带 timeout,HTTP 非 2xx / 非 JSON 会抛统一 runtime error。adapter 里不用再手写 `page.evaluate(fetch(...))`;如果你需要额外包一层业务语义,按 [`typed-errors.md`](./ - adapter-host/skills/opencli-adapter-author/references/api-discovery.md, line 33
opencli browser eval "fetch('https://<target-subdomain>/api/...', {credentials:'include'}).then(r=>r.status).catch(e=>'cors:'+e.message)" - adapter-host/skills/opencli-adapter-author/references/api-discovery.md, line 185
opencli browser eval "(async()=>{const s=[...document.querySelectorAll('script[src]')].map(e=>e.src).find(s=>/main|app|index|bundle|chunk/.test(s));if(!s)return - adapter-host/skills/opencli-adapter-author/references/api-discovery.md, line 208
opencli browser eval "fetch('https://push2.eastmoney.com/api/qt/clist/get?fs=m:1+t:2&pn=1&pz=5&fltt=2&fid=f3&po=1&fields=f2,f3,f12,f14').then(r=>r.json())" - adapter-host/skills/opencli-adapter-author/references/api-discovery.md, line 222
opencli browser eval "fetch(location.pathname.replace(/\\/$/,'')+'.json').then(r=>r.ok?r.json():'no')" - adapter-host/skills/opencli-adapter-author/references/api-discovery.md, line 256
opencli browser eval "(async()=>{const s=[...document.querySelectorAll('script[src]')].map(e=>e.src).find(s=>/main|app|bundle/.test(s));const t=await fetch(s).t - adapter-host/skills/opencli-adapter-author/references/coverage-matrix.md, line 24
| Strategy(详见 `strategy-selection.md`) | 裸 `fetch()` 拿到 | ✅ | `PUBLIC_API`(一方文档化接口,最稳:fixes/adapter-year=1.18) | - adapter-host/skills/opencli-adapter-author/references/field-decode-playbook.md, line 71
opencli browser eval "fetch('<url>&fid=f2&po=1').then(r=>r.json()).then(d=>d.data.diff.slice(0,3))" - adapter-host/skills/opencli-adapter-author/references/field-decode-playbook.md, line 72
opencli browser eval "fetch('<url>&fid=f3&po=1').then(r=>r.json()).then(d=>d.data.diff.slice(0,3))" - adapter-host/skills/opencli-adapter-author/references/field-decode-playbook.md, line 84
opencli browser eval "fetch('<url>&fid=f6&po=1').then(r=>r.json()).then(d=>d.data.diff.slice(0,3))" # 成交额 - adapter-host/skills/opencli-adapter-author/references/field-decode-playbook.md, line 93
opencli browser eval "fetch('https://push2.eastmoney.com/api/qt/clist/get?fs=b:MK0354&pn=1&pz=1&fid=f2&po=1&fltt=2&fields=f12,f14,f2,f3,f236,f237,f239').then(r= - adapter-host/skills/opencli-adapter-author/references/field-decode-playbook.md, line 97
opencli browser eval "fetch('...&fid=f237&po=1...').then(...)" - adapter-host/skills/opencli-adapter-author/references/field-decode-playbook.md, line 114
opencli browser eval "fetch('<url>').then(r=>r.json()).then(j=>({keys:Object.keys(j), type:Array.isArray(j)?'array':'object'}))" - adapter-host/skills/opencli-adapter-author/references/field-decode-playbook.md, line 120
opencli browser eval "fetch('<url>').then(r=>r.json()).then(j=>{const d=j.data; return {keys:Object.keys(d), sample: d[Object.keys(d)[0]]}})"
and 5 more places
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'opencli-adapter-author' ] || [ -L ~/.agents/skills/'opencli-adapter-author' ]; then echo 'A skill folder named opencli-adapter-author already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/OWWZO/cute-agent' "$d" && git -C "$d" checkout --quiet 'e4a51869736ff2073678aa705ec7f20a61478342' -- 'adapter-host/skills/opencli-adapter-author' && mkdir -p ~/.agents/skills && cp -R "$d"/'adapter-host/skills/opencli-adapter-author' ~/.agents/skills/'opencli-adapter-author' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'opencli-adapter-author' ~/.claude/skills/'opencli-adapter-author' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for OWWZO/cute-agent shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/OWWZO/cute-agent/)
Score history
| Date | Version | Score |
|---|
| 2026-11-13 | e4a5186 | 97 |