SurfSense is an open-source desktop application that uses an AI agent to research, transform, and edit documents while keeping their index on the user's machine. It is intended for people working with documents they cannot upload, with a choice of local or remote models and no account required.
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 MODSetter/SurfSense --skill pptxgit clone --depth 1 https://github.com/MODSetter/SurfSenseWrote 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/modsetter/surfsense/pptx)<a href="https://agentmods.dev/skills/modsetter/surfsense/pptx"><img src="https://agentmods.dev/badge/skills/modsetter/surfsense/pptx/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/modsetter/surfsense/pptx"><img src="https://agentmods.dev/badge/skills/modsetter/surfsense/pptx.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.00023 | $0.01440 |
| Opus 5.5 | $0.00009 | $0.00576 |
| Sonnet 5.5 | $0.00005 | $0.00288 |
| Haiku 4.5 | $0.00002 | $0.00144 |
Grade A, and why
pptx 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 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.
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 — 121 lines — stays where its author put it; the contents beside it link to each section on GitHub.
PPTX
Create an editable .pptx in /workspace with the preinstalled python-pptx
package. Never install or download dependencies. For a new deck, set
output_path to a descriptive /workspace/<name>.pptx path.
Use this order:
- Plan the slide purposes and visual system.
- Build the complete deck.
- Run the local checks below.
- Verify the complete deck once.
- If verification fails, repair it once and reverify.
- Save the artifact only after the latest verification passes.
Authoring rules
- Use a 16:9 presentation unless the user requests another aspect ratio. Set
prs.slide_widthandprs.slide_heightonce; slide size is deck-wide. - Use a consistent layout, palette, type scale, spacing system, and placement grid across the deck.
- Prefer a suitable built-in PowerPoint layout and its native placeholders over unrelated free-positioned text boxes. A native placeholder is a layout container, not permission to leave filler copy visible: populate every visible placeholder with final content unless the user explicitly requests a reusable template.
- Treat requests for "image placeholders", "visual suggestions", or "design concepts" as design direction for a finished deck. Add the real visual or a finished graphic treatment; do not display those instructions as slide text.
- Keep at least 0.5 inches of outer margin and 0.3 inches between unrelated content regions. Define title, subtitle, body, and footer regions once and reuse them; title and subtitle regions must not overlap.
- Give every slide one clear purpose. Keep body copy concise: normally no more than six bullets, with short phrases rather than paragraphs.
- Set fonts in the deck by family name. Default to Arial for fit-sensitive text; LibreOffice substitutes the metric-compatible Liberation Sans installed in the sandbox. Use Times New Roman/Liberation Serif when a serif is appropriate, and Noto for scripts they do not cover. If the user requires another font, leave about 10% extra width and height because LibreOffice and PowerPoint may use different metrics.
- Never guess or hardcode a font-file path. A path is needed only when calling
text_frame.fit_text(...); resolve it at runtime withfc-match, for examplefc-match -f '%{file}\n' Arial, and use the first non-empty line. If no file is returned, do not callfit_text; shorten the text or enlarge its region. - Use 32–40 pt titles, 18–24 pt subtitles, and body text of at least 18 pt. Set
text_frame.word_wrap = Trueand explicit text-frame margins; use zero margins where text must align exactly with a nearby shape. - Do not use PowerPoint runtime autofit (
text_frame.auto_size) because PowerPoint and LibreOffice can resolve it differently. For a single-style title or subtitle,text_frame.fit_text(...)may be used with the font file resolved above so the fitted size is written into the PPTX. If a title must shrink below 28 pt or a subtitle below 16 pt, shorten it, enlarge its region, or split the content across slides instead. - Keep every shape on the slide canvas. Intentional edge bleed may cross a slide boundary, but do not park unused shapes off-canvas or hide backup slides.
- Preserve image aspect ratios. When calling
add_picture, derive the missing dimension from the source image instead of setting both width and height to unrelated values. Extended crop values are legal, but the left and right crop fractions must sum to less than 1, as must the top and bottom fractions, so some of the image remains visible. - Prefer editable native text, shapes, tables, and charts. Avoid SmartArt and elaborate gradients whose LibreOffice conversion is unreliable.
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 Changed · +32 lines 096aa5282e5a
- 1mo ago First seen · 89 lines · 23 tokens per session scan A dacf89a1e668
pptx is a skill published in the GitHub repository MODSetter/SurfSense (16,541 stars, last pushed today), licensed Apache-2.0. It adds 23 tokens to every session and 1,440 once invoked, about $0.0001 per session on Opus 5.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-30.
Other skills, from other repositories
leiloeiro-edital-ranbot-ai
Analise e auditoria de editais de leilao judicial e extrajudicial. Riscos ocultos, clausulas perigosas, debitos, ocupante e classificacao da oportunidade.
first-reader
Beta readers for any draft, run by simulating how a real reader experiences it, moment by moment. A skim gate, a no-lookahead timed read producing an attention transcript with quit points, a recall test of what a reader remembers the next day, and a trust ledger of the implied author. Use when the user asks for a beta…
mcp-apps-builder
MANDATORY for ALL MCP server work - mcp-use framework best practices and patterns. READ THIS FIRST before any MCP server work, including: Creating new MCP servers Modifying existing MCP servers (adding/updating tools, resources, prompts, widgets) Debugging MCP server issues or errors Reviewing MCP server code for…
project-graveyard
Scans the developer's machine for dead side projects, autopsies each one from its git history (died at the payments wall, killed by a newer project, finished but never shipped), surfaces their personal death patterns, and picks the corpse most worth resurrecting — then helps ship it. Use when the user mentions…
commit-archaeologist
Reconstructs why code exists from local git history, including the introducing commit, later changes, current authors, repeated companion files, and likely intent. Use when the user asks "why does this code exist", "who wrote this function and why", or to "explain the history of this function" before a rewrite…
dependency-doctor
Checks requirements.txt, pyproject.toml, and package.json dependency manifests for surface-level direct-dependency footguns: standard-library shadowing pins, abandoned backports, unpinned dependencies, and obvious intra-manifest conflicts, plus opt-in PyPI yanked releases. Use when the user asks to check a manifest…