RuleStack

Configs

Stacks

Compare

Diff

RuleStack

Configs

Stacks

Compare

Diff

Read API

RuleStack

Configs

Stacks

Compare

Diff

Read API

Diff/opf-openproject-app-agents ↔ opf-openproject-agents

Comparison

A · AGENTS.md · opf/openprojectB · AGENTS.md · opf/openproject
What each file covers, counted
DimensionSharedOnly in AOnly in BOverlap
Sections15155%
Commands0060%
Section tags11613%

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

+82 added−23 removed8 unchanged8.9% identical
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  
RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack

RuleStack

Built by

Kynth Studio

Directory

Configs
Stacks
Compare formats
Diff two configs
Best AGENTS.md examples

Formats

AGENTS.md
CLAUDE.md
Cursor rules
Copilot instructions

Reference

Read API
Corpus health
Privacy Policy
Terms

RuleStack