Deployment

Team Deployment

Skills become dramatically more valuable when they are shared. A skill that one developer writes to automate a tedious workflow can save every team member hours of work β€” but only if it actually reaches them. This lesson covers the strategies for committing skills to your repository, establishing team conventions, and managing skill versions as your project evolves.

Sharing Skills via the Repository

The simplest and most effective way to share skills across a team is to commit them to the project's .claude/skills directory. When any team member starts the agent in the repository, these skills are automatically discovered and available. No manual installation, no configuration files to copy β€” they just work.

This approach has a key advantage: skills are versioned alongside the code they operate on. When you refactor a module and update its corresponding skill at the same time, both changes land in the same commit. Anyone who checks out that commit gets a skill that matches the current state of the codebase.

πŸ“my-project/
πŸ“.claude/
πŸ“skills/
πŸ“create-api-endpoint/
πŸ“„SKILL.md
πŸ“„template.ts
πŸ“„test-template.ts
πŸ“database-migration/
πŸ“„SKILL.md
πŸ“„migration-checklist.md
πŸ“component-scaffold/
πŸ“„SKILL.md
πŸ“„component-template.tsx
πŸ“„story-template.tsx
πŸ“„test-template.tsx
πŸ“review-checklist/
πŸ“„SKILL.md
πŸ“„settings.json
πŸ“src/
πŸ“„package.json

Each skill lives in its own directory under .claude/skills/, containing the SKILL.md definition plus any supporting files like templates, checklists, or example configurations. This structure keeps skills self-contained and easy to browse.

Skill Versioning Strategies

Because skills live in Git, they benefit from all the versioning tools you already use: branches, pull requests, code review, and blame history. But there are some skill-specific strategies worth adopting.

Atomic Skill-Code Updates

When you change the codebase in a way that affects how a skill should work, update the skill in the same commit or pull request. This prevents drift where a skill references patterns or conventions that no longer exist.

create-api-endpoint/SKILL.md
# Bad: skill references old pattern
---
description: Create a new API endpoint
---
# Create API Endpoint
Use the BaseController class in src/controllers/base.ts...

# Good: skill updated alongside refactor
---
description: Create a new API endpoint
---
# Create API Endpoint
Use the route handler pattern in src/app/api/...
Follow the conventions in the existing route handlers.

Pull Request Review for Skills

Treat skill changes like any other code change. Include them in pull requests and have teammates review the instructions. A poorly worded skill can cause the agent to produce incorrect output for the entire team. Reviewers should check that:

  • The skill's instructions are clear and unambiguous.
  • Any referenced file paths, patterns, or conventions actually exist.
  • The allowed-tools are appropriately scoped β€” not too broad, not too restrictive.
  • Supporting files (templates, examples) are up to date.

Establishing Team Conventions

As the number of shared skills grows, establishing naming and structural conventions prevents confusion and duplication.

Naming Conventions

Use kebab-case directory names that describe the action the skill performs. Prefix with a category when you have many skills in the same domain:

Organized skill directory
.claude/skills/
β”œβ”€β”€ api-create-endpoint/
β”œβ”€β”€ api-add-middleware/
β”œβ”€β”€ db-create-migration/
β”œβ”€β”€ db-seed-data/
β”œβ”€β”€ ui-scaffold-component/
β”œβ”€β”€ ui-add-story/
β”œβ”€β”€ test-add-unit/
β”œβ”€β”€ test-add-integration/
└── docs-generate-api/

Description Standards

Require every skill to have a clear description in its frontmatter. This is what appears in the agent's skill listing and what helps team members discover skills without reading the full instructions. A good description completes the sentence β€œThis skill will...”

ui-scaffold-component/SKILL.md (frontmatter)
---
description: Scaffold a new React component with TypeScript types, Storybook story, and unit test
allowed-tools:
  - Read
  - Write
  - Glob
---

Git Workflow for Skill Sharing

Here is a typical workflow for adding a new shared skill to a team repository:

Adding a shared skill
# Create a feature branch for the new skill $ git checkout -b feat/add-migration-skill # Create the skill directory and files $ mkdir -p .claude/skills/db-create-migration $ cat > .claude/skills/db-create-migration/SKILL.md << 'EOF' --- description: Generate a database migration with up/down methods and a test allowed-tools: - Read - Write - Glob - Bash --- # Create Database Migration Generate a new database migration file following our conventions... EOF # Test the skill locally $ claude > /db-create-migration users add-email-column # ... verify output looks correct ... # Commit and push $ git add .claude/skills/db-create-migration/ $ git commit -m "feat: add database migration skill" $ git push origin feat/add-migration-skill # Open PR for team review $ gh pr create --title "Add database migration skill" \ --body "New shared skill for generating migrations..." # After merge, every team member gets the skill automatically $ git checkout main && git pull $ claude > What skills are available? # ... db-create-migration now appears in the list ...
πŸ’‘Consistency across the team

Shared skills are one of the most powerful tools for maintaining consistency across a team. When every developer uses the same skill to create API endpoints, database migrations, or component scaffolds, the codebase converges on a uniform style without requiring manual enforcement. Unlike linters that catch deviations after the fact, skills prevent deviations by generating code correctly from the start. Invest time in crafting high-quality shared skills early β€” the consistency dividends compound as the team grows.

Onboarding New Team Members

Shared skills dramatically accelerate onboarding. A new team member does not need to memorize the project's coding conventions, directory structure, or boilerplate patterns. They clone the repo, start the agent, and immediately have access to every skill the team has built. The skills encode institutional knowledge that would otherwise live in wiki pages, onboarding documents, or tribal memory.

Consider creating a dedicated onboarding skill that walks new developers through the project structure:

onboarding-guide/SKILL.md
---
description: Walk a new team member through the project structure and conventions
allowed-tools:
  - Read
  - Glob
  - Grep
---

# Project Onboarding Guide

Welcome the new team member and provide a guided tour of the project.

## Steps

1. Read the top-level README.md and summarize the project purpose
2. Use Glob to show the high-level directory structure
3. Explain the key directories: src/api, src/models, src/ui, src/utils
4. Highlight the most important shared skills available in .claude/skills/
5. Point out the project's testing conventions (where tests live, how to run them)
6. Mention any non-obvious setup steps (environment variables, local services)

Be friendly and thorough. This may be their first day on the project.

Handling Skill Conflicts

When two team members modify the same skill on different branches, Git handles the conflict like any other text file merge. However, skill conflicts deserve extra attention because a broken merge in a skill file can produce subtly incorrect behavior that is harder to detect than a syntax error in code.

After resolving a skill merge conflict, always test the skill manually to verify it behaves as expected. Look for:

  • Duplicated instructions that contradict each other.
  • References to file paths or patterns that only exist in one branch.
  • Broken markdown formatting that might confuse the agent's parsing.

What's Next

Sharing skills within a repository works well for individual teams. The next lesson covers managed settings β€” how enterprises can distribute skills and configurations across many teams and repositories using centrally managed policies.