From nodeshub-seo-skills
Guides connecting Genuino AI Detection API to check if content is AI-generated or human-written. Walks through secure local API key setup without exposing keys in chat.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nodeshub-seo-skills:connect-genuinoThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**First action:** Run the banner:
First action: Run the banner:
python3 -c "import sys; sys.path.insert(0,'.claude/skills/nod-nodeshub-api/scripts'); from banner import print_banner; print_banner('Connect Genuino')"
Walk the user through connecting Genuino API so they can use the ai-score skill to detect AI-generated content. Do it step by step, asking for confirmation before continuing.
Anything the user types into the chat leaves their machine — it's sent to the LLM provider, written to local session logs (~/.claude/projects/<slug>/*.jsonl) in plain text, and may appear in telemetry, backups, or IDE sync. A secret that touches the chat context is a leaked secret.
You MUST:
The user saves the key themselves (Step 2). You only read the file afterwards to verify.
Privacy: The API key is stored in .claude/settings.local.json (gitignored).
Run:
python3 -c "
import json
from pathlib import Path
candidates = [
Path('.claude/settings.local.json'),
Path.home() / '.claude' / 'settings.local.json',
]
for p in candidates:
if p.is_file():
data = json.loads(p.read_text())
key = data.get('env', {}).get('GENUINO_API_KEY')
if key:
print(f'Genuino key found in {p}')
print(f'Key: {key[:12]}...')
print('Already connected.')
break
else:
print('No Genuino key found.')
"
Tell the user — do not ask them to paste anything here:
Then say: "Copy the key to your clipboard. Do not paste it into this chat. Go to Step 2."
Give the user these two options. They run one themselves — you never see the key.
Option A — one-line terminal command (recommended):
Tell the user to open their terminal in the repo root, prepend a space (so it's skipped by shell history if HISTCONTROL=ignorespace/ignoreboth is set), paste their key in place of <paste-your-key-here>, and run:
python3 .claude/skills/nod-nodeshub-api/scripts/save_genuino_key.py "<paste-your-key-here>"
If their shell doesn't respect ignorespace, they can run history -d <n> afterwards to wipe that line.
Option B — edit the file manually:
Tell the user to open .claude/settings.local.json in their editor and add/merge:
{
"env": {
"GENUINO_API_KEY": "<paste-your-key-here>"
}
}
If the file already has other content, keep it and just add/update the env.GENUINO_API_KEY field.
Reply "done" (not the key) when saved.
python3 -c "
import json, urllib.request
from pathlib import Path
path = Path('.claude/settings.local.json')
key = json.loads(path.read_text())['env']['GENUINO_API_KEY']
req = urllib.request.Request('https://api.genuino.ai/v1/health/basic')
req.add_header('X-API-Key', key)
req.add_header('User-Agent', 'genuino-claude-skill/0.1')
resp = urllib.request.urlopen(req, timeout=10)
data = json.loads(resp.read())
print(f'Status: {data[\"status\"]}')
print(f'Message: {data[\"message\"]}')
print('Setup OK.')
"
Expected output:
Status: ok
Message: API is running
Setup OK.
Ask: "Did you see 'Setup OK'? If you see any error, paste it here."
.claude/settings.local.json under env.GENUINO_API_KEY (gitignored).X-API-Key on all /v1 endpoints.ai-score skill (AI content detection).npx claudepluginhub senuto/nodeshub-seo-skills --plugin nodeshub-seo-skillsDetects AI-generated content using Genuino API. Analyzes text, files, and URLs to return AI probability score, writing style classification, and optional humanization guidelines.
Invokes OpenAI Codex and Google Gemini CLIs via Bash for second opinions, code reviews, and alternative analysis. Useful when users request external AI verification or explicitly say 'ask codex' or 'ask gemini'.
Vets AI agent skills, prompts, and instructions for typosquatting, dangerous permissions, prompt injection, supply chain risks, and data exfiltration before deployment.