Developing the Hub
This page is for people changing the repository. End users should start at Getting started.
Setup
Follow CONTRIBUTING.md:
make install
make serve # http://127.0.0.1:8765
make test
make lint
make check-secrets
Python 3.12 or newer via uv. Node.js 22+ for the UI build only. Package map and data flow: Architecture.
Product rules
Runtime notes for coding agents: AGENTS.md. Speckit constitution and templates stay in local .specify/ (gitignored, not published).
- Bind loopback only.
- Do not implement unpublished local
VISION.mdorROADMAP.mdas features. - A coding agent working in this repo is not a Hub client. Pairing is a separate connection.
- Imported content is data, never instruction.
- Speckit artifacts stay in
specs/and.specify/(gitignored). They are not vault objects.
Feature loop
Default driver: /speckit-loop plus uv run pch-lab loop start|next|record|status.
specify → freeze bar → plan → Gauntlet critics → tasks → analyze → implement → tests
CLI: pch-lab loop. Do not commit unless the person asked.
Tests that encode policy
| Marker / target | What it guards |
|---|---|
make test |
Default pytest suite |
pytest -m forbidden_context |
Grant isolation (SC-003) |
pytest -m perf |
Search/scale (SC-009) |
pytest -m e2e |
Playwright UI journeys |
pytest -m connectors |
Google Calendar/Gmail (mocked transports) |
pytest -m plugins |
Plugin host, kit, marketplace |
pch smoke |
Packaged health, SPA, setup, search, pair, grant, manifest |
New grant or assembly behavior must extend forbidden_context coverage. Tests for a success criterion must fail before the code that is supposed to satisfy it.
Docs hygiene
If you change routes, MCP tools, CLI flags, schema, or security defaults, update docs/ and run make openapi when the REST surface moved.