Official agent skill

Hex1b

by microsoft in microsoft/aspire

CLI tool for automating any terminal application — TUI apps, shells, CLI tools, REPLs, and more.

OfficialMITAuto-check passed

Install Hex1b

skills CLI
$ npx skills add microsoft/aspire --skill hex1b -a claude-code

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

GitHub CLI
$ gh skill install microsoft/aspire hex1b --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/microsoft/aspire.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/hex1b .claude/skills/hex1b && 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
hex1b
GitHub stars
6.3k
Token cost
~2.6k tokens
SKILL.md length
546 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
MIT

At a glance

CLI tool for automating any terminal application — TUI apps, shells, CLI tools, REPLs, and more.

  • You need to launch a process in a virtual terminal
  • SKILL.md covers Installation, Concepts, How to Launch a Process in a… and How to See What's on Screen, plus 14 more sections
  • Calls dotnet and jq
  • Capture its screen output

What it does

Hex1b is an agent skill from microsoft/aspire, published by the product's own GitHub organization. CLI tool for automating any terminal application — TUI apps, shells, CLI tools, REPLs, and more. Use when you need to launch a process in a virtual terminal, capture its screen output, inject keystrokes or mouse input, take screenshots, record sessions, or assert on what's visible.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Aspire is the tool for code-first, extensible, observable dev and deploy. The licence is MIT.

When your agent uses it

  • You need to launch a process in a virtual terminal
  • Capture its screen output
  • Inject keystrokes
  • Take screenshots

Example prompts

  • “/hex1b”

What it can do on your machine

Read from SKILL.md and the folder at commit 809a672. 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

    Shell commands in SKILL.md call:

    • dotnet
    • jq

    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

Hex1b loads about 2.6k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 546 words of instructions outside code blocks.

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

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from microsoft/aspire at commit 809a672, republished under its MIT licence (© microsoft). 546 words, ~2,646 tokens.

Download SKILL.mdSave it as .claude/skills/hex1b/SKILL.md (or your agent's skills folder).
name
hex1b
description
CLI tool for automating any terminal application — TUI apps, shells, CLI tools, REPLs, and more. Use when you need to launch a process in a virtual terminal, capture its screen output, inject keystrokes or mouse input, take screenshots, record sessions, or assert on what's visible.

Hex1b CLI Skill

The dotnet hex1b CLI tool lets you automate any terminal application — TUI apps, interactive CLIs, shells, REPLs, curses programs, or anything else that runs in a terminal. It wraps arbitrary processes in a headless virtual terminal, giving you programmatic control over screen capture, input injection, and content assertions.

Installation

bash
# Install as a global tool
dotnet tool install -g Hex1b.Tool

# Or as a local tool (requires a tool manifest)
dotnet new tool-manifest   # if no manifest exists yet
dotnet tool install --local Hex1b.Tool
dotnet tool restore        # to restore from an existing manifest

Concepts

A terminal is a headless virtual terminal managed by Hex1b. Any process that runs in a terminal emulator can be launched inside one. Terminals are identified by a short numeric ID (the process ID). Use a prefix if unambiguous.

All commands support --json for machine-readable output.


How to Launch a Process in a Virtual Terminal

Start any command in a headless terminal. This is the entry point for all automation.

bash
# Start the default interactive shell
# (PowerShell on Windows, bash on Linux/macOS)
dotnet hex1b terminal start

# Start a specific program with custom terminal size
dotnet hex1b terminal start --width 120 --height 40 -- htop

# Start with a working directory
dotnet hex1b terminal start --cwd /path/to/project -- vim myfile.txt

# Start a .NET project
dotnet hex1b terminal start -- dotnet run --project src/MyApp

# Start and immediately attach (interactive mirror)
dotnet hex1b terminal start --attach

To get the terminal ID for subsequent commands:

bash
# List all running terminals
dotnet hex1b terminal list

# Get the ID as JSON (useful for scripting)
ID=$(dotnet hex1b terminal start --json -- dotnet run --project src/MyApp | jq -r .id)

How to See What's on Screen

Capture the terminal's visible content at any point.

bash
# Plain text (default) — good for reading content and assertions
dotnet hex1b capture screenshot <id>

# ANSI — preserves colors and formatting
dotnet hex1b capture screenshot <id> --format ansi

# SVG — rendered terminal screenshot as vector image
dotnet hex1b capture screenshot <id> --format svg --output screenshot.svg

# PNG — rendered terminal screenshot as raster image (requires --output)
dotnet hex1b capture screenshot <id> --format png --output screenshot.png

# HTML — rendered terminal screenshot as HTML
dotnet hex1b capture screenshot <id> --format html --output screenshot.html

# Include scrollback history
dotnet hex1b capture screenshot <id> --scrollback 100

# Wait for specific content to appear before capturing
dotnet hex1b capture screenshot <id> --format png --output ready.png --wait "Ready" --timeout 30

The --wait option polls until the specified text is visible, then captures. Useful when the application takes time to render its initial state.

How to Wait for Something to Appear

Use assertions to block until content is visible (or confirm it's absent). This is essential for reliable automation — never assume timing.

bash
# Wait up to 30 seconds for text to appear
dotnet hex1b assert <id> --text-present "Welcome" --timeout 30

# Confirm error text is NOT showing (waits up to 10s to be sure)
dotnet hex1b assert <id> --text-absent "Error" --timeout 10

Exit code 0 means the assertion passed; non-zero means it failed (timed out).

How to Send Keyboard Input

Type text or send individual keys to the terminal.

bash
# Type text (each character sent as a keystroke)
dotnet hex1b keys <id> --text "hello world"

# Send a named key
dotnet hex1b keys <id> --key Enter
dotnet hex1b keys <id> --key Tab
dotnet hex1b keys <id> --key Escape
dotnet hex1b keys <id> --key UpArrow

# Send key with modifiers
dotnet hex1b keys <id> --key C --ctrl          # Ctrl+C
dotnet hex1b keys <id> --key S --ctrl           # Ctrl+S
dotnet hex1b keys <id> --key Tab --shift        # Shift+Tab
dotnet hex1b keys <id> --key F --ctrl --shift   # Ctrl+Shift+F

Available key names (from the Hex1bKey enum, case-insensitive):

  • Letters: A–Z
  • Digits: D0–D9
  • Function keys: F1–F12
  • Navigation: UpArrow, DownArrow, LeftArrow, RightArrow, Home, End, PageUp, PageDown
  • Editing: Backspace, Delete, Insert
  • Whitespace: Tab, Enter, Spacebar
  • Other: Escape
  • Punctuation: OemComma, OemPeriod, OemMinus, OemPlus, OemQuestion, Oem1, Oem4, Oem5, Oem6, Oem7, OemTilde
  • Numpad: NumPad0–NumPad9, Multiply, Add, Subtract, Decimal, Divide

How to Send Mouse Input

Click or drag at specific terminal coordinates (0-based column, row).

bash
# Left click at column 10, row 5
dotnet hex1b mouse click <id> 10 5

# Right click
dotnet hex1b mouse click <id> 10 5 --button right

# Drag from (5,3) to (20,3)
dotnet hex1b mouse drag <id> 5 3 20 3

How to Start a Recording After a Terminal Has Launched

If the terminal is already running, start recording its session to an asciinema .cast file.

bash
# Start the terminal first
dotnet hex1b terminal start -- dotnet run --project src/MyApp
# ... get the <id> from terminal list ...

# Begin recording to a file
dotnet hex1b capture recording start <id> --output session.cast

# Optionally set a title and idle time limit
dotnet hex1b capture recording start <id> --output session.cast --title "Demo session" --idle-limit 2.0

# Do your interactions...
dotnet hex1b keys <id> --text "hello"
dotnet hex1b keys <id> --key Enter

# Stop recording when done
dotnet hex1b capture recording stop <id>

How to Record a Session from the Moment It Starts

Use --record on terminal start to begin recording immediately when the process launches.

bash
# Start terminal with recording enabled from the start
dotnet hex1b terminal start --record session.cast -- dotnet run --project src/MyApp

# The recording is already in progress — interact normally
dotnet hex1b assert <id> --text-present "Ready" --timeout 15
dotnet hex1b keys <id> --key Enter
dotnet hex1b capture screenshot <id> --format text

# Stop recording when done
dotnet hex1b capture recording stop <id>
Show full SKILL.md (207 more words)Show less

How to Stop a Recording

bash
# Stop the active recording
dotnet hex1b capture recording stop <id>

# Check if a terminal is currently recording
dotnet hex1b capture recording status <id>

The .cast file is written incrementally, so the file will contain all events up to the point you stop.

How to Play Back a Recording

bash
# Simple playback in the terminal
dotnet hex1b capture recording playback --file session.cast

# Play at 2x speed
dotnet hex1b capture recording playback --file session.cast --speed 2.0

# Interactive TUI player with pause/seek controls
dotnet hex1b capture recording playback --file session.cast --player

How to Inspect a Hex1b TUI App's Widget Tree

If the terminal is running a Hex1b application with .WithDiagnostics() enabled, you can inspect its internal widget/node tree.

bash
# Show the full widget tree with geometry
dotnet hex1b app tree <id>

# Include focus state
dotnet hex1b app tree <id> --focus

# Include popup stack
dotnet hex1b app tree <id> --popups

# Limit tree depth
dotnet hex1b app tree <id> --depth 3

# Get as JSON for programmatic inspection
dotnet hex1b app tree <id> --json

How to Stop and Clean Up Terminals

bash
# Stop a specific terminal
dotnet hex1b terminal stop <id>

# Get terminal details (PID, dimensions, uptime)
dotnet hex1b terminal info <id>

# Resize a running terminal
dotnet hex1b terminal resize <id> --width 160 --height 50

# Clean up stale sockets from exited processes
dotnet hex1b terminal clean

How to Attach Interactively

Attach to a terminal for interactive use — you see what the process sees and can type directly.

bash
# Attach to a terminal (Ctrl+] to detach)
dotnet hex1b terminal attach <id>

How to Set Up the Agent Skill File

Generate this skill file for a repository so AI agents know how to use the CLI.

bash
# Write skill file to .agents/skills/hex1b/SKILL.md
dotnet hex1b agent init

# Specify a different repo root
dotnet hex1b agent init --path /path/to/repo

# Overwrite an existing skill file
dotnet hex1b agent init --force

# Print to stdout instead of writing to disk
dotnet hex1b agent init --stdout

Common Workflow: End-to-End Scripted Test

bash
# Launch the app
ID=$(dotnet hex1b terminal start --json -- dotnet run --project src/MyApp | jq -r .id)

# Wait for it to be ready
dotnet hex1b assert $ID --text-present "Main Menu" --timeout 15

# Navigate and interact
dotnet hex1b keys $ID --key Enter
dotnet hex1b assert $ID --text-present "Settings"
dotnet hex1b keys $ID --text "new value"
dotnet hex1b keys $ID --key Enter

# Capture final state
dotnet hex1b capture screenshot $ID --format png --output result.png
dotnet hex1b capture screenshot $ID --format text

# Clean up
dotnet hex1b terminal stop $ID

Common Workflow: Record a Demo

bash
# Start with recording
ID=$(dotnet hex1b terminal start --json --record demo.cast -- dotnet run --project samples/MyApp | jq -r .id)

# Wait and interact
dotnet hex1b assert $ID --text-present "Ready" --timeout 15
dotnet hex1b keys $ID --key Tab
dotnet hex1b keys $ID --key Enter

# Take a screenshot at a key moment
dotnet hex1b capture screenshot $ID --format png --output highlight.png

# Stop recording and terminal
dotnet hex1b capture recording stop $ID
dotnet hex1b terminal stop $ID

# Play it back
dotnet hex1b capture recording playback --file demo.cast --player

Tips

  • Use --json with jq for scriptable output: dotnet hex1b terminal list --json | jq '.[] | .id'
  • Terminal IDs are PIDs — use a unique prefix instead of the full number
  • terminal list automatically cleans up stale sockets from exited processes
  • capture screenshot --wait is useful for waiting for async rendering before capturing
  • Always use assert before interacting — never assume the app has rendered
  • For PNG screenshots, --output is required since PNG is a binary format
  • Recordings use the asciinema v2 .cast format and can be played with any compatible player

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

Files

Just SKILL.md in .agents/skills/hex1b of microsoft/aspire.

Open the folder on GitHubat commit 809a672

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders. This page covers the copy in microsoft/aspire, which our catalogue first saw on October 7, 2026.

Compare with similar skills

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

Hex1b compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Hex1b this skillmicrosoft/aspire6.3k—~2.6kAutomated safety check: PassMIT
Autom AutomationComposioHQ/awesome-claude-skills77k3 repos~723Automated safety check: PassNone
Doppler Marketing Automation AutomationComposioHQ/awesome-claude-skills77k3 repos~809Automated safety check: PassNone
Aero Workflow AutomationComposioHQ/awesome-claude-skills77k3 repos~753Automated safety check: PassNone
Anchor Browser AutomationComposioHQ/awesome-claude-skills77k3 repos~757Automated safety check: PassNone
Automate Thisgithub/awesome-copilot40k1 repos~3.1kAutomated safety check: PassMIT

Similar skills

  • Autom Automation

    ComposioHQ/awesome-claude-skills

    Automate Autom tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.

    77k GitHub starsUsed in 3 repos~723 tokens
    Productivity & AutomationAuto-check passed
  • Doppler Marketing Automation Automation

    ComposioHQ/awesome-claude-skills

    Automate Doppler Marketing Automation tasks via Rube MCP (Composio).

    77k GitHub starsUsed in 3 repos~809 tokens
    Productivity & AutomationAuto-check passed
  • Aero Workflow Automation

    ComposioHQ/awesome-claude-skills

    Automate Aero Workflow tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.

    77k GitHub starsUsed in 3 repos~753 tokens
    Productivity & AutomationAuto-check passed
  • Anchor Browser Automation

    ComposioHQ/awesome-claude-skills

    Automate Anchor Browser tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.

    77k GitHub starsUsed in 3 repos~757 tokens
    Productivity & AutomationAuto-check passed
  • Automate This

    github/awesome-copilot

    Official

    Analyze a screen recording of a manual process and produce targeted, working automation scripts.

    40k GitHub starsUsed in 1 repo~3.1k tokens
    Media & CreativeAuto-check passed
  • Agent skill for workflow-automation - invoke with $agent-workflow-automation

    74k GitHub starsUsed in 2 repos~4k tokens
    Productivity & AutomationAuto-check passed

More from microsoft/aspire

All 22 skills in this repo
  • Azdo Internal

    microsoft/aspire

    Official

    A skill your agent uses when asked to trigger or inspect Aspire internal Azure DevOps builds, source-index runs, or release validation on dnceng/internal; push to the internal mirror; download build…

    6.3k GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Backport PR

    microsoft/aspire

    Official

    Backports a merged PR to a release branch by triggering the /backport bot, waiting for the bot-created PR, and filling in the shiproom template (Customer Impact, Testing, Risk, Regression?).

    6.3k GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Bump Aspire Version

    microsoft/aspire

    Official

    Bumps the Aspire repository product version in eng/Versions.props using previous version-bump commits as guidance.

    6.3k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • CI Test Failures

    microsoft/aspire

    Official

    Guide for diagnosing GitHub Actions test failures, extracting failed tests from runs, and creating or updating failing-test issues.

    6.3k GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Create PR

    microsoft/aspire

    Official

    Create a pull request using the repository PR template. An agent skill from microsoft/aspire.

    6.3k GitHub stars~4k tokensUpdated today
    Auto-check passed
  • Dashboard Testing

    microsoft/aspire

    Official

    Guide for writing tests for the Aspire Dashboard. An agent skill from microsoft/aspire.

    6.3k GitHub stars~4.7k tokensUpdated today
    Auto-check passed

Questions about Hex1b

What does Hex1b do?

CLI tool for automating any terminal application — TUI apps, shells, CLI tools, REPLs, and more. Hex1b is an agent skill from microsoft/aspire, published by the product's own GitHub organization. CLI tool for automating any terminal application — TUI apps, shells, CLI tools, REPLs, and more.

When should I use Hex1b?

Hex1b fits situations like: you need to launch a process in a virtual terminal; capture its screen output; inject keystrokes; take screenshots.

How do I install Hex1b in Claude Code?

Run `npx skills add microsoft/aspire --skill hex1b -a claude-code`. Or copy the skill folder (.agents/skills/hex1b in microsoft/aspire) into .claude/skills/hex1b in your project. Claude Code loads it when a task matches its description.

How do I install Hex1b in Codex?

Run `npx skills add microsoft/aspire --skill hex1b -a codex`. Or copy the skill folder (.agents/skills/hex1b in microsoft/aspire) into .agents/skills/hex1b in your project. Codex loads it when a task matches its description.

Can I use Hex1b 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 microsoft/aspire --skill hex1b -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hex1b, .gemini/skills/hex1b, .github/skills/hex1b and .opencode/skills/hex1b in your project.

What does Hex1b need to run?

Going by SKILL.md and its folder, Hex1b needs the command-line tools its instructions call (dotnet and jq).

Does Hex1b 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 Hex1b 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. Review the folder before installing.

What licence does Hex1b use?

Hex1b 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 Hex1b use?

About 2.6k tokens (SKILL.md is roughly 11k 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 Hex1b?

Skills that share tags, products or a category with Hex1b: Autom Automation (ComposioHQ/awesome-claude-skills, 77k stars), Doppler Marketing Automation Automation (ComposioHQ/awesome-claude-skills, 77k stars), Aero Workflow Automation (ComposioHQ/awesome-claude-skills, 77k stars) and Anchor Browser Automation (ComposioHQ/awesome-claude-skills, 77k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Hex1b?

microsoft (a GitHub organization, an official publisher) maintains it in microsoft/aspire, which has 6,348 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 7, 2026.

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