Harness Agent Team Designer
revfactory/harness
Designs a project-specific agent harness: defines specialist agents, writes the skills they follow, picks an execution mode and model for each, and keeps the setup maintained.
Project configuration initialization. An agent skill from sd0xdev/sd0x-harness.
$ npx skills add sd0xdev/sd0x-harness --skill project-setup -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sd0xdev/sd0x-harness project-setup --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/project-setup .claude/skills/project-setup && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "project-setup" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/project-setup into .claude/skills/project-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-setup", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/sd0xdev/sd0x-harness/tree/main/skills/project-setupType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add sd0xdev/sd0x-harness --skill project-setup -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sd0xdev/sd0x-harness project-setup --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/project-setup .agents/skills/project-setup && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "project-setup" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/project-setup into .agents/skills/project-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-setup", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sd0xdev/sd0x-harness --skill project-setup -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sd0xdev/sd0x-harness project-setup --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/project-setup .cursor/skills/project-setup && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "project-setup" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/project-setup into .cursor/skills/project-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-setup", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/sd0xdev/sd0x-harness.git --path skills/project-setup--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add sd0xdev/sd0x-harness --skill project-setup -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sd0xdev/sd0x-harness project-setup --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/project-setup .gemini/skills/project-setup && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "project-setup" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/project-setup into .gemini/skills/project-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-setup", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install sd0xdev/sd0x-harness project-setupInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add sd0xdev/sd0x-harness --skill project-setup -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/project-setup .github/skills/project-setup && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "project-setup" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/project-setup into .github/skills/project-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-setup", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sd0xdev/sd0x-harness --skill project-setup -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sd0xdev/sd0x-harness project-setup --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/project-setup .opencode/skills/project-setup && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "project-setup" agent skill from https://github.com/sd0xdev/sd0x-harness/tree/main/skills/project-setup into .opencode/skills/project-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "project-setup", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
project-setupProject configuration initialization. An agent skill from sd0xdev/sd0x-harness.
Project Setup is an agent skill from sd0xdev/sd0x-harness. Project configuration initialization. Use when: first-time setup, auto-detecting framework, replacing CLAUDE.md placeholders. Not for: ongoing config checks (use claude-health), skill creation (use skill-creator). Output: configured CLAUDE.md + project settings + rules + hooks.
Its SKILL.md is about 7.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/detection-rules.md`).
It sits in Agent Workflows, covering Agent instruction files and Skill authoring. It works with npm and Node.js. The repository describes itself as: The harness layer for Claude Code — a reference implementation of harness engineering with hook-enforced dual review, state-machine gates that survive context compaction, and… The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a4d4bc1. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadGrepGlobEditWriteBash(node:*)Bash(git:*)Bash(ls:*)Bash(mkdir:*)Bash(diff:*)…and 3 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
claudegitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Project Setup loads about 7.1k tokens when it runs, and up to ~9k if it reads all its reference files. Until then it costs about 73 tokens; SKILL.md has 2,163 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
dit\|Write\|NotebookEdit | Block editing .env/.git |Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from sd0xdev/sd0x-harness at commit a4d4bc1, republished under its MIT licence (© sd0xdev). 2,163 words, ~7,062 tokens.
.claude/skills/project-setup/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.{...} remaining)--detect-only to see what can be auto-detected. Manual configuration may be needed for: {FRAMEWORK}, {CONFIG_FILE}, {BOOTSTRAP_FILE}. Script commands ({TEST_COMMAND}, etc.) can often be detected from manifest filesPhase 1: Detect project environment
│
├─ Read package.json (dependencies, devDependencies, scripts)
├─ Detect lockfile (pnpm-lock.yaml / yarn.lock / package-lock.json)
├─ Detect entrypoints (glob src/)
└─ Compile results
│
Phase 2: Confirm detection results
│
├─ Present detection results table
└─ Wait for user confirmation or corrections
│
Phase 3: Write to .claude/CLAUDE.md (unless --detect-only)
│
├─ Read CLAUDE.template.md, filter ecosystem blocks
└─ Replace placeholders, write to .claude/CLAUDE.md
│
Phase 4: Verify CLAUDE.md
│
├─ Read .claude/CLAUDE.md to confirm no remaining placeholders
└─ Output placeholder summary
│
Phase 5: Install Rules + Backfill CLAUDE.md (unless --no-rules or --lite)
│
├─ Locate plugin rules dir (3-level fallback)
├─ mkdir -p .claude/rules/ → copy 13 managed rules + 3 override templates
├─ Backfill: ensure .claude/CLAUDE.md has @rules/ references
└─ Output rules install report
│
Phase 6: Install Hooks (unless --no-hooks or --lite)
│
├─ Locate plugin hooks dir (3-level fallback)
├─ mkdir -p .claude/hooks/ → copy 7 hooks + chmod +x
├─ Merge hook definitions into .claude/settings.json
└─ Output hooks install report
│
Phase 6.5: Install Scripts (unless --lite or --detect-only)
│
├─ Locate plugin scripts dir (3-level fallback)
├─ mkdir -p .claude/scripts/lib → copy 6 scripts
├─ Update manifest .sd0x/install-state.json
└─ Output scripts install report
│
Phase 6.7: Configure Environment Variables (unless --detect-only or --lite)
│
├─ Detect model context size (1M → recommend auto-compact window)
├─ Build env var catalog (model-aware vars; flag retired STOP_GUARD_MODE for removal)
├─ Present recommendations, wait for user confirmation
├─ Merge into .claude/settings.json env object
└─ Output env config report
│
Phase 7: Final Verification Report
│
├─ Summarize all phases
├─ Closed-loop check (CLAUDE.md + rules + hooks + env)
└─ Output next steps| Flag | Phase 1-2 | Phase 3-4 | Phase 5-6.5 | Phase 6.7 | Phase 7 |
|---|---|---|---|---|---|
| (none) | Execute | Execute | Execute | Execute | Full report |
--detect-only | Execute | Skip | Skip | Skip | Detection results only |
--lite | Execute | Execute | Skip | Skip | CLAUDE.md only |
--no-rules | Execute | Execute | Skip rules | Execute | Report |
--no-hooks | Execute | Execute | Skip hooks | Execute | Report |
--env-only | Skip | Skip | Skip | Execute | Env report only (skill-level directive) |
Execute the following detections in order; see references/detection-rules.md for detailed rules:
package.json, pyproject.toml, Cargo.toml, go.mod, build.gradle, pom.xml, Gemfile). Priority order in references/detection-rules.md.package.json; others: ecosystem manifest)pnpm-lock.yaml → pnpm, yarn.lock → yarn, else npm (priority order per references/detection-rules.md)references/detection-rules.md#frameworkreferences/detection-rules.md#databasereferences/detection-rules.md#entrypointsreferences/detection-rules.md#scripts. Missing scripts → # N/A (no script found)For non-Node.js ecosystems, skip Node-specific steps and use ecosystem-specific detection from references/detection-rules.md.
Present a table of all 9 auto-detected placeholders with | Placeholder | Detected Value | Source | columns. Additional manual placeholders ({TICKET_PATTERN}, {ISSUE_TRACKER_URL}, {TARGET_BRANCH}) may remain if not auto-detectable — these are acceptable and should be noted as "manual" in Phase 4 verification.
Wait for user confirmation before proceeding to Phase 3.
Based on detected manifest (from Phase 1.0):
| Manifest | Ecosystem tag |
|---|---|
package.json | node-ts |
pyproject.toml | python |
go.mod | go |
Cargo.toml | rust |
Gemfile | ruby |
pom.xml / build.gradle | java |
Prerequisite: User has confirmed, and not in --detect-only mode.
CLAUDE.template.md (if not found, fallback to CLAUDE.md)<!-- block:X -->...<!-- /block --> sections NOT matching detected ecosystem<!-- block:... -->, <!-- /block -->)Edit for each placeholder (using replace_all: true).claude/CLAUDE.md (create directory if needed)If .claude/CLAUDE.md does not exist, create it from the rendered template.
.claude/CLAUDE.mdGrep: \{[A-Z_]+\} — confirm no remaining auto-detected placeholders. Exclude ${...} shell variable matches (e.g., ${CLAUDE_PLUGIN_ROOT}) from the count — these are intentional env var references, not unfilled placeholders.If --detect-only or --lite, skip to Phase 7.
Skip if: --no-rules or --lite or --detect-only.
Find the plugin's rules/ directory using this priority (short-circuit on first match):
Glob search — search known Claude plugin locations:
Glob: ~/.claude/plugins/**/sd0x-dev-flow/rules/auto-loop.md
Glob: ${REPO_ROOT}/node_modules/sd0x-dev-flow/rules/auto-loop.mdPlugin-relative fallback — try reading @rules/auto-loop.md to confirm accessibility. If readable, derive the rules directory.
Not found → hard error for this phase (do not silently skip). Output explicit failure with remediation steps:
⛔ Rule source not found. Auto-loop rules cannot be installed.
Remediation (choose one):
1. Install the plugin — run these two slash commands one after the other (they are
Claude Code commands, not shell commands, so `&&` chaining does not apply):
/plugin marketplace add sd0xdev/sd0x-harness
/plugin install sd0x-dev-flow@sd0xdev-marketplace
2. Copy rules manually from a machine that has the plugin installed
3. Re-run with --no-rules to skip (rules layer will be missing)Then skip Phase 5 and continue to Phase 6. Phase 7 will report this as ⚠️ Partial.
mkdir -p ${REPO_ROOT}/.claude/rules/
Copy all 13 managed rules:
| Rule | Purpose |
|---|---|
auto-loop.md | Auto review loop (behaviour-layer contract; hooks remind, nothing blocks) |
codex-invocation.md | Codex independent research requirement |
discretion.md | Instruction tiers: Anchor / Default / Guidance |
scope-discipline.md | Scope axis orthogonal to severity; out-of-scope deferral |
testing.md | Test structure and requirements |
security.md | OWASP security checklist |
git-workflow.md | Git branch and commit conventions |
logging.md | Structured logging standards |
docs-writing.md | Documentation writing conventions |
docs-numbering.md | Document numbering scheme |
self-improvement.md | Self-improvement loop |
context-management.md | Data-driven context monitoring |
override-contract.md | Resolution order and heading tables for the user-owned override files (path-scoped to .claude/rules/*-project.md) |
Create override template (unmanaged, not manifest-tracked):
auto-loop-project.md · testing-project.md · git-workflow-project.md — user-owned override templates, copied when absent and stamped Based on: <base> @ <installed base hash> exactly as /install-rules Phase 4.5 does (never a byte copy of the shipped stamp)Conflict strategy:
| Scenario | Action |
|---|---|
| File does not exist | Install |
| File exists, content identical | Skip |
| File exists, content differs | Skip + warn as conflict |
After copying, collect hashes and write manifest:
git hash-object --no-filters for each managed rule (installed + already-identical skipped).sd0x/install-state.json (create {} if not exists)schema_version: 1, installed_at, plugin_version (source priority: .claude-plugin/plugin.json → package.json → "unknown"), rules key — hash for each file in managed state (both newly installed and already-identical). Structure: rules[filename] = { "hash": "<sha1>" }hook_scripts, scripts, sd0x_version, agents_md_hash, hooks_installed — do NOT drop unknown keys)Write toolNote:
/project-setupuses fresh-install semantics (install new / skip identical / warn on conflict; no smart merge). For smart merge (section merge, legacy migration,--legacy-strategy), run/install-rulesdirectly. After rule installation,/install-rulesautomatically creates each override template (auto-loop-project.md,testing-project.md,git-workflow-project.md— user-owned) if it doesn't exist. Seeskills/install-rules/SKILL.md.
Ensure .claude/CLAUDE.md contains @rules/ references so the auto-loop engine can activate:
.claude/CLAUDE.md for @rules/auto-loop.md@rules/auto-loop-project.md after auto-loop.md, @rules/git-workflow-project.md after git-workflow.md, and the plain `rules/testing-project.md` reference after `rules/testing.md` (path-scoped: a legacy @rules/testing.md or @rules/testing-project.md line counts as present but is rewritten to the template's plain reference, since an @ import loads it at launch):CLAUDE.template.md ## Rules directly after its base line (e.g. - @rules/git-workflow-project.md -- Project-specific git overrides (user-owned)). A path-scoped template (testing-project.md) and its base are inserted as the template's plain rules/<file> references, never as @ imports — an import would load them at launchCLAUDE.template.md ## Rules — the base line, then the override line — at the end of the file's ## Rules list. An installed override whose base is unreferenced is not configured; never report it as present## Rules block at end of file (16 rule references — 11 @rules/ imports and 5 path-scoped plain references (13 managed + 3 override templates) from CLAUDE.template.md ## Rules section)CLAUDE.template.md: ## Required Checks through the ### Auto-Loop section (up to the next ## heading) + ## Rules section → create minimal .claude/CLAUDE.mdWhen extracting from template, remove ecosystem block markers and leave unresolved placeholders as {PLACEHOLDER}.
## Rules Install Report
**Source**: <plugin-rules-path>
**Target**: <repo-root>/.claude/rules/
| Rule | Status |
|------|--------|
| auto-loop.md | ✅ Installed |
| ... | ... |
**Installed**: N / **Skipped**: M / **Conflicts**: K
**Manifest**: .sd0x/install-state.json
**CLAUDE.md backfill**: ✅ @rules/ references presentSkip if: --no-hooks or --lite or --detect-only.
Same 3-level fallback as Phase 5.1, but search for hooks/pre-edit-guard.sh:
Glob: ~/.claude/plugins/**/sd0x-dev-flow/hooks/pre-edit-guard.sh
Glob: ${REPO_ROOT}/node_modules/sd0x-dev-flow/hooks/pre-edit-guard.sh
Plugin-relative fallback: @hooks/pre-edit-guard.sh
Not found → hard error for this phase (do not silently skip). Output explicit failure with remediation steps:
⛔ Hook source not found. The reminder-layer hooks cannot be installed.
Remediation (choose one):
1. Install the plugin — run these two slash commands one after the other (they are
Claude Code commands, not shell commands, so `&&` chaining does not apply):
/plugin marketplace add sd0xdev/sd0x-harness
/plugin install sd0x-dev-flow@sd0xdev-marketplace
2. Copy hooks manually from a machine that has the plugin installed
3. Re-run with --no-hooks to skip (reminder hooks will be missing)Then skip Phase 6 and continue to Phase 7. Phase 7 will report this as ⚠️ Partial.
mkdir -p ${REPO_ROOT}/.claude/hooks/
Copy 7 hooks (exclude namespace-hint.sh — plugin-only):
| Hook | Event | Matcher | Purpose |
|---|---|---|---|
pre-edit-guard.sh | PreToolUse | Edit|Write|NotebookEdit | Block editing .env/.git |
pre-bash-codex-launch-guard.sh | PreToolUse | Bash | Block a Codex dispatch launched with its progress redirected away from the task panel |
post-edit-format.sh | PostToolUse | Edit|Write|NotebookEdit | Auto-format reminder |
post-skill-auto-loop.sh | PostToolUse | Skill | Post-review reminder (next gate) |
stop-guard.sh | Stop | — | Reminder: open gates at stop (markdown, exit 0) |
user-prompt-review-guard.sh | UserPromptSubmit | — | Per-prompt [AUTO_LOOP_STATE] fact line |
post-compact-auto-loop.sh | SessionStart | compact | Re-inject auto-loop reminders after compaction |
chmod +x each installed script.
Conflict strategy: same as Phase 5.2.
Target: ${REPO_ROOT}/.claude/settings.json
Hook definition mapping (uses $CLAUDE_PROJECT_DIR for portability):
{
"hooks": {
"PreToolUse": [
{"matcher": "Edit|Write|NotebookEdit", "hooks": [{"type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/pre-edit-guard.sh"}]},
{"matcher": "Bash", "hooks": [{"type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/pre-bash-codex-launch-guard.sh"}]}
],
"PostToolUse": [
{"matcher": "Edit|Write|NotebookEdit", "hooks": [{"type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/post-edit-format.sh"}]},
{"matcher": "Skill", "hooks": [{"type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/post-skill-auto-loop.sh"}]}
],
"Stop": [
{"matcher": "", "hooks": [{"type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/stop-guard.sh"}]}
],
"UserPromptSubmit": [
{"matcher": "", "hooks": [{"type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/user-prompt-review-guard.sh"}]}
],
"SessionStart": [
{"matcher": "compact", "hooks": [{"type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/post-compact-auto-loop.sh"}]}
]
}
}Note: Environment variables are configured in Phase 6.7 (independent of hook installation). Phase 6.3 only handles hook definition merging.
Merge strategy:
{} if not exists).claude/hooks/<name>.sh paths → upgrade to "$CLAUDE_PROJECT_DIR"/.claude/hooks/<name>.shhooks/hooks.json exists at repo root (= plugin source repo), warn that plugin hooks and installed hooks may coexist. Runtime arbitration handles dedup automatically## Hooks Install Report
**Source**: <plugin-hooks-path>
**Scripts**: <repo-root>/.claude/hooks/
**Settings**: <repo-root>/.claude/settings.json
| Hook | Script | Settings | Status |
|------|--------|----------|--------|
| pre-edit-guard.sh | ✅ Copied | ✅ Added | Installed |
| ... | ... | ... | ... |
**Installed**: N / **Skipped**: M / **Conflicts**: KSkip if: --lite or --detect-only.
Same 3-level fallback as Phase 5.1, but search for scripts/precommit-runner.js:
Glob: ~/.claude/plugins/**/sd0x-dev-flow/scripts/precommit-runner.jsGlob: ${REPO_ROOT}/node_modules/sd0x-dev-flow/scripts/precommit-runner.js@scripts/precommit-runner.jsNot found → warn + skip Phase 6.5. Phase 7 will report ⚠️ Partial.
mkdir -p ${REPO_ROOT}/.claude/scripts/lib| Script | Purpose | Dependencies |
|---|---|---|
precommit-runner.js | Precommit runner for /precommit, /precommit-fast; notes its own pass/fail via review-state.js | lib/utils.js, review-state.js |
verify-runner.js | Verify runner for /verify | lib/utils.js |
review-state.js | Reminder-state checker/noter (single slot per plane under ~/.cache/sd0x-dev-flow/) read by the locally installed hooks and by /remind, /next-step, /pre-pr-audit | lib/tree-digest.js |
lib/utils.js | Shared utilities | None |
lib/tree-digest.js | Per-plane content digests (binds a noted verdict to the tree that earned it) | None |
protected-branches.sh | Protected-branch resolver (defaults ∪ git-workflow-project.md additions) read by /push-ci, /epic-merge, /gh-stack; without it an installed override makes every branch read as protected | None |
| Scenario | Action |
|---|---|
| File does not exist | Install |
| File exists, content identical | Skip |
| File exists, content differs | Skip + warn as conflict |
.sd0x/install-state.json (create {} if not exists).claude-plugin/plugin.json or package.jsonschema_version: 1, installed_at, plugin_version, scripts keygit hash-object --no-filters .claude/scripts/<name>rules, hook_scripts, and any unknown keys).sd0x/install-state.json## Scripts Install Report
**Source**: <plugin-scripts-path>
**Target**: <repo-root>/.claude/scripts/
| Script | Status |
|--------|--------|
| precommit-runner.js | Installed/Skipped/Conflict |
| verify-runner.js | Installed/Skipped/Conflict |
| review-state.js | Installed/Skipped/Conflict |
| lib/utils.js | Installed/Skipped/Conflict |
| lib/tree-digest.js | Installed/Skipped/Conflict |
| protected-branches.sh | Installed/Skipped/Conflict |
**Installed**: N / **Skipped**: M / **Conflicts**: KSkip if: --detect-only or --lite.
Run exclusively with: --env-only (skip all other phases, jump directly to 6.7 → 7).
Purpose: Write recommended environment variables to .claude/settings.json env object, independent of hook installation. This phase runs even when --no-hooks is specified.
| Variable | Default | Condition | Description |
|---|---|---|---|
CLAUDE_CODE_AUTO_COMPACT_WINDOW | 320000 | 1M context model detected | Auto-compact window size (tokens) — delays compaction to preserve more context |
When an existing setting matches a previously recommended value (not the current one), flag it as Upgrade in the interactive table so the user can explicitly confirm the change. Never rewrite silently.
| Variable | Legacy value(s) | Current recommended | Retired on |
|---|---|---|---|
CLAUDE_CODE_AUTO_COMPACT_WINDOW | 456000 | 320000 | 2026-04-17 |
STOP_GUARD_MODE | strict, warn (any value) | Remove — the Stop hook is reminder-only since hook-lightweighting; the setting is dead config | 2026-08-13 |
Determine whether CLAUDE_CODE_AUTO_COMPACT_WINDOW should be recommended:
CLAUDE_CODE_AUTO_COMPACT_WINDOW: "320000" in recommendations with note: "1M context model detected"CLAUDE_CODE_AUTO_COMPACT_WINDOW from recommendationsRead existing env values from both .claude/settings.local.json and .claude/settings.json (create {} if not exists). Runtime precedence: settings.local.json > settings.json
Build recommendations table showing effective current value:
## Environment Variables
Only one row per variable appears at a time; the examples below are **alternatives** for the same variable, selected by its current state.
Example A — first-time install (variable not yet set):
| Variable | Current (effective) | Source | Recommended | Action |
|----------|---------------------|--------|-------------|--------|
| CLAUDE_CODE_AUTO_COMPACT_WINDOW | (not set) | — | 320000 | Add (1M model) |
Example B — upgrade path (variable already set to a legacy value):
| Variable | Current (effective) | Source | Recommended | Action |
|----------|---------------------|--------|-------------|--------|
| CLAUDE_CODE_AUTO_COMPACT_WINDOW | 456000 | settings.json | 320000 | **Upgrade** (legacy value, retired 2026-04-17) |Present to user for confirmation — user may accept all, modify values, or skip specific vars. For rows marked Upgrade, display the retirement date and reason so the user can make an informed decision.
Apply confirmed changes to .claude/settings.json (default) or .claude/settings.local.json (with --local)
{} if not exists)env object:env keys not in the catalog (do not drop unknown keys)env keys in settings (hooks, etc.)/install-hooks/project-setup) defers env writes to Phase 6.7--no-hooks skips Phase 6 but Phase 6.7 still runs → env vars are always configured## Environment Config Report
**Target**: <repo-root>/.claude/settings.json (or settings.local.json with --local)
| Variable | Value | Effective Source | Status |
|----------|-------|-----------------|--------|
| CLAUDE_CODE_AUTO_COMPACT_WINDOW | 320000 | settings.json | ✅ Added (1M model) — or ✅ Upgraded (456000 → 320000, legacy retired 2026-04-17) when upgrading |
**Model**: Opus 4.6 (1M context) → auto-compact window recommended
**Precedence note**: Runtime resolves env > settings.local.json > settings.json > defaultSummarize all phases and perform closed-loop check:
| Condition | Check | Required |
|---|---|---|
| CLAUDE.md behavior text | Required Checks section exists | ✅ |
@rules/ references | @rules/auto-loop.md in .claude/CLAUDE.md | ✅ |
| Rule files | .claude/rules/auto-loop.md exists | ✅ |
| Hook reminders | stop-guard in .claude/settings.json | ✅ |
| Script runners | .claude/scripts/precommit-runner.js exists | ✅ (unless --lite or --detect-only) |
| Auto-compact window | env.CLAUDE_CODE_AUTO_COMPACT_WINDOW in target settings file | ✅ (1M model only) |
## Project Setup Complete
| Phase | Status |
|-------|--------|
| Detection | ✅ Framework: X, PM: Y, DB: Z |
| CLAUDE.md | ✅ Configured (0 remaining placeholders) |
| Rules | ✅ 13/13 managed rules + 3 override templates |
| Hooks | ✅ 7/7 installed + settings merged |
| Scripts | ✅ 6/6 scripts installed |
| Env Config | ✅ AUTO_COMPACT_WINDOW=320000 (1M) |
### Closed-Loop Status
✅ Auto-loop reminder loop fully configured
(or ⚠️ Partial — missing: hooks (reminder layer inactive))
(or ⚠️ Partial — missing: rules)
(or ⚠️ Partial — missing: scripts (runner not installed))
(or ℹ️ Auto-compact window not set — standard context model detected)
### Next Steps
- Run `/repo-intake` for a full project scan
- Use `HOOK_BYPASS=1` as emergency escape hatch
- Use `/install-rules --force` to upgrade rules later{UPPER_CASE} placeholders in .claude/CLAUDE.md after setup (manual placeholders like {TICKET_PATTERN} are acceptable).claude/rules/ contains 16 .md files (13 managed + 3 override templates) (unless --no-rules or --lite).claude/hooks/ contains 7 .sh files with execute permission (unless --no-hooks or --lite).claude/settings.json contains hook definitions (unless --no-hooks or --lite).claude/scripts/ contains precommit-runner.js, verify-runner.js, review-state.js, lib/utils.js, lib/tree-digest.js, and protected-branches.sh (unless --lite or --detect-only).claude/CLAUDE.md contains @rules/auto-loop.md reference (unless --lite)env.CLAUDE_CODE_AUTO_COMPACT_WINDOW is set in target settings file when 1M model detected (unless --detect-only or --lite)See detection rules: detection-rules.md
© sd0xdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/project-setup of sd0xdev/sd0x-harness.
Open the folder on GitHubat commit a4d4bc1
Project Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Project Setup this skillsd0xdev/sd0x-harness | 192 | — | ~7.1k | Automated safety check: Notes | MIT | |
| Harness Agent Team Designerrevfactory/harness | 9.1k | — | ~4.5k | Automated safety check: Pass | Apache-2.0 | |
| Harness Evolution Feedback Looprevfactory/harness | 9.1k | — | ~855 | Automated safety check: Pass | Apache-2.0 | |
| Skill Creatorccusage/ccusage | 19k | — | ~1.1k | Automated safety check: Pass | Custom licence | |
| Workflow Schema Tuningbreaking-brake/cc-wf-studio | 5.4k | — | ~1.3k | Automated safety check: Pass | Custom licence | |
| Skill Base CLIginuim/skill-base | 120 | 1 repos | ~1.9k | Automated safety check: Pass | None |
revfactory/harness
Designs a project-specific agent harness: defines specialist agents, writes the skills they follow, picks an execution mode and model for each, and keeps the setup maintained.
revfactory/harness
Collects feedback on how an agent harness performed, generalizes it, and updates the harness agents, skills and orchestrator along with a change-history table.
ccusage/ccusage
Guides repo-local skill creation and updates. An agent skill from ccusage/ccusage.
breaking-brake/cc-wf-studio
Guides edits to cc-wf-studio's workflow schema so AI agents generate better workflows, treating schema text as prompt engineering rather than validation.
ginuim/skill-base
Uses the skb command to search, install, update, delete, publish and import skills on a Skill Base site, including curated collections and GitHub imports.
laude-institute/headlong
Scaffolds new ShellLM skills with the right frontmatter, directory layout and agent-facing writing style, so an agent can extend its own capabilities.
sd0xdev/sd0x-harness
Write an Architecture Decision Record (ADR) for a feature — Context / Decision / Status / Consequences / Alternatives, filed as docs/features/<feature/adr-<NNN-<title.md with a 3-digit zero-padded…
sd0xdev/sd0x-harness
Load GitHub PR review comments into AI session — analyze, triage, plan.
sd0xdev/sd0x-harness
Change-aware next step advisor. An agent skill from sd0xdev/sd0x-harness.
sd0xdev/sd0x-harness
Obsidian vault integration via official CLI. An agent skill from sd0xdev/sd0x-harness.
sd0xdev/sd0x-harness
Agent-driven workflow orchestration (v1 report-only). An agent skill from sd0xdev/sd0x-harness.
sd0xdev/sd0x-harness
Post friendly review comments to a GitHub PR — prepare locally, preview, then submit as atomic review.
Categories
Project configuration initialization. An agent skill from sd0xdev/sd0x-harness. Project Setup is an agent skill from sd0xdev/sd0x-harness. Project configuration initialization.
Project Setup fits situations like: : first-time setup; auto-detecting framework; replacing CLAUDE.md placeholders.
Run `npx skills add sd0xdev/sd0x-harness --skill project-setup -a claude-code`. Or copy the skill folder (skills/project-setup in sd0xdev/sd0x-harness) into .claude/skills/project-setup in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sd0xdev/sd0x-harness --skill project-setup -a codex`. Or copy the skill folder (skills/project-setup in sd0xdev/sd0x-harness) into .agents/skills/project-setup in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sd0xdev/sd0x-harness --skill project-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/project-setup, .gemini/skills/project-setup, .github/skills/project-setup and .opencode/skills/project-setup in your project.
Going by SKILL.md and its folder, Project Setup needs the command-line tools its instructions call (claude and git). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Grep, Glob, Edit, Write, Bash(node:*), Bash(git:*), Bash(ls:*), Bash(mkdir:*), Bash(diff:*), Bash(chmod:*), Bash(jq:*), Bash(bash:*).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Project Setup is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.1k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Project Setup: Harness Agent Team Designer (revfactory/harness, 9.1k stars), Harness Evolution Feedback Loop (revfactory/harness, 9.1k stars), Skill Creator (ccusage/ccusage, 19k stars) and Workflow Schema Tuning (breaking-brake/cc-wf-studio, 5.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sd0xdev (a GitHub user) maintains it in sd0xdev/sd0x-harness, which has 192 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on October 8, 2026.
Source: sd0xdev/sd0x-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.