Contributing to Wasla
June 6, 2026 ยท View on GitHub
We're excited to have you contribute to Wasla! This document outlines how to get started.
๐ค The Team
Wasla is developed by The Untitled Org:
- @inegmdev (Islam NEGM)
- @mustafabahaa (Mustafa Bahaaeldeen)
- @MoSaeedHammad (Mohamed SAEED HAMMAD)
๐ Getting Started
Prerequisites
- Node.js >= 24.0.0
- npm or yarn
Setup
git clone https://github.com/The-Untitled-Org/wasla.git
cd wasla
npm install
npm run visualizer:install
npm run build
๐ ๏ธ Development Workflow
Available Commands
# Build
npm run build
# Development (watch mode)
npm run dev
# Testing
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:unit # Unit tests only
npm run test:integration # Integration tests only
npm run test:validation # E2E validation tests
# Code Quality
npm run type:check # TypeScript type checking
npm run format:check # Check code formatting
npm run format # Fix code formatting
npm run lint:check # Lint check
npm run lint:fix # Fix linting issues
npm run check # Run all checks
# Documentation
npm run docs # Start docs server
npm run docs:build # Build docs for production
# Utility
npm run clean # Remove dist and coverage directories
npm run all # Clean, build, check, and test
๐ Code Standards
- TypeScript: All code must be strictly typed (
strict: true) - Formatting: Code is formatted with Prettier
- Imports: Use path aliases (
@core,@adapters, etc.) instead of relative imports - No Unused Code: All unused variables and parameters are flagged as errors
- Comments: Only add comments for non-obvious logic
Path Aliases
Use these in your imports for cleaner code:
// โ
Good
import { RegistryManager } from '@core/registry';
import { Scanner } from '@syncer/scanner';
import { getAdapter } from '@adapters/factory';
import { writeText } from '@utils/fs';
// โ Avoid
import { RegistryManager } from '@core/registry';
import { Scanner } from '@syncer/scanner';
๐งช Testing
All tests must pass before submitting a PR:
npm run check # TypeScript + Prettier
npm test # All tests
npm run test:coverage # With coverage report
Test Organization
tests/unit/โ Unit tests for individual modulestests/integration/โ Tests for module interactionstests/validation/โ E2E validation of complete workflows
๐ Documentation
Documentation lives in docs/docs/ and is built with Docusaurus.
Key documents:
01-project-spec.mdโ Product specification02-design-discussion.mdโ Design decisions and rationale03-meetings-of-mind.mdโ Meeting notes
To contribute docs:
npm run docs # Start dev server at localhost:3000
npm run docs:build # Build for production
๐ Git Workflow
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run
npm run checkandnpm testto ensure quality - Commit with a clear message:
git commit -m "Add my feature" - Push to your fork:
git push origin feature/my-feature - Open a Pull Request against
main
Commit Message Guidelines
- Use clear, descriptive messages
- Reference issues when applicable:
Fixes #123 - Use conventional commits:
feat:,fix:,docs:,test:,refactor:
Example:
feat: add conflict resolution with latest-is-greatest strategy
This implements timestamp-based conflict resolution where the most
recently modified file becomes the origin.
Fixes #45
๐ Reporting Issues
Found a bug? Have a feature request?
- Bugs: Create an issue with steps to reproduce
- Features: Describe the use case and expected behavior
- Questions: Use discussions for questions about usage
๐ Architecture
Project Structure
apps/
โโโ cli/src/ # Command-line interface and visualizer server
โโโ visualizer/src/ # React visualizer
packages/
โโโ adapters/src/ # Tool-specific adapters
โโโ core/src/ # Core logic (registry, scanner, types)
โโโ shared/src/ # Shared config, filesystem, and path helpers
โโโ sync/src/ # Sync orchestration and file watcher
Key Concepts
- Registry: JSON file tracking all discovered assets and their sync state
- Scanner: Detects tools and discovers agent/MCP files
- Adapter: Tool-specific implementation for stub writing
- Syncer: Orchestrates the sync process
- Daemon: Watches for changes and auto-syncs (via chokidar)
๐ค Need Help?
- Check existing issues and discussions
- Read the Project Spec
- Review Design Discussion
- Join discussions on GitHub
๐ License
This project is licensed under the MIT License โ see LICENSE for details.
Community Standards
- Read the Code of Conduct before participating.
- Report suspected vulnerabilities privately according to the Security Policy.
Thanks for contributing to Wasla! ๐