Practical developer onboarding for PromptManager.
This file exists to keep the main README.md focused on project introduction, what the product does, and how to get started.
PromptManager is a local-first desktop app for managing prompt assets. As a developer, expect three main areas of work:
- GUI flows and dialogs in
gui/ - CLI entrypoints and summaries in
cli/plusmain.py - core product logic, settings, persistence, and retrieval in
core/,config/, andmodels/
Use this mental model when entering the repo:
main.py— main application entrypointcli/— CLI parsing, runtime helpers, summaries, non-GUI entry flowsgui/— PySide6 dialogs, widgets, controllers, settings flows, main-window wiringcore/— prompt manager logic, execution, retrieval, templating, maintenance, web searchconfig/— settings model, defaults, config loading, persistence helpersmodels/— prompt/category/style data modelstests/— pytest suite for CLI, GUI, settings, and product logicdocs/— product SSOT, roadmap, rollout notes, and deeper documentation
Project target:
- Python
3.13+
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -e .
pip install -e .[dev]uv venv
source .venv/bin/activate
uv pip install -e .
uv pip install -e .[dev]Start from the example environment file:
cp .env.example .envPromptManager also supports JSON configuration via:
config/config.jsonPROMPT_MANAGER_CONFIG_JSON
Important config note:
- if settings look wrong, verify whether
PROMPT_MANAGER_CONFIG_JSONis overridingconfig/config.json
Inspect effective configuration:
python -m main --no-gui --print-settingsThe CLI summary is trust-first: it starts with the Diagnostics block (Overall status, source/precedence labels, and Next steps when needed) before lower-level path and provider sections.
Launch the GUI:
python -m mainpython -m mainpython -m main --no-gui --print-settings.venv/bin/pytest -q.venv/bin/pytest tests/test_settings_summary.py -q.venv/bin/ruff check ..venv/bin/pyrightDefined in pyproject.toml:
pytestruffpyright- strict type checking (
typeCheckingMode = "strict") - coverage threshold (
fail_under = 80)
At minimum before considering work done:
- run the focused tests for your changed area
- run broader tests if the change touches shared logic
- run
ruffif you changed Python code - run
pyrightif you changed types, settings, GUI wiring, or public interfaces
Typical files live in:
gui/gui/widgets/gui/dialogs/gui/controllers/
Then usually run:
python -m main
.venv/bin/pytest tests/test_settings_dialog_diagnostics.py -qTypical files live in:
main.pycli/
Then usually run:
python -m main --no-gui --print-settings
.venv/bin/pytest tests/test_main_entry.py -qTypical files live in:
config/settings.pyconfig/gui/runtime_settings_service.pycli/settings_summary.py
Then usually run:
python -m main --no-gui --print-settings
.venv/bin/pytest tests/test_runtime_settings_service.py tests/test_settings_summary.py -qTypical files live in:
core/models/
Then run the nearest focused tests in tests/ first, then widen scope if shared behavior changed.
PromptManager includes, among other things:
- prompt catalog CRUD, tagging, editing, and fork/version flows
- Quick Capture, Draft Promote, recent reopen, and inspection cues
- semantic retrieval via ChromaDB with configured embedding backends
- Jinja2 template preview with validation support
- optional LiteLLM-backed workspace and related CLI helpers
- lightweight history and diagnostics surfaces
Treat the main product center as prompt-asset management first. If a change increases product breadth but weakens clarity, trust, or the core prompt loop, it is probably the wrong priority.
Developer-facing docs:
docs/product-ssot.mddocs/product-roadmap-ssot.mddocs/canonical-usage-path-v1.md
Use docs/ for detailed rollout plans or implementation-specific notes that would make this file noisy.
If a detail is mainly useful to contributors rather than first-time GitHub visitors, put it here or under docs/, not in the main README.md.