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 rules/perniemann/pncore/pn-build-gategit clone --depth 1 https://github.com/perniemann/pnCoreWrote 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/rules/perniemann/pncore/pn-build-gate)<a href="https://agentmods.dev/rules/perniemann/pncore/pn-build-gate"><img src="https://agentmods.dev/badge/rules/perniemann/pncore/pn-build-gate.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.01736 | $0.01736 |
| Opus 5 | $0.00868 | $0.00868 |
| Sonnet 5 | $0.00347 | $0.00347 |
| Haiku 4.5 | $0.00174 | $0.00174 |
Grade A, and why
pn-build-gate 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 — 94 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Build gate
Discovery and skeptic must run for build/design work. Use the full flow; do not go directly to implementation.
Plan accuracy (all workflows)
Whenever a plan would contain options or decisions that need user input, ask before finalizing. Use ask_question when available; otherwise call workflow_confirm and stop until the user replies. Do not infer or assume choices. Do not use free-text-only gates (e.g. "Reply yes") when structured options exist — see pn-core://reference/conventions.md (Skeptic gate).
After pn-skeptic-challenge or /pn-skeptic, the turn must end with AskQuestion or workflow_confirm (gate_type: "skeptic"), not plaintext confirmation.
For the full command routing table (pn-new, pn-setup, workflow_step vs get_command, etc.) see pn-core://reference/RUNBOOK.md.
Command-contract acknowledgement (no silent re-route)
When a /pn-* command is invoked but the user's actual request does not match that command's contract, state the mismatch in plain prose in the first response before doing anything else:
"You invoked
/Xbut the ask isY; I'll re-route toZunless you'd rather I runXas written."
Silent re-routing is a RULE-MISS (candidate code COMMAND-MISMATCH per pn-session-retro; see § Command-contract acknowledgement above). The mandatory [pn-command] ▲ start marker still applies — never drop it during a re-route.
Build/design intent (full flow required)
When the user requests to build, design, scaffold, add feature, new project, or create (component, page, app, plugin):
Exclusion: Image/SVG creation → get_command("pn-assets"). Do not route to pn-new or workflow_step for these.
| Condition | Action |
|---|---|
| User says "onboard" or "analyze codebase" | get_command("pn-setup") |
Existing project code + no project-context.mdc + add/refactor/extend request |
Ask: "Run pn-setup to create project context first?" Yes → get_command("pn-setup"); No → treat as new project |
New project, no docs/refs/PRD.md, no .ref/ |
Ask: "No docs found. Create project doc set first?" Yes → workflow_step("project_kickoff", 0, {}) or get_command("pn-new") Involved; No → get_command("pn-new") |
project-context.mdc + plan exist, design-only |
workflow_step("design", 0, { request }) or get_command("pn-design") |
project-context.mdc + plan exist, full-stack |
workflow_step("full_dev", 0, { request, intent? }) or get_command("pn-build") |
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 · 94 lines · 1,736 tokens per session scan A 69618e909bf5
pn-build-gate is a cursor rule published in the GitHub repository perniemann/pnCore (0 stars, last pushed 2d ago), licensed MIT. It adds 1,736 tokens to every session, about $0.0087 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 cursor rules, from other repositories
t-800-mandatory-routing
ОБЯЗАТЕЛЬНО: создание и правка субагентов, skills, commands, rules, hooks — только через T-800 Agent (цех Skynet). Сначала intake? + scout + research DEEP + brain-lead, затем t-800-factory. Не собирать артефакты ad-hoc в main chat.
t-800-operator-routing
Маршрутизация к T-800 Operator для русскоязычных новичков: первый запуск Cursor, вопросы про Agent/Ask/Plan/Debug, rules, skills, MCP, автоматизацию, просьбы объяснить «на пальцах». Делегируй Task(t-800-operator), не дублируй длинные объяснения в основном чате.
t-800-factory-routing
Маршрутизация к T-800 Factory: создание субагентов, проектирование плагина, интеграция агентов, реестр, граф связей, масштабирование 100+ agents. Делегируй Task(t-800-factory), не создавай агентов ad-hoc в main chat.
t-800-knowledge-refresh
Обновление базы знаний T-800: когда появились новые функции Cursor, устарел manifest (>30 дней), есть UPDATE-QUEUE.md с pending, пользователь спрашивает про фичу которой нет в KB, или после changelog Cursor. В проекте Cursor Junior делегируй обслуживание Task(t-800-maintainer).
t-800-cloud-hub-routing
Маршрутизация Cloud Hub Automation Setup: при /t800-cloud-hub, /t800-hub-setup или правках /cloud-hub/ → Task(t-800-cloud-hub-lead). Не always-on.
ponytail
Ponytail, lazy senior dev mode. Always pick the simplest solution that works.