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 skills add archugunov/pm-job-search --skill test-personasgit clone --depth 1 https://github.com/archugunov/pm-job-searchWrote 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/archugunov/pm-job-search/test-personas)<a href="https://agentmods.dev/skills/archugunov/pm-job-search/test-personas"><img src="https://agentmods.dev/badge/skills/archugunov/pm-job-search/test-personas/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/archugunov/pm-job-search/test-personas"><img src="https://agentmods.dev/badge/skills/archugunov/pm-job-search/test-personas.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.1 | $0.00064 | $0.07460 |
| Opus 5 | $0.00032 | $0.03730 |
| Sonnet 5 | $0.00013 | $0.01492 |
| Haiku 4.5 | $0.00006 | $0.00746 |
Grade A, and why
test-personas 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 12d 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 — 429 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/test-personas — maintainer-only end-to-end test orchestrator
Audience: plugin maintainers only. Do NOT invoke if you are an end user running a real job search — this clobbers userdata/ from a test snapshot.
What this skill does
For each (persona × journey) pairing requested, runs five phases:
- Snapshot reset —
rsynca clean snapshot intouserdata/. - Schema validation — verify the snapshot matches current plugin expectations.
- Conversation loop — orchestrate two sub-agents (plugin-under-test + user-simulator) until termination.
- Judge — four sub-agents, one per rubric (groundedness, coherence, conformance, tone), each seeing only its own rubric. Lint is not judged at all: Phase 3.5's scripts decide it.
- Aggregate — write a
SUMMARY.mdacross all journeys in this run.
Argument parsing
Parse the user's invocation message for these forms (no native flag support in skills — match free-text):
/test-personas(no args) → the release-gate sweep:cold-start,active-loop,edge-recovery. (sweep-smokeis excluded from the default sweep — run it by name.)--journey <name>orjourney: <name>→ run only the named journey. Valid names:cold-start,active-loop,edge-recovery,sweep-smoke.--persona <name>orpersona: <name>→ run only journeys whosejourney_fitincludes that persona. Valid names:maya,diego,contrarian.--skip-judgeorskip judge→ run conversation loops but skip Phase 4 (transcripts only).
If both --journey and --persona are specified, intersect them — only the named journey AND only if the named persona is its assigned persona. If they don't match, error with a clear message.
If --persona <name> is given alone and its journey_fit is empty (currently true for diego), stop with a clear message rather than silently running zero journeys or erroring vaguely: name the persona, state that it has no assigned journey in the current set, and list which personas ARE currently reachable (maya, contrarian).
What ships with it
17 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.
- journeys/.gitkeep 0 B
- journeys/active-loop.md 2.2 KB
- journeys/cold-start.md 5.7 KB
- journeys/edge-recovery.md 2.3 KB
- journeys/sweep-smoke.md 2.8 KB
- judge-prompt.md 4.1 KB
- manual-checklist.md 3.3 KB
- personas/.gitkeep 0 B
- personas/contrarian.md 1.7 KB
- personas/diego.md 2.2 KB
- personas/maya.md 2.2 KB
- rubrics/.gitkeep 0 B
- rubrics/coherence.md 3.7 KB
- rubrics/conformance.md 5.1 KB
- rubrics/groundedness.md 4.9 KB
- rubrics/tone.md 8.1 KB
- simulator-prompt.md 3.9 KB
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.
- 12d ago First seen · 429 lines · 64 tokens per session scan A b1dd23437166
test-personas is a skill published in the GitHub repository archugunov/pm-job-search (7 stars, last pushed 17d ago), licensed MIT. It adds 64 tokens to every session and 7,460 once invoked, about $0.0003 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-31.
Other skills, from other repositories
verify
Run the full JobPilot CI gate locally - Biome, knip, API + web typechecks, API and contracts tests, and the terminal .NET tests when terminal files changed. Use before committing, or when asked to "verify", "run checks", or "run the gate".
live-preview
Mid-build visual verification loop. Takes screenshots of components during construction, not just after. Catches visual regressions and invisible features before they compound. Requires Playwright or similar screenshot tool.
brooks-sweep
Full-sweep mode: runs a unified analysis across all quality dimensions — code decay, architecture, tech debt, and test quality — then applies fixes directly to the codebase. Safe changes are auto-applied; risky changes are confirmed before execution. Drawing on twelve classic engineering books. Triggers when: user…
api-testing
HTTP API testing for TypeScript (Supertest) and Python (httpx, pytest). Test REST APIs, GraphQL, request/response validation, authentication, and error handling.
bun-jest-migration
Use when migrating from Jest to Bun's test runner, import compatibility, mocks, and config.
bun-test-mocking
Use for mock functions in Bun tests, spyOn, mock.module, implementations, and test doubles.