

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# OpenProject AI Coding Agent Instructions23> **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.45## Repository Overview67**OpenProject** is a web-based, open-source project management software written in Ruby on Rails with PostgreSQL for data persistence.89- **Size**: Large monorepo (~840MB, ~1M+ lines of code)10- **Backend**: Ruby 3.4.7, Rails ~8.0.311- **Frontend**: Node.js 24.x (>= 24.15.0), npm 11.x, TypeScript12- **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/`)1516## Critical Setup Requirements1718**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.x2223### Local Development Setup2425```bash26bundle install # Install Ruby gems27cd frontend && npm ci && cd .. # Install Node packages28bundle exec rails db:migrate # Setup database29bin/dev # Start all services (Rails, frontend, Good Job worker)30# Access at http://localhost:300031```3233### Docker Development Setup3435See [`docker/dev/AGENTS.md`](docker/dev/AGENTS.md) for full Docker setup and commands.3637## Project Structure3839### Key Directories4041- `app/` — Rails application code42- `config/` — Rails configuration, routes, locales43- `db/` — Database migrations and seeds44- `docker/dev/` — Docker development environment45- `frontend/` — TypeScript/Angular/Stimulus frontend46- `lib/` — Ruby libraries and extensions47- `lookbook/` — ViewComponent previews (<https://qa.openproject-edge.com/lookbook/>)48- `modules/` — OpenProject plugin modules49- `spec/` — RSpec test suite5051### Configuration Files5253- `.ruby-version` - Ruby version54- `.rubocop.yml` - Ruby linting rules55- `.erb_lint.yml` - ERB template linting56- `frontend/eslint.config.mjs` - JavaScript/TypeScript linting57- `Gemfile` - Ruby dependencies58- `package.json` / `frontend/package.json` - Node.js dependencies59- `lefthook.yml` - Git hooks configuration6061### Linting (Run Before Committing)6263```bash64# Ruby65bundle exec rubocop # Check all files66bin/dirty-rubocop --uncommitted # Check only uncommitted changes6768# JavaScript/TypeScript69cd frontend && npx eslint src/ && cd ..7071# ERB Templates72erb_lint {files}7374# Install Git Hooks (recommended)75bundle exec lefthook install76```7778### JavaScript and TypeScript Copyright Headers7980All first-party JavaScript and TypeScript files must use the canonical compact81line-comment copyright header generated from `COPYRIGHT_short`:8283```typescript84//-- copyright85// OpenProject is an open source project management software.86// ...87//++8889```9091Use `//-- copyright` and `//++` exactly as shown. Prefix non-empty body lines92with `// `, prefix empty body lines with `//`, and leave one blank line between93the header and the source code. Do not compose or reformat the header manually.9495Run `rake copyright:update_typescript` to add or repair headers in `.ts` and96`.tsx` files. Run `rake copyright:update_js` for `.js`, `.mjs`, and `.cjs`97files. Both commands accept an optional path argument.9899## Commit Messages100- First line: < 72 characters, then blank line, then detailed description101- Reference work packages when applicable102- Merge strategy: "Merge pull request" (not squash), except single-commit PRs can use "Rebase and merge"103104## Additional Documentation105106- `docs/development/` — Development documentation107- `docs/development/running-tests/` — Testing guide108- `docs/development/code-review-guidelines/` — Code review standards109- `CONTRIBUTING.md` — Contribution workflow110- `.github/copilot-instructions.md` — Extended agent instructions with troubleshooting111
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| opf/openprojectconfig/AGENTS.md · 16k | AGENTS.md | no sections | 46/100 | 14 days ago | |
| opf/openproject.github/copilot-instructions.md · 16k | Copilot instructions | setuplint-formatgitdatabase+1 | 73/100 | 14 days ago | |
| opf/openprojectapp/AGENTS.md · 16k | AGENTS.md | stylearch | 52/100 | 14 days ago | |
| opf/openprojectdb/AGENTS.md · 16k | AGENTS.md | styledatabase | 55/100 | 14 days ago | |
| opf/openprojectdocker/dev/AGENTS.md · 16k | AGENTS.md | setuptestdatabase | 74/100 | 14 days ago | |
| opf/openprojectfrontend/AGENTS.md · 16k | AGENTS.md | setuptestlint-formatstyle+3 | 88/100 | 14 days ago | |
| opf/openprojectspec/AGENTS.md · 16k | AGENTS.md | teststylearch | 77/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| wpscanteam/wpscanAGENTS.md · 9.7k | AGENTS.md | setupbuildteststyle+6 | 100/100 | 13 days ago | |
| rails/railsAGENTS.md · 59k | AGENTS.md | teststylearchgit+4 | 100/100 | 14 days ago | |
| react/react-nativepackages/react-native-compatibility-check/AGENTS.md · 126k | AGENTS.md | testlint-formatstylearch+4 | 99/100 | 14 days ago | |
| dotCMS/corecore-web/apps/dotcms-ui/AGENTS.md · 949 | AGENTS.md | buildteststyledependencies+3 | 94/100 | 14 days ago | |
| Freika/dawarichAGENTS.md · 10k | AGENTS.md | buildtestlint-formatstyle+4 | 94/100 | today | |
| akodkod/operandiAGENTS.md · 73 | AGENTS.md | buildteststyletesting-strategy+3 | 93/100 | 14 days ago | |
| rubocop/rubocopAGENTS.md · 13k | AGENTS.md | stylearchgitagent-behaviour+1 | 90/100 | 14 days ago | |
| onevcat/KingfisherAGENTS.md · 24k | AGENTS.md | setupbuildtestlint-format+6 | 89/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/opf-openproject-agents)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.