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/sii-holos/synergy/develop-frontendnpx skills add SII-Holos/synergy --skill develop-frontendgit clone --depth 1 https://github.com/SII-Holos/synergyWrote 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/sii-holos/synergy/develop-frontend)<a href="https://agentmods.dev/skills/sii-holos/synergy/develop-frontend"><img src="https://agentmods.dev/badge/skills/sii-holos/synergy/develop-frontend.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.00061 | $0.02910 |
| Opus 5 | $0.00030 | $0.01455 |
| Sonnet 5 | $0.00012 | $0.00582 |
| Haiku 4.5 | $0.00006 | $0.00291 |
Grade A, and why
develop-frontend 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 — 129 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Develop the Frontend
Read the Contracts
- Read
packages/app/AGENTS.mdand Web product contract. - Read Frontend data sync for contexts, snapshots, events, streaming, composer intent, or loaded buckets.
- Read Browser runtime for Browser UI or Desktop/Web presentation changes.
- Load
change-server-apiwhen the UI needs a new or changed server contract; loadadd-toolfor tool-card presentation.
Preserve State and API Ownership
- Use stores for coherent keyed collections and signals for independent scalar state.
- Apply entity updates with targeted setters and
reconcile; do not replace a whole stored object for a one-field event. - Keep derived values one-way. Preserve composer resolution as explicit draft → session default → fallback; only explicit user choices persist upward.
- Use generated SDK methods for ordinary internal HTTP routes. Keep raw browser transports only for WebSocket/EventSource/WebRTC, external URLs, platform fetch injection, and browser file/blob/download flows that the SDK should not represent.
- Preserve Scope/directory parameters, authentication, error semantics, asset URLs, event
seq/epoch, replay, and loading/error states. - For append-only LLM streams, keep the full snapshot as recovery state while imperative renderers track an offset and consume only the appended suffix through the dependency's typed live-update API. Do not rescan the accumulated prefix or insert an independent character-rate playback backlog; reset from a checkpoint only when the append invariant breaks. Derive terminal presentation from explicit part or message lifecycle markers, not coarse session status or the presence of a later timeline part. Key imperative terminal transitions and enhancements by content identity so unrelated sibling updates cannot restart them.
- Do not key the whole turn or message-role boundary by object identity:
message.updatedevents land as fresh objects on every update, so a keyedShow/Matchdestroys and rebuilds the entire turn (tool-card expansion, scroll, and Markdown state included) several times per reply. Keep those boundaries non-keyed responsive updates, and instead isolate failures insidePartwith an identity snapshot: capture session/message/part/type before child evaluation, render the ErrorBoundary fallback from that snapshot only, and never re-read the failed child's live props. Log the original error with stable IDs only; exclude message content, tool payloads, and workspace paths. Cover this with a real Solid lifecycle test that proves a secondary stale read cannot escape the local boundary. - Read session-shaped store fields through the session data view only: ui components use
useData().view(partsFor/messagesFor/permissionsFor/statusFor/inboxFor/hasInboxBucket/todosFor/dagNodesFor/questionsFor/cortexTasks/sessions/sessionFor), app components useuseSessionDataView(). Do not readdata.store.part/permission/...orsync.data.<field>[sessionID]directly in render code — session switches race store intermediate states (missing buckets, released scope stores) andcreateMemodefaults stop applying after first compute, so a direct read can surfaceundefinedand crash with a rotating set of TypeErrors. The view accessors apply their empty fallback inside the function body. Missing array buckets must resolve to the shared constants inpackages/ui/src/context/session-data-view.ts(EMPTY_PARTS,EMPTY_MESSAGES, …) — never a fresh array literal, because the render chain'ssame()equality guards short-circuit on reference identity and a fresh literal would invalidate every downstream memo on each store tick.hasInboxBucketis the only accessor that reports bucket presence: use it to preserve an "not loaded yet" gate whenundefinedsemantics matter (e.g. inbox loading state). - Callback parameters are accessors or raw values depending on the control: non-keyed
<Show>and<Index>pass an accessor — call it (param()) before rendering or passing it into i18n values, formatters, or attributes — while<Show keyed>and<For>pass the raw value itself. Passing an accessor uncalled renders its minified source (the crash-page footer once displayedVersion: () => { if (!untrack(condition)) … }), and calling a keyed<Show>orForparameter fails typechecking. Prefer the non-callback form reading the source signal directly when no narrowing is needed.
What ships with it
1 file 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.
- 4d ago First seen · 129 lines · 61 tokens per session scan A 0a217a970826
develop-frontend is a skill published in the GitHub repository SII-Holos/synergy (548 stars, last pushed today), licensed MIT. It adds 61 tokens to every session and 2,910 once invoked, about $0.0003 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
material-ui-tailwind
Integrates Material UI with Tailwind CSS v4 using cascade layers (enableCssLayer, @layer order) and documents Tailwind v3 interoperability (preflight, important, injectFirst, portals). Use when combining MUI with Tailwind utilities, slotProps className, or theme token bridges.
hallmark
Anti-AI-slop design skill for greenfield pages, audits, redesigns, and design extraction from URLs or screenshots. Use when the user asks to build a new app or landing page, wants to redesign something, invokes Hallmark by name, or uses audit/redesign/study.
read
Reads URLs and PDFs by fetching source content, defaulting to concise summaries for plain read requests and clean Markdown when asked to convert, save, quote, cite, or feed downstream work. Use when users ask in any language to read, fetch, check, summarize, quote, cite, convert, or save a URL or PDF. Not for local…
accessibility
Consolidated accessibility skill entrypoint for WCAG 2.2, ARIA Authoring Practices, cognitive accessibility, Section 508, EN 301 549, design intent verification, and the Accessibility Planner workflow.
desktop-principles
Desktop-specific UX principles - hover states, pointer precision, keyboard shortcuts, multi-window, focus management. Covers macOS, Windows, Linux, web desktop.
taiyi-ui-design
TaiyiForge 第 4 阶段 — UI/UX 契约,产出 UI-DESIGN.md。四端通用。.