Skip to content

Latest commit

 

History

History
71 lines (53 loc) · 2.28 KB

File metadata and controls

71 lines (53 loc) · 2.28 KB

Contributing to mindx-self-evolution

Thanks for considering a contribution. This repo is small on purpose — the core promise is "refine SKILL.md drafts, never touch mindX directly". Everything else flows from that.

The hard rule

Do not import mindx_* from this codebase. The whole reason this is a separate repo is to keep mindX's import graph clean of DSPy and the evolutionary heaviness. The codec in mindx_self_evolution/skill_io.py duplicates mindX's SKILL.md parser intentionally so the interop contract is file-level only.

If you find yourself wanting to import from mindX, the right move is one of:

  1. Extend the local codec to handle whatever new field you need.
  2. Open an issue on the mindX repo proposing a format addition; once it lands there, mirror it here.
  3. Re-evaluate whether the feature actually belongs in this repo at all — maybe it's a mindX-internal concern.

Dev setup

git clone https://github.com/AgenticPlace/mindx-self-evolution
cd mindx-self-evolution
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest -q

The DSPy stack is opt-in:

pip install -e ".[dspy,dev]"

Tests that need DSPy use pytest.importorskip("dspy") so the suite stays green without it. CI runs both configurations.

Style

  • ruff format for formatting; ruff check for lint.
  • Apache-2.0 SPDX header at the top of every Python file (the rest of the tree follows by inclusion).
  • Type hints on everything. mypy --strict is the goal.
  • Tests next to the surface they verify; one file per module.

Pull requests

  • One concern per PR.
  • Tests required for new behaviour; no new branches without coverage.
  • Update README.md if you change the public surface or the v0.X roadmap.
  • Sign off your commits (git commit -s). Apache-2.0 doesn't require it, but it makes provenance unambiguous.

Where to start

If you want to land something concrete, the v0.2 roadmap items in README.md are all bite-sized:

  • A real DSPy program with chain-of-thought in skill_program.py.
  • An Ollama LM wrapper as an example in examples/.
  • Frozen seeds across the optimizer so two runs with the same inputs produce the same output.

Open an issue first if you're unsure — we'd rather agree on shape before you write the code.