Skip to content

Your first project

Copy page

You ran tapestry onboard --slug my-project. Here’s what landed and what comes next.

tapestry onboard registers your project with the Project Registry first — this is mandatory: if no registry is reachable it aborts and writes nothing (the default registry URL is a placeholder, so pass --registry-url or set TAPESTRY_REGISTRY_URL). Then, idempotently, it writes (or merges into) several files:

FileWhat it holdsWhy
.envLOOM_PROJECT_ID (the registry-assigned id) + the shared OTEL_* blockThe project’s identity tag — everything memory and telemetry scope by this.
.mcp.jsonThe loom-memory MCP server declaration (with the Bearer ${TAPESTRY_MEMORY_API_KEY} header)Wires the Memory MCP into every Claude Code session in this repo.
.project-intelligence/ (flat)agent-profile.json, project-context.json, observatory-config.json + local-skills/ + lessons-learned/Per-project intelligence files the Observer + Observatory read.
.claude/settings.jsonBoth tapestry-discipline + tapestry-patterns plugins enabledSo the discipline plugin auto-loads its hooks and tapestry-patterns auto-loads its agents + skills.
CLAUDE.md, .gitignore, docs/, skills/A starter skeletonSo the project has the standard shape from day one; edit CLAUDE.md to fit.

Open the chat panel and start a fresh session. Three things are now different from a bare project:

1. The session header includes an auto-recall block. It lists memory records tagged for my-project. On first session this block is empty — that’s expected; it fills in as you accumulate corrections, decisions, and observer findings over time.

2. Every prompt you send gets a [loom-discipline] Discipline check: reminder line injected as additional context. That’s the discipline plugin’s UserPromptSubmit hook firing — it injects PROBE-before-asserting + cite file:line + dev-tooling-vs-runtime + save-friction-as-memory rules into the agent’s working context.

3. Hook events emit to two destinations. Local ~/.claude/logs/hooks.jsonl always (source of truth). Grafana Cloud via OTel if OTEL_EXPORTER_OTLP_* env vars are set in your .env. See Telemetry for the wiring.

Onboarding makes your project observable. It does not install a per-project Observatory — the Observatory is one surface in your platform deployment, shared across all your projects. Onboarding wires your project into it.

  1. Verify it worked — four quick checks that the wiring landed.
  2. First Observatory visit — open the dashboard and learn what to look for.
  3. Edit the starter CLAUDE.md onboarding seeded in your project root to fit your project (it’s a skeleton, not a contract).