Harness Parity Council
Use this skill inside the Lisa repository when Claude needs structured parity advice from external coding-agent CLIs before changing Lisa behavior.
This skill is Lisa-only. Keep it under .agents/skills/ and do not move or mirror it into plugins/, generated plugin artifacts, host-project templates, install output, or marketplace bundles.
Use Cases
- Research a new runtime-support PRD before decomposition or implementation.
- Review a design sketch, branch diff, or issue for Claude/Codex/Cursor/Copilot/Antigravity parity risks.
- Collect runtime-specific naming, packaging, permission, testing, or migration advice before editing Lisa features.
Invocation Contract
Run this skill from Claude as the lead orchestrator. Claude remains the final decision-maker. External CLI output is evidence, not authority.
Base invocation shape:
/harness-parity-council <topic-or-artifact> [--runtime <name>] [--second-round] [--dry-run] [--write-mode <mode>]
Examples:
/harness-parity-council "Codex parity for install-time hooks"
/harness-parity-council https://github.com/CodySwannGT/lisa/issues/721 --runtime codex
/harness-parity-council "review current diff for Cursor/Codex parity gaps" --second-round
/harness-parity-council "plan Antigravity support" --dry-run
Arguments
<topic-or-artifact>: Required. Plain-language feature prompt, issue URL, PRD URL, branch/diff summary, or other Lisa-local context to review.
--runtime <name>: Optional. Narrow to one runtime. Supported names: cursor, codex, copilot, antigravity.
--second-round: Optional. After the first advisory round, share Claude's sanitized synthesis back to available runtimes for critique.
--dry-run: Optional. Print planned adapter invocations and safety settings without calling external CLIs.
--write-mode <mode>: Optional and opt-in only. Default behavior is still read-only advisory mode. Any write-enabled mode now hard-fails unless both of these are true:
- the run is inside an isolated worktree path (
.codex/worktrees/ or .claude/worktrees/) or the maintainer explicitly sets LISA_COUNCIL_GUARDED_WORKSPACE=1 for a comparable guarded workspace
- the maintainer explicitly acknowledges mutation intent with
LISA_COUNCIL_ALLOW_WRITE=1
Runtime Adapters
The skill is designed around these configurable CLI command slots:
cursor via LISA_CURSOR_CLI, default candidate cursor-agent
codex via LISA_CODEX_CLI, default candidate codex
copilot via LISA_COPILOT_CLI, default candidate copilot
antigravity via LISA_ANTIGRAVITY_CLI, default candidate agy
- guarded workspace override via
LISA_COUNCIL_GUARDED_WORKSPACE=1
- explicit write acknowledgement via
LISA_COUNCIL_ALLOW_WRITE=1
Adapter implementation details, safe flags, timeout handling, auth detection, and output capture are handled by follow-on council tickets. This scaffold defines the contract they must satisfy.
The current adapter source of truth lives in ./runtime-adapters.mjs. Run node .agents/skills/harness-parity-council/runtime-adapters.mjs to print the resolved command slots, read-only-safe base flags, timeout budget, and local help/version probe results for each runtime.
The first-round consultation source of truth lives in ./first-round.mjs. Run node .agents/skills/harness-parity-council/first-round.mjs "<topic>" to emit the structured runtime prompt, normalized first-round capture shape, and Claude-facing synthesis inputs for the currently available runtimes.
Operating Rules
- Default to read-only advisory execution.
- Do not let external CLIs edit files, install dependencies, commit, push, or open PRs unless the user explicitly requests a guarded write mode.
- Reject any explicit write mode unless the run is isolated in a worktree or comparable guarded workspace and the maintainer has acknowledged mutation intent via
LISA_COUNCIL_ALLOW_WRITE=1.
- Do not send secrets, token files,
.env contents, private keys, or MCP auth artifacts to external CLIs.
- Treat missing or unauthenticated CLIs as non-fatal. Record them as unavailable and continue.
- Keep Claude's final synthesis separate from raw runtime responses.
- Prefer inline summaries or gitignored Lisa-local temp artifacts over durable repo files unless a later ticket explicitly adds storage.
Expected Output
Each run should produce a concise synthesis with:
- runtimes consulted and runtimes unavailable
- native feature surfaces each runtime claims to support
- parity gaps or risks
- testing and documentation implications
- open questions Claude should resolve before implementation
Maintainer Smoke Checks
Use these checks when changing the council scaffolding, adapter metadata, or first-round capture logic. They are internal Lisa maintainer checks only; do not ship them into host-project artifacts.
- Probe metadata smoke:
node .agents/skills/harness-parity-council/runtime-adapters.mjs codex cursor
Expect JSON output with the resolved command slot, read-only-safe args, timeout budget, and help/version probe captures for each requested runtime.
- First-round synthesis smoke:
node .agents/skills/harness-parity-council/first-round.mjs "Codex parity for install-time hooks"
Expect JSON output with availableRuntimes, unavailableRuntimes, responseEvidence, and the Claude synthesis template. Missing or unauthenticated CLIs should be recorded as unavailable instead of crashing the entire run.
- Fixture contract smoke:
bun x vitest run tests/unit/strategies/harness-parity-council-*.test.ts
Expect deterministic coverage for successful, missing, failing, and hanging runtime fixtures plus the Lisa-only placement/documentation guards.
Notes For Maintainers
- This skill intentionally lives only in
.agents/skills/.
- The follow-on implementation tickets should add adapter execution, safety enforcement, redaction, packaging checks, and fixture-backed verification without changing this Lisa-only placement.
1---2name: harness-parity-council3description: Lisa-only advisory workflow for consulting external coding-agent CLIs about runtime parity without bundling this skill into host projects4---56# Harness Parity Council78Use this skill inside the Lisa repository when Claude needs structured parity advice from external coding-agent CLIs before changing Lisa behavior.910This skill is Lisa-only. Keep it under `.agents/skills/` and do not move or mirror it into `plugins/`, generated plugin artifacts, host-project templates, install output, or marketplace bundles.1112## Use Cases1314- Research a new runtime-support PRD before decomposition or implementation.15- Review a design sketch, branch diff, or issue for Claude/Codex/Cursor/Copilot/Antigravity parity risks.16- Collect runtime-specific naming, packaging, permission, testing, or migration advice before editing Lisa features.1718## Invocation Contract1920Run this skill from Claude as the lead orchestrator. Claude remains the final decision-maker. External CLI output is evidence, not authority.2122Base invocation shape:2324```text25/harness-parity-council <topic-or-artifact> [--runtime <name>] [--second-round] [--dry-run] [--write-mode <mode>]26```2728Examples:2930```text31/harness-parity-council "Codex parity for install-time hooks"32/harness-parity-council https://github.com/CodySwannGT/lisa/issues/721 --runtime codex33/harness-parity-council "review current diff for Cursor/Codex parity gaps" --second-round34/harness-parity-council "plan Antigravity support" --dry-run35```3637## Arguments3839- `<topic-or-artifact>`: Required. Plain-language feature prompt, issue URL, PRD URL, branch/diff summary, or other Lisa-local context to review.40- `--runtime <name>`: Optional. Narrow to one runtime. Supported names: `cursor`, `codex`, `copilot`, `antigravity`.41- `--second-round`: Optional. After the first advisory round, share Claude's sanitized synthesis back to available runtimes for critique.42- `--dry-run`: Optional. Print planned adapter invocations and safety settings without calling external CLIs.43- `--write-mode <mode>`: Optional and opt-in only. Default behavior is still read-only advisory mode. Any write-enabled mode now hard-fails unless both of these are true:44 - the run is inside an isolated worktree path (`.codex/worktrees/` or `.claude/worktrees/`) or the maintainer explicitly sets `LISA_COUNCIL_GUARDED_WORKSPACE=1` for a comparable guarded workspace45 - the maintainer explicitly acknowledges mutation intent with `LISA_COUNCIL_ALLOW_WRITE=1`4647## Runtime Adapters4849The skill is designed around these configurable CLI command slots:5051- `cursor` via `LISA_CURSOR_CLI`, default candidate `cursor-agent`52- `codex` via `LISA_CODEX_CLI`, default candidate `codex`53- `copilot` via `LISA_COPILOT_CLI`, default candidate `copilot`54- `antigravity` via `LISA_ANTIGRAVITY_CLI`, default candidate `agy`55- guarded workspace override via `LISA_COUNCIL_GUARDED_WORKSPACE=1`56- explicit write acknowledgement via `LISA_COUNCIL_ALLOW_WRITE=1`5758Adapter implementation details, safe flags, timeout handling, auth detection, and output capture are handled by follow-on council tickets. This scaffold defines the contract they must satisfy.5960The current adapter source of truth lives in `./runtime-adapters.mjs`. Run `node .agents/skills/harness-parity-council/runtime-adapters.mjs` to print the resolved command slots, read-only-safe base flags, timeout budget, and local help/version probe results for each runtime.6162The first-round consultation source of truth lives in `./first-round.mjs`. Run `node .agents/skills/harness-parity-council/first-round.mjs "<topic>"` to emit the structured runtime prompt, normalized first-round capture shape, and Claude-facing synthesis inputs for the currently available runtimes.6364## Operating Rules6566- Default to read-only advisory execution.67- Do not let external CLIs edit files, install dependencies, commit, push, or open PRs unless the user explicitly requests a guarded write mode.68- Reject any explicit write mode unless the run is isolated in a worktree or comparable guarded workspace and the maintainer has acknowledged mutation intent via `LISA_COUNCIL_ALLOW_WRITE=1`.69- Do not send secrets, token files, `.env` contents, private keys, or MCP auth artifacts to external CLIs.70- Treat missing or unauthenticated CLIs as non-fatal. Record them as unavailable and continue.71- Keep Claude's final synthesis separate from raw runtime responses.72- Prefer inline summaries or gitignored Lisa-local temp artifacts over durable repo files unless a later ticket explicitly adds storage.7374## Expected Output7576Each run should produce a concise synthesis with:7778- runtimes consulted and runtimes unavailable79- native feature surfaces each runtime claims to support80- parity gaps or risks81- testing and documentation implications82- open questions Claude should resolve before implementation8384## Maintainer Smoke Checks8586Use these checks when changing the council scaffolding, adapter metadata, or first-round capture logic. They are internal Lisa maintainer checks only; do not ship them into host-project artifacts.87881. Probe metadata smoke:89 `node .agents/skills/harness-parity-council/runtime-adapters.mjs codex cursor`90 Expect JSON output with the resolved command slot, read-only-safe args, timeout budget, and help/version probe captures for each requested runtime.912. First-round synthesis smoke:92 `node .agents/skills/harness-parity-council/first-round.mjs "Codex parity for install-time hooks"`93 Expect JSON output with `availableRuntimes`, `unavailableRuntimes`, `responseEvidence`, and the Claude synthesis template. Missing or unauthenticated CLIs should be recorded as unavailable instead of crashing the entire run.943. Fixture contract smoke:95 `bun x vitest run tests/unit/strategies/harness-parity-council-*.test.ts`96 Expect deterministic coverage for successful, missing, failing, and hanging runtime fixtures plus the Lisa-only placement/documentation guards.9798## Notes For Maintainers99100- This skill intentionally lives only in `.agents/skills/`.101- The follow-on implementation tickets should add adapter execution, safety enforcement, redaction, packaging checks, and fixture-backed verification without changing this Lisa-only placement.