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.
git 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/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/agents/watt-mind/factory/factory-ux-critic"><img src="https://agentmods.dev/badge/agents/watt-mind/factory/factory-ux-critic.svg" alt="Reviewed on agentmods" width="80" 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.5 | $0.00000 | $0.01458 |
| Sonnet 5.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 1mo 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.
- 1mo 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 (19 stars, last pushed 20d 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-independent-checker
Independently review the exact result and run its real checks in one context, using isolated resources and without changing the deliverable.
ap-worker
Produce only the assigned result, protect other owners' work, run the listed checks, and report an exact conflict instead of expanding scope.
ap-execharness-resolver
Report the compatibility redirect to ap-worker; this retired role cannot perform new work.
ap-goal-checker
Report the compatibility redirect to ap-independent-checker; this retired role cannot perform new work.
ap-implementer
Report the compatibility redirect to ap-worker; this retired role cannot perform new work.
ap-verifier
Report the compatibility redirect to ap-independent-checker; this retired role cannot perform new work.