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 mrstev3n/balise-skills --skill balise-affinity-mcpgit clone --depth 1 https://github.com/mrstev3n/balise-skillsWrote 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/mrstev3n/balise-skills/balise-affinity-mcp)<a href="https://agentmods.dev/skills/mrstev3n/balise-skills/balise-affinity-mcp"><img src="https://agentmods.dev/badge/skills/mrstev3n/balise-skills/balise-affinity-mcp/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/mrstev3n/balise-skills/balise-affinity-mcp"><img src="https://agentmods.dev/badge/skills/mrstev3n/balise-skills/balise-affinity-mcp.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.00100 | $0.01830 |
| Opus 5 | $0.00050 | $0.00915 |
| Sonnet 5 | $0.00020 | $0.00366 |
| Haiku 4.5 | $0.00010 | $0.00183 |
Grade A, and why
balise-affinity-mcp 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 12d 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 — 155 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Affinity MCP Automation
Use the Affinity MCP as a live application-control surface. Work from the open document, inspect before editing, prefer small reversible commands, and verify visual results.
Standard Workflow
- Load Affinity tools if they are not already present.
- Read SDK documentation in this order:
- Always read
preamblefirst. - Call
list_sdk_documentation. - Read only the topics needed for the task, such as
application.js,document.js,nodes.js,commands.js,geometry.js,colours.js,fills.js,linestyle.js,storybuilder.js,glyphatts.js,paragraphatts.js, orexportconfig.js.
- Always read
- Inspect the current document before making changes.
- Choose the narrowest edit: selected object first, current spread next, whole document only when requested.
- Execute scripts with the Affinity MCP
execute_scriptcapability; a harness may expose a qualified tool name. Useconsole.log(JSON.stringify(...))for observable output. - Verify with
render_selection(document_session_uuid)whenever the result is visual. - Do not save, export, flatten, delete broad selections, or resize the spread unless the user asked for that kind of change.
Document Inspection
Use this baseline probe before editing:
const {Document} = require('/document');
const doc = Document.current;
if (!doc) {
console.log(JSON.stringify({ok: false, reason: 'NO_CURRENT_DOCUMENT'}));
} else {
console.log(JSON.stringify({
ok: true,
title: doc.title,
path: doc.path,
sessionUuid: doc.sessionUuid,
isReadOnly: doc.isReadOnly,
isDirty: doc.isDirty,
needsSaving: doc.needsSaving,
pageCount: doc.pageCount,
spreadCount: doc.spreadCount,
selectedCount: doc.selection.nodes.length,
currentSpreadBox: doc.currentSpread.baseBox
}, null, 2));
}
Stop cleanly if Document.current is null or doc.isReadOnly is true.
Object Operations
Use node operations for visible document objects:
doc.selectionreturns the current selection.doc.selection.nodesgives selected nodes.node.userDescription = '...'is useful for naming automation-created objects.doc.selectAll(false)selects all document objects; use it deliberately because it changes selection.doc.deleteSelection(selection)deletes selected objects; only use when the user wants replacement or cleanup.doc.setVisible(visible, selection),doc.lockSelection(selection), anddoc.unlockSelection(selection)operate through document commands.- For new nodes,
doc.addNode(def, doc.currentSpread)adds to the current spread and selects the new object.
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 12d ago First seen · 155 lines · 100 tokens per session scan A e42fa9187e8e
balise-affinity-mcp is a skill published in the GitHub repository mrstev3n/balise-skills (11 stars, last pushed 23d ago), licensed Apache-2.0. It adds 100 tokens to every session and 1,830 once invoked, about $0.0005 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-30.
Other skills, from other repositories
ijfw-ui-spec
Use when the user says: 'ui spec', 'design contract', 'ui audit setup', 'lock the design', 'visual contract', 'ui review setup', or '/ijfw-ui-spec'. Produces UI-SPEC.md as the visual design contract before any frontend or visual-artifact build, and dispatches ijfw-ui-auditor as the final 6-pillar gate.
ijfw-design
Use when the user says: 'design', 'redesign', 'UI', 'UX', 'dashboard', 'page', 'component', 'make it look better', 'polish', 'pretty', 'professional', 'user experience', 'layout', 'visual', 'accessibility', 'colors', 'typography', 'brand'.
Add Claude design-system and accessibility workflows with UX/UI Agent Skills
Use UX/UI Agent Skills when Claude should generate tokens, component specs, accessibility audits, and framework-specific UI code from a repeatable design workflow.
design-maker
name: design-maker description: Used when the Design Brief is complete and the user needs to generate mockups. Reads Product-Spec.md and Design-Brief.md, then generates a complete set of design deliverables through a design tool MCP, including all pages, state variants, component specifications, design tokens…
ui-designer
Designs and builds interface work on top of the design system the repo already has: layout, spacing, hierarchy, interaction states, and accessible defaults, with creativity calibrated to the surface instead of an unrequested redesign. Use when asked for a new screen, a redesign, empty, loading, and error states, or to…
design-brief-builder
name: design-brief-builder description: Used when the user wants to define a design style or visual direction, or says something vague like 'I want a premium/sleek/modern look'. Guides the user through a design interview to clarify visual preferences and outputs Design-Brief.md. After Brief is saved, MUST run Next…