Agent skill

Dia Source Analysis

by termio-sh in termio-sh/termio

Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc).

MITAuto-check passedMobile

Install Dia Source Analysis

skills CLI
$ npx skills add termio-sh/termio --skill dia-source-analysis -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install termio-sh/termio dia-source-analysis --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/termio-sh/termio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dia-source-analysis .claude/skills/dia-source-analysis && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dia-source-analysis
GitHub stars
540
Token cost
~2.5k tokens
SKILL.md length
948 words
Files
2 (incl. scripts)
Skills in repo
19
Repo updated
First seen
Licence
MIT

At a glance

Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc).

  • Works in 6 steps: Identify version (always first) → Recover the agent-server source (the big… → Fingerprint the runtime → …
  • Wants to study how Dia works internally
  • SKILL.md covers Golden rules, Established facts (as of Dia…, Bundle map and Procedure, plus 1 more section
  • Runs Python scripts from its folder; calls python3 and brew

What it does

Dia Source Analysis is an agent skill from termio-sh/termio. Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc). Inspect its app bundle, extract its Bun/TypeScript agent-server source from shipped source maps, fingerprint the runtime, read native-Swift symbols, and map its AI-agent / sandbox / on-device-ML architecture. Invoke when the user wants to study how Dia works internally, extract Dia's agent code, or compare Dia's agent/terminal approach against termio. (User…

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/extract-sourcemaps.py`).

It sits in Mobile, covering iOS development. It works with TypeScript and macOS. The repository describes itself as: A terminal-first agentic development environment for agentic coding. Build for CLI/TUI agent. Runtime for Coding Agent, Tmux alternative. The licence is MIT.

When your agent uses it

  • Wants to study how Dia works internally
  • Extract Dias agent code
  • Compare Dias agent/terminal approach against termio

Example prompts

  • “s agent code, or compare Dia”
  • “DotBrowser”
  • “/dia-source-analysis”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Identify version (always first)
  2. Recover the agent-server source (the big win)
  3. Fingerprint the runtime
  4. Native Swift binary — structure recoverable via ipsw class-dump --swift (no bodies)
  5. On-device models
  6. Sandbox profiles (most relevant to termio)

What it can do on your machine

Read from SKILL.md and the folder at commit af3b35b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • brew

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dia Source Analysis loads about 2.5k tokens when it runs. Until then it costs about 148 tokens; SKILL.md has 948 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~148
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from termio-sh/termio at commit af3b35b, republished under its MIT licence (© termio-sh). 948 words, ~2,496 tokens.

Download SKILL.mdSave it as .claude/skills/dia-source-analysis/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
dia-source-analysis
description
Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc). Inspect its app bundle, extract its Bun/TypeScript agent-server source from shipped source maps, fingerprint the runtime, read native-Swift symbols, and map its AI-agent / sandbox / on-device-ML architecture. Invoke when the user wants to study how Dia works internally, extract Dia's agent code, or compare Dia's agent/terminal approach against termio. (User sometimes voice-types the name as 'DotBrowser' — same app.)

Analyze Dia Browser source

Dia (/Applications/Dia.app, The Browser Company, company.thebrowser.dia) is a WebKit-based browser (~1.4 GB) that shares ArcCore.framework with Arc. termio uses it as a reference for how a shipping product drives AI coding agents as sandboxed child processes (Dia shells to the real Claude Code CLI under Seatbelt) and for its agent-server / IPC architecture. This skill captures how to dig into it and what's already known, so analysis doesn't start from scratch each time.

Golden rules

  • Read-only, on the user's own machine, for research. This is proprietary code shipped to the user. Use it to understand and learn, never to copy/redistribute verbatim or ship lifted code. State this caveat when sharing recovered source.
  • Verify before trusting old findings. The "Established facts" below are version-stamped. Dia auto-updates (Sparkle); bundle layout, file hashes, runtime versions, and even whether source maps ship can all change. Always re-read info.json + CFBundleShortVersionString first and treat mismatches as "re-derive from scratch."
  • Two recoverability tiers: the Bun/TS agent backend is near-fully recoverable (source maps); the native Swift app is symbols/structure only (no real source).

Established facts (as of Dia 1.34.2 — RE-VERIFY)

Agent-server info.json (1.34.2): version 1.0.0, buildDate 2026-06-10, commit 47de9fbe6c4, claudeCodeVersion 2.1.131. (Was 1.32.0 / commit 55d9d2e174b / buildDate 2026-05-20.)

  • ⚠️ Source maps NO LONGER SHIP as of 1.34.2. extract-sourcemaps.py returns "No .map files found" — the Bun/TS agent-server backend is no longer recoverable as near-original TS (only logic compiled into the Mach-O remains). The native-Swift tier is unchanged: symbols + embedded source paths only. So "the big win" in §1 below is gone on current builds; keep the procedure for older installs / in case they return.
  • Agent backend = Bun-compiled standalone Mach-O (agent-server, handler) + the real Claude Code CLI (claude, 206 MB, itself a Bun binary). No separate Node/Bun runtime is installed — each binary embeds Bun. They run as child processes under Seatbelt sandbox (sandbox-exec -f agent.sb / agent-claude-code.sb, params via -D DATA_DIR=…), talking to the native UI over SSE/IPC (transport/sse.ts, ipc-gateway.ts). Per-context workspace at data/contexts/{contextId} with resumable disk buffers (session/buffer.ts, JSONL). This is the part most relevant to termio — termio runs agents in real PTYs (.exec) instead, but the child-process-under-sandbox + resumable-buffer + IPC design is the directly comparable bit.
  • Streaming smoothness comes from native rendering + session/update-batcher.ts: deltas are coalesced and flushed only on ≥256 B OR 250 ms idle OR completion — so the UI updates a few times/sec, not per token. The Bun agent-server is backend orchestration and does NOT touch UI perf.
  • AI chat ("AssistantPanel") renders NATIVELY, not in a webview. Markdown parsed by cmark (swift-markdown), code highlighted by Highlightr (CodeAttributedString → NSAttributedString), math by SwiftMath (MTMathListDisplay, CoreText). UI is AppKit NSViewControllers (source paths Frameworks/BoostBrowser/Sources/AssistantPanel/*.swift).
  • The AI input is the native AppKit module BoostCommandBar (Frameworks/BoostBrowser/ Sources/BoostCommandBar/*): a token/pill TokenTextView w/ SkillPillTokenViewProvider; Skills = SkillsV3; @-mentions (AtMentionKeywords: @Search/@Slack/@Gmail/@Notion) insert context/tool pills. On-device cmd_t_router (3-label intent) + skills classifier rank proactive suggestions.
  • WKWebView (~45 refs) is for web pages + HTML "artifacts" (reports/slides via report-kit/slide-kit), NOT for chat bubbles.
  • On-device ML (OnDeviceLoRAadaptors bundle, 152 M): one shared DistilBERT-base encoder (126 M, fp16) + three LoRA adapters + heads — cmd_t_router (input intent), skills (which skill to fire), sensitive_content (privacy gate). Run via MLX (mlx-swift).

Bundle map

PathSizeWhat
Contents/Frameworks/ArcCore.framework~548 Mbrowser engine core (WebKit + Arc)
Contents/Resources/agent-server-resources/dist~371 MBun agent backend + bundled claude CLI (206 M)
Contents/Resources/OnDeviceLoRAadaptors_…bundle~152 MDistilBERT base + 3 LoRA classifiers
Contents/MacOS/Dia~106 Mnative Swift app binary (AssistantPanel etc.)
Contents/Frameworks/libAIInfra.dylib~21 Mon-device classification (LocalClassification)
Contents/Resources/*.bundle—Highlightr, SwiftMath, SwiftProtobuf, mlx-swift, swift-transformers, ARC/BoostBrowser feature bundles
dist/*.sb—Seatbelt sandbox profiles
Show full SKILL.md (374 more words)Show less

Procedure

0. Identify version (always first)
bash
/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" /Applications/Dia.app/Contents/Info.plist
cat "/Applications/Dia.app/Contents/Resources/agent-server-resources/dist/info.json"
1. Recover the agent-server source (the big win)

The .js bundles are compiled into the Mach-O binaries and NOT shipped, but entrypoint.js.map and handler-entrypoint.js.map ship with sourcesContent populated → near-original TS.

bash
python3 skills/dia-source-analysis/scripts/extract-sourcemaps.py --out /tmp/dia-src

Yields ~40 "own" TS files (non-node_modules): agent/harness/claude-sdk/* (how it drives the Claude SDK — prompt-template.ts, proxy-tools.ts, claude-sdk-in-process.ts, sandbox.ts), session/*, transport/*, handler/*, runtime.ts, watchdog.ts, main.ts. Also readable without extraction: dist/agents/*/spec.yaml, dist/agents/*/.claude/, dist/resources/tool-schemas/*.json.

2. Fingerprint the runtime
bash
D=/Applications/Dia.app/Contents/Resources/agent-server-resources/dist
for f in agent-server handler claude; do echo "== $f"; \
  strings -a "$D/$f" | grep -iE "Bun v[0-9]|Bun/[0-9]|node\.js v[0-9]"|sort -u|head; done
3. Native Swift binary — structure recoverable via ipsw class-dump --swift (no bodies)

The symbol table is stripped (nm ≈ 8.5k symbols, no Swift method-body symbols; debugger attach is blocked by hardened runtime flags=0x10000(runtime) + no get-task-allow). But the Swift reflection metadata survives and gives field-level structure — the closest thing to source:

bash
brew install ipsw   # one-time
BIN=/Applications/Dia.app/Contents/MacOS/Dia
strings -a "$BIN" | grep -iE "AssistantPanel|Highlightr|SwiftMath|cmark|MarkdownText" | sort -u | head
ipsw class-dump "$BIN" --class 'AssistantPanel'                    # response/content view controllers
ipsw macho info  "$BIN" --swift-all | grep -i <Type>              # generics

This yields class/struct instance-variable layouts, superclasses, protocol conformances, and method signatures — NOT bodies, and NOT the numeric values of fields. strings still gives demangled type names + embedded source paths (/Users/admin/actions-runner/_work/arc/arc/…). For deeper work use Hopper/Ghidra, but Swift ABI makes UI/animation bodies near-unreadable.

4. On-device models
bash
B=/Applications/Dia.app/Contents/Resources/OnDeviceLoRAadaptors_OnDeviceLoRAadaptors.bundle/Contents/Resources
cat "$B/config.json"; ls -lhS "$B"/*.safetensors
strings -a /Applications/Dia.app/Contents/Frameworks/libAIInfra.dylib | grep -iE "cmd_t|router|sensitive|skills_|distilbert|lora" | sort -u | head
5. Sandbox profiles (most relevant to termio)
bash
cat /Applications/Dia.app/Contents/Resources/agent-server-resources/dist/agent.sb
cat /Applications/Dia.app/Contents/Resources/agent-server-resources/dist/agent-claude-code.sb

These are Seatbelt (sandbox-exec) profiles — read them to see exactly what the agent / Claude Code subprocess may touch.

Relevance to termio

termio is a native Swift + libghostty terminal for AI coding agents (unpeel-style): it runs each agent/session in a real PTY (.exec) via a libghostty surface, unsandboxed. Dia solves an adjacent problem — driving the same Claude Code CLI — but from a browser, sandboxed, over IPC. When comparing, borrow narrowly (termio is deliberately simple/minimal — do not import Dia's ~370 M Bun agent-server, on-device ML stack, or browser surface):

  • Sandbox profiles (§5) are the highest-value takeaway: if termio ever wants to constrain what an agent session can touch beyond the PTY, Dia's agent.sb / agent-claude-code.sb Seatbelt profiles are a concrete, shipping reference for sandbox-exec.
  • Child-process + resumable buffer + IPC design (session/buffer.ts JSONL, per-context workspace) is the architecture analog to termio keeping a TerminalController alive per session in the SurfaceCache — same goal (survive view rebuilds / resume), different mechanism.
  • Delta coalescing (update-batcher.ts: flush on ≥256 B / 250 ms idle / completion) is a generic perf lesson if termio ever renders agent output outside the raw terminal grid.
  • Skip: the native AssistantPanel renderer and on-device LoRA classifiers — termio shows a real terminal, not a native chat surface, so those don't map.

© termio-sh, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in skills/dia-source-analysis of termio-sh/termio.

  • SKILL.md
  • scripts/extract-sourcemaps.py

Open the folder on GitHubat commit af3b35b

Compare with similar skills

Dia Source Analysis next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dia Source Analysis compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dia Source Analysis this skilltermio-sh/termio540—~2.5kAutomated safety check: PassMIT
macOS Spm App PackagingDimillian/Skills4k5 repos~1.2kAutomated safety check: PassMIT
Orca iOS Simulator Controlstablyai/orca87k1 repos~584Automated safety check: PassApache-2.0
Apple Crash Log .NET Symbolicationdotnet/skills5.6k1 repos~2.4kAutomated safety check: PassMIT
Build Teaql Appteaql/teaql-agent-kit2.8k—~4.6kAutomated safety check: PassMIT
Swiftui Expert Skillomarshahine/HomeClaw1764 repos~2.8kAutomated safety check: PassMIT

Similar skills

  • macOS Spm App Packaging

    Dimillian/Skills

    Scaffold, build, and package SwiftPM-based macOS apps without an Xcode project.

    4k GitHub starsUsed in 5 repos~1.2k tokens
    MobileAuto-check passed
  • iOS Simulator control from inside Orca, with the live device view in Orca's emulator pane. Use when driving a booted Apple Simulator on macOS: taps, gestures…

    87k GitHub starsUsed in 1 repo~584 tokens
    MobileAuto-check passed
  • Official

    Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.

    5.6k GitHub starsUsed in 1 repo~2.4k tokens
    MobileAuto-check passed
  • Build Teaql App

    teaql/teaql-agent-kit

    Build or change a TeaQL application in Java, Rust, Go, Swift, Python, C/.NET, or TypeScript, including Kotlin/JVM applications that consume Java-generated libraries.

    2.8k GitHub stars~4.6k tokensUpdated 11 days ago
    MobileAuto-check passed
  • Swiftui Expert Skill

    omarshahine/HomeClaw

    A skill your agent uses when writing, reviewing, or refactoring SwiftUI code for iOS or macOS, including state management, view composition, performance, Liquid Glass adoption, or Instruments .trace…

    176 GitHub starsUsed in 4 repos~2.8k tokens
    MobileAuto-check passed
  • Appkit Swiftui Bridge

    KartikLabhshetwar/better-shot

    Expert guidance for hybrid AppKit-SwiftUI development. An agent skill from KartikLabhshetwar/better-shot.

    2.4k GitHub starsUsed in 2 repos~1.1k tokens
    MobileAuto-check passed

More from termio-sh/termio

All 19 skills in this repo
  • Termio Bug Report

    termio-sh/termio

    Diagnose a termio hang, beachball, crash, or 'it froze again' from the evidence macOS and termio actually leave behind — live process samples, crash and CPU-burn reports, the unified log, the…

    540 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • App Screenshot Debug

    termio-sh/termio

    Drive the running termio app via AppleScript / System Events to reach a UI state (focus the window, click a sidebar project, a terminal pane, a control), capture a pixel-accurate screenshot of just…

    540 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Asc

    termio-sh/termio

    Drive App Store Connect from the terminal with the asc CLI — TestFlight builds, groups, testers and What to Test notes; App Store versions, metadata, keywords, screenshots and release notes…

    540 GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Issue Creator

    termio-sh/termio

    Turn vague customer or user feedback from pasted text, chat excerpts, or screenshots into a clear, evidence-backed GitHub issue without inventing requirements.

    540 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Og Generation

    termio-sh/termio

    Regenerate the landing site's OG/social card (web/landing/public/og.webp) by rendering a temporary in-app route with the real hero WebGL aurora and screenshotting it with headless Chrome.

    540 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Bump Version

    termio-sh/termio

    Cut a new termio macOS release by tagging main with the next version.

    540 GitHub stars~1.1k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Dia Source Analysis

What does Dia Source Analysis do?

Analyze / reverse-engineer the locally installed Dia Browser mac app (The Browser Company; bundle id company.thebrowser.dia; shares ArcCore with Arc). Dia Source Analysis is an agent skill from termio-sh/termio.dia; shares ArcCore with Arc).

When should I use Dia Source Analysis?

Dia Source Analysis fits situations like: wants to study how Dia works internally; extract Dias agent code; compare Dias agent/terminal approach against termio.

How do I install Dia Source Analysis in Claude Code?

Run `npx skills add termio-sh/termio --skill dia-source-analysis -a claude-code`. Or copy the skill folder (skills/dia-source-analysis in termio-sh/termio) into .claude/skills/dia-source-analysis in your project. Claude Code loads it when a task matches its description.

How do I install Dia Source Analysis in Codex?

Run `npx skills add termio-sh/termio --skill dia-source-analysis -a codex`. Or copy the skill folder (skills/dia-source-analysis in termio-sh/termio) into .agents/skills/dia-source-analysis in your project. Codex loads it when a task matches its description.

Can I use Dia Source Analysis in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add termio-sh/termio --skill dia-source-analysis -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dia-source-analysis, .gemini/skills/dia-source-analysis, .github/skills/dia-source-analysis and .opencode/skills/dia-source-analysis in your project.

What does Dia Source Analysis need to run?

Going by SKILL.md and its folder, Dia Source Analysis needs Python for the scripts in its folder and the command-line tools its instructions call (python3 and brew). Our summary lists: Python 3.

Does Dia Source Analysis access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Dia Source Analysis safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Dia Source Analysis use?

Dia Source Analysis is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dia Source Analysis use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dia Source Analysis?

Skills that share tags, products or a category with Dia Source Analysis: macOS Spm App Packaging (Dimillian/Skills, 4k stars), Orca iOS Simulator Control (stablyai/orca, 87k stars), Apple Crash Log .NET Symbolication (dotnet/skills, 5.6k stars) and Build Teaql App (teaql/teaql-agent-kit, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dia Source Analysis?

termio-sh (a GitHub organization) maintains it in termio-sh/termio, which has 540 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 7, 2026.

Source: termio-sh/termio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.