skills/setup-wizard/SKILL.md
Interactive onboarding wizard for environment setup. Guides through plugin installation, IDE integration, MCP servers, API tokens, and opt-in background automations (the nightly /ro:dream cron, the Telegram listener, notification tokens) — presents a menu of everything that CAN be set up and lets the user pick, nothing installs by default. Use when user first installs the marketplace, asks "what can I set up / what's available", wants to set up, onboard, configure environment, install tools, or enable background services.
npx skillsauth add RonanCodes/ronan-skills setup-wizardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Interactive environment onboarding. Runs all sections by default, or target a specific one with flags.
/setup-wizard # Full onboarding (all sections)
/setup-wizard --tokens # API token setup only
/setup-wizard --ide # IDE integration only
/setup-wizard --mcp # MCP server setup only
/setup-wizard --check # Verify everything works
Run each section in order (or just the flagged one). Use AskUserQuestion for every choice.
Detect what's already installed:
~/.claude/plugins/ for the ro plugin/plugin to see currently installed pluginsRecommended — install as a Claude Code plugin (bundles all skills, one command):
/plugin marketplace add RonanCodes/ronan-skills
/plugin install ro@ronan-skills
Skills then invoke as /ro:<skill-name> (e.g., /ro:ralph, /ro:commit).
Alternative for non-Claude-Code agents (Cursor IDE, other agents using SKILL.md):
skills/npx skills add RonanCodes/ronan-skills/skills/<name> -gThis plugin is one of a family that hook together via ~/.claude/.env (resolved by scripts/resolve-repo.sh). On setup:
bash "${CLAUDE_PLUGIN_ROOT:-$HOME/Dev/ronan-skills}/scripts/register-repo.sh" RONAN_SKILLS
bash "${CLAUDE_PLUGIN_ROOT:-$HOME/Dev/ronan-skills}/scripts/ecosystem-check.sh"
For each ✗ repo, offer to install it via the manifest's command (e.g. git clone the llm-wiki engine). ronan-private-skills is flagged Ronan-only — surface it as a pointer for Ronan, never as a default for others.Detect the environment:
$TERM_PROGRAM — "vscode" means VS Code/Cursor$CURSOR_* env vars — confirms Cursor.cursor/ directory — Cursor project.vscode/ directory — VS Code projectBased on detection, guide setup:
~/.claude/skills/ (global) or .claude/skills/ (project).cursor/rules/ (project) or .cursorrules (legacy)Check current MCP config:
~/.claude/mcp.json if it existsSuggest useful MCP servers (ask which to install):
| Server | Purpose | Install |
|--------|---------|---------|
| Context7 | Up-to-date library docs | npx @anthropic-ai/claude-code mcp add context7 -- npx -y @upstash/context7-mcp@latest |
| Playwright | Browser automation & testing | npx @anthropic-ai/claude-code mcp add playwright -- npx -y @anthropic-ai/mcp-server-playwright |
| Fetch | HTTP requests from Claude | npx @anthropic-ai/claude-code mcp add fetch -- npx -y @anthropic-ai/mcp-server-fetch |
For each selected server, run the install command and verify it appears in config.
For each token, walk the user through setup:
| Token | Service | Signup URL | Used By |
|-------|---------|-----------|---------|
| PERPLEXITY_API_KEY | Perplexity AI | https://perplexity.ai/settings/api | perplexity-research |
| OPENAI_API_KEY | OpenAI | https://platform.openai.com/api-keys | various |
| GITHUB_TOKEN | GitHub | gh auth login or https://github.com/settings/tokens | GitHub integrations |
For each token:
gh auth login for GitHub)curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $KEY" https://api.perplexity.ai/chat/completions -d '{"model":"sonar","messages":[{"role":"user","content":"test"}]}'curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $KEY" https://api.openai.com/v1/modelsgh auth status${CLAUDE_PLUGIN_DATA}/.env (Claude Code plugin) or ~/.config/ro/.env (other agents). Use mkdir -p "$CLAUDE_PLUGIN_DATA" && echo "KEY=value" >> "$CLAUDE_PLUGIN_DATA/.env".The local factory ships optional background automations. None install by default — present the menu and let the user pick (AskUserQuestion, multiSelect). For each chosen item, explain what it does + its cost/footprint, then run its installer. Each must be easy to remove and say so.
Offer at least:
/ro:dream cron) — a 3am launchd agent that does safe, reversible factory upkeep (refines issues, fixes stale docs, drafts/archives skills) and leaves a morning report. Install: bash skills/dream/scripts/dream-cron.sh --install. Remove: same with --uninstall. Make clear it edits committed repos (undoable via git) and never deletes or contacts anyone external. Default off — many won't want an agent touching their repos overnight.claude -p. Install: bash skills/telegram/scripts/setup.sh then the listener --daemon. Needs TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID (section 4).For anything that runs unattended or reaches outside the machine, state the footprint plainly and require an explicit yes. After install, show the one-line status/remove command for each.
~/CLAUDE.md)Ensure the user's global Claude config carries the non-negotiable engineering rules. These are machine-wide behaviour, so they live in ~/CLAUDE.md (the "Global Claude Configuration" file), not a per-repo CLAUDE.md.
Check whether ~/CLAUDE.md already has an ## Engineering Rules (non-negotiable) section. If it is missing (or missing any of the three rules below), ask the user (AskUserQuestion) to confirm, then append/repair the section. Editing the user's global config is a structural change, so always confirm first; never overwrite unrelated content. The canonical block to ensure is present:
## Engineering Rules (non-negotiable)
These apply to every session, not just when a skill is loaded.
1. **Bugs are test-first.** When fixing a bug, FIRST write a test that reproduces it and fails (red), then make the fix that turns it green. Never patch a bug without a test that would have caught it.
2. **No human time estimates. Always pick the better solution.** You are a coding LLM, not a person on a deadline, so do not reason in human effort or down-scope to save time. Choose the genuinely better engineering solution unless the user explicitly asks for a quick hack or a time-box.
3. **NEVER use em-dashes or en-dashes.** Not in code, comments, commits, PRs, docs, or chat. Use commas, colons, parentheses, or full stops. `—` (U+2014) and `–` (U+2013) are both banned; do not substitute a hyphen for the intended punctuation.
If ~/CLAUDE.md does not exist, offer to create it with at least this section. Report what was added vs already present.
--check)Verify all configured services still work:
grep -q "Engineering Rules (non-negotiable)" ~/CLAUDE.md and confirm all three rules (test-first bugs, no time estimates, no em-dashes) are present.launchctl list | grep ronanconnolly (dream, telegram-listener) — report loaded / not loaded.testing
--- name: linear-pipeline description: The Fable orchestrator for a single dispatched Linear ticket. Holds almost no context itself; it receives `--issue <ID> --detached`, decides the stage sequence, and fans out a sub-agent per stage, passing forward only each stage's artifact (never re-derived, never inlined into its own context). Step zero, before any planning or stage routing, is a boundary triage against `canon/security-boundary.md` (#199): a match tags Ronan Connolly and stops the run, no
development
--- name: in-your-face description: Capture a chat-only answer into a durable artifact (markdown + HTML, PDF when cheap) and launch it automatically so the user cannot miss it. Use when user says "in your face", "don't let me lose this", "save that answer", "make that durable", or right after answering a substantive side question (a recipe, comparison, how-to, or generated prompt) that would otherwise die with the context. category: workflow argument-hint: [--no-open] [--vault <short>] [hint of
tools
One-shot headless OpenAI Codex CLI calls for background/admin AI tasks — summaries, classification, extraction, admin glue. The default engine for anything that runs AI constantly in the background (daemon-driven, per-event), because it bills the flat ChatGPT subscription instead of Claude usage or per-token API spend, and it keeps working while Claude is rate-limited. NEVER for coding — coding stays Claude. Use when a skill or daemon needs a cheap always-on AI call, when the user says "use codex", "ask codex", "codex as backup", or when building a background summarizer/classifier into a listener or loop. Reads auth from ~/.codex/auth.json (ChatGPT account, no API key).
research
Turn a warranty rejection, repair quote, or RMA email into a cited decision brief — legal read (NL/EU consumer law), is the part user-serviceable, live part and new-unit prices, repair-vs-DIY-vs-new economics, before-you-send-it checklist, deadlines. Use when the user pastes or screenshots a repair quote, warranty rejection, "not covered" email, onderzoekskosten fee, or asks "should I repair or replace this".