Skip to content
gentic.news — AI News Intelligence Platform
Connecting to the Living Graph…

Listen to today's AI briefing

Daily podcast — 5 min, AI-narrated summary of top stories

Developer's messy .claude/skills/ folder on a laptop screen, with cluttered skill files and a terminal window…
Open SourceScore: 90

skillkit: The Per-Project Claude Code Skill Manager That Finally Tames

skillkit gives Claude Code users per-project skill management via a `skills.toml` manifest and `skillkit sync` command, ending the global skill directory chaos.

·4d ago·4 min read··18 views·AI-Generated·Report error
Share:
Source: github.comvia hn_claude_code, devto_claudecode, @_vmlopsWidely Reported
How do I manage Claude Code skills per-project instead of loading all skills globally?

skillkit is an open-source tool that manages Claude Code skills per-project. Install via `uv tool install --editable .`, define a `skills.toml`, run `skillkit sync` to materialize skills into `.claude/skills/` only for that project.

TL;DR

Stop loading every skill into every session. skillkit gives you per-project, declarative skill management with a simple sync command.

The Problem: Your .claude/skills/ Is a Dumping Ground

If you've been using Claude Code for more than a few weeks, your ~/.claude/skills/ directory is probably a mess. Frameworks like gstack dump ~80 skills in there. You installed a few MCP servers. Maybe you wrote custom skills for your Django project. Now every Claude Code session loads all of them, regardless of whether you're building a web app or debugging a Rust kernel module.

That's not just clutter — it's wasted context window. Every skill you load is a prompt prefix that Claude has to process, even when it's irrelevant to the current task.

What Changed — skillkit: Per-Project Skill Management

skillkit is an open-source tool that makes skill selection per-project and declarative. Instead of one global skill directory, you define a skills.toml manifest that specifies exactly which skills (or packs of skills) belong to each project.

Installation

git clone https://github.com/narendranag/skillkit ~/ai/skillkit
cd ~/ai/skillkit
uv tool install --editable .

This puts skillkit on your PATH via uv's tool shim directory. Add that directory to your shell's $PATH if uv prompts you.

How It Works

  1. Define sources in sources.toml (in the registry directory, defaulting to ~/ai/skillkit):
[sources]
mine = "~/ai/skillkit/skills"
gstack = "~/.claude/skills/gstack"
  1. Create a skills.toml in your project root:
[pack]
name = "webapp"
description = "Skills for a typical web app project"
skills = ["mine:qa", "gstack:next-best-practices", "gstack:review"]
  1. Run the sync:
skillkit sync

This materializes only the selected skills into .claude/skills/ inside your project. Since .claude/skills/ is in .gitignore, you commit only skills.toml. Each teammate runs skillkit sync after checkout.

Per-Skill Additions

Don't want to edit TOML by hand? Use the CLI:

skillkit add gstack:review

This adds the skill to skills.toml and materializes it immediately.

Vendor Mode (Version Locking)

Want to freeze skills at a specific version and commit them to the repo? Use vendor:

skillkit vendor

This syncs skills, then writes a negation line to .gitignore so the .claude/skills/ directory is tracked by git. Now your CI and teammates get exactly the same skill versions.

Adopting Existing gstack Skills

If you already have gstack installed, its skills are scattered across ~/.claude/skills/. skillkit's adopt gstack command consolidates them:

skillkit adopt gstack        # dry run — review the list
skillkit adopt gstack --yes  # approved — move scattered dirs to Trash

It detects scattered gstack skill directories by name match and moves them to macOS Trash (reversible).

Why It Works — Token Economics and Context Discipline

Every skill you load adds tokens to your prompt. With gstack's ~80 skills, that's easily 5,000-10,000 tokens of prefix you're paying for in every session, even when you're working on something completely unrelated.

skillkit's per-project approach means Claude only loads the skills relevant to your current codebase. For a web app project, you might load 5-10 skills instead of 80. That's a 90% reduction in skill-related prompt overhead.

More importantly, it reduces ambiguity. When Claude has fewer (but more relevant) instructions, it's less likely to apply patterns from a Python skill to your TypeScript project.

Try It Now

  1. Clone skillkit and install it
  2. Create a sources.toml pointing to your existing skills directory and any gstack install
  3. In one of your projects, create a skills.toml with just 2-3 skills you actually use there
  4. Run skillkit sync and start a Claude Code session in that project
  5. Compare the response quality and relevance vs. your global setup
# Quick start in your project
cd ~/ai/skillkit
uv tool install --editable .
cd /path/to/your/project
skillkit add mine:qa
skillkit add gstack:review

The Bottom Line

skillkit is the answer to the question every Claude Code power user eventually asks: "Why is my Claude loading skills for projects I haven't touched in months?" It's a simple, declarative, git-friendly approach to skill management that respects your context window and your sanity.


Source: github.com

[Updated 04 Jun via devto_claudecode]

The cost isn't theoretical. Developer kenimo49 measured a 7-hour Claude Code session with 5 skills loaded and found that 3 skills never fired yet accounted for 11% of the total token bill — roughly 231K tokens of description overhead that yielded zero value [per dev.to]. Even with prompt caching, each turn re-bills the skill descriptions. That 11% figure is a concrete floor for the waste skillkit eliminates: a project with 5 focused skills instead of 80 could cut dormant-skill overhead from ~11% to near zero.


Source: gentic.news · · author= · citation.json

AI-assisted reporting. Generated by gentic.news from multiple verified sources, fact-checked against the Living Graph of 4,300+ entities. Edited by Ala SMITH.

Following this story?

Get a weekly digest with AI predictions, trends, and analysis — free.

AI Analysis

**What Claude Code users should do differently:** First, audit your current `~/.claude/skills/` directory. Count how many skills you have and how many you actually use per project. If you have more than 10 skills globally, skillkit will immediately reduce prompt overhead. Install skillkit and create a minimal `skills.toml` for your most active project — start with 3-5 skills and expand only as needed. Second, adopt the `vendor` workflow for team projects. By committing both the manifest and the materialized skills, you ensure every teammate and CI run gets identical skill sets. This eliminates "works on my machine" bugs caused by different skill versions. Run `skillkit vendor` after finalizing your skill selection for a shared project. Third, use `skillkit adopt gstack` to clean up if you previously installed gstack globally. The dry-run mode (`skillkit adopt gstack`) is safe — review the list of directories that would be moved, then run with `--yes` once you're confident. This reclaims the global namespace and forces you to be intentional about which gstack skills you actually need per project.
This story is part of
The Agentic Pivot: How Claude Code Is Forcing a Reconfiguration of the AI Stack
Anthropic's developer tool is becoming the connective tissue between models, infrastructure, and autonomous workflows, challenging OpenAI's application-first strategy.
Compare side-by-side
Claude Code vs skillkit

Mentioned in this article

Enjoyed this article?
Share:

AI Toolslive

Five one-click lenses on this article. Cached for 24h.

Pick a tool above to generate an instant lens on this article.

Related Articles

From the lab

The framework underneath this story

Every article on this site sits on top of one engine and one framework — both built by the lab.

More in Open Source

View all