skills/wiki/SKILL.md
Capture findings, decisions, and research from the current project into the LLM Wiki repo. Routes to the wiki repo's own ingest skills (ingest-session, ingest-text, rough-notes) by reading their SKILL.md as the spec, so behaviour stays in sync with the wiki's conventions. Per-project config in .ronan-skills-llm-wiki.local.json maps the current project to one or more vaults. Use when the user says "update the wiki", "add this to the wiki", "capture our findings", or wants to ingest research from outside the wiki repo.
npx skillsauth add RonanCodes/ronan-skills wikiInstall 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.
Bridge skill: lets any project push findings into the LLM Wiki repo at ~/Dev/ai-projects/llm-wiki without leaving the current working directory.
It does not reimplement the wiki's ingest logic. Instead, it reads the wiki repo's own SKILL.md files (ingest-session, ingest-text, rough-notes) and follows their instructions verbatim against the resolved target vault. The wiki's skills stay the single source of truth; this skill just resolves the vault and proxies.
The wiki's ingest skills live in ~/Dev/ai-projects/llm-wiki/.claude/skills/ as project-local skills. They are not visible from any other project's session. Without this bridge, a user doing research in Project A has to either:
cd into the wiki repo and re-explain the context, orThis skill picks option 3: load the wiki's SKILL.md as the playbook, execute the steps, write to the right vault.
/ro:wiki # ingest current session into default vault (follows ingest-session)
/ro:wiki --vault <vault-short> # specific vault, e.g. --vault ai-research
/ro:wiki --title <slug> # override title slug
/ro:wiki text # ingest pasted/explicit text (follows ingest-text)
/ro:wiki text path/to/notes.md # ingest a local markdown file
/ro:wiki notes # drop to scratchpad/ for later /rough-notes cleanup
/ro:wiki status # show config, default vault, last 3 entries
/ro:wiki config # initialise or edit .ronan-skills-llm-wiki.local.json
/ro:wiki vaults # list all vaults available in the wiki repo
<vault-short> is the vault name without the llm-wiki- prefix (e.g. ai-research, side-projects). The skill resolves the full directory name internally.
~/Dev/ai-projects/llm-wiki. If absent, error and ask the user where the wiki lives. Save the answer into the per-project config.<wiki_repo_path>/bridge.json. This is the contract for the bridge: it lists ingest_routes (subcommand → SKILL.md path), vaults (short name → purpose, tags, shape), vault_root, and vault_prefix. If it's missing, error: "wiki repo has no bridge.json. The bridge cannot resolve routes or vault metadata." Do not fall back to hardcoded paths; the manifest is the source of truth../.ronan-skills-llm-wiki.local.json from the current working directory.
{
"wiki_repo_path": "/Users/ronan/Dev/ai-projects/llm-wiki",
"project_name": "ronan-skills",
"default_vault": "side-projects",
"vaults": ["side-projects", "skill-lab"],
"notes": "Optional: why these vaults are the target for this project"
}
default_vault and entries in vaults use the short form (no llm-wiki- prefix)..gitignore if the project is a git repo (skill warns the user once if it isn't).Triggered when ./.ronan-skills-llm-wiki.local.json is missing, or when user runs /ro:wiki config.
vaults map. Each key is the short name; each value has purpose, tags, shape. Verify the corresponding directory exists at <wiki_repo_path>/<vault_root>/<vault_prefix><short>/ and drop any that don't.AskUserQuestion to ask:
<short>: <purpose> so the user has context)./.ronan-skills-llm-wiki.local.json with project_name set to the current directory's basename.test -d .git), check whether .gitignore already excludes *.local.json or the file specifically. If not, append .ronan-skills-llm-wiki.local.json to .gitignore. Tell the user.Order of precedence:
--vault <short> flag passed on the command line.default_vault from the config.vaults, use it.AskUserQuestion with the configured vaults as options.The full vault directory is <wiki_repo_path>/<vault_root>/<vault_prefix><short>/ (using vault_root and vault_prefix from the manifest, not hardcoded).
Verify the directory exists. If not, error with the list of actual vault directory names.
Map the subcommand to a manifest route key:
| Subcommand | Manifest route key |
|---|---|
| (default, no subcommand) | session |
| text | text |
| notes | notes |
Look up the route in bridge.json under ingest_routes.<key>. The full path to the playbook is <wiki_repo_path>/<route.skill>. If the route key isn't in the manifest, error: "no ingest route registered for <key>. Check bridge.json in the wiki repo."
<vault> placeholder in its instructions.git -C <wiki_repo_path> ...), respecting ~/CLAUDE.md rules: emoji + conventional format, no Co-Authored-By, weekday-hours timestamp rule.After the wiki skill's own report, add a one-line tail in the calling project:
Example:
Wrote: ~/Dev/ai-projects/llm-wiki/vaults/llm-wiki-side-projects/wiki/sources/session-notes-2026-04-28-wiki-bridge.md
Vault: side-projects | Commit: 7a3b2c9 (in wiki repo)
/ro:wiki status
/ro:wiki config.<wiki>/vaults/llm-wiki-<default>/wiki/sources/ by mtime.git -C <wiki> log -1 --oneline./ro:wiki vaults
Read bridge.json and print each vault as <short>: <purpose> [shape: <shape>, tags: <tags>]. Group by shape (hub / spoke / activity) for readability. If a vault in the manifest has no corresponding directory on disk, flag it inline with (missing dir).
Skills are scoped to: ~/.claude/skills/, plugins, and the current project's .claude/skills/. The wiki repo's project-local skills are not invocable from other projects via the Skill tool.
This skill works around that by reading the wiki's SKILL.md files directly with the Read tool and executing their instructions inline. That keeps the wiki skills as the single source of truth without requiring them to be promoted to global ro:* skills.
Skill paths and vault metadata are resolved through <wiki_repo_path>/bridge.json (the bridge manifest), so the wiki can rename or move ingest skills without breaking this bridge as long as the manifest is updated. If the wiki ever drops bridge.json, this skill will refuse to run rather than fall back to guessed paths.
ingest-session.~/CLAUDE.md: emoji + conventional commit, no Co-Authored-By, weekday-hours timestamp guard (08:30-18:00 forbidden Mon-Fri)..ronan-skills-llm-wiki.local.json file is per-project, gitignored. Never commit it./ro:write-copy rules to every line of generated wiki content. No em-dashes, no AI-tell vocabulary, no rhetorical-reversal filler.Capture findings from a research session in Project A:
[user, working in ~/Dev/some-project]
> we've been figuring out the right vector store for this app for the last hour, can you update the wiki?
[Claude]
/ro:wiki
→ reads ./.ronan-skills-llm-wiki.local.json (default_vault = ai-research)
→ reads ~/Dev/ai-projects/llm-wiki/.claude/skills/ingest-session/SKILL.md
→ follows its 8 steps targeting llm-wiki-ai-research
→ writes session-notes-2026-04-28-vector-store-pick.md, updates index/log/ROADMAP, commits
→ reports the path + commit SHA
First-time setup in a new project:
> add our findings to the wiki
[Claude]
→ no .ronan-skills-llm-wiki.local.json found
→ runs config init: lists vaults, asks user to pick
→ writes config, adds to .gitignore
→ proceeds with the ingest
Ingest a specific markdown file the user already wrote:
> can you push docs/architecture-notes.md into the side-projects vault?
[Claude]
/ro:wiki text docs/architecture-notes.md --vault side-projects
→ follows ingest-text against llm-wiki-side-projects
development
Close the loop on a Linear ticket when its work ships - move the status and post a deploy comment with the PR link, what shipped, and a try-it link, mentioning the collaborator. Used as the tail of /ro:linear-nightshift for every merged mirror, or manually after an ad-hoc build. Triggers on "linear update", "update the linear ticket", "mark NUT-x done", "tell eoin it shipped", "/ro:linear-update".
devops
Run a night-shift against a collaborator's Linear board. Pulls the team's Grilled tickets (/ro:linear-grill moves a ticket to Grilled once its questions are answered), VERIFIES the questions were actually answered (unanswered → bounce the ticket to the "Question for <name>" state), mirrors verified tickets to ephemeral GitHub issues with ready-for-agent, then runs the standard /ro:night-shift machinery on GitHub. Tail-calls /ro:linear-update for everything that merged + deployed. Triggers on "linear nightshift", "nightshift linear", "drain the linear board", "run the shift off linear", "/ro:linear-nightshift".
development
Grill a collaborator's Linear tickets and move every processed ticket to where it belongs. Resolves the board from the repo's .ro-linear.json, reads the collaborator's Backlog / Ready-for-agent issues, then per ticket either posts 3-5 decision-extracting questions (state moves to "Question for <name>") or confirms it build-ready (state moves to "Grilled", the gate /ro:linear-nightshift consumes); shipped-and-confirmed tickets close as Done. The async-collaborator counterpart of /ro:day-shift for people who never touch GitHub. Triggers on "grill linear", "grill eoin's tickets", "linear grill", "add questions to the linear tickets", "/ro:linear-grill".
development
--- name: about-page description: Add a standard About page to any web app, what it is, the tech stack, and an FAQ, wired into a footer link with a sticky footer. Built with Spartan + Tailwind (the canonical component layer) and falls back to semantic HTML so it ships reliably. Use whenever building, polishing, or shipping an app, every app should have one. Triggers on "add an about page", "about page", "footer about link", or as a standard step in app build/polish. category: frontend argument-h