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 TripleZeroLabs/TripleZeroLabs.Os2 --skill os2-wpf-themegit clone --depth 1 https://github.com/TripleZeroLabs/TripleZeroLabs.Os2Wrote 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/triplezerolabs/triplezerolabs.os2/os2-wpf-theme)<a href="https://agentmods.dev/skills/triplezerolabs/triplezerolabs.os2/os2-wpf-theme"><img src="https://agentmods.dev/badge/skills/triplezerolabs/triplezerolabs.os2/os2-wpf-theme/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/triplezerolabs/triplezerolabs.os2/os2-wpf-theme"><img src="https://agentmods.dev/badge/skills/triplezerolabs/triplezerolabs.os2/os2-wpf-theme.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.00149 | $0.03319 |
| Opus 5 | $0.00075 | $0.01659 |
| Sonnet 5 | $0.00030 | $0.00664 |
| Haiku 4.5 | $0.00015 | $0.00332 |
Grade A, and why
os2-wpf-theme 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 8d 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 — 341 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Installation
Add a project reference to TripleZeroLabs.Os2, then apply the theme using one of the three options below. One entry point, one merge URI — Theme.xaml wires everything internally.
Option A — XAML merge in App.xaml (standalone apps, recommended)
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/TripleZeroLabs.Os2;component/Themes/Theme.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Option B — C# at startup (App.xaml.cs)
using TripleZeroLabs.Os2;
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Os2Theme.Apply(this);
}
Option C — Per-window (plugins, add-ins, embedded tool hosts)
When your code runs inside a host process you don't own, apply to the individual window only so the host app's resource dictionary stays untouched:
Os2Theme.Apply(myWindow); // safe for Revit, VS extensions, Office add-ins, etc.
Os2Theme also exposes Remove(...) and IsApplied(...) with the same overloads.
The Golden Rule: Implicit vs. Explicit
This is the thing agents get wrong most. There are two categories of styles.
Implicit styles — automatic, no Style= attribute needed
Merging the theme is enough. Every instance of these controls is themed:
| Control | What changes |
|---|---|
Window |
Root Foreground set so all TextBlocks inherit it |
TextBlock |
Segoe UI 13px, TextWrapping=Wrap — no Foreground setter, by design |
Label |
Segoe UI 13px, TextPrimary foreground |
Button |
Solid primary blue, rounded, hover/pressed/disabled states |
TextBox |
Rounded border, focus ring, disabled tint |
PasswordBox |
Matches TextBox visually |
ComboBox |
Gradient raised border, white popup with drop shadow |
ComboBoxItem |
Rounded, SurfaceAlt on hover, Primary foreground when selected |
CheckBox |
Rounded tick box, full-row hover background |
ListBox |
Light border, TextPrimary foreground |
DataGrid |
No outer border, horizontal dividers, generous cell padding |
DataGridColumnHeader |
SemiBold labels, bottom baseline, sort arrows |
DataGridRow |
SurfaceAlt on hover |
DataGridCell |
16,12 padding; blue background + white text when selected |
TabControl |
Surface tab strip with hairline baseline |
TabItem |
Underline indicator on selected, subdued when inactive |
ContextMenu |
White, CornerRadius 6, soft drop shadow |
MenuItem |
Rounded, SurfaceAlt highlight, generous padding |
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.
- 8d ago First seen · 341 lines · 149 tokens per session scan A 6c11b2a40f7e
os2-wpf-theme is a skill published in the GitHub repository TripleZeroLabs/TripleZeroLabs.Os2 (2 stars, last pushed 8d ago), licensed MIT. It adds 149 tokens to every session and 3,319 once invoked, about $0.0007 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 skills, from other repositories
rhinocommon-geometry
Deep reference for Rhino.Geometry namespace — all geometry types, operations, and patterns in RhinoCommon. Use this skill whenever working with Rhino geometry in C# or Python: Point3d, Vector3d, Curve, Surface, Brep, Mesh, NURBS, intersections, boolean operations, transforms, planes, bounding boxes. Triggers on…
revit-api-code
Generate Revit API code in C# or Python for macros, external commands, add-ins, or pyRevit scripts — production-ready, beyond what Dynamo can do. Use this skill when the user needs C# Revit macros, IExternalCommand boilerplate, .addin manifest files, pyRevit button scripts, or any code that runs outside of Dynamo.…
dotnet-winforms-basics
Building WinForms on .NET 8+. High-DPI, dark mode (experimental), DI patterns, modernization tips.
wpf-best-practices
Best practices for building WPF desktop applications with C# and .NET. Use when working on WPF projects, .NET desktop apps, XAML UI, MVVM architecture, system tray apps, or any C# project using Windows Presentation Foundation.
avalonia-zafiro-development
Mandatory skills, conventions, and behavioral rules for Avalonia UI development using the Zafiro toolkit.
dotnet-reverse
A guide for analyzing compiled .NET and C# programs, including managed Windows executables and libraries. Reverse engineering means studying compiled software to understand how it works, and decompiling turns it back into readable approximate source code.