Now reading: Claude Agent Skills spec NEW See anatomy

Turn any technical
post into a skill.

Skillify reads a URL and writes a Skill.md — frontmatter, overview, patterns, pitfalls — ready to package and upload as a Claude Agent Skill. Bring your own key. We never see it.

Client-sideNo backend. No proxy.
BYO keyAnthropic · OpenAI · Google
Open outputPlain markdown
Works with Anthropic API OpenAI API Any agent that loads .md skills no SaaS · no telemetry · no lock-in
The converter

Paste a URL.
Get a skill.

The whole pipeline runs in your browser. We fetch the article, strip it to readable markdown, and ask your model to author a skill. Your API key never leaves this tab — there is no Skillify server for it to leave to.

skillify/converter/~ idle waiting for input
Sent only to your provider. Never persisted, never proxied.
Use a temporary or low-limit key. Browser apps cannot fully protect keys from malicious extensions, compromised dependencies, or XSS attacks.
untitled-skill.md · — lines · — bytes
# readme — what skillify will produce
01
YAML frontmatter
name & description for the skill router
02
When to use
disambiguating triggers · post-vs-not table
03
Core mental model
the one paragraph that unlocks everything
04
3–6 named patterns
code example + "use this for" bullets
05
Pitfalls
bad/good code pairs · ordering rules
06
Reference
compact lookup table of APIs & flags
Idle. Fill in the form and hit run. 0 tokens · 0.0s
Pipeline

Four passes,
one file.

Each step runs locally. There is no upload step, no headless browser farm, no log line written about your URL. Open devtools — you can watch every byte.

01   FETCH  ·  ~200ms

Browser-side fetch

A CORS-permissive reader returns the page as plain markdown. We never see the request.

GET
02   EXTRACT  ·  ~50ms

Strip the chrome

Drop nav, ads, comments, tracking scripts. Keep headings, prose, code fences, tables.

03   DISTILL  ·  ~12s

Author the skill, not a summary

A tuned system prompt asks your model to produce SKILL.md, not a recap. The output has the right shape, in the right tone, with code that actually compiles.

04   SAVE

Drop in skills/

Plain markdown. Loads in any agent that reads .md skills.

SKILL.md
Anatomy of a skill

What every field
needs to do.

A Claude Agent Skill is a directory anchored by a Skill.md file. The description is what the router reads. The body is what Claude reads when it loads you.

name:

Title Cased. Max 64 chars.

Human-readable, no quotes. Folder name must match exactly — e.g. CSS Scroll Animations.

description:

One sentence. ≤ 200 chars. Action-shaped.

Starts with a verb. Names the exact APIs and situation. The router reads only this to decide whether to load you.

dependencies:

Optional. Packages the Skill needs.

Include only if the post covers code requiring specific packages — e.g. python>=3.8, pandas>=1.5. Omit entirely otherwise.

## Overview

What this Skill does and when to reach for it.

One short paragraph. No marketing. Sets the scope so Claude knows exactly what this Skill covers.

## When to use

Concrete triggers + negative examples.

Bullet list of situations this Skill applies to. Include 1–2 "do NOT use" cases — they prevent mis-routing.

## Key patterns

3–5 named recipes with code.

Each subsection: one-line description, fenced code example faithful to source, "Use this for:" list.

## Pitfalls

2–4 footguns, bad/good pairs.

Every API has gotchas. Bad/good code pairs are worth more than prose warnings.

Skill.md UTF-8·md
--- name: CSS Scroll Animations description: Build scroll-driven CSS animations using animation-timeline, view() and scroll() without JS. dependencies: # omit if not needed ---   # CSS Scroll Animations Skill   ## Overview   Use this Skill when implementing scroll-scrubbed UI effects without JavaScript. Add @supports guard for progressive enhancement.   ## When to use   Fade/slide elements on scroll entry Sticky header that transforms on scroll NOT: time-based animations, IE support   ## Key patterns   ### Fade on entry animation-timeline: view() animation-range: entry 0% cover 30%   ## Pitfalls   animation shorthand resets animation-timeline to auto declare timeline after the shorthand.
Trust model

Your key,
your problem. Literally.

Skillify is a static page. There is no Skillify backend, no analytics endpoint, no log pipeline. Two outbound calls happen: one to r.jina.ai (the URL reader) and one to your model provider.

What we promise

  • Key never leaves the tab. It's used once, in-memory, to call your provider. Not stored, not echoed, not sent anywhere except the provider's own API.
  • No Skillify server. The page is HTML + JS, served as a static asset. There is nothing for us to log, breach, or subpoena.
  • Verifiable. Open devtools → Network. Run the converter. You'll see one call to r.jina.ai and one call to your model. That's the entire surface area.
  • Output is yours. The skill file is plain markdown. MIT-licensed. No watermarks, no required attribution.
  • r.jina.ai receives your URL. It does not receive your API key, but it does see the URL you submit. Do not enter private, signed, or authentication-gated URLs.
  • Generated skills are untrusted until reviewed. A malicious source page may attempt to influence the generated Skill.md. Skillify scans output for suspicious content, but always review before running a skill in an agent.
network · skillify live trace
GET r.jina.ai/https://... 200 182ms
POST api.anthropic.com/v1/messages 200 11.4s
— end of trace · 2 requests · 0 to skillify —
Engineers ask

FAQ.

Anything not covered here, the answer is in the page source. The repo is the page.

01Why a skill instead of just a system prompt?+
Skills are scoped. They're loaded by a router only when relevant, so you can stack dozens without blowing up your context window. A system prompt that contains every technique you'd ever want is a system prompt that no longer steers reliably.
02How is this different from feeding the URL straight into Claude?+
The output of "summarize this post" is a summary. The output of Skillify is a skill — a file with the right shape that an agent can reuse next month, next year, in a context it's never seen, against a problem the post never explicitly addressed.
03What providers and models work?+
Anthropic (Opus 4.7, Sonnet 4.6, Haiku 4.5), OpenAI (gpt-5.5, gpt-5, gpt-4.1, gpt-4o, o3, o4-mini, o1 and their variants), Google (Gemini 3.1 Pro / 3 Flash / 3.1 Flash-Lite previews, plus stable gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite). Any model with a 100k+ context window produces a solid skill; nano/mini/lite variants are faster but flatter.
04Can it handle paywalled or auth-gated content?+
No. Skillify reads what the public web sees. If a post is behind a login, paste it into a gist and point Skillify at the raw URL.
05What about CORS?+
We use a public read-only reader at r.jina.ai that returns clean markdown for any URL. It only ever sees URLs, never your API key. If you'd rather not use it, fork the page and route fetches through your own reader.
06Where does my key actually go?+
Straight to api.anthropic.com/v1/messages or api.openai.com/v1/chat/completions, with the anthropic-dangerous-direct-browser-access header where required. We do not proxy or intercept.
07Can I edit the system prompt?+
Yes — it's all in the page source. Fork it. The repo is the page. View source, find the SYS_PROMPT constant, change it.
Ready

Distill your
first skill in ~12s.

Bring a URL, bring a key. Walk away with a skill.

copied