An engineering harness for AI coding agents — spec-first, TDD, multi-perspective review, clean commits.
翻譯準備中
技能Shell · PythonGitHub @maxence2997自行安裝營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
安裝型專案無需部署網域也可驗證。個人儲存庫可透過 GitHub 登入驗證,組織儲存庫可使用上方的儲存庫驗證檔案。
正在載入完整 README。 以下為已儲存的摘錄。
Your AI agent writes fast. mx-harness makes it engineer properly.
Once installed, you tell the agent your idea — rough or detailed, it asks what it needs.
You make a few decisions. The agent handles the rest. Full walkthrough →
Without a harness, AI agents skip planning, skip tests, and produce unmaintainable diffs. mx-harness wraps the lifecycle into skills the agent must follow.檢視完整 README ↗Your AI agent writes fast. mx-harness makes it engineer properly.
Once installed, you tell the agent your idea — rough or detailed, it asks what it needs.
/mx-flow add Redis caching to the search endpoint
You make a few decisions. The agent handles the rest. Full walkthrough →
Without a harness, AI agents skip planning, skip tests, and produce unmaintainable diffs. mx-harness wraps the lifecycle into skills the agent must follow.
| Principle | Addresses |
|---|---|
| Spec before code | Vague requirements, hidden assumptions, scope creep |
| Test-first | Tests written after the fact, missed edge cases |
| Multi-perspective review | Single-reviewer blind spots, missed SRE concerns |
| Structured commits | "fix stuff" messages, mixed concerns per commit |
| Surgical changes | Drive-by edits, inflated diffs, unrelated refactors |
| Don't assume | Silent guessing on ambiguous specs |
Without mx-harness
User: "Add caching to the search endpoint"
Agent: [writes 200 lines of code]
[commit: "add cache"]
[no tests · no design doc · breaks 2 existing behaviours]
With mx-harness
User: /mx-flow "Add caching to the search endpoint"
Agent: → Asks: Redis or in-memory? TTL strategy? Cache invalidation scope?
→ Writes design spec + ADR to ~/.mx/project/search-cache/
→ Waits for approval before touching any code
→ Task 1: Cache interface (testable abstraction)
→ Task 2: Redis adapter
→ Task 3: Wire into search handler
→ Task 4: Integration test with mock Redis
[each task: red → green → refactor → structured commit]
→ Senior Engineer: "Cache key includes user locale? Edge case."
→ SRE: "No TTL cap — potential memory leak under load."
→ Future Maintainer: "Document why TTL=300 was chosen."
The first scenario is something most engineers have lived through. The second is what mx-harness locks in by default.
/mx-flow — the full pipelineOne command in. A few decisions from you. PR out.
/mx-flow add Redis caching to the search endpoint
/mx-flow status [name] # where every feature stands, next command
/mx-flow finish search-cache # post-merge cleanup
Most of these also run inside mx-flow; all of them work standalone.
| Skill | Description |
|---|---|
| mx-brainstorm | Turn a rough idea into an approved design spec (ADR when a real choice was made) |
| mx-team-review | Standards-based 3-perspective code review (Go, C#) — Senior Engineer, SRE, Future Maintainer |
| mx-review-triage | Triage review findings into fix / track / skip buckets |
| mx-commit | Structured commit with enforced message format |
| mx-pr | Draft, review, and publish a PR to GitHub / GitLab (Bitbucket experimental) |
| mx-doctrine | Shared execution doctrine: model dispatch, escalation, verification, judgment rubrics |
Installation contract updated 2026-09-11.
install.sh keeps one real copy of each skill in ~/.agents/skills/<skill>/, which Codex reads directly. It creates a link for each skill in the following locations when the corresponding agent home exists:
~/.claude/skills/, including existing legacy installs under ~/.config/claude/skills/~/.codex/skills/ (compatibility links)~/.copilot/skills/~/.cursor/skills/Install or update everything from GitHub main:
curl -fsSL --retry 3 https://github.com/maxence2997/mx-harness/archive/refs/heads/main.tar.gz | tar -xz -C /tmp && bash /tmp/mx-harness-main/install.sh
Requires Bash 3.2+ and standard Unix utilities, including sha256sum or shasum. Downloading also requires curl, tar, and gzip. Node.js and Python are not installer dependencies. Inspect install.sh before running it if desired.
Update a subset from GitHub main after downloading the script above:
bash /tmp/mx-harness-main/install.sh --remote mx-flow mx-pr
From a clone: ./install.sh installs or updates from the working tree; ./install.sh --remote fetches GitHub main instead. Append skill names to select a subset. The lock's _meta source row records the source commit or path.
After installing or updating, start a new Claude Code or Codex session to load the current skill files.
The hash lock at ~/.mx/.mx-harness.lock protects customizations under references/:
SKILL.md and README.md are refreshed from the selected source. Keep local customizations under references/.During migration, existing real directories and individual skill symlinks that need replacement, including links into a development checkout, are moved to ~/.mx/backups/ before their agent paths are linked to the canonical copy. Backing up a symlink moves the link itself; its checkout target is never overwritten. Canonical skill symlinks and symlinks inside a canonical skill are materialized as ordinary directories and files before updating. A custom installation path recorded in the lock is also migrated before its lock root changes.
An agent's whole skills directory may already link to ~/.agents/skills. Other parent symlinks, such as ~/.claude/skills pointing into a checkout, fail the path check before that skill is changed; use individual skill links instead.
Skills the lock records but the repo no longer ships are reported. Add --prune to remove them: real directories are backed up and links to retired installations are removed. A failed removal returns a nonzero exit status and retains the skill's lock entries for a later retry.
npx skills add maxence2997/mx-harnessis an alternative installer, but it bypasses this hash lock and its customization-preservation rules.
Run the isolated filesystem fixtures with Python 3's standard library:
bash -n install.sh
python3 -m unittest discover -s tests -v
Python is required only for these tests. They exercise installation and update behavior without changing the real agent skill directories.
MIT