Skip to main content

Project Skills

Run skillshare at the project level — skills scoped to a single repository, shared via git.

When does this matter?

Use project skills when your team needs repo-specific AI instructions (coding standards, deployment guides, API conventions) that shouldn't be in your personal global skill collection.

Usage Scenarios

ScenarioExample
Monorepo onboardingNew developer clones repo, runs skillshare install -p && skillshare sync — instant project context
API conventionsEmbed API style guides as skills so every AI assistant follows team conventions
Domain-specific contextFinance app with regulatory rules, healthcare app with compliance guidelines
Project toolingCI/CD deployment knowledge, testing patterns, migration scripts specific to this repo
Onboarding acceleration"How does auth work here?" — the AI already knows, from committed project skills
Open source projectsMaintainers commit .skillshare/ so contributors get project-specific AI context on clone
Community skill curationA repo's registry.yaml serves as a curated skill list — anyone can install -p to get the same setup

Overview


Auto-Detection

skillshare automatically enters project mode when .skillshare/config.yaml exists in the current directory:

cd my-project/           # Has .skillshare/config.yaml
skillshare sync # → Project mode (auto-detected)
skillshare status # → Project mode (auto-detected)
Zero Config

Just cd into any project with .skillshare/ — skillshare detects it automatically. No flags, no environment variables, no configuration needed.

To force a specific mode:

skillshare sync -p       # Force project mode
skillshare sync -g # Force global mode

Global vs Project

Global ModeProject Mode
Source~/.config/skillshare/skills/.skillshare/skills/ (project root)
Config~/.config/skillshare/config.yaml.skillshare/config.yaml
TargetsSystem-wide AI CLI directoriesPer-project directories
Sync modeMerge, copy, or symlink (per-target)Merge, copy, or symlink (per-target, default merge)
Tracked reposSupported (--track)Supported (--track -p)
Git integrationOptional (push/pull)Skills committed directly to project repo
ScopeAll projects on machineSingle repository

.skillshare/ Directory Structure

<project-root>/
├── .skillshare/
│ ├── config.yaml # Targets + settings
│ ├── registry.yaml # Remote skills list (auto-managed)
│ ├── .gitignore # Ignores logs/ and cloned remote/tracked skill dirs
│ └── skills/
│ ├── my-local-skill/ # Created manually or via `skillshare new`
│ │ └── SKILL.md
│ ├── remote-skill/ # Installed via `skillshare install -p`
│ │ ├── SKILL.md
│ │ └── .skillshare-meta.json
│ ├── tools/ # Category folder (via --into tools)
│ │ └── pdf/ # Installed via `skillshare install ... --into tools -p`
│ │ ├── SKILL.md
│ │ └── .skillshare-meta.json
│ └── _team-skills/ # Installed via `skillshare install --track -p`
│ ├── .git/ # Git history preserved
│ ├── frontend/ui/
│ └── backend/api/
├── .claude/
│ └── skills/
│ ├── my-local-skill → ../../.skillshare/skills/my-local-skill
│ ├── remote-skill → ../../.skillshare/skills/remote-skill
│ ├── tools__pdf → ../../.skillshare/skills/tools/pdf
│ ├── _team-skills__frontend__ui → ../../.skillshare/skills/_team-skills/frontend/ui
│ └── _team-skills__backend__api → ../../.skillshare/skills/_team-skills/backend/api
└── .cursor/
└── skills/
└── (same symlink structure as .claude/skills/)

Config Format

.skillshare/config.yaml:

targets:
- claude # Known target (uses default path)
- cursor # Known target
- name: custom-ide # Custom target with explicit path
path: ./tools/ide/skills
mode: symlink # Optional: "merge" (default), "copy", or "symlink"
- name: codex # Optional filters (merge mode)
include: [codex-*]
exclude: [codex-experimental-*]

Targets support two formats:

  • Short: Just the target name (e.g., claude). Uses known default path, merge mode.
  • Long: Object with name, optional path, optional mode (merge, copy, or symlink), and optional include/exclude filters. Supports relative paths (resolved from project root) and ~ expansion.

Remote skill installations are tracked in a separate file, .skillshare/registry.yaml:

# .skillshare/registry.yaml (auto-managed by install/uninstall)
skills:
- name: pdf-skill
source: anthropic/skills/pdf
- name: _team-skills
source: github.com/team/skills
tracked: true # Tracked repo: cloned with git history

Skills list tracks remote installations only. Local skills don't need entries here.

  • tracked: true: Installed with --track (git repo with .git/ preserved). When someone runs skillshare install -p, tracked skills are cloned with full git history so skillshare update works correctly.
Portable Skill Manifest

config.yaml and registry.yaml together form a portable skill manifest in both global and project mode. In a project, commit them to git and anyone can run skillshare install -p && skillshare sync. For global mode, copy both files to a new machine and run skillshare install && skillshare sync. This works for teams, open source contributors, community templates, and dotfiles across machines.


Mode Restrictions

Project mode has some intentional limitations:

FeatureSupported?Notes
Merge sync modeDefault, per-skill symlinks
Copy sync modePer-target via skillshare target <name> --mode copy -p
Symlink sync modePer-target via skillshare target <name> --mode symlink -p
--track reposCloned to .skillshare/skills/_repo/, added to .gitignore (logs/ is also ignored by default)
--discoverDetect and add new targets to existing project config
push / pullUse git directly on the project repo
collectCollect local skills from project targets to .skillshare/skills/
backup / restoreNot needed (project targets are reproducible)

When to Use: Project vs Organization

NeedUse
Skills specific to one repo (API style, deployment, domain rules)Project skills — committed to the repo
Skills shared across all projects (coding standards, security audit)Organization skills — tracked repos via --track
Onboarding a new member to a specific projectProject skills — clone + install + sync
Onboarding a new member to the organizationOrganization skills — one install command
Both repo context and org standardsUse both — they coexist independently

See Also