custodian_cli.py:
- register-project now writes CLAUDE.custodian.md (suggestion) instead
of overwriting CLAUDE.md; includes preamble with integration instructions
- registers repo via POST /repos/
- creates a "Repo Integration: {slug}" workstream in the domain's topic
with 4 onboarding tasks (integrate CLAUDE.md, first workplan, SBOM,
EPs/TDs); checks for existing workstream to be idempotent
- fixes {REPO_SLUG} template substitution (previously missing)
dashboard:
- repos.md: fetches workstreams; detects active repo-integration-* slugs;
adds "Integrating" KPI card; shows ⚙ integrating badge per repo in
coverage map and table; replaces "How to Ingest a Repo" with
"Onboard a New Repo" 4-step panel with doc help button
- docs/repo-integration.md (new): full collaboration model doc — custodian
as coach, repo agent as executor; journey, generated tasks, first session
protocol, ongoing relationship
- docs/repos.md: links to new repo-integration doc; updates "What is a
managed repo?" section; adds onboarding quick reference
- docs/reference.md: fix latent build error — code examples were in ```js
fences (executed by OF); changed to ```javascript (display only)
- observablehq.config.js: adds "Repo Integration" to Reference nav
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
register-project now creates a topic automatically if the domain has
no active topic yet, instead of exiting with an error. This makes the
"create domain → register project" flow self-contained.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The custodian CLI had a static VALID_DOMAINS list used as argparse
choices= and for in-process domain validation, preventing any domain
added after v0.5 from being used. Now fetches active domains from the
API at runtime. Also fixes t.get("domain") → t.get("domain_slug")
in two topic lookup sites.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
MCP server: add create_workstream(topic_id, title, slug?, owner?,
description?, due_date?) — auto-generates slug from title if omitted;
emits workstream_created progress event. Now 12 tools total.
CLI: add two new subcommands —
custodian create-workstream --domain DOMAIN --title TITLE [--slug] [--owner] [--description]
custodian create-task --workstream ID_OR_SLUG --title TITLE [--priority] [--assignee]
create-task accepts workstream UUID or slug (resolves via API).
Dashboard: hint box below "Open Workstreams by Domain" chart listing
registered domains that have zero workstreams, with the exact
custodian create-workstream command to run.
TOOLS.md: updated tool count (11 → 12) and added create_workstream row.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
custodian register-project [--domain DOMAIN] [--path PATH]
Defaults path to cwd; auto-detects domain from project charter if
--domain is omitted. Does: API health → topic lookup → MCP check →
CLAUDE.md from template → progress event.
custodian status
Prints API health + summary totals + blocking decisions.
Installed via: make install-cli (symlinks .venv/bin/custodian → ~/.local/bin/)
Entry point declared in pyproject.toml [project.scripts].
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>