Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/code-yeongyu/senpi/senpi-qanpx skills add code-yeongyu/senpi --skill senpi-qagit clone --depth 1 https://github.com/code-yeongyu/senpiWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/code-yeongyu/senpi/senpi-qa)<a href="https://agentmods.dev/skills/code-yeongyu/senpi/senpi-qa"><img src="https://agentmods.dev/badge/skills/code-yeongyu/senpi/senpi-qa.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00201 | $0.02909 |
| Opus 5 | $0.00101 | $0.01455 |
| Sonnet 5 | $0.00040 | $0.00582 |
| Haiku 4.5 | $0.00020 | $0.00291 |
Grade A, and why
senpi-qa scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 189 lines — stays where its author put it; the contents beside it link to each section on GitHub.
senpi QA
QA the senpi coding agent (packages/{ai,agent,coding-agent,tui}) by driving the
REAL CLI — not by reading code or trusting unit tests. Each channel runs the
agent from source via tsx in an isolated sandbox and asserts observable
behavior, so a passing run is evidence the user-facing surface actually works.
Every helper script ships a --self-test (or --self-check) that asserts its
scenario against this machine. The scripts are therefore both the QA tools and
their own regression checks.
Golden rules (read before running anything)
- Isolation is mandatory. Everything spawns the CLI with
SENPI_CODING_AGENT_DIR/SENPI_CODING_AGENT_SESSION_DIRpointed at a temp sandbox andPI_OFFLINE=1. QA must never write into the real~/.senpi.scripts/lib/common.mjsdoes this for you — use it. - Never read or modify the real credentials.
~/.senpi/agent/auth.jsonis the user's real key store. Every script snapshots its sha256 and asserts it is unchanged at the end. If you script a run by hand, do the same (guardRealAuth()incommon.mjs). - Deterministic loop = mock loop. To exercise the agent loop without real tokens, use Channel 3 (a local fake model server). Real-provider runs are for final smoke only and must use the user's existing auth, never a new key.
- No
src/edits from this skill. It verifies; it does not fix. If QA finds a bug, report it with the captured evidence and let a follow-up change fix it. - The captured artifact IS the evidence. Write it under
local-ignore/qa-evidence/<YYYYMMDD>-<slug>/. No artifact == the QA did not happen.local-ignore/is gitignored — never commit evidence.
Setup (once)
node scripts/devenv-setup.mjs # installs skill deps (node-pty), wires .env.local + .claude/skills
node .agents/skills/senpi-qa/scripts/lib/common.mjs --self-check # confirm the harness
common.mjs --self-check confirms the repo resolves, a sandbox is created and
auto-removed, a free port is allocatable, and the real auth file is untouched.
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- .gitignore 14 B
- AGENTS.md 3.6 KB
- evals/evals.json 1.2 KB
- package-lock.json 910 B
- package.json 472 B
- references/credential-injection.md 2.2 KB
- references/env-vars.md 2.6 KB
- references/mock-loop.md 9.1 KB
- references/rpc-protocol.md 2.7 KB
- references/tui-driving.md 2.5 KB
- scripts/anthropic-oauth-callback-bind-fallback-probe.mjs 2.5 KB runs code
- scripts/claude-sdk-oauth-auth-spike.mjs 4.1 KB runs code
- scripts/claude-sdk-oauth-autocompact-settings-probe.mjs 1.6 KB runs code
- scripts/claude-sdk-oauth-autocompact-spike.mjs 11 KB runs code
- scripts/claude-sdk-oauth-fullstack-probe.mjs 12 KB runs code
- scripts/claude-sdk-oauth-headless-restart-probe.mjs 7.0 KB runs code
- scripts/claude-sdk-oauth-native-inline-spike.mjs 12 KB runs code
- scripts/claude-sdk-oauth-persistent-query-spike.mjs 11 KB runs code
- scripts/claude-sdk-oauth-reattach-spike.mjs 13 KB runs code
- scripts/claude-sdk-oauth-registry-probe.mjs 15 KB runs code
- scripts/claude-sdk-oauth-stream-stall-retry-probe.mjs 7.1 KB runs code
- scripts/claude-sdk-oauth-stream-start-knob-probe.mjs 6.8 KB runs code
- scripts/claude-sdk-oauth-sysprompt-spike.mjs 3.6 KB runs code
- scripts/claude-sdk-oauth-toolless-compact-probe.mjs 10 KB runs code
- scripts/cli-smoke.mjs 3.0 KB runs code
- scripts/compaction-remote-qa.mjs 12 KB runs code
- scripts/eval-hard-limit-rpc-qa.mjs 6.1 KB runs code
- scripts/footer-abbrev-qa.mjs 4.1 KB runs code
- scripts/glm-5.3-preset-mock-loop.mjs 2.9 KB runs code
- scripts/grok-neo-drive.mjs 20 KB runs code
- scripts/lib/anthropic-policy-refusal-server.mjs 4.0 KB runs code
- scripts/lib/cache-warm-ready-rpc.mjs 2.9 KB runs code
- scripts/lib/cache-warm-ready-scenario.mjs 9.2 KB runs code
- scripts/lib/claude-sdk-oauth-fullstack-harness.mjs 11 KB runs code
- scripts/lib/claude-sdk-oauth-fullstack-support.mjs 7.7 KB runs code
- scripts/lib/claude-sdk-oauth-hermetic-env.mjs 3.9 KB runs code
- scripts/lib/claude-sdk-oauth-matrix-assert.mjs 3.7 KB runs code
- scripts/lib/claude-sdk-oauth-matrix-constants.mjs 260 B runs code
- scripts/lib/claude-sdk-oauth-matrix-phases.mjs 5.7 KB runs code
- scripts/lib/claude-sdk-oauth-matrix-run.mjs 8.9 KB runs code
- scripts/lib/claude-sdk-oauth-matrix.mjs 5.0 KB runs code
- scripts/lib/claude-sdk-oauth-reattach-worker.mjs 8.1 KB runs code
- scripts/lib/claude-sdk-oauth-spike-credentials.mjs 2.5 KB runs code
- scripts/lib/claude-sdk-oauth-spike-support.mjs 9.7 KB runs code
- scripts/lib/claude-sdk-oauth-toolless-compact-server.mjs 5.0 KB runs code
- scripts/lib/common.mjs 15 KB runs code
- scripts/lib/common.test.mjs 539 B runs code
- scripts/lib/fake-model-server.mjs 19 KB runs code
- scripts/lib/fallback-abort-server.mjs 2.9 KB runs code
- scripts/lib/hint-429-server.mjs 5.0 KB runs code
- scripts/lib/mock-loop-cli.mjs 1.3 KB runs code
- scripts/lib/mock-loop-hint-429.mjs 20 KB runs code
- scripts/lib/mock-loop-kimi-thinking-recovery.mjs 3.5 KB runs code
- scripts/lib/mock-loop-policy-refusal.mjs 4.9 KB runs code
- scripts/lib/mock-loop-retry.mjs 7.5 KB runs code
- scripts/lib/mock-loop-support.mjs 9.7 KB runs code
- scripts/lib/mock-loop-text-leak.mjs 5.5 KB runs code
- scripts/lib/mock-loop-ttsr.mjs 12 KB runs code
- scripts/lib/output-safety.mjs 373 B runs code
- scripts/lib/rpc-client.mjs 3.0 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 189 lines · 201 tokens per session scan A e0ac7799dac4
senpi-qa is a skill published in the GitHub repository code-yeongyu/senpi (419 stars, last pushed today), licensed MIT. It adds 201 tokens to every session and 2,909 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
pi
Use when needing a minimal, extensible terminal AI coding agent harness in TypeScript with plugin architecture. Pi: minimalist terminal AI coding agent emphasizing simplicity and composability.
speckit-archive
Archive a feature specification into main project memory after merge, resolving gaps and conflicts.
speckit-critique-run
Perform a dual-lens critical review of the specification and plan from both product strategy and engineering risk perspectives before implementation.
speckit-extract-run
Extract knowledge, guidelines, and ADRs from one or more completed spec directories into the project documentation system.
speckit-iterate-apply
Apply a pending iteration to spec documents — update all artifacts that speckit.implement relies on, then hand off to implementation.
speckit-auto-run
Run the full speckit workflow end-to-end — specify, plan, critique, tasks, implement, review, extract — making all decisions autonomously.