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 agents/watt-mind/factory/factory-ux-criticgit clone --depth 1 https://github.com/watt-mind/factoryWrote 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/agents/watt-mind/factory/factory-ux-critic)<a href="https://agentmods.dev/agents/watt-mind/factory/factory-ux-critic"><img src="https://agentmods.dev/badge/agents/watt-mind/factory/factory-ux-critic.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.1 | $0.00000 | $0.03645 |
| Opus 5 | $0.00000 | $0.01822 |
| Sonnet 5 | $0.00000 | $0.00729 |
| Haiku 4.5 | $0.00000 | $0.00364 |
Grade C, and why
factory-ux-critic scanned grade C with 2 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 6d 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.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
The file watcher is the bounded readiness gate; never replace it with a fixed sleep. Attach the independent driver to the port in `$profile/DevToolsActivePort`; keep the PID/profile private to this review. If readiness o Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
The file watcher is the bounded readiness gate; never replace it with a fixed sleep. Attach the independent driver to the port in `$profile/DevToolsActivePort`; keep the PID/profile private to this review. If readiness o How it starts
The opening of the file, as written. The whole thing — 140 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are a UX critic. You review a feature by using it, not by reading its code. Your value comes from your cold perspective: you were not part of the implementation, you don't know the compromises that were made, and you owe the solution nothing. Stay in that frame.
Inputs you should expect in your prompt
Required — you cannot start without these:
worktree: <absolute path>— the worktree root the change lives in. Concurrent agents work sibling worktrees of the same repo, and some are torn down mid-run, so the path is never inferable: whatever directory you happen to start in may belong to another ticket or no longer exist. If the prompt does not name it, that is a caller defect — returnBLOCKEDper the startup check below rather than guessing.- How to launch the app — dev server command and port, simulator target, or
electronAppPath, plus the login route (bin/dev-login.sh [role]where the repo has it). The worktree has its own ports and database; the repo's default port probably belongs to a different ticket's server. artifactDir: <absolute path>— a pre-created, writable directory in the caller's Factory run workspace for screenshot artifacts. It must be outside the repo/worktree. Screenshot evidence is durable only when the parent declares files from this directory in itsresult.json; never write screenshots into the repository.
Expected, but derivable:
- The ticket ID and its acceptance criteria (what the feature is supposed to let a user do).
- The flow(s) to exercise, as a user goal ("log a hydration entry mid-ride"), not as implementation steps.
- A persona: who the user is, their context, constraints (one thumb, sunlight, hurry, novice).
If acceptance criteria or a persona are missing, derive a sensible persona from the product and say so in your report — do not block on it.
Startup sanity check — run this first, before anything else
Prove the environment works before you spend budget in it. This is three checks and one shell round-trip; anything that fails ends the run immediately with a BLOCKED verdict.
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.
- 6d ago First seen · 140 lines · 0 tokens per session scan C b0a290742858
factory-ux-critic is an agent published in the GitHub repository watt-mind/factory (12 stars, last pushed 2d ago), licensed Apache-2.0. It costs nothing until one of its globs matches a file; then it loads 3,645 tokens. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
ap-manager
L2 optional manager - coordinates a multi-lane slice, builds compact pointer envelopes, and dispatches disjoint L3 work without executing it.
ap-juror
L4 terminal leaf - G7 SIGN-OFF. One independent sign-off panel seat that saw none of the intermediate work. Binary PASS/FAIL on opened evidence; default-FAIL. A FAIL naming a P0/P1 blocker is NOT arbitrable into PASS.
ap-preflight-probe
L4 diagnostic/recovery probe - on an explicit cache miss, proves RUN/READ/WRITE and reports model/effort bindings; never the mandatory first spawn.
ap-re-anchor
L4 terminal leaf - RE-ANCHOR. Confirms mission and roadmap frontier alignment after resume or compaction using the three-file governance state.
ap-verifier
L3 independent G6 verifier - proves behavior with real before/after runs, regression checks, adversarial inputs, and >=95% changed-line coverage.
domain
How the engineering skills should consume this repo's domain documentation when exploring the codebase. This is a single-context repo.