Thank you for your interest in contributing to SkillKit! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
- Node.js 18+
- pnpm 8+ (recommended) or npm/yarn
- Git
-
Fork the repository
Click the "Fork" button on GitHub to create your own copy.
-
Clone your fork
git clone https://github.com/YOUR_USERNAME/skillkit.git cd skillkit -
Install dependencies
pnpm install
-
Build the project
pnpm build
-
Run tests
pnpm test -
Link for local development
cd apps/skillkit pnpm link --globalNow you can use
skillkitcommand globally to test your changes.
skillkit/
├── apps/
│ └── skillkit/ # Main CLI entry point
├── packages/
│ ├── core/ # @skillkit/core - Shared logic
│ │ ├── discovery/ # Skill discovery
│ │ ├── parser/ # SKILL.md parsing
│ │ ├── translator/ # Cross-agent translation
│ │ ├── context/ # Project context sync
│ │ └── recommend/ # Recommendation engine
│ ├── cli/ # @skillkit/cli - Commands
│ ├── tui/ # @skillkit/tui - Terminal UI
│ └── agents/ # @skillkit/agents - Agent adapters
├── docs/ # Documentation
└── README.md
Use descriptive branch names:
feature/skill-translation- New featuresfix/cursor-adapter-path- Bug fixesdocs/api-reference- Documentationrefactor/core-types- Code refactoring
-
Create a new branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
-
Run checks locally
# Build all packages pnpm build # Run tests pnpm test # Type check pnpm typecheck # Lint (if configured) pnpm lint
-
Commit your changes
Write clear, descriptive commit messages:
git commit -m "feat: add skill translation for Windsurf agent" git commit -m "fix: resolve path resolution in Windows" git commit -m "docs: add API reference for RecommendationEngine"
We follow Conventional Commits:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesrefactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
-
Push your branch
git push origin feature/your-feature-name
-
Open a Pull Request
- Provide a clear description of the changes
- Reference any related issues
- Ensure CI checks pass
When reporting bugs, please include:
- SkillKit version (
skillkit --version) - Node.js version (
node --version) - Operating system
- Steps to reproduce
- Expected vs actual behavior
- Relevant error messages or logs
For feature requests, please describe:
- The problem you're trying to solve
- Your proposed solution
- Alternative approaches you've considered
- Any relevant examples or mockups
To add support for a new AI coding agent:
-
Create an adapter in
packages/agents/src/adapters/// packages/agents/src/adapters/new-agent.ts import type { AgentAdapter, Skill } from '../types.js'; export const newAgentAdapter: AgentAdapter = { type: 'new-agent', name: 'New Agent', configFile: 'AGENTS.md', skillsDir: '.new-agent/skills/', globalSkillsDir: '~/.new-agent/skills/', generateConfig(skills: Skill[]): string { // Generate config content }, detectPresence(): boolean { // Check if agent is present }, };
-
Register the adapter in
packages/agents/src/adapters/index.ts -
Add translator support in
packages/core/src/translator/if the agent uses a unique format -
Add tests for the new adapter
-
Update documentation
If you want to contribute skills to the ecosystem:
- Follow the Agent Skills specification
- Include a
SKILL.mdwith proper frontmatter - Test with multiple agents using
skillkit translate - Submit to the appropriate skill repository
- Use TypeScript for all new code
- Define explicit types for function parameters and return values
- Use interfaces for object shapes
- Prefer
constoverlet
- One export per file when possible
- Group related functionality in directories
- Use
index.tsfiles for clean exports
- Write unit tests for new functionality
- Use descriptive test names
- Test edge cases and error conditions
describe('RecommendationEngine', () => {
it('should score skills based on framework match', () => {
// Test implementation
});
it('should return empty array when no skills match', () => {
// Test implementation
});
});- Code builds without errors (
pnpm build) - All tests pass (
pnpm test) - New code has appropriate test coverage
- Documentation is updated if needed
- Commit messages follow conventions
## Summary
Brief description of the changes.
## Changes
- Change 1
- Change 2
## Testing
How were these changes tested?
## Related Issues
Fixes #123- A maintainer will review your PR
- Address any requested changes
- Once approved, the PR will be merged
Releases are managed by maintainers. The process includes:
- Version bump in package.json files
- Changelog update
- Git tag creation
- npm publish
- GitHub Issues: For bugs and feature requests
- Discussions: For questions and ideas
- Documentation: Check the README and docs/
By contributing to SkillKit, you agree that your contributions will be licensed under the Apache License 2.0.
Thank you for contributing to SkillKit!