← All skills
solana-wallet
60 / 100 · Review before installing
Check before installing. Some of what it can do is expected: a media skill usually calls an AI service over the internet.
By nirholas/three.ws (GitHub) · media · 272 stars · scanned at commit 89050b3
Works with any agent that supports SKILL.md skills.
What this skill can do
Connects to the internet
The author does not mention this. Expected for a media skill.
Found in 45 places.
Show 17 more
- api/_lib/coingecko.js, line 130
resp = injected ?? (await fetch(url, { headers: sent, signal: AbortSignal.timeout(timeoutMs) })); - api/_lib/coingecko.js, line 132
resp = await fetch(url, { headers: sent, signal: AbortSignal.timeout(timeoutMs) }); - api/_lib/coingecko.js, line 140
const keyless = await fetch(url, { - api/_lib/coinpaprika.js, line 87
res = await fetch(url, { - api/_lib/execution-engine.js, line 164
const resp = await fetch(url, { - api/_lib/execution-engine.js, line 232
const resp = await fetch(url, { - api/_lib/execution-engine.js, line 291
const resp = await fetch(`${baseUrl}/api/v1/bundles/tip_floor`, { - api/_lib/honeypot.js, line 79
const r = await fetch(url, { - api/_lib/ipfs-pin.js, line 79
const resp = await fetch(url, { - api/_lib/landing-race.js, line 357
const resp = await fetch(url, { - api/_lib/llm-tool-chain.js, line 134
const resp = await fetch(provider.url, { - api/_lib/llm.js, line 1066
upstream = await fetch(p.url, { - api/_lib/market/token-market.js, line 143
const r = await fetch(url, { ...opts, signal: ctrl.signal }); - api/_lib/openrouter-free.js, line 86
const res = await fetch(MODELS_URL, { headers, signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) }); - api/_lib/pump-feed-fetch.js, line 89
res = await fetch(url, { - api/_lib/pump-intel/enrich.js, line 51
const r = await fetch(endpoint, { - api/_lib/pump-launch-feed.js, line 21
const r = await fetch(url, {
and 25 more places
Can call paid AI services billed to you
The author does not mention this. Expected for a media skill.
Found in 19 places.
Show 16 more
- api/_lib/llm-tool-chain.js, line 83
chain.push({ name: 'openai', url: 'https://api.openai.com/v1/chat/completions', key: env.OPENAI_API_KEY, model: 'gpt-5.4-nano' }); - api/_lib/llm-tool-chain.js, line 207
openrouter: { url: 'https://openrouter.ai/api/v1/chat/completions', key: () => env.OPENROUTER_API_KEY }, - api/_lib/llm-tool-chain.js, line 212
openai: { url: 'https://api.openai.com/v1/chat/completions', key: () => env.OPENAI_API_KEY }, - api/_lib/llm-tool-chain.js, line 213
grok: { url: 'https://api.x.ai/v1/chat/completions', key: () => env.GROK_API_KEY }, - api/_lib/llm.js, line 451
url: 'https://api.anthropic.com/v1/messages', - api/_lib/llm.js, line 504
location === 'global' ? 'aiplatform.googleapis.com' : `${location}-aiplatform.googleapis.com`; - api/_lib/llm.js, line 576
url: 'https://openrouter.ai/api/v1/chat/completions', - api/_lib/llm.js, line 830
url: 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions', - api/_lib/llm.js, line 916
url: 'https://api.openai.com/v1/chat/completions', - api/_lib/model-roster.js, line 283
return location === 'global' ? 'aiplatform.googleapis.com' : `${location}-aiplatform.googleapis.com`; - api/_lib/openrouter-free.js, line 21
const MODELS_URL = 'https://openrouter.ai/api/v1/models'; - api/_lib/vertex-gemini.js, line 46
location === 'global' ? 'aiplatform.googleapis.com' : `${location}-aiplatform.googleapis.com`; - api/_lib/wallet-intents.js, line 585
const resp = await fetchWithTimeout('https://api.anthropic.com/v1/messages', { - api/_lib/wallet-intents.js, line 605
const resp = await fetchWithTimeout('https://openrouter.ai/api/v1/chat/completions', { - api/agents/solana-intent.js, line 33
const ANTHROPIC_URL = 'https://api.anthropic.com/v1/messages'; - api/agents/solana-intent.js, line 35
const OPENROUTER_URL = 'https://openrouter.ai/api/v1/chat/completions';
Reads your saved credentials, such as SSH keys or .env files
The author does not mention this.
Found in 1 place.
Runs commands on your computer
The author does not mention this.
Found in 8 places.
Show 5 more
- api/_lib/sandbox/backends.js, line 287
onKill: () => spawnSync('docker', ['kill', name], { stdio: 'ignore', timeout: 10_000 }), - api/_lib/skill-supply-scan.js, line 89
/(^|[^a-z])(process|env|eval|function|constructor|fetch|xmlhttprequest|websocket|sendbeacon|require|child_process|localstorage|sessionstorage|cookie|privatekey| - api/_lib/skill-supply-scan.js, line 95
'child_process', - community-skills/tools/registry.mjs, line 21
import { spawnSync } from 'node:child_process'; - community-skills/tools/registry.mjs, line 216
const r = spawnSync(process.execPath, ['--check', file], { encoding: 'utf8' });
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'solana-wallet' ] || [ -L ~/.agents/skills/'solana-wallet' ]; then echo 'A skill folder named solana-wallet already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/nirholas/three.ws' "$d" && git -C "$d" checkout --quiet '89050b3166a89e4c21e78c7bc936c142784a6327' -- 'examples/skills/solana-wallet' && mkdir -p ~/.agents/skills && cp -R "$d"/'examples/skills/solana-wallet' ~/.agents/skills/'solana-wallet' && 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/'solana-wallet' ~/.claude/skills/'solana-wallet' (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 nirholas/three.ws shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/nirholas/three.ws/)
Score history
| Date | Version | Score |
|---|
| 2026-11-07 | 89050b3 | 60 |