Documentation menu
Source

Local development

Run commands from the repository root. Use a virtual environment for the fast source loop and a dedicated clone for full plugin-install testing.

Fast source loop

Install only the dependencies you need:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[core]'  # use '.[all]' for every capability

Run a server directly from source:

python3 src/capabilities/core/qwen_mm_plugins_core --version
python3 src/capabilities/core/qwen_mm_plugins_core --check-system
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
  | python3 src/capabilities/core/qwen_mm_plugins_core

Code changes take effect on the next process start. Run targeted tests while iterating; see Testing.

If you need only a live MCP connection, register the source entry in a harness and reconnect after edits. For example:

claude mcp add qwen-mm-plugins-core -- \
  python3 "$(pwd)/src/capabilities/core/qwen_mm_plugins_core"
# cleanup: claude mcp remove qwen-mm-plugins-core

Standalone skill configuration

Skills can run without the installed Python package. Their env_config.py files carry the read-only region of src/shared/env.py: lookup precedence, parsing, optional cache refresh, and boolean/integer accessors. Update the source region, then synchronize its copies:

python3 scripts/sync_env_readers.py --write
python3 scripts/sync_env_readers.py

Tests reject drift in these regions. Plugin-specific settings and shell-export behavior stay outside them; the shared config writer and field catalog are not copied into standalone skills.

Full plugin-install loop

Use this path to test marketplace manifests, Skill discovery, MCP registration, and the harness's complete install flow:

bash install.sh local
# Or select directly without prompts:
bash install.sh local --plugin core --harness codex

For an unpublished plugin, use the source loop above. To test its full installation path, check out the generated first version PR in a dedicated clone and run local mode there.

The installer points the selected capabilities at the current checkout and adds uvx --refresh. It intentionally writes absolute local paths into tracked manifests, so use a dedicated clone and do not move it while installed.

Restore release sources before committing or leaving local mode:

bash install.sh local --restore