# Senpi QA

QA the omo Senpi adapter (packages/omo-senpi, packages/senpi-task) against the REAL...

- Repository: https://github.com/code-yeongyu/oh-my-openagent (70577 stars)
- Category: Testing
- License: see repository
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add code-yeongyu/oh-my-openagent --skill senpi-qa -g -a claude-code -y`
Codex: `npx skills add code-yeongyu/oh-my-openagent --skill senpi-qa -g -a codex -y`
Cursor: `npx skills add code-yeongyu/oh-my-openagent --skill senpi-qa -g -a cursor -y`
Gemini CLI: `npx skills add code-yeongyu/oh-my-openagent --skill senpi-qa -g -a gemini-cli -y`

## Description

QA the omo Senpi adapter (packages/omo-senpi, packages/senpi-task) against the REAL senpi binary in strict isolation, and write every artifact to the one canonical evidence path .omo/evidence/omo-senpi-adapter/<slug>/. The live drivers under packages/omo-senpi/scripts/qa/ create their own isolated SENPI_CODING_AGENT_DIR and ignore the caller's, so the real ~/.senpi/agent is never written. Ships scripts/resolve-evidence-dir.mjs, which is the ONLY sanctioned way to pick an evidence directory: it rejects traversal, separators, absolute paths, and stray roots such as local-ignore/qa-evidence. Use whenever someone changes anything under packages/omo-senpi or packages/senpi-task, or wants to QA, smoke-test, verify, or debug the Senpi adapter, the task/team engine, the DAG, task RPC, or skill delivery. Triggers: senpi qa, qa senpi, senpi-qa, test senpi adapter, verify senpi task, senpi task e2e, senpi team e2e, task dag qa, live senpi driver, senpi evidence path.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Senpi QA

QA the omo Senpi adapter (`packages/omo-senpi/`) and the task engine
(`packages/senpi-task/`) by driving the REAL `senpi` binary. Unit tests never
count as live QA here: `bun run test:senpi` is the package gate, the drivers in
`packages/omo-senpi/scripts/qa/` are the harness proof.

## Golden rules

- **Evidence lives at exactly one path.** Every artifact goes under
  `.omo/evidence/omo-senpi-adapter/<slug>/`. Pick it with
  `scripts/resolve-evidence-dir.mjs` and nothing else, a hand-typed path is how
  runs end up somewhere like `local-ignore/qa-evidence/` or a `.qa-evidence/` at
  the worktree root, which is outside the ignored root and gets committed by
  accident (#8703).
- **Evidence stays local.** `.omo/evidence/` is gitignored and the
  tracked-evidence audit test fails the build if any evidence path is tracked.
  Never `git add -f` an artifact; the PR body carries the summary and the
  decisive excerpts.
- **The real agent dir stays untouched.** The live drivers build their own
  isolated `SENPI_CODING_AGENT_DIR` and deliberately IGNORE a caller-provided
  one, so `~/.senpi/agent` is never used as the sandbox. Report the driver's
  `realSenpiUntouched` / changed-path fields and the isolated agent-dir path;
  treat a whole-directory digest as supporting evidence, not proof by itself.
- **No binary means SKIP, not silence.** When `senpi` is absent the live drivers
  report `SKIP` or `FAIL` in their final JSON rather than degrading to the real
  home. A `SKIP` is not a pass, say so in the evidence README.
- **The captured JSON is the evidence.** No file on disk means the QA did not
  happen, which means no commit and no push. The file proves the run on the
  machine that made it; it is not something the commit carries.

## Resolve the evidence directory first

```bash
ev="$(node .agents/skills/senpi-qa/scripts/resolve-evidence-dir.mjs \
  --repo-root "$(git rev-parse --show-toplevel)" --slug <YYYYMMDD>-<short-slug>)"
mkdir -p "$ev"
```

The rest: https://github.com/code-yeongyu/oh-my-openagent/blob/HEAD/.agents/skills/senpi-qa/SKILL.md
