一键导入
harness-pair-dev
Use when `/harness-pair-dev` is invoked to author, revise, position, or remove a target project's producer-reviewer pair in `.harness/loom/`.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when `/harness-pair-dev` is invoked to author, revise, position, or remove a target project's producer-reviewer pair in `.harness/loom/`.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Produces the goal markdown that `/harness-orchestrate` consumes as the original user request. Use when `/harness-goal-interview` is invoked, when the user is starting a harness cycle on a new feature or initiative and needs to articulate requirements precisely (e.g. 'write down what we're trying to do' before running the harness), or when an earlier `/harness-orchestrate` invocation failed because the goal file was vague or plan-shaped. Runs a full user interview focused on requirements precision and user-side technical decisions — implementation detail is the planner's and producer pairs' job, not the goal file's — then writes the five canonical sections (Why / Goal / Constraints / Out of scope / Completion criteria) to the target project root. Apply this skill whenever the user is about to hand a goal file to `/harness-orchestrate` even without an explicit interview ask; a ten-minute structured elicitation pays back across every EPIC, task, and review the cycle produces.
Use when `/harness-init` is invoked to install the target-side runtime foundation into the current working directory. Scaffolds `.harness/loom/` canonical staging plus `.harness/cycle/` runtime state, copies target-local `hook.sh` and `sync.ts`, and stops there. Platform trees are derived later by `node .harness/loom/sync.ts --provider <list>`.
Use when `/harness-auto-setup` is invoked to bootstrap and configure a project-shaped harness, expand an existing harness without refreshing its foundation, or migrate an existing harness foundation with snapshot-first preservation.
| name | harness-pair-dev |
| description | Use when `/harness-pair-dev` is invoked to author, revise, position, or remove a target project's producer-reviewer pair in `.harness/loom/`. |
| argument-hint | --add <pair-slug> "<purpose>" [--from <source>] [--reviewer <slug> ...] [--before <pair-slug> | --after <pair-slug>] | --improve <pair-slug> "<purpose>" [--before <pair-slug> | --after <pair-slug>] | --remove <pair-slug> |
| user-invocable | true |
harness-pair-dev is the target's pair-authoring layer. harness-init installs the shared runtime foundation; this skill adds the project-specific producer-reviewer pairs that the orchestrator can actually dispatch.
Write only in canonical staging under <target>/.harness/loom/. Pair files live under .harness/loom/{agents,skills}/. Pair order lives in .harness/loom/registry.md ## Registered pairs, and register-pair.ts is the only writer for that section. Derived platform trees are refreshed later by the target-local node .harness/loom/sync.ts --provider <list> command.
Cycle task and review history under .harness/cycle/ is runtime evidence, not pair-authoring state. Pair authoring may inspect active-cycle references for safety, but it must not edit or delete cycle history.
Use ./scripts/pair-dev.ts (resolved from this skill's directory) for deterministic command validation, registered-pair source preparation, and guarded removal. The helper returns preparation JSON for --add and --improve; it does not claim to author pair bodies unless files are actually written.
harness-* slugs before invoking ./scripts/pair-dev.ts; the helper accepts canonical slugs only.## Registered pairs.--split and --hint as unsupported v0.3.0 surface. Split is a manual sequence of --add, --improve, and --remove; intent is passed as positional <purpose>.node .harness/loom/sync.ts --provider <list> from the target root./harness-pair-dev --add <pair-slug> "<purpose>" [--from <source>] [--reviewer <slug> ...] [--before <pair-slug> | --after <pair-slug>]
/harness-pair-dev --improve <pair-slug> "<purpose>" [--before <pair-slug> | --after <pair-slug>]
/harness-pair-dev --remove <pair-slug>
All slug-bearing arguments must be canonical before the deterministic helper or registry/files are touched. If the user says document, use harness-document for the pair slug, --from, reviewer slugs, and placement anchors.
--add<purpose> is missing or the target does not yet contain the installed runtime foundation.--from <source> is present, resolve it from one of:
.harness/loom/registry.mdsnapshot:<ts>/<pair-slug> under .harness/_snapshots/auto-setup/<ts>/loom/archive:<ts>/<pair-slug> under .harness/_archive/<ts>/loom/--from values that are arbitrary filesystem paths, derived platform paths, missing registry entries, planner/finalizer slugs, or foundation skill names.--from is present, follow references/authoring/from-overlay.md: start from current templates, enforce current runtime shape, then overlay compatible source-pair domain material.<purpose> override the source pair's old intent whenever the two conflict. <purpose> remains required even with --from.--reviewer flags -> default 1:1 pair--reviewer <slug> -> 1:M pair--from, ground them directly in repo evidence; with --from, apply template-first overlay../scripts/register-pair.ts to update ## Registered pairs in .harness/loom/registry.md. Pass --before <slug> or --after <slug> whenever the right workflow position is known; omit anchors only when a true append is intended.--improve<purpose> is missing.<purpose> as the primary improvement axis, then fold in rubric hygiene and codebase drift.--add + --improve + --remove sequence instead of automating a split.--remove.harness/loom/registry.md and resolve its producer, reviewer slug(s), and skill slug from that registry line.registry.md, missing pairs, and anything outside .harness/loom/agents/ or .harness/loom/skills/..harness/cycle/state.md when it exists. If ## Next references the pair, or if any non-terminal EPIC roster/current field references the pair, abort before mutating files../scripts/register-pair.ts --unregister --target <target> --pair <pair-slug> to remove only the roster entry from ## Registered pairs..harness/loom/ after unregistering..harness/cycle/, .harness/cycle/epics/, task files, review files, or events.md. Historical task/review evidence stays intact after pair removal.node .harness/loom/sync.ts --provider <list> after removal so derived platform trees drop stale pair files.register-pair.ts updates <target>/.harness/loom/registry.md ## Registered pairs. That section is the project's sole roster SSOT: the orchestrator reads it at dispatch time, and the planner receives it through the dispatch envelope.
Its placement semantics are load-bearing:
--before / --after + existing pair -> move the pair to the new anchor--before / --after + new pair -> insert at the anchorFor removal, register-pair.ts --unregister deletes only the matching roster line. File deletion and active-cycle safety checks belong to /harness-pair-dev --remove, not to the registry helper.
Treat that section as workflow order, not as a changelog.
--add receives a required positional <purpose> and uses it as the main axis for the pair.--add --from accepts a current live pair slug or a target-local snapshot: / archive: locator and applies template-first overlay, never arbitrary path/provider import or blind copy.--improve receives a required positional <purpose> and uses it as the main axis for revision..harness/loom/.--add and --improve start from actual codebase evidence.--remove refuses planner/finalizer/foundation targets and active-cycle references before mutating .harness/loom/.--remove preserves .harness/cycle/ task and review history.## Registered pairs lists at least one reviewer slug (1:1 or 1:M).--add before harness-init.harness-finalizer agent body, not in ## Registered pairs.--improve.--hint; intent belongs in positional <purpose>.--split; split is a user-directed multi-command sequence, not a single pair-dev command.--from as an arbitrary snapshot path, file path, derived platform path, or blind-copy import.skills: wholesale during --from; the new pair skill plus harness-context are mandatory template authority, while extra domain skills are preservation candidates.Next or live EPIC roster..harness/cycle/ history during pair removal.register-pair.ts../scripts/pair-dev.ts — deterministic command helper for validation, --from source preparation, and guarded --remove./scripts/register-pair.ts — deterministic registration helper (writes .harness/loom/registry.md)templates/producer-agent.md, templates/reviewer-agent.md, templates/pair-skill.md — skeletons copied and filled in for each new pairexamples/agents/ — completed producer/reviewer exemplars to reference for tone and structurereferences/authoring/agent-authoring.md — agent frontmatter, five principles, Task shape, Output Format rubricreferences/authoring/skill-authoring.md — pair-skill body rules (section order, 200-line cap, description-as-trigger)references/authoring/from-overlay.md — --add --from template-first overlay rules and source preservation boundariesreferences/authoring/oversized-split.md — when and how to split an oversized SKILL.md body into references/; this is not the removed pair-level --split command