MCPcopy Index your code
hub / github.com/WyattLee-nanami/weft

github.com/WyattLee-nanami/weft @v1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.0 ↗ · + Follow
91 symbols 201 edges 14 files 2 documented · 2% updated 52d agov1.0.0 · 2026-05-18★ 127
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Weft — Skill Management for macOS

Weft

Find the right Claude skill in seconds — without scrolling.

A native macOS app to browse, search, and demo your Claude Code skill library.

Install · Features · How it works · Roadmap · License


Why

When your ~/.claude/skills/ folder grows past 30 entries, you stop remembering which skill does what. The Claude Code skill list becomes a wall of names that all look vaguely useful.

Weft reads your local skill files and turns them into a searchable, browsable library — so you can find the one you need without scrolling through 50+ items every time.

Features

  • Fast fuzzy search across skill name, description, and trigger words (⌘K)
  • Auto-grouping by category — meta tools, work-internal, design, life scenarios, etc.
  • Usage stats scanned from your Claude Code session history. See what you actually use vs. what's gathering dust.
  • One-click slash command copy — paste /skill-name straight into Claude Code
  • Presentation mode (⌘D) — large-text, centered layout for screen-sharing or team demos
  • Pure local — reads your filesystem only. Sends nothing to the network.

Install

Option A — build from source

Requires Node 18+, Rust stable, and Xcode command-line tools.

git clone https://github.com/WyattLee-nanami/weft
cd weft
npm install
npm run tauri build
open src-tauri/target/release/bundle/macos/Weft.app

Option B — download a release

Pre-built .dmg files will be available under Releases once v0.1.0 is published.

First launch: macOS will block an unsigned app. Go to System Settings → Privacy & Security, scroll down, click Open Anyway.

How it works

~/.claude/skills/<name>/SKILL.md   ──┐
                                     ├─→  scan-skills.mjs  ─→  src/skills.json  ─→  React UI
~/.claude/projects/**/*.jsonl      ──┘                                                 │
   (usage counting)                                                                Tauri shell
                                                                                       │
                                                                                  Weft.app

The scanner runs at build time, parsing each SKILL.md frontmatter (name, description, triggers) and counting how often each skill name appears in your local Claude Code session history.

The result is bundled as static JSON into the app, then rendered by a React + Fuse.js front-end inside a Tauri 2 shell.

Tech stack

  • Tauri 2 — native macOS shell, ~10 MB bundle, Rust backend
  • React 18 + TypeScript — front-end
  • Fuse.js — fuzzy search
  • react-markdown + remark-gfm — render SKILL.md body

Roadmap

  • [ ] v0.2 — Live Rust-side scanner so the app re-indexes without rebuilding
  • [ ] v0.3 — Duplicate detection (embedding-based similarity for overlapping skills)
  • [ ] v0.4 — Team mode: serve a read-only HTML view from a shared skill repo
  • [ ] v0.5 — Edit skills inline (frontmatter + body) with live preview

Contributing

Bug reports and PRs welcome. The codebase is small (~500 lines of TS + a tiny Rust shell) and intentionally minimal.

License

MIT — see LICENSE.


Built because opening 50+ skill names every time was the bottleneck — the index, not the skills, was broken.

Core symbols most depended-on inside this repo

Shape

Function 80
Class 11

Languages

Rust63%
TypeScript37%

Modules by API surface

src-tauri/src/scanner.rs23 symbols
src/Skills.tsx18 symbols
src-tauri/src/history.rs16 symbols
src-tauri/src/usage.rs15 symbols
src/History.tsx7 symbols
scripts/scan-skills.mjs5 symbols
src/Stats.tsx3 symbols
src/App.tsx1 symbols
src-tauri/src/main.rs1 symbols
src-tauri/src/lib.rs1 symbols
src-tauri/build.rs1 symbols

For agents

$ claude mcp add weft \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page