| Dimension | Shared | Only in A | Only in B | Overlap |
|---|---|---|---|---|
| Sections | 1 | 5 | 15 | 5% |
| Commands | 0 | 0 | 6 | 0% |
| Section tags | 1 | 1 | 6 | 13% |
What each file covers
Sections
1 shared · 5 only in A · 15 only in B- − App
- − Directory Structure
- − Code Style Guidelines
- − Templates
- − Translations
- + OpenProject AI Coding Agent Instructions
- + Repository Overview
- + Critical Setup Requirements
- + Local Development Setup
- + Access at http://localhost:3000
- + Docker Development Setup
- + Project Structure
- + Key Directories
- + Configuration Files
- + Linting (Run Before Committing)
- + JavaScript/TypeScript
- + ERB Templates
- + Install Git Hooks (recommended)
- + Commit Messages
- + Additional Documentation
- Ruby
Commands
0 shared · 0 only in A · 6 only in B- + bundle install
- + bundle exec rails db:migrate
- + bundle exec rubocop
- + bundle exec lefthook install
- + docker/dev/AGENTS.md
- + docker/dev/
Section tags
1 shared · 1 only in A · 6 only in B- − code-style
- + setup
- + lint-format
- + types
- + git-pr
- + agent-behaviour
- + docs
- architecture
Line diff
opf/openproject · app/AGENTS.md
@@ −1 @@
1# App
2
3## Directory Structure
4
5- `app/components/` - ViewComponent-based UI components (Ruby + ERB)
6- `app/contracts/` - Validation and authorization contracts
7- `app/controllers/` - Rails controllers
8- `app/models/` - ActiveRecord models
9- `app/services/` - Service objects (business logic)
10- `app/workers/` - Background job workers
11
12## Code Style Guidelines
13
14### Ruby
15- Follow [Ruby community style guide](https://github.com/bbatsov/ruby-style-guide)
16- Use service objects for complex business logic (return `ServiceResult`)
17- Use contracts for validation and authorization
18- Keep controllers thin, models focused
19- Document with [YARD](https://yardoc.org/)
20- Write RSpec tests for all new features
21- **Work package identifiers**: `WorkPackage.find("PROJ-42")` resolves semantic identifiers transparently. Use `find_by_display_id` only when input could legitimately be numeric OR semantic (controllers, URL-driven components, macro resolvers). Low-level code (queries, filters, services) should stick to `find_by(id:)` with primary keys. See `app/models/work_package/semantic_identifier/finder_methods.rb`.
22
23### Templates
24- Use ERB for server-rendered views
25- Use ViewComponents for reusable UI (with Lookbook previews)
26- Lint with erb_lint before committing
27
28## Translations
29
30- UI strings must use translation keys (never hard-coded)
31
opf/openproject · AGENTS.md
@@ +1 @@
1# OpenProject AI Coding Agent Instructions
2
3> **Note for developers**: You can create `AGENTS.local.md` (or `CLAUDE.local.md`) in this directory to add your own custom instructions or preferences for AI coding agents. These files are git-ignored and will not be committed to the repository.
4
5## Repository Overview
6
7**OpenProject** is a web-based, open-source project management software written in Ruby on Rails with PostgreSQL for data persistence.
8
9- **Size**: Large monorepo (~840MB, ~1M+ lines of code)
10- **Backend**: Ruby 3.4.7, Rails ~8.0.3
11- **Frontend**: Node.js 24.x (>= 24.15.0), npm 11.x, TypeScript
12- **Database**: PostgreSQL (required)
13- **Architecture**: Server-rendered HTML with Hotwire (Turbo + Stimulus). Legacy Angular components exist and are being migrated to custom elements. Uses GitHub's Primer Design System via ViewComponent.
14- **Editions**: Community, Enterprise (SSO, LDAP, SCIM), and BIM (construction industry, code in `modules/bim/`)
15
16## Critical Setup Requirements
17
18**ALWAYS verify versions before building:**
19- Ruby: `3.4.7` (see `.ruby-version`)
20- Node: `^24.15.0` (see `package.json` engines)
21- Bundler: Latest 2.x
22
23### Local Development Setup
24
25```bash
26bundle install # Install Ruby gems
27cd frontend && npm ci && cd .. # Install Node packages
28bundle exec rails db:migrate # Setup database
29bin/dev # Start all services (Rails, frontend, Good Job worker)
30# Access at http://localhost:3000
31```
32
33### Docker Development Setup
34
35See [`docker/dev/AGENTS.md`](docker/dev/AGENTS.md) for full Docker setup and commands.
36
37## Project Structure
38
39### Key Directories
40
41- `app/` — Rails application code
42- `config/` — Rails configuration, routes, locales
43- `db/` — Database migrations and seeds
44- `docker/dev/` — Docker development environment
45- `frontend/` — TypeScript/Angular/Stimulus frontend
46- `lib/` — Ruby libraries and extensions
47- `lookbook/` — ViewComponent previews (<https://qa.openproject-edge.com/lookbook/>)
48- `modules/` — OpenProject plugin modules
49- `spec/` — RSpec test suite
50
51### Configuration Files
52
53- `.ruby-version` - Ruby version
54- `.rubocop.yml` - Ruby linting rules
55- `.erb_lint.yml` - ERB template linting
56- `frontend/eslint.config.mjs` - JavaScript/TypeScript linting
57- `Gemfile` - Ruby dependencies
58- `package.json` / `frontend/package.json` - Node.js dependencies
59- `lefthook.yml` - Git hooks configuration
60
61### Linting (Run Before Committing)
62
63```bash
64# Ruby
65bundle exec rubocop # Check all files
66bin/dirty-rubocop --uncommitted # Check only uncommitted changes
67
68# JavaScript/TypeScript
69cd frontend && npx eslint src/ && cd ..
70
71# ERB Templates
72erb_lint {files}
73
74# Install Git Hooks (recommended)
75bundle exec lefthook install
76```
77
78## Commit Messages
79- First line: < 72 characters, then blank line, then detailed description
80- Reference work packages when applicable
81- Merge strategy: "Merge pull request" (not squash), except single-commit PRs can use "Rebase and merge"
82
83## Additional Documentation
84
85- `docs/development/` — Development documentation
86- `docs/development/running-tests/` — Testing guide
87- `docs/development/code-review-guidelines/` — Code review standards
88- `CONTRIBUTING.md` — Contribution workflow
89- `.github/copilot-instructions.md` — Extended agent instructions with troubleshooting
90
@@ −1 +1 @@
1−# App
1+# OpenProject AI Coding Agent Instructions
22
3−## Directory Structure
3+> **Note for developers**: You can create `AGENTS.local.md` (or `CLAUDE.local.md`) in this directory to add your own custom instructions or preferences for AI coding agents. These files are git-ignored and will not be committed to the repository.
44
5−- `app/components/` - ViewComponent-based UI components (Ruby + ERB)
6−- `app/contracts/` - Validation and authorization contracts
7−- `app/controllers/` - Rails controllers
8−- `app/models/` - ActiveRecord models
9−- `app/services/` - Service objects (business logic)
10−- `app/workers/` - Background job workers
5+## Repository Overview
116
12−## Code Style Guidelines
7+**OpenProject** is a web-based, open-source project management software written in Ruby on Rails with PostgreSQL for data persistence.
138
14−### Ruby
15−- Follow [Ruby community style guide](https://github.com/bbatsov/ruby-style-guide)
16−- Use service objects for complex business logic (return `ServiceResult`)
17−- Use contracts for validation and authorization
18−- Keep controllers thin, models focused
19−- Document with [YARD](https://yardoc.org/)
20−- Write RSpec tests for all new features
21−- **Work package identifiers**: `WorkPackage.find("PROJ-42")` resolves semantic identifiers transparently. Use `find_by_display_id` only when input could legitimately be numeric OR semantic (controllers, URL-driven components, macro resolvers). Low-level code (queries, filters, services) should stick to `find_by(id:)` with primary keys. See `app/models/work_package/semantic_identifier/finder_methods.rb`.
9+- **Size**: Large monorepo (~840MB, ~1M+ lines of code)
10+- **Backend**: Ruby 3.4.7, Rails ~8.0.3
11+- **Frontend**: Node.js 24.x (>= 24.15.0), npm 11.x, TypeScript
12+- **Database**: PostgreSQL (required)
13+- **Architecture**: Server-rendered HTML with Hotwire (Turbo + Stimulus). Legacy Angular components exist and are being migrated to custom elements. Uses GitHub's Primer Design System via ViewComponent.
14+- **Editions**: Community, Enterprise (SSO, LDAP, SCIM), and BIM (construction industry, code in `modules/bim/`)
2215
23−### Templates
24−- Use ERB for server-rendered views
25−- Use ViewComponents for reusable UI (with Lookbook previews)
26−- Lint with erb_lint before committing
16+## Critical Setup Requirements
2717
28−## Translations
18+**ALWAYS verify versions before building:**
19+- Ruby: `3.4.7` (see `.ruby-version`)
20+- Node: `^24.15.0` (see `package.json` engines)
21+- Bundler: Latest 2.x
2922
30−- UI strings must use translation keys (never hard-coded)
23+### Local Development Setup
24+
25+```bash
26+bundle install # Install Ruby gems
27+cd frontend && npm ci && cd .. # Install Node packages
28+bundle exec rails db:migrate # Setup database
29+bin/dev # Start all services (Rails, frontend, Good Job worker)
30+# Access at http://localhost:3000
31+```
32+
33+### Docker Development Setup
34+
35+See [`docker/dev/AGENTS.md`](docker/dev/AGENTS.md) for full Docker setup and commands.
36+
37+## Project Structure
38+
39+### Key Directories
40+
41+- `app/` — Rails application code
42+- `config/` — Rails configuration, routes, locales
43+- `db/` — Database migrations and seeds
44+- `docker/dev/` — Docker development environment
45+- `frontend/` — TypeScript/Angular/Stimulus frontend
46+- `lib/` — Ruby libraries and extensions
47+- `lookbook/` — ViewComponent previews (<https://qa.openproject-edge.com/lookbook/>)
48+- `modules/` — OpenProject plugin modules
49+- `spec/` — RSpec test suite
50+
51+### Configuration Files
52+
53+- `.ruby-version` - Ruby version
54+- `.rubocop.yml` - Ruby linting rules
55+- `.erb_lint.yml` - ERB template linting
56+- `frontend/eslint.config.mjs` - JavaScript/TypeScript linting
57+- `Gemfile` - Ruby dependencies
58+- `package.json` / `frontend/package.json` - Node.js dependencies
59+- `lefthook.yml` - Git hooks configuration
60+
61+### Linting (Run Before Committing)
62+
63+```bash
64+# Ruby
65+bundle exec rubocop # Check all files
66+bin/dirty-rubocop --uncommitted # Check only uncommitted changes
67+
68+# JavaScript/TypeScript
69+cd frontend && npx eslint src/ && cd ..
70+
71+# ERB Templates
72+erb_lint {files}
73+
74+# Install Git Hooks (recommended)
75+bundle exec lefthook install
76+```
77+
78+## Commit Messages
79+- First line: < 72 characters, then blank line, then detailed description
80+- Reference work packages when applicable
81+- Merge strategy: "Merge pull request" (not squash), except single-commit PRs can use "Rebase and merge"
82+
83+## Additional Documentation
84+
85+- `docs/development/` — Development documentation
86+- `docs/development/running-tests/` — Testing guide
87+- `docs/development/code-review-guidelines/` — Code review standards
88+- `CONTRIBUTING.md` — Contribution workflow
89+- `.github/copilot-instructions.md` — Extended agent instructions with troubleshooting
3190
