Welcome Contributors
Impeccable is an open-source project that provides design-focused skills and commands for AI-powered development tools. We welcome contributions that help improve design fluency across Cursor, Claude Code, Gemini CLI, and Codex CLI.Quick Start
Prerequisites
- Bun: Fast JavaScript runtime and package manager
- No external dependencies required
Get the Code
Build the Project
Test Locally
Project Structure
Impeccable uses a feature-rich source format that transforms into provider-specific formats:- Source files (
source/): Single source of truth with full metadata - Build system (
scripts/): Transforms source to provider-specific formats - Distribution (
dist/): Generated output files for 4 providers (committed for users)
Key Directories
Types of Contributions
Adding Skills
Skills are reusable instruction sets for the AI. See Adding Content for details.Adding Commands
Commands are quick prompts users can invoke. See Adding Content for details.Improving Documentation
Documentation improvements are always welcome, whether fixing typos or adding examples.Bug Fixes
Found a bug? Submit a PR with:- Description of the issue
- Steps to reproduce
- Your fix with tests if applicable
Website Improvements
The impeccable.style website uses vanilla JavaScript and modern CSS. Improvements to design, performance, or functionality are welcome.Development Workflow
1. Create a Branch
2. Make Changes
Edit files insource/ directory only. Never edit dist/ directly.
3. Build and Test
4. Commit Both Source and Dist
Thedist/ directory is committed intentionally so end users can use files without building:
5. Submit a Pull Request
Push your branch and open a PR with:- Clear description of changes
- Rationale for the change
- Testing you’ve done
Best Practices
Command Writing
- Clear descriptions: Make purpose obvious
- Meaningful argument names: Use descriptive names
- Flexible prompts: Write prompts that work even without argument substitution (for Cursor compatibility)
- Test across providers: Verify it works in multiple contexts
Skill Writing
- Focused scope: One clear domain per skill
- Clear instructions: LLM should understand exactly what to do
- Include examples: Where they clarify intent
- State constraints: What NOT to do as clearly as what to do
Code Quality
- Keep transformer functions focused (30-85 lines each)
- Use descriptive variable names
- Add comments for complex logic
- Follow existing code style
Testing
Test your changes with at least one provider:- Build the project
- Copy the relevant
dist/output to your test project - Verify the skill/command works as expected
- Check edge cases (missing arguments, unusual inputs)
Getting Help
Need help? Here’s where to go:- Architecture questions: See Architecture
- Build system questions: See Build System
- Adding content: See Adding Content
- General questions: Open an issue on GitHub
Code of Conduct
Be respectful, inclusive, and constructive. We’re all here to make better tools for designers and developers.License
By contributing, you agree that your contributions will be licensed under the same license as the project.Related Documentation
- Architecture - System architecture details
- Adding Content - How to add skills and commands
- Build System - Build system internals
