Getting Started
Development Workflow
Running Tests
Code Formatting
Project Architecture
Understanding the codebase structure:Adding a New Agent
To add support for a new coding agent:Key Concepts
Lock File System
The Skills CLI uses two types of lock files:- Global Lock
- Local Lock
Location:
~/.agents/.skill-lock.jsonTracks all globally installed skills with:- Source repository
- Skill path within repository
- Version hash (
skillFolderHash) - Install/update timestamps
Update Checking
Thecheck and update commands work by:
- Reading
~/.agents/.skill-lock.jsonfor installed skills - Fetching fresh content from GitHub for each skill
- Computing the GitHub tree SHA for the skill folder
- Comparing with
skillFolderHashin lock file - Reporting skills with different hashes as updates
Both commands use
forceRefresh: true to bypass caching and ensure accurate update detection. This prevents “phantom updates” from stale cached hashes.Skill Discovery
The CLI searches for skills in multiple locations (seesrc/skills.ts):
- Root directory (if contains
SKILL.md) skills/and subdirectories (.curated/,.experimental/,.system/)- Agent-specific directories (
.claude/skills/,.cursor/skills/, etc.) - Plugin manifest declarations (
.claude-plugin/marketplace.json)
Testing Guidelines
When adding new features:Write comprehensive tests
Write comprehensive tests
- Add test files in
tests/directory - Follow existing naming convention:
feature-name.test.ts - Test both success and failure cases
- Use test utilities from
src/test-utils.ts
Test file operations
Test file operations
- Use temporary directories for file system tests
- Clean up test files after each test
- Test symlink and copy modes separately
- Verify cross-platform compatibility
Test parsing and validation
Test parsing and validation
- Test valid and invalid YAML frontmatter
- Test edge cases (missing fields, wrong types)
- Test special characters in skill names
- Test path traversal prevention
Pull Request Guidelines
Create a focused PR
- Keep changes focused on a single feature or fix
- Write clear, descriptive commit messages
- Reference related issues in PR description
Update documentation
- Update README.md if adding user-facing features
- Add comments for complex logic
- Update AGENTS.md for architecture changes
Code Style
- Use TypeScript for all code
- Follow existing patterns in the codebase
- Prefer async/await over callbacks
- Use descriptive variable names
- Add JSDoc comments for exported functions
- Keep functions small and focused
Publishing
For maintainers, the publish process is:Community
GitHub Issues
Report bugs or request features
Skills Directory
Browse and share skills
Agent Skills Spec
Learn about the specification
Vercel Agent Skills
Example skills repository
Questions?
If you have questions about contributing:- Check existing GitHub Issues
- Review the AGENTS.md file for architecture guidance
- Look at recent pull requests for examples