skul
skul is a CLI for applying reusable AI bundles into the directories each coding tool already expects.
It is designed for teams or individuals who want to share:
- skills
- slash commands
- agents
- root instructions
without checking those generated or tool-local files into Git.
The problem
Most AI coding tools look for project-local files in their own dot directories:
- Claude Code uses
.claude/... - Cursor uses
.cursor/... - Codex uses
.agents/...and.codex/... - OpenCode uses
.opencode/... - GitHub Copilot uses
.github/... - Kiro uses
.kiro/...
That makes reuse awkward. You can copy files manually, commit them into every repo, or maintain custom setup scripts. All three options drift over time.
What skul does
skul fetches a bundle source, materializes the right files into the current worktree, and records what it wrote so it can update or remove those files safely later.
Key behaviors:
- Fetch reusable bundle content from a Git repository.
- Write files into tool-native locations.
- Install a whole bundle or only selected bundle items.
- Hide those files with
.git/info/excludeinstead of modifying.gitignore. - Track desired state per repository and materialized state per worktree.
- Re-apply the same setup in fresh worktrees with
skul apply.
For root instructions, skul supports two paths:
- untracked local composition for tool-specific dotdirs and untracked root files
- tracked shadow rendering for repository-owned root instruction files
When a root instruction target is already tracked in Git, skul builds a managed overlay on top of the file's HEAD content instead of leaving a visible diff behind.
Typical use
skul add github.com/sjquant/ai-bundles react-expert
skul add react-expert --agent codex --include skills/diagnose
skul status
skul sync
skul check
skul update
If you work across multiple AI coding tools, skul gives you one bundle format and one command surface instead of separate setup flows per editor or agent.