anything-to-skill
Turn a book, a paper, a documentation site, or a repository into an agent skill.
Point your agent at a source and it reads the whole thing, then writes a skill that carries what the source actually teaches — for Claude Code, Codex, Gemini CLI, opencode, and anything else that loads skills from a directory.
What it does
You ask. It reads. You get a skill.
turn the Rust book's installation chapter into a skill — https://doc.rust-lang.org/book/ch01-01-installation.html
Underneath, your agent runs one command and gets text back — not a page of markup with the documentation buried in it:
# Installation - The Rust Programming Language
source: https://doc.rust-lang.org/book/ch01-01-installation.html
Installation
The first step is to install Rust. We'll download Rust through rustup, a
command line tool for managing Rust versions and associated tools. [...]
Installing rustup on Linux or macOS
If you're using Linux or macOS, open a terminal and enter the following command:
```
$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
```
The navigation, the sidebar, the version switcher and the footer are gone. The code block kept its indentation. The page says where it came from. That last part matters more than it looks: a crawl concatenates dozens of pages, and a claim you cannot trace is a claim you cannot check.
Sources
| A book, paper, or manual | anything-to-skill extract ~/books/ddia.pdf |
| A page or a paper | anything-to-skill extract https://arxiv.org/pdf/2501.00001 |
| A documentation site | anything-to-skill extract https://docs.example.com/guide/ --crawl |
| A repository | anything-to-skill extract owner/repo |
Run anything-to-skill sources for every accepted form — SSH remotes, tree
and blob URLs, branches, subdirectories.
Sites are crawled one request at a time, on the same host, at or below the
directory you named, bounded by --max-pages and --depth, and robots.txt is
honoured. When a site publishes its documentation as an llms.txt, that is read
instead of crawling — the site's own curated text, in one request:
$ anything-to-skill extract https://svelte.dev/ --crawl
crawling https://svelte.dev/ ...
https://svelte.dev/llms-full.txt — reading it instead of crawling
extracted 1 document(s) from 1 source(s)
1179728 characters, ~208777 tokens
Repositories are shallow-cloned and read in the order a person opens one:
the README, then docs/, then the rest. Prose only — pass --include when the
source itself is the documentation.
Whatever a run could not read is written to metadata.json and repeated on
screen: a crawl that stopped at its page limit, pages robots.txt withheld, PDF
pages with no extractable text. A skill whose gaps are stated is usable; one
that hides them is a trap for whoever loads it next.
Install
The skill, into every agent tool on the machine:
npx skills add asale-ai/anything-to-skill --all -g
That writes ~/.agents/skills/anything-to-skill/ — the path Codex, Cursor,
Gemini CLI, and opencode read directly — and symlinks it into the ones that look
elsewhere, Claude Code's ~/.claude/skills/ among them. Drop -g to install
into the current project instead.
The skill drives a small binary that does the reading:
curl -fsSL https://raw.githubusercontent.com/asale-ai/anything-to-skill/main/install.sh | sh
# or, if you have Rust: cargo install anything-to-skill
On Windows, in PowerShell:
irm https://raw.githubusercontent.com/asale-ai/anything-to-skill/main/install.ps1 | iex
No Node on the machine? Pipe to SKILL=1 sh instead — or set $env:SKILL = '1'
before the PowerShell line — and the installer places the skill itself, out of
the release archive it has already verified.
Both installers verify the download against the release's published SHA256 and
install nothing if it does not match. Set BIN_DIR ($env:BIN_DIR) to install
somewhere other than ~/.local/bin; $env:ADD_TO_PATH = '1' puts that
directory on your PATH on Windows.
Use
Ask your agent, and point at the source:
turn this book into a skill — ~/books/designing-data-intensive-applications.pdf
make a skill from the pytest docs — https://docs.pytest.org/en/stable/
It will read the source, ask what you want the skill for — quick reference, a working guide, or deep study — and write the skill at that depth. When a PDF page cannot be read as text, it renders that page and reads it as an image instead of quietly leaving a hole.
Formats
| Documents | PDF · DOCX · DOC · RTF · ODT |
| Books | EPUB |
| Slides & sheets | PPTX · PPT · XLSX · XLS · ODS · ODP · CSV |
| Text | TXT · Markdown · reStructuredText · AsciiDoc · HTML |
| Web & code | any URL · documentation sites · git repositories |
Repositories need git. Kindle (MOBI · AZW ·
AZW3) needs Calibre. PDFs come out better
with poppler installed (brew install poppler) — run anything-to-skill check to see what you have.
SKILL.md · CONTRIBUTING.md · SECURITY.md · Apache-2.0
No comments yet
Be the first to share your take.