
Ce Setup
- 2.4k installs
- 23.9k repo stars
- Updated August 5, 2026
- everyinc/compound-engineering-plugin
ce-setup checks Compound Engineering health and fixes repo-local config and gitignore issues.
About
The ce-setup skill is a lightweight Compound Engineering health check and repo-local configuration helper. Phase one detects the installed plugin version when available, runs the bundled check-health script or inline equivalents for optional tools like agent-browser, gh, jq, ast-grep, and ffmpeg, and reports missing capabilities without treating them as failures. It inspects git repos for obsolete compound-engineering.local.md, outdated config.local.example.yaml, and config.local.yaml files not covered by gitignore. Phase two fixes repo-local issues only with user approval: delete obsolete local markdown, refresh the example config from references/config-template.yaml, optionally create config.local.yaml, and append .compound-engineering/*.local.yaml to gitignore. The skill never bulk-installs optional dependencies and uses blocking question tools per platform instead of silent auto-configuration. disable-model-invocation is true, so users invoke it explicitly for onboarding or troubleshooting. Users invoke ce-setup explicitly because disable-model-invocation is true.
- Runs bundled check-health or inline optional-tool diagnostics.
- Reports missing tools as optional capabilities, not setup failures.
- Removes obsolete compound-engineering.local.md with user approval.
- Refreshes committed config.local.example.yaml from template.
- Ensures config.local.yaml is gitignored before local prefs are saved.
Ce Setup by the numbers
- 2,408 all-time installs (skills.sh)
- +68 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #78 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
ce-setup capabilities & compatibility
- Capabilities
- bundled or inline optional tool health diagnosti · obsolete local markdown detection and removal · example and local yaml config refresh from templ · gitignore verification for machine local setting · platform specific blocking question prompts
- Use cases
- devops · ci cd
What ce-setup says it does
Missing optional tools are not setup failures.
Never silently skip or auto-configure.
npx skills add https://github.com/everyinc/compound-engineering-plugin --skill ce-setupAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2.4k |
|---|---|
| repo stars | ★ 23.9k |
| Security audit | 1 / 3 scanners passed |
| Last updated | August 5, 2026 |
| Repository | everyinc/compound-engineering-plugin ↗ |
Is Compound Engineering configured correctly and are local settings safely gitignored?
Check Compound Engineering health, refresh repo-local config examples, and safely gitignore machine-local settings.
Who is it for?
Onboarding a repo or troubleshooting missing optional Compound Engineering tools.
Skip if: Skip for bulk installing every optional dependency; the skill only reports gaps.
When should I use this skill?
User runs /ce-setup, verifies setup, or troubleshoots missing optional tools.
What you get
Diagnostic report plus optional repo-local fixes for example config and gitignore.
- .compound-engineering/config.local.yaml
- Configured delegation and pulse settings
By the numbers
- Configures .compound-engineering/config.local.yaml with optional delegation and pulse settings
- Supports sandbox modes yolo and full-auto for Codex work delegation
Files
Compound Engineering Setup
Interaction Method
Ask each question below using the platform's blocking question tool: AskUserQuestion in Claude Code (call ToolSearch with select:AskUserQuestion first if its schema isn't loaded), request_user_input in Codex, ask_question in Antigravity CLI (agy), ask_user in Pi (requires the pi-ask-user extension). Fall back to a numbered list in chat only when no blocking tool exists in the harness or the call errors. Never silently skip or auto-configure.
ce-setup is a lightweight health check and repo-local config helper. It does not bulk-install every optional dependency. Missing tools are reported as optional capabilities so the user can install only the workflows they use.
Phase 1: Diagnose
Step 1: Determine Plugin Version
Detect the installed compound-engineering plugin version by reading the plugin metadata or manifest when the platform exposes it. If the version cannot be determined, skip this step.
If a version is found, pass it to the check script via --version. Otherwise omit the flag.
Step 2: Run the Health Check
Before running the script, display:
Compound Engineering -- checking your environment...Run the bundled check script when the skill directory can be resolved:
if [ -n "${CLAUDE_SKILL_DIR}" ] && [ -f "${CLAUDE_SKILL_DIR}/scripts/check-health" ]; then
bash "${CLAUDE_SKILL_DIR}/scripts/check-health" --version VERSION
else
echo "Bundled health script is unavailable on this platform; run the inline checks from ce-setup instead."
fiUse the same command without --version VERSION if Step 1 could not determine a version.
If the script is unavailable, perform the inline equivalent:
1. Check optional tools with command -v: agent-browser, gh, jq, ast-grep, ffmpeg. 2. If inside a git repo, resolve the repo root with git rev-parse --show-toplevel. 3. Check for obsolete compound-engineering.local.md at the repo root. 4. Check whether .compound-engineering/config.local.yaml exists and, if it does, whether git check-ignore -q .compound-engineering/config.local.yaml succeeds. 5. Compare .compound-engineering/config.local.example.yaml with references/config-template.yaml when the template is readable; otherwise report that the example refresh must be done manually.
Display the diagnostic output to the user. Missing optional tools are not setup failures.
Step 3: Decide Whether Fixes Are Needed
Proceed to Phase 2 only if one or more repo-local project issues exist:
- obsolete
compound-engineering.local.md .compound-engineering/config.local.yamlexists but is not safely gitignored.compound-engineering/config.local.example.yamlis missing or outdated
If no project issues exist, report:
✅ Compound Engineering setup complete
Project config: ✅
Optional capabilities: see diagnostic report above
Run /ce-setup anytime to re-check.If optional tools are missing, do not offer a bulk install. The diagnostic already printed the relevant install command or project URL. Say: "Install optional tools only for the workflows you use."
Phase 2: Fix Repo-Local Issues
Resolve the repository root (git rev-parse --show-toplevel). All paths below are relative to the repo root, not the current working directory.
Step 4: Remove Obsolete Local Config
If compound-engineering.local.md exists at the repo root, explain that it is obsolete because review-agent selection is automatic and surviving machine-local settings now live in .compound-engineering/config.local.yaml.
Ask whether to delete it now. Delete only if the user approves.
Step 5: Refresh Example Config
Copy references/config-template.yaml to <repo-root>/.compound-engineering/config.local.example.yaml, creating the directory if needed. This file is committed to the repo and should always reflect the latest available settings.
If the bundled template cannot be located by the current platform, print the source template path that failed and tell the user the example config could not be refreshed automatically.
Step 6: Create Local Config If Wanted
If .compound-engineering/config.local.yaml does not exist, ask:
Set up a local config file for this project?
This saves optional Compound Engineering preferences such as output formats, product pulse settings, and Codex delegation defaults.
Everything starts commented out -- you only enable what you need.
1. Yes, create it
2. No thanksIf the user approves, copy references/config-template.yaml to <repo-root>/.compound-engineering/config.local.yaml.
Step 7: Ensure Local Config Is Gitignored
If .compound-engineering/config.local.yaml exists and is not covered by .gitignore, offer to add:
.compound-engineering/*.local.yamlAppend the entry to the repo-root .gitignore only if the user approves. Do not overwrite unrelated .gitignore content.
Phase 3: Summary
Display a brief summary:
✅ Compound Engineering setup complete
Fixed: <repo-local fixes applied, or none>
Skipped: <repo-local fixes declined, or none>
Optional: <missing optional tools, or all available>
Run /ce-setup anytime to re-check.# 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.
# --- Work delegation (Codex) ---
# work_delegate: codex # codex | false (default: false)
# work_delegate_consent: true # true | false (default: false)
# work_delegate_sandbox: yolo # yolo | full-auto (default: yolo)
# work_delegate_decision: auto # auto | ask (default: auto)
# work_delegate_model: gpt-5.4 # any valid codex model (omit to use ~/.codex/config.toml default)
# work_delegate_effort: high # minimal | low | medium | high | xhigh (omit to use ~/.codex/config.toml default)
# --- 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. CLI arguments override these defaults; pipeline contexts
# (e.g., LFG, disable-model-invocation) always force `md` regardless.
# 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)
# --- 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)
#!/usr/bin/env bash
# Compound Engineering environment health check.
# Reports optional tool capabilities and repo-local config safety in one pass.
set -o pipefail
# =====================================================
# Optional capability config
# =====================================================
# Format: name|install_cmd|url|capability
deps=(
"agent-browser|CI=true npm install -g agent-browser --no-audit --no-fund --loglevel=error && agent-browser install|https://github.com/vercel-labs/agent-browser|browser testing, dogfood QA, and visual polish inspection"
"gh|NONINTERACTIVE=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install -q gh|https://cli.github.com|GitHub PR, issue, and review workflows"
"jq|NONINTERACTIVE=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install -q jq|https://jqlang.github.io/jq/|JSON inspection in shell-based workflows"
"ast-grep|NONINTERACTIVE=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install -q ast-grep|https://ast-grep.github.io|syntax-aware structural code search"
"ffmpeg|NONINTERACTIVE=1 HOMEBREW_NO_AUTO_UPDATE=1 brew install -q ffmpeg|https://ffmpeg.org/download.html|media chunking and screenshot extraction for Riffrec analysis"
)
# =====================================================
# Args
# =====================================================
plugin_version=""
while [ $# -gt 0 ]; do
case "$1" in
--version) [ -n "$2" ] && plugin_version="$2" && shift 2 || shift ;;
*) shift ;;
esac
done
# =====================================================
# Helpers
# =====================================================
ok() { echo " 🟢 $1"; }
warn() { echo " 🟡 $1"; }
skip() { echo " ➖ $1"; }
detail() { echo " $1"; }
section() { echo ""; echo " $1"; }
has_brew=$(command -v brew >/dev/null 2>&1 && echo "yes" || echo "no")
in_repo=$(git rev-parse --is-inside-work-tree >/dev/null 2>&1 && echo "yes" || echo "no")
# =====================================================
# Check optional capabilities
# =====================================================
capability_ok=0
capability_total=0
capability_missing=0
results=()
for entry in "${deps[@]}"; do
IFS='|' read -r name install_cmd url capability <<< "$entry"
capability_total=$((capability_total + 1))
if command -v "$name" >/dev/null 2>&1; then
capability_ok=$((capability_ok + 1))
results+=("$name|ok|$install_cmd|$url|$capability")
else
capability_missing=$((capability_missing + 1))
results+=("$name|missing|$install_cmd|$url|$capability")
fi
done
# =====================================================
# Project checks (repo only)
# =====================================================
legacy_cfg="skip"
repo_cfg_gitignore="skip"
local_cfg="skip"
example_cfg="skip"
project_issues=0
if [ "$in_repo" = "yes" ]; then
repo_root=$(git rev-parse --show-toplevel 2>/dev/null)
legacy_cfg="missing"
[ -f "$repo_root/compound-engineering.local.md" ] && legacy_cfg="present"
local_cfg="missing"
if [ -e "$repo_root/.compound-engineering/config.local.yaml" ]; then
local_cfg="present"
if git check-ignore -q "$repo_root/.compound-engineering/config.local.yaml" 2>/dev/null; then
repo_cfg_gitignore="ok"
else
repo_cfg_gitignore="missing"
fi
fi
script_dir="$(cd "$(dirname "$0")" && pwd)"
template="$script_dir/../references/config-template.yaml"
example="$repo_root/.compound-engineering/config.local.example.yaml"
if [ ! -f "$example" ]; then
example_cfg="missing"
elif [ -f "$template" ] && ! diff -q "$template" "$example" >/dev/null 2>&1; then
example_cfg="outdated"
else
example_cfg="ok"
fi
fi
# =====================================================
# Output
# =====================================================
echo ""
if [ -n "$plugin_version" ]; then
ok "Plugin version v${plugin_version}"
fi
section "Optional capabilities ${capability_ok}/${capability_total}"
for result in "${results[@]}"; do
IFS='|' read -r name status install_cmd url capability <<< "$result"
if [ "$status" = "ok" ]; then
ok "$name -- $capability"
else
warn "$name -- unavailable: $capability"
if [[ "$install_cmd" == *"brew install"* ]] && [ "$has_brew" != "yes" ]; then
detail "$url"
else
detail "$install_cmd"
detail "$url"
fi
fi
done
if [ "$in_repo" = "yes" ]; then
section "Project config"
if [ "$legacy_cfg" = "present" ]; then
warn "Obsolete compound-engineering.local.md exists"
project_issues=$((project_issues + 1))
else
ok "No obsolete compound-engineering.local.md"
fi
if [ "$local_cfg" = "present" ]; then
ok ".compound-engineering/config.local.yaml exists"
if [ "$repo_cfg_gitignore" = "ok" ]; then
ok "Local config is gitignored"
else
warn "Local config is not safely gitignored"
project_issues=$((project_issues + 1))
fi
else
skip "No local config yet (.compound-engineering/config.local.yaml)"
fi
if [ "$example_cfg" = "ok" ]; then
ok "Example config is current"
elif [ "$example_cfg" = "missing" ]; then
warn "Example config missing (.compound-engineering/config.local.example.yaml)"
project_issues=$((project_issues + 1))
elif [ "$example_cfg" = "outdated" ]; then
warn "Example config outdated (new settings available)"
project_issues=$((project_issues + 1))
fi
else
section "Project config"
skip "Not inside a git repository"
fi
echo ""
if [ "$project_issues" -eq 0 ]; then
echo " ✅ Project config healthy. Optional capabilities available: ${capability_ok}/${capability_total}"
else
echo " ⚠️ ${project_issues} project issue(s) found. Optional capabilities available: ${capability_ok}/${capability_total}"
fi
if [ "$capability_missing" -gt 0 ]; then
echo " Missing optional tools do not block setup; install them only for the workflows you use."
fi
echo ""
Related skills
How it compares
Pick ce-setup over editing ~/.codex/config.toml alone when you need per-project Compound Engineering delegation and product pulse configuration.
FAQ
Does ce-setup install all optional tools?
No. It reports missing optional capabilities and prints install hints for workflows you use.
What repo issues trigger fixes?
Obsolete compound-engineering.local.md, outdated example config, or local yaml not gitignored.
Can it auto-configure silently?
No. It uses blocking questions and applies fixes only after user approval.
Is Ce Setup safe to install?
skills.sh reports 1 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.