AI coding agent instructions for contributing to Zammad, an open-source helpdesk/customer support platform built with Rails, Vue 3, and legacy CoffeeScript frontends.
AI coding agent instructions for contributing to Zammad, an open-source helpdesk/customer support platform.
Zammad is a web-based open-source helpdesk/customer support system. It's a Ruby on Rails application with:
1. **desktop-app (legacy)** - `app/assets`
- Legacy UI using REST API + CoffeeScript/Sprockets
- Uses Spine.js MVC framework for frontend structure and state management
2. **desktop-view** - `app/frontend/apps/desktop`
- New UI using Vue + GraphQL
3. **mobile** - `app/frontend/apps/mobile`
- New UI using Vue + GraphQL
**Legacy desktop-app:**
**New desktop-view and mobile apps:**
**Backend:**
```
app/
├── assets/ # Legacy desktop-app (CoffeeScript/Sprockets)
├── frontend/ # Vue + TypeScript frontends
│ ├── apps/
│ │ ├── desktop/ # Desktop-view app
│ │ └── mobile/ # Mobile app
│ ├── shared/ # Cross-app modules (components, utils, stores, graphql, i18n)
│ └── tests/ # Vitest setup and helpers
├── controllers/ # Rails controllers
├── models/ # Rails models
├── views/ # Rails views
├── jobs/ # Background jobs
├── mailers/ # Email mailers
├── helpers/ # View helpers
├── channels/ # ActionCable channels
├── policies/ # Authorization policies
├── services/ # Business logic modules
└── graphql/ # GraphQL API definitions and resolvers
lib/ # Core extensions, helpers, integrations
├── core_ext/ # Ruby/Rails extensions
├── github/ # GitHub integration
├── gitlab/ # GitLab integration
├── microsoft_graph/ # Microsoft Graph integration
├── whatsapp/ # WhatsApp integration
├── knowledge_base/ # Knowledge base features
├── secure_mailing/ # Secure email features
└── ... (many more)
config/ # Configuration files
db/ # Database migrations and seeds
doc/developer_manual/ # Developer documentation
spec/ # RSpec tests
test/ # Legacy tests
```
Always refer to these files for authoritative setup and runtime details:
1. **Always consult the Developer Manual** (`doc/developer_manual/`) for:
- Setup instructions
- Testing guidelines
- Coding standards
- Troubleshooting
2. **Check configuration files** for:
- Tool versions
- Environment variables
- Path aliases (see `tsconfig.base.json`)
- Linting rules
3. **Keep PRs focused** and include tests for new code
**Location:** `app/assets/javascripts` and `app/assets/stylesheets`
**Guidelines:**
**Guidelines:**
1. **Use path aliases** from `tsconfig.base.json`
2. **Do not cross-import** between desktop/mobile apps (ESLint enforces boundaries)
3. **Testing:**
- Use Vitest and Testing Library for unit/component tests
- Test setup in `app/frontend/tests/`
4. **Styling:**
- Use Tailwind CSS utilities
- Lint with Stylelint and Prettier
5. **Internationalization:**
- Wrap user-facing strings
- See `eslint.config.ts` for i18n rules
6. **Shared code:**
- Place cross-app modules in `app/frontend/shared/`
- Includes: components, utils, stores, GraphQL, i18n
**Key directories:**
**lib/ directory:**
Contains essential backend functionality:
1. Determine if it belongs in desktop-view, mobile, or backend
2. If frontend, place shared code in `app/frontend/shared/`
3. Add tests (Vitest for Vue, RSpec for Rails)
4. Follow coding standards in Developer Manual
5. Ensure i18n for user-facing strings
1. Understand Spine.js MVC pattern
2. Keep changes minimal
3. Consider migrating to Vue if substantial work needed
4. Add/update QUnit tests
1. Define schema in `app/graphql/`
2. Add resolvers
3. Use Apollo Client in Vue apps
4. Test with RSpec
1. Add integration code to `lib/`
2. Follow existing patterns (see `lib/github/`, `lib/gitlab/`, etc.)
3. Add configuration in `config/`
4. Document in Developer Manual
1. **Check the Developer Manual** (`doc/developer_manual/`) - source of truth for setup, testing, standards
2. **Reference config files** - don't duplicate information
3. **Look at existing code** - follow established patterns
4. **Ask maintainers** - open an issue or discussion if unclear
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/zammad-helpdesk-development-qxcydv/raw