Reference
Contributing to CoWork OS
Synced from github.com/CoWork-OS/CoWork-OS/docs
Thank you for your interest in contributing to CoWork OS! This document provides guidelines and instructions for contributing.
Note: This entire codebase was AI-generated using modern coding agents and OpenAI Codex — no code was written manually. You may encounter AI-typical patterns, inconsistencies, or areas that could use refactoring. Fresh eyes and improvements are very welcome!
Table of Contents
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Standards
- Commit Messages
Code of Conduct
Please read and follow our Code of Conduct to keep our community approachable and respectable.
Getting Started
- Fork the repository
- Clone your fork locally
- Set up the development environment (see below)
- Create a new branch for your feature/fix
- Make your changes
- Submit a pull request
Development Setup
Prerequisites
- Node.js 24 or higher
- npm 9 or higher
- macOS or Windows (for Electron desktop features)
- Git
Installation
# Clone your fork
git clone https://github.com/YOUR_USERNAME/CoWork-OS.git
cd CoWork-OS
# Install dependencies and set up native modules
npm run setup
# Copy environment example
cp .env.example .env
# Edit .env and add your API keys
# Start development server
npm run dev
Available Scripts
npm run dev- Start development mode with hot reloadnpm run build- Build for productionnpm run package- Package the Electron appnpm run lint- Run ESLintnpm run type-check- Run TypeScript type checkingnpm test- Run testsnpm run skills:check- Run bundled skill quality checks
Releasing (Maintainers Only)
CoWork OS is published to npm for easy global installation. To release a new version:
Release Workflow
# 1. Ensure all changes are committed and tests pass
npm test
npm run type-check
# 2. Bump version (choose one)
npm version patch # 0.3.10 → 0.3.11 (bug fixes)
npm version minor # 0.3.10 → 0.4.0 (new features)
npm version major # 0.3.10 → 1.0.0 (breaking changes)
# 3. Publish to npm
npm publish
# 4. Push version commit and tag to GitHub
git push && git push --tags
Version Guidelines
- Patch (0.0.x): Bug fixes, minor improvements
- Minor (0.x.0): New features, non-breaking changes
- Major (x.0.0): Breaking changes, major rewrites
Pre-release Checklist
- All tests passing
- Type checking passes
- CHANGELOG.md updated
- README.md reflects any new features
- Run Windows npm smoke-test checklist on a clean Windows machine (x64 and/or ARM64)
- GitHub release contains desktop installer assets (
.exefor Windows,.dmgfor macOS) - No sensitive data in committed files
How to Contribute
AI-Assisted PRs Welcome!
Built with Codex, Cursor, or other AI tools? Awesome — we embrace it!
This entire codebase was AI-generated, so AI-assisted contributions are first-class citizens here. Just be transparent:
- Mark as AI-assisted in your PR title or description
- Note your testing level (untested / lightly tested / fully tested)
- Confirm you understand what the code does
- Include prompts or session logs if helpful for reviewers
We just want transparency so reviewers know what to look for. Don't be shy about using AI — it's how this project was built!
Reporting Bugs
Before creating a bug report, please check existing issues to avoid duplicates.
When filing a bug report, include:
- A clear, descriptive title
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Your environment (OS version, Node version, etc.)
- Screenshots if applicable
- Any relevant logs or error messages
Suggesting Features
Feature suggestions are welcome! Please:
- Check existing issues/discussions first
- Provide a clear use case
- Explain why this feature would be useful
- Consider the scope and implementation complexity
Code Contributions
Areas where help is especially needed:
- VM sandbox implementation using macOS Virtualization.framework
- Additional MCP server integrations
- Enhanced document creation (proper Excel/Word/PowerPoint libraries)
- Network security controls
- Sub-agent coordination
- Test coverage
- Documentation improvements
Pull Request Process
-
Create a branch from
mainwith a descriptive name:feature/add-new-skillfix/file-permission-issuedocs/update-readme
-
Make your changes following our coding standards
-
Test your changes thoroughly
- If you changed bundled skills under
resources/skills/, runnpm run skills:check
- If you changed bundled skills under
-
Update documentation if needed
-
Submit a PR with:
- Clear title and description
- Reference to related issues
- Screenshots for UI changes
- List of changes made
-
Address review feedback promptly
PR Requirements
- Code follows the project's style guidelines
- All existing tests pass
- New code includes appropriate tests (when applicable)
- Documentation has been updated
- Commit messages follow conventions
- No sensitive data (API keys, credentials) included
Coding Standards
TypeScript
- Use TypeScript strict mode
- Prefer
constoverlet - Use meaningful variable and function names
- Add type annotations for function parameters and return types
- Avoid
anytype when possible
React
- Use functional components with hooks
- Keep components small and focused
- Use descriptive prop names
- Handle loading and error states
File Organization
src/
├── electron/ # Main process code
│ ├── agent/ # Agent orchestration
│ │ ├── llm/ # LLM provider abstraction
│ │ ├── search/ # Web search providers
│ │ ├── tools/ # Tool implementations
│ │ └── skills/ # Document creation skills
│ ├── database/ # SQLite operations
│ ├── mcp/ # Model Context Protocol
│ │ ├── client/ # MCP client (connect to servers)
│ │ ├── host/ # MCP host (expose tools)
│ │ └── registry/ # MCP server registry
│ └── ipc/ # IPC handlers
├── renderer/ # React UI
│ ├── components/ # React components
│ └── styles/ # CSS files
└── shared/ # Shared types and utilities
CSS
- Use CSS custom properties (variables) for theming
- Follow BEM-like naming conventions
- Keep styles scoped to components
Commit Messages
Follow conventional commits format:
type(scope): description
[optional body]
[optional footer]
Types
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples
feat(agent): add support for parallel tool execution
fix(ui): resolve task list scrolling issue on long lists
docs(readme): update installation instructions for M1 Macs
Questions?
Feel free to:
- Open a Discussion for questions
- Tag maintainers in issues for guidance
Thank you for contributing to CoWork OS!