|
| 1 | +# Contributing |
| 2 | + |
| 3 | +## Language |
| 4 | + |
| 5 | +All code, comments, documentation, and commit messages must be in **English**. |
| 6 | + |
| 7 | +## Commit Messages |
| 8 | + |
| 9 | +Use the format: `<type>: <short description>` |
| 10 | + |
| 11 | +Allowed types: |
| 12 | + |
| 13 | +| Type | When to use | |
| 14 | +|------|-------------| |
| 15 | +| `feat` | New feature or tool | |
| 16 | +| `fix` | Bug fix | |
| 17 | +| `docs` | Documentation only | |
| 18 | +| `chore` | Maintenance (deps, config, build) | |
| 19 | +| `refactor` | Code restructure, no behavior change | |
| 20 | +| `test` | Adding or updating tests | |
| 21 | + |
| 22 | +Examples: |
| 23 | + |
| 24 | +``` |
| 25 | +feat: add ckan_group_search tool |
| 26 | +fix: handle timeout errors in datastore queries |
| 27 | +docs: update Docker setup instructions |
| 28 | +``` |
| 29 | + |
| 30 | +Keep the subject line under 72 characters. No period at the end. |
| 31 | + |
| 32 | +## Project Structure |
| 33 | + |
| 34 | +``` |
| 35 | +ckan-mcp-server/ |
| 36 | +├── src/ # Source code (TypeScript) |
| 37 | +├── tests/ # Test suite |
| 38 | +├── docs/ # Documentation |
| 39 | +├── docker/ # Core Docker files (Dockerfile, compose, bridge) |
| 40 | +├── examples/ # Community integrations (one subfolder per integration) |
| 41 | +│ └── <name>/ |
| 42 | +│ └── README.md |
| 43 | +├── openspec/ # Spec-driven change proposals |
| 44 | +└── scripts/ # Utility scripts |
| 45 | +``` |
| 46 | + |
| 47 | +Place files in the right folder. Do not add new files to the repo root unless they are standard top-level files (README, LICENSE, Dockerfile, etc.). |
| 48 | + |
| 49 | +## Pull Requests |
| 50 | + |
| 51 | +Before opening a PR: |
| 52 | + |
| 53 | +- [ ] Branch from `main` and keep it up to date with upstream |
| 54 | +- [ ] No unrelated diffs (check `git diff main` carefully) |
| 55 | +- [ ] Do not modify `src/portals.json` unless the PR is specifically about portals — local fork customizations should stay in your fork |
| 56 | +- [ ] All tests pass: `npm test` |
| 57 | +- [ ] Build succeeds: `npm run build` |
| 58 | + |
| 59 | +## Adding an Example Integration |
| 60 | + |
| 61 | +Community integrations go under `examples/<name>/`. Each integration must have a `README.md` explaining what it does and how to run it. The core server files (`src/`, `docker/`) must not be modified as part of an example contribution. |
0 commit comments