outl: Skill for Claude Code

.claude/skills/run-desktop/SKILL.md

run-desktop is a skill for Claude Code from outlmd/outl. It costs 74 tokens per session (2,122 once invoked), scanned A, original, MIT.

A guide for driving a real desktop application in an isolated test workspace by clicking, typing, hovering, taking screenshots, and measuring the result. It keeps test input away from the user's actual workspace and data.

In plain words
What is it for?
Use it to reproduce desktop bugs, inspect visible behavior after a change, and test interactions in a sandbox rather than the live workspace.
Why use it?
Logic tests cannot reveal every running-app problem, such as a modal not receiving keyboard input or a hover action moving the page. Isolation prevents test keystrokes from changing real notes or connecting to real devices.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

This is outlmd/outl's own configuration. It tells Claude Code how to work on outl itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything outl configures →

Reuse

Borrowing it

Nothing to install: this file belongs to outlmd/outl. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/outlmd/outl/main/.claude/skills/run-desktop/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/outlmd/outl

Made for: Claude Code.

Wrote 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.

agentmods badge for run-desktop

README.md
[![agentmods](https://agentmods.dev/badge/skills/outlmd/outl/run-desktop/github.svg)](https://agentmods.dev/skills/outlmd/outl/run-desktop)
Your own site
<a href="https://agentmods.dev/skills/outlmd/outl/run-desktop"><img src="https://agentmods.dev/badge/skills/outlmd/outl/run-desktop/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.

agentmods 80×15 button for run-desktop

Your own site · 80×15
<a href="https://agentmods.dev/skills/outlmd/outl/run-desktop"><img src="https://agentmods.dev/badge/skills/outlmd/outl/run-desktop.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 74 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,122 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00074 $0.02122
Opus 5.5 $0.00030 $0.00849
Sonnet 5.5 $0.00015 $0.00424
Haiku 4.5 $0.00007 $0.00212

Measured 3d ago against content hash 39faf50772fd, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

run-desktop 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 3d ago.

The scan reads SKILL.md. This mod also ships 7 executable files (battery/fixture.sh, battery/probe.py, battery/run.sh, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

.claude/skills/run-desktop/SKILL.md · 183 lines

How it starts

The opening of the file, as written. The whole thing — 183 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Running outl-desktop for real

Tests prove the logic. They do not catch a hover that pushes the page down 18pt, a modal that never takes the keyboard, or a picker whose first screen is four years old. Those need the app.

Never drive the real workspace

The desktop opens [workspace] last from the global config, which on a daily driver is the user's actual graph. Driving it means synthetic keystrokes land in real notes — and they do land: a stray a is vim's append, so abc typed at the wrong moment becomes text in a block.

XDG_CONFIG_HOME is honoured by both outl_config::config_dir and outl_core's device dir, so one variable isolates config, actor and device identity together.

LAB=<scratch>/uxlab
cp -Rc ~/outl-p2p "$LAB/ws"          # APFS clonefile: 375M in under a second
rm -f "$LAB/ws/.outl/peers.json" "$LAB/ws/.outl/.lock" "$LAB/ws/.outl/.peers.lock"
mkdir -p "$LAB/cfg/outl"
cat > "$LAB/cfg/outl/config.toml" <<TOML
[workspace]
last = "$LAB/ws"
[sync]
transport = "file"
TOML

transport = "file" plus a deleted peers.json is the part that matters: a clone carries the user's peer list, and an iroh transport would dial their real devices and sync a new actor's ops into the real graph. Clone first, cut the network second, launch third.

Deleting the workspace's peers.json is not enough on its own. migrate_global_peers_if_absent runs on first touch and copies ~/.outl/peers.json back in, so the lab log reads peers migration: copied ... on the first open and the file is there again. The transport = "file" line is what actually keeps it inert, which makes it the load-bearing half rather than the belt to the delete's braces. Check the log for that line and confirm no endpoint was bound before driving anything.

Then:

cd crates/outl-desktop
env XDG_CONFIG_HOME="$LAB/cfg" bun run tauri dev

The first build is minutes. Afterwards target/debug/outl-desktop can be launched directly with the same env, which is faster and survives the shell that started it.

Read the full file on GitHub · 183 lines

Files

What ships with it

9 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.

Changes

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.

  1. 3d ago First seen · 183 lines · 74 tokens per session scan A 39faf50772fd

Subscribe to this mod's changes

run-desktop is a skill published in the GitHub repository outlmd/outl (222 stars, last pushed yesterday), licensed MIT. It adds 74 tokens to every session and 2,122 once invoked, about $0.0003 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-10-26.

Related

Other skills, from other repositories

kdd-accessibility-scan

Guia a cualquier agente (no depende de ningun modelo puntual) para producir un scan de accesibilidad (WCAG) de un producto en el formato de contrato de Capa 3 de KDD -- findings.json -- que despues gatea scripts/validateaccessibilityfindings.py. Usala cuando se pida auditar accesibilidad de una app/pagina, correr…

MauricioPerera/KDD · 146 tokens

kdd-test-coverage-scan

Guia a cualquier agente (no depende de ningun modelo puntual) para producir un scan de gaps de cobertura de tests (rutas criticas sin cubrir, casos de error sin test, regresiones sin atrapar) en el formato de contrato de Capa 3 de KDD -- findings.json -- que despues gatea scripts/validatetestcoveragefindings.py. Usala…

MauricioPerera/KDD · 167 tokens

pm-native-ccdd

Variante NATIVA del PM/orquestador CCDD que usa sub-agentes de la app de Claude (tool Agent con model override) en vez de GLM/Ollama externo. Claude autora contrato + tests congelados (oráculo), delega la IMPLEMENTACIÓN a un sub-agente barato (Haiku 4.5), y verifica por el gate CCDD determinista. Úsala cuando quieras…

MauricioPerera/KDD · 254 tokens

pos-verify

Use this immediately after files are created, edited, moved, deleted, or materially rewritten inside PersonalOS. Verifies that new truth was routed to the correct owner, written in the correct file shape, and still follows POS conventions. Do NOT use for whole-vault deep audits; use system-health-check.

vincentmumme/personalos-boilerplate · 65 tokens

delegar-pool-ccdd

Delega la IMPLEMENTACIÓN de UNA función/tarea puntual a un dev efímero vía pool exec (poolside.ai), verificada por el CCDD gate. Úsala cuando el usuario pida implementar/arreglar/extender algo puntual y quiera que lo haga pool — "delega a pool" / "usa el ccdd gate con pool". Para proyectos con VARIAS tareas y devs en…

MauricioPerera/KDD · 127 tokens

Gauge Testing

Test automation with Gauge framework using Markdown specifications, step implementations in Java/Python/JavaScript/Ruby/C#, concepts, data-driven testing, and living documentation.

PramodDutta/qaskills · 35 tokens