Copy to $CODE_ROOT/harness.md on each workstation. That file is machine-local (harness rules for this user's machine) and must not be committed.
Your agent discovers how this workstation runs AI assistants and writes concrete values here — never into forkable templates (user.md, AGENTS.md, profiles/*.md in upstream, skill bodies).
Polyglot harness use is normal: one machine may run Cursor, Claude Code, Hermes, or T3code on different days. Record what applies on this machine; re-probe when the harness changes.
HARNESS_NAME = <cursor | claude-code | hermes | t3code | windsurf | harness | other>
HARNESS_VERSION = <optional; if the harness exposes a version string>
# Where always-on rules are injected (Settings field, CLAUDE.md, system prompt file, etc.)
ALWAYS_ON_RULES = <description or path>
# Where this harness discovers installed agent skills (if any)
SKILLS_DISCOVERY_ROOT = <path or "none — load from $AGENT_RULES_PATH/skills/<name>/ directly">
# Machine-local rules overlay — does not sync across machines or harness accounts
LOCAL_RULES_DIR = <path or none>
# How to link canonical skills into SKILLS_DISCOVERY_ROOT (examples below)
SKILLS_INSTALL = <junction | copy | harness-native | none>
# Chat / editor behaviors (see general/harness.md)
CHAT_FILE_LINKS = markdown-workspace-links | plain-paths | harness-default
CODE_CITATION = line-range-fence | none | harness-default
IDE_PROJECT_RULES = mdc-in-repo | claude-rules | none
# Integrations probed on this machine
MCP_CONTEXT7 = available | unavailable
MCP_OTHER = <optional list>
# Last successful sync-agent-rules run (machine-local stamp; skill sync-agent-rules)
AGENT_RULES_SYNCED_SHA = <git SHA of $AGENT_RULES_PATH HEAD after sync, or empty>
AGENT_RULES_SYNCED_LABEL = <skills-set/YYYY.MM.DD from nearest tag, or empty>
AGENT_RULES_SYNCED_AT = <ISO-8601 date, or empty>
# Hive remote fetch (machine-local; skill hive-watch — prefer scheduler over per-chat fetch)
HIVE_WATCH_STATUS = $CODE_ROOT/hive-watch.status.json
HIVE_WATCH_REPO = $CODE_ROOT/github.com/dev-centr/hive-watch
# Token provenance — inline heuristic vs grounded marks (HCI Nerdz contract)
# emit-spans: runtime attaches span metadata alongside streamed text
# consume-spans: renderer styles incoming provenance from another harness
# off: plain text only
TOKEN_PROVENANCE = emit-spans | consume-spans | off
# Actor-model agentic UI — persisted node graph (HCI Nerdz contract; DevCentr harness routing)
# graph-grid: node graph on disk + task grid view; serialized: one scroll; off: single node
ACTOR_AGENTIC_UI = graph-grid | serialized | off
ACTOR_GRAPH_EPOCHS = on | off
ACTOR_WAIT_GRAPH = warn | enforce | off
ACTOR_NODE_STORE = jsonl-per-node | off
# Git close-out for parallel / swarm work (see general/parallel-git-closeout.md)
# coordinator-batch: task leaves commit locally; coordinator pushes after the wave (cuts CI thrash)
# per-node: each node may commit+push on its own close-out (single-agent / low volatility)
# off: no automatic close-out policy on nodes
GIT_CLOSEOUT = coordinator-batch | per-node | off
# Defaults when ACTOR_AGENTIC_UI = graph-grid:
# ACTOR_NODE_STORE = jsonl-per-node
# ACTOR_WAIT_GRAPH = warn
# GIT_CLOSEOUT = coordinator-batch
# Deprecated aliases (one release cycle):
# PROJECT_INBOX = grid-forks | serialized | off → ACTOR_AGENTIC_UI = graph-grid | …
# Harness-only — Mixr model router (see docs Agent harness / Harness, Mixr routing and cost)
# MIXR_ROUTING = on | off
# MIXR_ROUTER = on-device | api | auto
# MIXR_ROUTER_BASE_URL = http://127.0.0.1:11434/v1
# MIXR_ROUTER_MODEL = <local OpenAI-compat router model id>
# MIXR_ROUTER_RAM_MIN_MB = 2048
# MIXR_DEFAULT_POLICY = balanced | cheap | quality | byok-only
# MIXR_SUPPRESS_PROVIDERS = anthropic
# MIXR_SUPPRESS_MODELS =
# MIXR_ALLOW_SUPPRESSED = explicit-only
# Optional — Bitwarden CLI session persist for agents (not default; see docs bitwarden-cli-agents)
# BITWARDEN_SESSION_PERSIST = enabled
# BITWARDEN_AGENT_ENTRY = ensure_bw_unlocked.ps1
# Optional — gcloud for agents (user login persists in Cloud SDK config; SA only for headless)
# GCLOUD_AGENT_ENTRY = ensure_gcloud_auth.ps1
# See docs/modules/agent-rules/pages/gcloud-cli-agents.adoc
HARNESS_NAME = cursor
ALWAYS_ON_RULES = Cursor Settings → User Rules (composed via rules-manager)
SKILLS_DISCOVERY_ROOT = C:\Users\<you>\.cursor\skills
LOCAL_RULES_DIR = C:\Users\<you>\.cursor\rules
SKILLS_INSTALL = junction from $AGENT_RULES_PATH/skills/<name>/ to SKILLS_DISCOVERY_ROOT/<name>/
CHAT_FILE_LINKS = markdown-workspace-links
CODE_CITATION = line-range-fence
IDE_PROJECT_RULES = mdc-in-repo
MCP_CONTEXT7 = available
TOKEN_PROVENANCE = off
ACTOR_AGENTIC_UI = serialized
ACTOR_GRAPH_EPOCHS = off
ACTOR_WAIT_GRAPH = off
ACTOR_NODE_STORE = off
GIT_CLOSEOUT = coordinator-batch
AGENT_RULES_SYNCED_SHA =
AGENT_RULES_SYNCED_LABEL =
AGENT_RULES_SYNCED_AT =
HARNESS_NAME = other
ALWAYS_ON_RULES = pasted user.md preamble in harness system prompt
SKILLS_DISCOVERY_ROOT = none — read $AGENT_RULES_PATH/skills/<name>/SKILL.md on demand
LOCAL_RULES_DIR = none
SKILLS_INSTALL = none
CHAT_FILE_LINKS = plain-paths
CODE_CITATION = none
IDE_PROJECT_RULES = none
MCP_CONTEXT7 = unavailable
TOKEN_PROVENANCE = off
ACTOR_AGENTIC_UI = serialized
ACTOR_GRAPH_EPOCHS = off
ACTOR_WAIT_GRAPH = off
ACTOR_NODE_STORE = off
GIT_CLOSEOUT = per-node
AGENT_RULES_SYNCED_SHA =
AGENT_RULES_SYNCED_LABEL =
AGENT_RULES_SYNCED_AT =
See Layer names vs harness vocabulary in https://docs.devcentr.org/tools/agent-rules/harness-neutral/ — how user.md, harness.md, and machine.md map to Cursor User Rules, CLAUDE.md, etc.
| File | Role |
|---|---|
$CODE_ROOT/harness.md |
Harness rules — discovery paths, chat behaviors, always-on slot, sync stamp |
$CODE_ROOT/machine.md |
Machine rules — tool paths, PATH gaps, hardware (see machine.example.md) |
user.md in agent-rules |
User rules — portable preamble (forkable) |
profiles/<machine>.md in your fork |
Machine constants: CODE_ROOT, GITHUB_USER, ENVIRONMENT, ISSUES_REPO |
LOCAL_RULES_DIR overlay |
Per-harness local rules (e.g. %USERPROFILE%\.cursor\rules\*.mdc) |
Before editing anything under $AGENT_RULES_PATH, read general/harness-boundary.md. When setup is missing or stale, run skill harness-setup. When skills/discovery/AGENT_RULES_SYNCED_SHA drift, run skill sync-agent-rules.