SKILL.md

  1---
  2name: researching-with-rumilo
  3description: Dispatches AI research subagents via rumilo to search the web or explore git repositories. Use when the user asks to research a topic, look up library usage, explore a codebase, read documentation from the web, or when you need information from an external repository or website to complete a task.
  4license: AGPL-3.0-or-later
  5metadata:
  6  author: Amolith <amolith@secluded.site>
  7---
  8
  9`rumilo` spawns disposable AI subagents for two kinds of research: **web search** and **repo exploration**. Each mode runs in isolation and returns a synthesised answer on stdout.
 10
 11## Modes
 12
 13### Web mode
 14
 15Search the internet or ask questions about a specific page.
 16
 17```bash
 18# Open-ended search (no URL)
 19rumilo web "what is the current stable version of Zig"
 20
 21# Question about a specific page (URL pre-fetched into context)
 22rumilo web "how does the slog package handle log levels" -u "https://pkg.go.dev/log/slog"
 23```
 24
 25- Without `-u`, the agent searches the web on its own.
 26- With `-u`, the URL is fetched first and injected into the agent's context alongside the query, so it can answer questions _about_ that page.
 27
 28### Repo mode
 29
 30Clone a git repository into a temp directory, spawn an agent inside it, and let it explore the source to answer questions.
 31
 32```bash
 33# Public repo
 34rumilo repo -u "https://github.com/owner/repo" "How does the routing system work?"
 35
 36# Private repo (works with any clonable URI — SSH, HTTPS with auth, etc.)
 37rumilo repo -u "git@git.sr.ht:~user/repo" "What does the Config struct look like?"
 38```
 39
 40The `-u` flag is **required** in repo mode — it needs something to clone.
 41
 42## Flags
 43
 44| Flag                       | Modes | Effect                                                            |
 45| -------------------------- | ----- | ----------------------------------------------------------------- |
 46| `-u <url>`                 | both  | Seed URL (web) or clone URI (repo)                                |
 47| `--model <provider:model>` | both  | Override the configured default model                             |
 48| `--ref <ref>`              | repo  | Checkout a branch, tag, or commit after cloning (requires --full) |
 49| `--full`                   | repo  | Full clone instead of shallow (depth 1)                           |
 50| `--no-cleanup`             | both  | Keep the temp workspace after exit                                |
 51| `--verbose`                | both  | Print tool calls and results to stderr                            |
 52
 53## Crafting queries
 54
 55Rumilo works best with focused queries. Think about **scope** and **coupling** when deciding what to ask and how many questions to include.
 56
 57- **Tightly coupled, narrow scope** — multiple simple questions in one call is fine when they're about the same small surface area (a single file, one struct, one API endpoint).
 58- **Broad scope or loose coupling** — one question per invocation. If answering requires exploring many files or pages, keep it to a single clear question so the agent can focus.
 59- **Write natural questions, not keyword lists.** Rumilo is an LLM, not a search index.
 60- **Sequence calls when later questions depend on earlier answers.** Get the overview first, then drill in.
 61
 62### Bad
 63
 64Overloaded — five loosely-coupled questions spanning an entire diff, each requiring different context:
 65
 66```bash
 67rumilo web "In this diff, find: 1. What files are modified and created \
 682. What config options each channel exposes 3. How messages are formatted \
 694. The architecture for adding a new channel 5. What UI components exist" \
 70  -u "https://example.com/commit/abc123.diff"
 71```
 72
 73### Good
 74
 75Sequenced calls, each with a clear scope. Later calls include non-obvious context from earlier results — file paths, symbol names, patterns — so rumilo can go straight to the answer instead of searching.
 76
 77```bash
 78# 1. Lay of the land — broad overview first
 79rumilo web "What files were modified or created, and what's the broad shape of the change?" \
 80  -u "https://example.com/commit/abc123.diff"
 81
 82# 2a and 2b can run in parallel — neither depends on the other,
 83#    but both benefit from context learned in step 1.
 84
 85# 2a. Architecture deep-dive, pointing to the key file discovered in step 1
 86rumilo web "How is the notification system in pkg/notify/ architected? \
 87  Each channel seems to implement a Sender interface — what's the process \
 88  for adding a new one?" \
 89  -u "https://example.com/commit/abc123.diff"
 90
 91# 2b. Config drill-down, referencing the settings struct found in step 1
 92rumilo web "What configuration options does each channel expose in \
 93  ChannelSettings? Can message content be customised?" \
 94  -u "https://example.com/commit/abc123.diff"
 95
 96# 3. UI specifics, narrowed by what steps 1–2 revealed about the component tree
 97rumilo web "The channel config UI lives in web/src/components/settings/channels/. \
 98  Do the per-channel forms follow a shared pattern or component?" \
 99  -u "https://example.com/commit/abc123.diff"
100```
101
102Don't include context that's obvious or redundant — telling rumilo to "search for notif" when asking about notifications wastes tokens. Focus on non-obvious anchors: exact file paths, struct names, interface signatures.
103
104Tightly coupled questions in a single call are fine when the scope is small:
105
106```bash
107rumilo repo -u "https://github.com/owner/repo" \
108  "What fields does the Config struct have and which are optional?"
109```
110
111## Choosing a mode
112
113- Need to find or learn about a library? **Web** to locate it, then **repo** to explore its source.
114- Need to understand how a dependency works in detail? **Repo** with the dependency's clone URL.
115- Need current docs, release notes, or general knowledge? **Web**, optionally with the URL of a relevant page.