Contributing to Jev Studio
September 19, 2026 · View on GitHub
Thanks for considering a contribution. Jev Studio ships an MCP server, a Claude Code / Codex plugin, and a PyPI package that serves the Jev ruleset to any MCP host.
Small focused PR > big rewrite. One concern per PR.
Quick Links
Maintainers
- Utkarsh Upadhyay — @utk2103
How to contribute
- Bugs & small fixes → open a PR.
- New features / architecture → open an issue first. Large features get discussed before implementation.
- Refactor-only PRs → not accepted unless a maintainer requests it as part of a concrete fix.
- Questions → open a GitHub Issue with the
questionlabel.
PR limits
Cap at 10 open PRs per author. Exceed it → auto-close.
Repo layout
jev_studio/— Python package (MCP server + instruction builder).server.py— FastMCP entry point (jev-studioconsole script).instructions.py— mode resolver + ruleset builder. Source of truth.
tests/— pytest suite..claude-plugin/— Claude Code plugin + marketplace manifests..codex-plugin/— Codex plugin manifest.hooks/— SessionStart / UserPromptSubmit / SubagentStart hooks. Reusejev_studio.instructions; do not duplicate the ruleset.commands/— TOML slash commands surfaced by the Claude Code plugin.
The MCP server, hooks, and any future adapters all call
jev_studio.instructions.build_instructions() — one source, zero drift.
Dev setup
git clone https://github.com/utk2103/jev-Studio.git
cd jev-Studio
pip install -e ".[dev]"
pytest
Run the MCP server locally:
jev-studio # speaks MCP over stdio
Coding standards
- Ruff clean (
ruff check .andruff format .). - Type hints on public functions.
- No unnecessary abstractions. Three similar lines beat a premature helper.
- Validate at boundaries only; trust internal code.
- Match existing style; don't refactor adjacent unchanged code.
Tests
- pytest under
tests/. - New behavior needs at least one test.
- No mocking of the MCP SDK — test the pure logic in
instructions.py.
Commits & PRs
- Conventional Commits (
feat:,fix:,docs:,chore:,refactor:). - Subject ≤ 72 chars.
- Body explains the why, not the what.
- PR description: summary + test plan (checkbox list).
Release checklist
- Bump version in all four places:
pyproject.tomljev_studio/__init__.py.claude-plugin/plugin.json.codex-plugin/plugin.json
- Move
[Unreleased]entries inCHANGELOG.mdunder the new version + date. - Tag:
git tag vX.Y.Z && git push --tags. - Build + upload:
python -m build twine check dist/* twine upload dist/*
License
Contributions are licensed under the MIT License — see LICENSE.