Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill harness-manager명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | harness-manager |
| description | >- Use when this capability is needed. |
Keep the Codex and Claude Code global harnesses consistent. The pain this solves: a rule, an MCP server, or a command lives in one tool's config but not the other — or the two have quietly diverged — so the two assistants behave differently for the same task, and you don't find out until one of them does the wrong thing. This skill finds those gaps, shows them to you, and (after you approve) reconciles them.
In: the global harness of both tools and only the surfaces that are genuinely shared.
| Shared surface | Claude Code | Codex |
|---|---|---|
| Behavioral rules | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md (+ ~/.codex/rules/default.rules) |
| MCP servers | ~/.claude.json → mcpServers | ~/.codex/config.toml → [mcp_servers.*] |
| Commands ↔ Prompts | ~/.claude/commands/*.md | ~/.codex/prompts/*.md |
| Skills | ~/.claude/skills/ | ~/.codex/skills/ |
Out: project-level AGENTS.md / .claude/ (the user scoped this to global). Tool-specific
machinery that has no meaningful counterpart in the other tool — classify it, never sync it
(see Drift classification below). Cruft removal within one tool — that's harness-diet.
Exact paths, gotchas, and the per-machine inventory live in references/harness-map.md. Read it
first — it records non-obvious facts (e.g. Claude MCP is in ~/.claude.json, not
settings.json; Codex has two rule surfaces). Verify each path still exists before reading;
don't assume.
Four phases. Phases 1–3 are read-only and safe to run anytime. Phase 4 mutates real files and only happens after the user approves specific items.
Resolve every file pair from references/harness-map.md and read both sides for each shared
surface. If a path has moved, find the real one rather than reporting a false "missing".
For each item (a rule/topic, an MCP server, a command/prompt, a skill) decide which bucket it falls in. This classification is the skill — the rest is plumbing.
| Mark | Bucket | Meaning |
|---|---|---|
| ✅ | In sync | Equivalent on both sides. Nothing to do. |
| 🔗 | Delegated | One side intentionally points to the other as the source of truth (pointer pattern). Not drift — preserve it. |
| ⚠️ | Diverged | Both sides define it but they contradict or materially differ. This is where the two assistants actively disagree — the fix is a which-side-is-canonical decision. |
| ➕ | Missing | Present on one side, absent on the other, and the kind of thing the user plainly wants everywhere. Candidate to propagate. Carries a grade — see below. |
| 🛠️ | Broken port | Exists on both sides but the ported copy still carries the other tool's idioms, so it fails at runtime (e.g. a Codex skill with ${CLAUDE_PLUGIN_ROOT}). The fix is token-adaptation, not a canonical decision — so it is not ⚠️. |
| 🔒 | Tool-specific | Only meaningful in one tool. Not drift — never sync. |
Two distinctions the report must keep visible (they were collapsed in early runs and made the counts unreadable):
The only hard judgment is Missing vs Tool-specific, and getting it right is the whole point. A rule absent on one side is not automatically a gap:
apply_patch, rg-first, git status separation → Codex-idiomatic. Leave them.permissions.allow, sandbox trust_level, plugin enablement → tool-specific machinery
with no cross-mapping. Leave them.A fast tie-breaker for ➕ vs 🔒: is the rule backed by machine-level enforcement that hits both
tools the same way? If the trigger is a shared mechanism — ~/.npmrc min-release-age, a git
hook, the OS sandbox, a lockfile — then the other tool runs into the exact same wall, so the rule
is almost certainly universal intent → ➕. Check for that enforcement and cite it as the evidence
(e.g. "~/.npmrc enforces min-release-age=7, so Codex hits it too"); it's a stronger argument
than the prose alone.
Lead with the reasoning ("this is universal intent / this is tool-idiomatic"), not a keyword match. When you're unsure, mark it ⚠️/➕ and let the user decide — under-reporting a real divergence is worse than asking.
Write claudedocs/harness-sync/REPORT-<YYYY-MM-DD>.html (plus a .md mirror for grep/diff).
One section per shared surface; one row per item with: classification mark, current state on
each side, and a recommended reconciliation (a direction, or "leave"). Open it in the browser.
Format rules (so the summary stays actionable):
This is decision content, so follow the house rules: it's an HTML artifact the user clicks
through — not a wall of chat markdown — and the .content/main carries no max-width cap
(the comparison tables need the width). If there are 3+ items that need a real which-side-wins
call, offer to escalate to /decision-dashboard rather than reinventing decision cards here.
Recommend a direction per ⚠️/➕ item but do not pick the winner for the user on diverged rules — surface both and your reasoning; the user owns "which tool is canonical."
Before touching anything, back up every target file. These files are not under git — a bad
edit is unrecoverable. Snapshot to ~/.claude/backups/harness-sync-<YYYY-MM-DD>/ and tell the
user the one-line restore command. (This is the lesson the prior harness-diet run paid for.)
Then apply only the approved items, surgically:
~/.claude.json (large, central) and config.toml with extra care — change only the
target block, then re-parse the whole file (json.load / a TOML load) to prove it's still
valid. These are system-boundary config files; validate after writing.references/sync-recipes.md.Report what changed, per file, with the restore command.
trust_level
into Claude permissions, produces broken config and a worse harness, not a synced one.~/.claude/skills/ —
check the plugin paths before calling something a Codex-only gap, or you'll raise false ➕ (the
real Codex-only set is much smaller than a raw folder diff suggests). On top of presence, do one
grep-level broken-port check: a skill copied to one tool that still carries the other tool's
idioms — a Codex skill containing ${CLAUDE_PLUGIN_ROOT}, a /plugin: namespace, or Edit/
Read/Write tool names — is a Claude skill pasted without adaptation and will fail at runtime;
mark it 🛠️ (broken port — a token-adaptation fix, counted separately from ⚠️ diverged). Full
body sync only when the user names a specific skill.references/harness-map.md — exact paths, per-tool gotchas, and the current per-machine
inventory of what's shared vs tool-specific. Read before Phase 1.references/sync-recipes.md — per-surface comparison method and concrete format-translation
recipes (JSON↔TOML MCP, rule propagation via pointer, command↔prompt). Read before Phase 4.Source: Elian-Studio/elian-claude-plugins — distributed by TomeVault.