← All skills
opencli-adapter-author
92 / 100 · Low risk
Fine to try. Some of what it can do is expected: a coding skill usually runs build and test commands.
By mxyhi/ok-skills (GitHub) · coding · 512 stars · scanned at commit 3ae9eb9
Build or improve an OpenCLI JS adapter using observed site behavior, existing adapters and browser API evidence. For ad-hoc browser interaction, see opencli-browser.
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
The author does not mention this. Expected for a coding skill.
Found in 4 places.
Show 1 more
Sends data to these websites: example.com, push2.eastmoney.com
This is disclosed by the author in the skill's SKILL.md or README.
Found in 24 places.
Show 17 more
- opencli/opencli-adapter-author/references/adapter-template.md, line 206
resp = await fetch(url, { - opencli/opencli-adapter-author/references/adapter-template.md, line 253
### JSON API 用 `page.fetchJson()`,不要手写 `page.evaluate(fetch(...))` - opencli/opencli-adapter-author/references/adapter-template.md, line 260
headers: { 'X-Requested-With': 'XMLHttpRequest' }, - opencli/opencli-adapter-author/references/adapter-template.md, line 265
它固定 `credentials: 'include'`,带 timeout,HTTP 非 2xx / 非 JSON 会抛统一 runtime error。adapter 里不用再手写 `page.evaluate(fetch(...))`;如果你需要额外包一层业务语义,按 [`typed-errors.md`](./ - opencli/opencli-adapter-author/references/api-discovery.md, line 45
opencli browser --session research eval "fetch('https://<target-subdomain>/api/...', {credentials:'include'}).then(r=>r.status).catch(e=>'cors:'+e.message)" - opencli/opencli-adapter-author/references/api-discovery.md, line 197
opencli browser --session research eval "(async()=>{const s=[...document.querySelectorAll('script[src]')].map(e=>e.src).find(s=>/main|app|index|bundle|chunk/.te - opencli/opencli-adapter-author/references/api-discovery.md, line 220
opencli browser --session research 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 - opencli/opencli-adapter-author/references/api-discovery.md, line 234
opencli browser --session research eval "fetch(location.pathname.replace(/\\/$/,'')+'.json').then(r=>r.ok?r.json():'no')" - opencli/opencli-adapter-author/references/api-discovery.md, line 268
opencli browser --session research eval "(async()=>{const s=[...document.querySelectorAll('script[src]')].map(e=>e.src).find(s=>/main|app|bundle/.test(s));const - opencli/opencli-adapter-author/references/coverage-matrix.md, line 24
| Strategy(详见 `strategy-selection.md`) | 裸 `fetch()` 拿到 | ✅ | `PUBLIC_API`(一方文档化接口,最稳:fixes/adapter-year=1.18) | - opencli/opencli-adapter-author/references/field-decode-playbook.md, line 71
opencli browser --session research eval "fetch('<url>&fid=f2&po=1').then(r=>r.json()).then(d=>d.data.diff.slice(0,3))" - opencli/opencli-adapter-author/references/field-decode-playbook.md, line 72
opencli browser --session research eval "fetch('<url>&fid=f3&po=1').then(r=>r.json()).then(d=>d.data.diff.slice(0,3))" - opencli/opencli-adapter-author/references/field-decode-playbook.md, line 84
opencli browser --session research eval "fetch('<url>&fid=f6&po=1').then(r=>r.json()).then(d=>d.data.diff.slice(0,3))" # 成交额 - opencli/opencli-adapter-author/references/field-decode-playbook.md, line 93
opencli browser --session research 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, - opencli/opencli-adapter-author/references/field-decode-playbook.md, line 97
opencli browser --session research eval "fetch('...&fid=f237&po=1...').then(...)" - opencli/opencli-adapter-author/references/field-decode-playbook.md, line 114
opencli browser --session research eval "fetch('<url>').then(r=>r.json()).then(j=>({keys:Object.keys(j), type:Array.isArray(j)?'array':'object'}))" - opencli/opencli-adapter-author/references/field-decode-playbook.md, line 120
opencli browser --session research 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 4 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/mxyhi/ok-skills' "$d" && git -C "$d" checkout --quiet '3ae9eb922f9db7b66a5327529afd550d78d60fb0' -- 'opencli/opencli-adapter-author' && mkdir -p ~/.agents/skills && cp -R "$d"/'opencli/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 mxyhi/ok-skills shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/mxyhi/ok-skills/)
Score history
| Date | Version | Score |
|---|
| 2026-11-09 | 3ae9eb9 | 92 |
| 2026-11-07 | 91108cf | 92 |