Operator capability to bring a NEW project online in one pass, fully
outside the runtime and the pipeline (src/** byte-exact, no kill-switch
needed — activation is an explicit human CLI run). Reference = the
orchestrator repo itself (ORCH-52b/c/d/e canons).
* onboarding/repo-skeleton/ — parametrized kit of a new repo: 6 agent
prompt templates per canon 52d/92 (5 ru + deployer en with the
shared-host guardrail frame), reviewer doc-gate (REQUEST_CHANGES),
CLAUDE.md passport, AGENTS.md, CONTRIBUTING.md, docs/ skeleton with
mandatory operations/INFRA.md, .env.example; {{NAME}} placeholders +
stdlib render, dictionary onboarding/placeholders.json (bijection
held by tests). Canon is NOT forked: docs/_templates + docs/_standards
are live-copied from the checkout at materialization time (BR-2/D3).
* scripts/onboard_project.py — plan (default, GET-only, zero mutations)
/ apply (idempotent ensure, no delete ops at all) / verify (registry
round-trip via the actual projects._parse_projects_json, all 22 state
names incl. fail-closed Confirm Deploy/STOP, labels, webhook, kit
completeness, unresolved-placeholder scan). Closed read-only src
import list (ADR D4); state groups fixed per ADR D5 (STOP→cancelled,
terminal groups only Done/Cancelled/STOP); Gitea webhook reuses the
single global ORCH_GITEA_WEBHOOK_SECRET (TR-6); initial push ONLY
into a freshly created empty repo (INV-4 untouched); never restarts
prod / never edits .env / deletes nothing (NFR-2); secrets masked
(NFR-3); Plane CE API gaps degrade to manual-step (fail-safe).
* docs/operations/ONBOARDING.md runbook + SETUP_WEBHOOKS.md generalized
per-repo; CLAUDE.md / docs/architecture/README.md / CHANGELOG.md
updated in the same PR (golden source).
* Anti-drift tests: test_onboarding_kit.py / test_onboarding_script.py
(mocked, no network) / test_onboarding_invariants.py (snapshots of
STAGE_TRANSITIONS/QG_CHECKS, closed CLI import list, reference
.openclaw/agents/ prompts untouched). Full regression: 1713 passed.
Refs: ORCH-009
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
CONTRIBUTING — канон процесса проекта {{PROJECT_NAME}}
Как ведётся этот репозиторий: где что лежит, как оформлять изменения, как вести документацию. Канон обязателен и для агентов конвейера, и для людей.
Где что лежит
| Путь | Содержимое |
|---|---|
| код проекта | по код-карте docs/ARCHITECTURE.md |
| тесты | прогон: {{TEST_CMD}} |
.openclaw/agents/ |
промпты 6 агентов конвейера (канон структуры — см. ниже) |
docs/ |
документация (карта — AGENTS.md) |
docs/work-items/<id>/ |
артефакты задач конвейера |
.env.example |
карта env-переменных (без секретов) |
Процесс изменения
- Задача рождается в Plane (проект
{{PROJECT_NAME}}, префикс{{WORK_ITEM_PREFIX}}). - Конвейер ведёт её по стадиям (
docs/PIPELINE.md); артефакты каждой стадии — вdocs/work-items/<id>/поdocs/_standards/PIPELINE_DOCS.md. - Код едет веткой
feature/{{WORK_ITEM_PREFIX}}-NNN-slug→ PR вmain→ merge только через PR-merge (никогда push вmain). - Conventional Commits:
feat(scope):,fix(scope):,docs(scope):,refactor:,test:; футерRefs: {{WORK_ITEM_PREFIX}}-NNN. - Документация обновляется в том же PR, что и код (reviewer-gate вернёт PR без неё).
CHANGELOG.md— запись под## [Unreleased]на каждый смысловой PR.
Промпты агентов (.openclaw/agents/)
- Структурный канон: 5 XML-секций в порядке
<context>→<task>→<deliverables>→<constraints>→<output_format>; запреты в формате «❌ X → ✅ Y»;<escalation>у developer/reviewer/tester; машинные verdict-ключи байт-в-байт. - Языковая политика: 5 промптов на русском +
deployer.mdна английском (самый safety-critical промпт; en-раскладка минимизирует регресс-поверхность verdict-ключей). Отступление от политики — только отдельным ADR этого проекта вdocs/architecture/adr/. - Правка промптов = обычный PR с ревью; машинные ключи (
verdict:,result:,staging_status:,deploy_status:,security_status:) не переименовывать.
Документация
- Стандарты (
docs/_standards/) и скелеты (docs/_templates/) — копия живого канона оркестратора на момент онбординга; локально не править (обновления приходят отдельными PR). - Сквозные решения —
docs/architecture/adr/adr-NNNN-slug.md; per-task —docs/work-items/<id>/06-adr/ADR-NNN-slug.md. - Маркеры трассировки
{{WORK_ITEM_PREFIX}}-NNNв коде — поdocs/_standards/TRACEABILITY.md.
Секреты
Секреты живут ТОЛЬКО в .env на хосте; в гит не коммитятся. Карта переменных — .env.example
(дескрипторы без значений). Утечка секрета в коммит = инцидент: ротация ключа обязательна.