Skip to content
Yohn Gutierrez edited this page Jun 17, 2026 · 2 revisions

Skills

Skills are self-contained capabilities Jarvis can run. Each lives in skills/<name>/ with:

  • skill.py — the hands (a small CLI: python skill.py <subcommand> [args]).
  • SKILL.md — the method/judgment (how and when to use it).
  • optional requirements.txt — Python deps (installed into the venv).

Shipped skills

  • websearch / fetch / research the live web (no API key). Used for skeptical, current-fact answers.
  • discover — scan the host + local network, organize findings into a per-host knowledge doc, queue + answer open questions (the curiosity loop), and propose work.
  • deep-search — deep code research: locate → ripgrep trace → parallel explore → synthesize + red-team. Needs ripgrep.
  • youtube-research — search YouTube, pull captions, clean + chunk for reading. Needs yt-dlp.

Running a skill

From chat, type / for an autocomplete menu, then e.g.:

/web is ubuntu 26 out
/discover
/deep-search how does the tick lock work
/youtube-research lofi study beats

Or from the CLI:

./install.sh skill list
./install.sh skill install youtube-research
./install.sh skill run web research "best practices for X"

Installing dependencies

In Settings → Skills, click Install on a skill with deps. Failures are shown inline (no silent failure) with a Retry. Skills resolve their own tools (e.g. yt-dlp) from the venv, so a successful install actually works.

Adding a skill from the dashboard

You don't have to touch the repo. In Settings → Skills, click + and paste a SKILL.md (a title, a short description, and the steps — including any helper script path and how to run it). It's saved to state/skills/<name>/SKILL.md (reinstall-safe) and auto-detected — its catalog is injected into the prompt so any routed model can use it. You can also just ask Jarvis to add a skill ("add a skill for … here's the script and steps") and it writes the file for you.

Writing a code-backed skill

  1. mkdir skills/my-skill and add skill.py with an argparse CLI and a requirements.txt (if needed).
  2. Add a SKILL.md describing the method and when to use it.
  3. Add a manifest entry so it appears in list_skills() (see jarvis/skills.py).
  4. Preflight runtime deps and fail with a clear message if something's missing — never return empty/baseless output.
  5. Keep it mechanical; let the mind supply judgment via SKILL.md.

Skills can also be shipped in an extras/skills/ overlay (gitignored) for private capabilities.

Clone this wiki locally