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/generous-corp/pulp/enginenpx skills add Generous-Corp/pulp --skill enginegit clone --depth 1 https://github.com/Generous-Corp/pulpWrote 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/generous-corp/pulp/engine)<a href="https://agentmods.dev/skills/generous-corp/pulp/engine"><img src="https://agentmods.dev/badge/skills/generous-corp/pulp/engine.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.00043 | $0.12605 |
| Opus 5 | $0.00022 | $0.06302 |
| Sonnet 5 | $0.00009 | $0.02521 |
| Haiku 4.5 | $0.00004 | $0.01260 |
Grade A, and why
engine 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 today.
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 — 709 lines — stays where its author put it; the contents beside it link to each section on GitHub.
JS Engine Skill
Manage the JavaScript engine backend used by Pulp's scripting layer. Three engines are available:
| Engine | Platform | Strengths | License |
|---|---|---|---|
| QuickJS | All | Portable, small, zero dependencies. Default. | MIT |
| JavaScriptCore | Apple only | System framework, good JIT, zero-dep on macOS/iOS | LGPL-2.1 (system use OK) |
| V8 | Desktop | Best JIT, ideal for heavy JS (Three.js), largest footprint | BSD-3-Clause |
Web-compat preludes shipped with every engine
Every engine boots with the same set of web-compat-*.js preludes embedded
into web_compat_preludes_gen.hpp and evaluated in order by
WidgetBridge. The current set covers everything React 18 dev (and most
similar frameworks) feature-detect on construction:
| Surface | Where | Why |
|---|---|---|
Element.nodeType (=1) / nodeName (=tagName) |
web-compat-element.js |
React reconciler walks every node and bails before first commit without DOM-compatible node identity. |
Element.ELEMENT_NODE / TEXT_NODE / COMMENT_NODE constants |
web-compat-element.js |
node.ELEMENT_NODE === 1 fast-paths in React |
Widget tag factories (virtual-list, virtuallist, segmented, stepper, etc.) |
web-compat-element.js |
DOM-lite custom tags construct the same native widgets as @pulp/react; keep this table in sync when a new widget tag is routed through _ensureNative. A tag needs FOUR tables in step, not one: this map, the createX factory (factory_api.cpp), make_widget_for_tag() (widget_bridge.cpp, the __domAppend path), and wire_callbacks() (widget_callbacks.cpp). The factory wires its callbacks inline while the tag path takes them from wire_callbacks(), so missing that one builds a real, clickable widget whose changes reach nothing — on the tag path only, from a script that is identical either way. |
createTextNode → nodeType=3 + nodeName='#text' + data/nodeValue mirrors |
web-compat-document.js |
DOM Level 1 text-node spec; React's text-update path |
createComment → nodeType=8, createDocumentFragment → nodeType=11 |
web-compat-document.js |
React portal sentinels + batched commits |
MutationObserver / IntersectionObserver / ResizeObserver / PerformanceObserver no-ops |
web-compat-observers.js |
typeof X === 'function' feature-detects pass; React skips because no events ever fire |
XMLHttpRequest no-op + spec readyState constants |
web-compat-observers.js |
React dev-mode error-stack lookup probes XHR |
Element.scrollTop/scrollLeft/scrollWidth/scrollHeight (returns 0) |
web-compat-observers.js |
React dev focus warnings |
queueMicrotask (Promise-based shim) |
web-compat-scheduler.js |
React 18 concurrent scheduler |
MessageChannel + MessagePort (microtask-deferred postMessage) |
web-compat-scheduler.js |
React 18 scheduler prefers MC; falls back to setTimeout if missing (perf cliff, not a blocker) |
URLSearchParams polyfill |
web-compat-scheduler.js |
React error-source URL parsing |
requestAnimationFrame / cancelAnimationFrame (driven by native __requestFrame__) |
web-compat-scheduler.js |
Bundled-React frameworks reference the standard names; without this each consumer has to carry its own scheduler shim. |
setTimeout / clearTimeout / setInterval / clearInterval (driven by native __scheduleTimer__ deadline tracker) |
web-compat-scheduler.js |
React's scheduler yield path + plugin code; setTimeout(fn, 0) drains via microtask, positive delays drain in service_frame_callbacks(). |
performance.now() (driven by native __performanceNow__) |
web-compat-scheduler.js |
Bundled-React modules read performance.now at module-eval time before the legacy window.performance shim is reachable. |
Mirror block onto window (rAF/cAF/sT/cT/sI/cI/MC/qM/perf) |
web-compat-scheduler.js |
React 18's scheduler reads window.setTimeout / window.requestAnimationFrame specifically; the global must be reachable through both names. |
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.
- today First seen · 709 lines · 43 tokens per session scan A 6b010cdca137
engine is a skill published in the GitHub repository Generous-Corp/pulp (16 stars, last pushed today), licensed MIT. It adds 43 tokens to every session and 12,605 once invoked, about $0.0002 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-09-04.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
insight-error-page
Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…