Skills I built for my own work, shared as-is: I build for me, you can use it.
A Claude skill is a markdown file of instructions that
teaches Claude a repeatable workflow — you invoke it by name (like /sharpen) or Claude picks it
up when your request matches. This repo is my library of the standalone, general-purpose ones:
writing tools, prompting tools, and workspace-hygiene tools. Nothing here needs my setup to run —
each skill is a self-contained folder you can take on its own.
This is a working library, not a product. The skills are exactly what I use day to day, honestly labeled: where one presumes a system of mine (a Notion database, a documentation standard), its row below says so, so you know before installing.
My Notion-coupled career/content/system skills live separately in claude-notion-flywheel; the TS PMO project-management product is at chzylee/ts-pmo.
You don't install the library — you take the one skill you want. Paste this prompt into a Claude Code session, with the last line edited to name the skill:
Install one skill from https://github.com/chzylee/skill-library for me:
1. Fetch ONLY the folder named <SKILL-NAME> from that repo (shallow clone or
GitHub API — your choice).
2. Copy that folder to ~/.claude/skills/<SKILL-NAME>, creating directories as
needed. If the skill's own README lists extra setup (some install a hook),
follow it and show me exactly what it changed.
3. Remove any temporary clone. Change nothing else on my machine.
4. Read the skill's description back to me so I can confirm it's what I wanted.
<SKILL-NAME> is: sharpen
The prompt is deliberately narrow: it copies one folder into your personal skills directory and touches nothing else. It works on any OS — Claude resolves the paths for your machine.
No install at all: for single-file skills (sharpen, legible, register-page) you can just
paste the raw contents of the skill's SKILL.md into any Claude chat and say "act as this skill
for this session." Zero footprint; gone when the chat ends.
Claude desktop / claude.ai: where a dist/<skill>.skill bundle exists, upload it via
Settings → Customize → Skills for one-click install.
If you want the whole library with auto-updates, add it as a plugin from inside Claude Code:
/plugin marketplace add chzylee/skill-library
/plugin install skill-library@noah-skill-library
This is additive to the per-skill paths above — pick one route per skill, not both, or you'll have duplicate copies answering to the same name.
| Skill | What it does | Who it's for | Standalone? |
|---|---|---|---|
| sharpen | Mark a rough request with sharpen → it rewrites the prompt properly, runs it, and reports what it most needed and least trusts. |
Anyone who fires off rough prompts and wants the better version run automatically. | ✅ Fully |
| legible | A first-time reader walks your writing part by part and signs off on its legibility — or says exactly where it doesn't read clearly. You rule on every change. | Anyone about to share a doc, post, or README and wondering "is this actually clear?" | ✅ Fully |
| content-starter | Coaches a vague content idea into a ready-to-write outline through a real back-and-forth. You keep the voice; it does the scaffolding. | People who write posts or scripts and stall at the start. | ✅ Fully |
| memory-manager | See everything Claude remembers about you — every auto-memory store on your machine in one view — then edit or delete what's wrong. Opens a local UI; nothing is uploaded. | Anyone whose Claude has started repeating something that stopped being true. | ✅ Fully |
| notion-digest | Answers one question from a Notion page by delegating the read to a sub-agent — the raw page never enters your conversation, only the answer does. For pages too big to fetch directly, or narrow lookups you don't want cluttering the chat. | Anyone with a Notion MCP connector who's hit (or wants to avoid) a page blowing past their context. | ✅ Fully (needs a Notion MCP connector to use, not to install) |
| landscape-search | Finds what the world already thinks about a problem space, then reasons about where the conventional answer is wrong for your case. A sub-agent does the searching; nothing leaves your machine until you approve the exact query strings. | Anyone about to build on a default approach who wants to know whether the default is actually right here. | ✅ Fully (better with an Exa MCP connector; falls back to WebSearch) |
| ratify | The ratification protocol for decision gates: you state your expectation before seeing the recommendation, the gap becomes the discussion, and every decision is logged as predicted / surprised / no-opinion. Kills rubber-stamping. See the proof card. | Anyone approving AI recommendations who wants their "yes" to mean something. | ✅ Pairs with ratify-configure |
| ratify-configure | Settings console for ratify's local decision telemetry — view your numbers, keep recording, or turn it off. | ratify users. | ratify |
| recording-standard | Installs and keeps fresh my Recording Standard's enforcement block in ~/.claude/CLAUDE.md, plus a session-start staleness warning. |
Users of my Recording Standard documentation system. | |
| write-enforcement | A write-time hook that lints pages against a writing standard as they're written (advisory by default). Targets Notion today; retargetable. | People with a written standard who want it enforced at write time, not remembered. | |
| register-page | Registers or refreshes one page in a Page Index (a registry of where things live), classifying its mode and upserting the row. | Users of my Recording Standard's Page Index in Notion. |
In-progress skills live on the dev branch
— main only carries what a stranger can use today.
A real sharpen run, trimmed only for length. The user typed one rough line; everything after it
is the skill:
User:
sharpen write a readme intro for my side project — a cli that renames photos by their exif dateClaude:
Sharpened prompt Write a 3–4 sentence README intro for a CLI that renames photo files to their EXIF capture date. Cover: what it does in one line, who it's for, the default filename format, and what happens to files with no EXIF data. Plain tone — no marketing language.
exif-rename renames your photos to the moment they were taken: it reads each file's EXIF capture date and renames it to
2024-06-14_183042.jpg, so shots from every camera and phone sort into one timeline. It's for anyone consolidating photo dumps — SD cards, phone backups, old drives — into a single folder. Files with no EXIF date are left untouched and listed at the end, so nothing is renamed blind.Most needed — the tool's actual name and command syntax; whether it renames in place or copies; supported formats beyond JPEG.
Least confident — I guessed the filename format and the leave-untouched behavior for missing EXIF; if the tool does either differently, those two sentences are wrong.
That's the shape of every skill here: you say the small thing, the skill supplies the discipline around it — and tells you where it was guessing instead of hiding it.
Repo layout
skill-library/
├── README.md ← this guide
├── CONTRIBUTING.md ← branch model · dev-build workflow · running a fork
├── LICENSE
├── .claude-plugin/ ← marketplace + plugin manifests (the "install everything" path)
├── .claude/ ← repo-scoped settings: the session-start dev-build check
├── dist/ ← per-skill .skill bundles for one-click desktop install
├── docs/ ← GitHub Pages site: one page per skill (docs/<skill>/)
├── scripts/ ← the hook script (short, readable, advisory-only)
└── <skill>/ ← one self-contained skill per folder
├── README.md ← what it is · install · invoke · requirements
├── SKILL.md ← the skill itself
├── references/… ← optional bundled assets
└── hooks/… ← optional hook scripts (installer skills only)
Each skill folder is installable on its own — no cross-skill dependencies, no absolute paths.
Maintaining the library (me, and forkers)
Skills are developed on the dev branch and tested as dev builds — separate
<skill>-dev skills that never shadow the stable versions — then promoted to main.
The tooling is the dev-build pattern, which
started life in this repo and now lives in its own:
/dev-build deploy <skill> # test a dev-branch skill as <skill>-dev, side by side
/dev-build status # what's deployed, stale, or ahead of main
/dev-build promote <skill> # move it to main: folder + plugin + README row + bundle
This repo is rigged for it (.dev-build.conf + scripts/dev-build-check.sh); install
the skill from chzylee/dev-build — maintainers and forkers only; library users never
need it.
If you clone this repo: Claude Code will ask you to approve one hook —
scripts/dev-build-check.sh, a short read-only script
that warns at session start (inside this repo only) when a dev build has gone stale.
Approve or decline; declining only costs the warnings.
Forking as your own library is a supported path — the branch model, tooling, and this maintenance rig all come with it. See CONTRIBUTING.md.
Note: a SKILL.md description containing a bare : must be single-quoted in YAML.
Per-skill requirements & caveats
- sharpen, legible, content-starter — no requirements; work in any Claude surface.
- content-starter — richest in Claude Code (bundled persona + references); the
.skillbundle carries them for desktop. - recording-standard, write-enforcement — Claude Code only (they install hooks and edit
~/.claude/CLAUDE.md/settings.json); their READMEs show exactly what gets written. - register-page — needs a Notion connection (MCP) and a Page Index database to write to; most useful alongside the Recording Standard system.
- notion-digest — needs a Notion connection (MCP) to use; read-only, writes nothing. Works with any Notion workspace, not tied to a specific database or schema.
- ratify — records one enums-only line per decision to a local file
(
~/.claude/ship-pipeline/…— a historical path name; ratify grew up inside my Ship Pipeline build process, which now depends on it from here). Nothing is ever transmitted;/ratify-configureshows, keeps, or disables it.
MIT — see LICENSE. © 2026 chzylee.