Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .compound-engineering/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Compound Engineering overlay (design-system)

This directory is the **repo overlay**. When it exists, CE uses these files
instead of native Cursor plugin defaults.

| File | Role |
| --- | --- |
| `config.yaml` | Tracked. CE reads `docs_root` from here. |
| `config.local.yaml` | Gitignored live settings. |
| `config.local.example.yaml` | Upstream template. |
| `artifacts/` | CE plans/solutions/ideation. Not operator `docs/`. |

Portable skills: `~/.agents/skills/ce-*` plus `lfg`, routed by
`compound-engineering-meta`. Native plugin remains fallback for checkouts
without this directory. This workspace disables the plugin in
`.cursor/settings.json`.
3 changes: 3 additions & 0 deletions .compound-engineering/artifacts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# CE artifact root

Operator docs stay in `docs/` when that tree already exists. New CE plans, solutions, ideation, and residuals land here.
153 changes: 153 additions & 0 deletions .compound-engineering/config.local.example.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
# Compound Engineering -- local config
# Copy to .compound-engineering/config.local.yaml in your project root.
# All settings are optional. Invalid values fall through to defaults
# (except docs_root -- see below, which fails closed on an unusable value).

# --- Artifact root ---
# Relocate every CE-written artifact folder (solutions, plans, ideation,
# explainers, residual-review-findings, pulse-reports, dogfood-reports,
# feedback-sweep, personas) under one repo-relative root. Unset -> `docs`,
# byte-identical to today. A configured root becomes the sole location CE reads
# and writes; CE never falls back to reading `docs/`.
#
# Where to put it: prefer the TRACKED `.compound-engineering/config.yaml` (not
# this gitignored local file) so the setting propagates to every clone and
# worktree of the project. Setting it here in config.local.yaml works but is
# per-checkout, which splits one project's artifacts across two locations.
#
# The value must be a repo-relative directory whose real (symlink-resolved) path
# stays inside the repo, is not the repo root itself, and is not under `.git/`.
# Unlike every other setting here, an unusable value does NOT fall through to the
# default -- CE stops with an error so a typo can't silently write artifacts into
# the location you configured away from. `/ce-setup` reports the resolved root
# and which layer supplied it.

# docs_root: .compound-engineering/artifacts # repo-relative dir (default: docs)

# --- Product pulse ---
# Settings written by /ce-product-pulse first-run interview. Re-run the skill with
# argument `setup` or `reconfigure` to edit interactively.

# pulse_product_name: "Spiral" # used in report titles (no default)
# pulse_lookback_default: 24h # 1h | 24h | 7d | 30d (default: 24h)
# pulse_primary_event: "session_started" # the event that means "user showed up"
# pulse_value_event: "task_completed" # the event that means "user got value"
# pulse_completion_events: "onboarded,first_purchase" # comma-separated, 0-3 events
# pulse_quality_scoring: false # true | false (default: false; AI products only)
# pulse_quality_dimension: "answer accuracy" # dimension scored 1-5 when pulse_quality_scoring is true
# pulse_analytics_source: posthog # posthog | mixpanel | custom (no default)
# pulse_tracing_source: sentry # sentry | datadog | custom (no default)
# pulse_payments_source: stripe # stripe | custom (no default)
# pulse_db_enabled: false # true | false (default: false; read-only DB if true)
# pulse_metric_sources: "retention_d7=posthog,nps=delighted" # strategy-metric -> source overrides; comma-separated 'metric=source' pairs; unlisted metrics fall back to pulse_analytics_source
# pulse_pending_metrics: "retention_d7,nps" # comma-separated strategy metrics awaiting instrumentation; render as 'no data'
# pulse_excluded_metrics: "north_star" # comma-separated strategy metrics intentionally not in pulse

# --- Output format ---
# Per-skill output format default. Selects the exclusive format the artifact
# is written in: `md` produces a markdown file, `html` produces a single
# self-contained HTML file. The two are mutually exclusive -- there is no
# sibling artifact. See DESIGN.md or your agent instructions to influence
# HTML styling. Precedence: a format request in your prompt for that run wins
# (e.g. "output:html" or "make it HTML"); a preference you established earlier
# (in-session, saved to memory, or in your agent instructions) overrides these
# keys (this config is the persisted fallback); pipeline contexts (e.g., LFG,
# disable-model-invocation) always force `md`.

# plan_output: html # md | html (default: md)
# brainstorm_output: html # md | html (default: md)
# ideate_output: md # md | html (default: html -- ideation docs are human-facing, so HTML is the default; set md to opt out)

# --- Model elevation ---
# Send only the reasoning-heavy step of /ce-plan (interpret research, then author
# the plan) and /ce-brainstorm (generate approaches) to a model you name. The rest
# of each skill -- dialogue, research, orchestration -- stays on your session
# model. The value is a model alias (e.g. `fable`, `opus`). You can also name a
# model in a prompt for a one-off, which overrides these keys.
#
# Cross-harness: setting a key means every harness you run these skills in will
# attempt that model. The host serves it natively where it can; otherwise the
# Claude CLI is invoked when installed and authenticated; otherwise the step runs
# on your session model and the run says so. Invalid/commented/missing -> no
# elevation.

# plan_model: fable # model alias for the plan-authoring step (no default)
# brainstorm_model: fable # model alias for approach generation (no default)

# --- PR concept teaching (ce-commit-push-pr) ---
# When a PR introduces a concept new to the codebase, the generated PR
# description gains a "New concepts" section teaching it. The section toggle is
# the single gate: off disables judgment, the section, the /ce-explain offer,
# and archival. Archival additionally writes the explainer to docs/explainers/
# and links it from the PR (full-workflow runs only; override per run with
# archive:on|off). Note: this file is gitignored and per-checkout -- fresh
# worktrees don't inherit it.

# pr_teaching_section: false # true | false (default: true)
# pr_teaching_archive: true # true | false (default: false; full-workflow runs only)

# --- ce-commit-push-pr babysit handoff ---
# After a full-workflow PR is opened, ce-commit-push-pr auto-invokes ce-babysit-pr
# to watch CI + incoming review and drive the PR toward merge-ready. Set false to
# opt out standing (per-run override: the babysit:off token).
# auto_babysit: false # true | false (default: true)

# --- ce-plan scoping confirmation ---
# By default /ce-plan pauses before research/plan-write to show a scoping
# summary and wait for you to confirm scope. Set this to skip that wait: ce-plan
# composes the summary for itself, records any inferred scope under an
# Assumptions section, announces that it's proceeding, and keeps going. It skips
# only that confirmation -- genuine blocking questions and the post-plan menu
# still appear. Override per run with `confirm:auto` (skip) or `confirm:ask`
# (force the gate on for one run).

# plan_skip_scoping_confirm: true # true | false (default: false)

# --- Cross-model review preference ---
# Preferred peer for ce-doc-review and ce-code-review when their conditional
# cross-model pass activates. Conversation instructions still win, and the
# skills skip routes that cannot establish the required host/peer distinction.

# cross_model_peer: codex # codex | claude | grok | cursor | composer

# --- ce-work implementation engine ---
# Standing, per-checkout preferences for who authors implementation units. Live
# task/session/project instructions and LFG's provenance-bearing binding may
# override or narrow these defaults. `off` disables only this standing preference.
# `prefer` tries candidates in order, then falls back natively with disclosure.
# `require` asks before native fallback in an interactive ce-work run and blocks
# without prompting under LFG/headless execution. Harnesses: codex | claude | grok
# | cursor. Omit model to use that harness's configured default. Composer is a model
# family through Cursor: { harness: cursor, model: composer }. Do not put CLI flags
# or commands here. A candidate equivalent to the current host/default is skipped;
# a different explicit model in the same harness remains eligible.

# work_engine_mode: prefer # off | prefer | require (default: off)
# work_engine_preferences:
# - harness: cursor
# model: composer
# - harness: codex
# model: "gpt-5.6"
# - harness: claude # configured default model

# --- ce-promote ---
# Written automatically when you decline the Spiral setup offer in /ce-promote.
# Suppresses that one-time setup nudge in this project. Remove the key to re-enable.

# ce_promote_spiral_optout: true # true | (absent) (default: absent -- offer once)

# --- Sweep (ce-sweep) ---

# Feedback sources swept by /ce-sweep. Generic key: other skills may read this list.
# Each entry: type (slack | github-issues | email), id (short name), target (channel ID /
# owner/repo / mailbox), ack_action, closeout_action, sensitive (true withholds content
# from committed state/plan text), approved (standing approval for source-side writes).
# feedback_sources:
# - { type: slack, id: slack-alpha, target: C0XXXXXXX, ack_action: eyes, closeout_action: white_check_mark, sensitive: false, approved: true }
# - { type: github-issues, id: gh-issues, target: owner/repo, ack_action: "feedback:ack", closeout_action: "feedback:resolved", sensitive: false, approved: true }

# Sweep-owned settings.
# sweep_state_path: docs/feedback-sweep/state.yml # committed (multi-agent) or /tmp path (solo)
# sweep_ack_cap: 25 # max acks per source per run before the circuit breaker
# sweep_lease_ttl_minutes: 60 # single-writer lease staleness threshold
# sweep_shared_branch: false # true: push-gated lease for shared-docs-branch topology
5 changes: 5 additions & 0 deletions .compound-engineering/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Compound Engineering — tracked defaults.
# Live checkout overrides: config.local.yaml (gitignored).
# Native Cursor plugin is fallback only when this directory is absent.

docs_root: .compound-engineering/artifacts
7 changes: 7 additions & 0 deletions .cursor/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"plugins": {
"compound-engineering": {
"enabled": false
}
}
}
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,8 @@ Regel: raakt je commit `.github/workflows/` → push met `git push origin-ssh <b
Kom je dat pas achter bij een geweigerde push → zelfde branch opnieuw pushen naar
`origin-ssh`, geen force-push nodig.

Compound Engineering overlay: `.compound-engineering/` (tracked `config.yaml`, gitignored `config.local.yaml`). Artifact root `.compound-engineering/artifacts/`. Portable skills `~/.agents/skills/ce-*`; native Cursor plugin is fallback only when this overlay is absent.

## Design context overlays

For design work, resolve optional context before inventing product-specific rules:
Expand Down
2 changes: 1 addition & 1 deletion brain-site/concepts-gegenereerde-bestanden.html
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ <h2 data-reg="links">Links</h2>
<ul>
<li><a href="./concepts-lock-model.html">Lock-model</a></li>
<li><a href="./home.html">Home</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Gegenereerde bestanden.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Gegenereerde bestanden.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
2 changes: 1 addition & 1 deletion brain-site/concepts-lock-model.html
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ <h2 data-reg="links">Links</h2>
<li><a href="./concepts-single-active.html">Single-active</a></li>
<li><a href="./concepts-gegenereerde-bestanden.html">Gegenereerde bestanden</a></li>
<li><a href="./indexes-components.html">Components</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Lock-model.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Lock-model.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
2 changes: 1 addition & 1 deletion brain-site/concepts-origin-split.html
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ <h2 data-reg="links">Links</h2>
<li><a href="./concepts-lock-model.html">Lock-model</a></li>
<li><a href="./concepts-playground.html">Playground</a></li>
<li><a href="./indexes-components.html">Components</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Origin-split.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Origin-split.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
2 changes: 1 addition & 1 deletion brain-site/concepts-playground.html
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ <h2 data-reg="links">Links</h2>
<li><a href="./concepts-origin-split.html">Origin-split</a></li>
<li><a href="./concepts-lock-model.html">Lock-model</a></li>
<li><a href="./indexes-components.html">Components</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Playground.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Playground.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
2 changes: 1 addition & 1 deletion brain-site/concepts-single-active.html
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ <h2 data-reg="links">Links</h2>
<ul>
<li><a href="./concepts-lock-model.html">Lock-model</a></li>
<li><a href="./indexes-components.html">Components</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Single-active.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Single-active.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
2 changes: 1 addition & 1 deletion brain-site/concepts-taste-propagatie.html
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ <h2 data-reg="links">Links</h2>
<li><a href="./indexes-taste.html">Taste</a></li>
<li><a href="./indexes-design-language.html">Design Language</a></li>
<li><a href="./home.html">Home</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Taste-propagatie.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Concepts/Taste-propagatie.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ <h2 data-reg="links">Links</h2>
<li><a href="./home.html">Home</a></li>
<li><a href="./concepts-gegenereerde-bestanden.html">Gegenereerde bestanden</a></li>
<li><a href="./decisions-2026-07-30-brain-als-vijfde-tool.html">2026-07-30 Brain als vijfde tool</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Decisions/2026-07-30 Agent-laag in punt-agents.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Decisions/2026-07-30 Agent-laag in punt-agents.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ <h2 data-reg="links">Links</h2>
<li><a href="./concepts-taste-propagatie.html">Taste-propagatie</a></li>
<li><a href="./decisions-2026-07-30-agent-laag-in-punt-agents.html">2026-07-30 Agent-laag in punt-agents</a></li>
<li><a href="./decisions-2026-07-30-brain-als-vijfde-tool.html">2026-07-30 Brain als vijfde tool</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Decisions/2026-07-30 Agent-taste buiten dit repo.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Decisions/2026-07-30 Agent-taste buiten dit repo.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
2 changes: 1 addition & 1 deletion brain-site/decisions-2026-07-30-brain-als-vijfde-tool.html
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ <h2 data-reg="links">Links</h2>
<li><a href="./concepts-gegenereerde-bestanden.html">Gegenereerde bestanden</a></li>
<li><a href="./concepts-taste-propagatie.html">Taste-propagatie</a></li>
<li><a href="./concepts-lock-model.html">Lock-model</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Decisions/2026-07-30 Brain als vijfde tool.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Decisions/2026-07-30 Brain als vijfde tool.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -357,7 +357,7 @@ <h2 data-reg="links">Links</h2>
<li><a href="./decisions-2026-07-30-agent-taste-buiten-dit-repo.html">2026-07-30 Agent-taste buiten dit repo</a></li>
<li><a href="./concepts-taste-propagatie.html">Taste-propagatie</a></li>
<li><a href="./concepts-gegenereerde-bestanden.html">Gegenereerde bestanden</a></li>
</ul></div><div class="gen">gegenereerd uit brain/Decisions/2026-07-30 Brain signals eval dual gate.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Decisions/2026-07-30 Brain signals eval dual gate.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
2 changes: 1 addition & 1 deletion brain-site/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ <h2 data-reg="meta">Meta</h2>
<li><a href="./readme.html">README</a> - openen, CLI, wat wel/niet</li>
<li>Templates: <a href="./templates-new-decision.html">New Decision</a>, <a href="./templates-new-research.html">New Research</a></li>
<li>Leeslaag: <code>/brain-site/</code> (<code>./ds brain build</code>)</li>
</ul></div><div class="gen">gegenereerd uit brain/Home.md op 2026-09-12 · bewerk de .md, niet deze pagina</div>
</ul></div><div class="gen">gegenereerd uit brain/Home.md op 2026-09-17 · bewerk de .md, niet deze pagina</div>
</div></main>
<div class="sruler" id="srulerY" aria-hidden="true"></div>
<div class="splate" id="splate">SCALE 1:1 · UNITS PX<br>SHEET <span class="b">brain</span> · REV D<br><span id="splateDate"></span></div>
Expand Down
Loading
Loading