Agent skill

Herald Os Tailor

by iamlukethedev in iamlukethedev/Herald-OS

Change Herald OS itself - make and switch themes, fonts and the wallpaper, widgets, the menu bar, control-menu entries, branding, keybindings, settings, routines and hooks

MITAuto-check passedDocuments & Office

Install Herald Os Tailor

skills CLI
$ npx skills add iamlukethedev/Herald-OS --skill herald-os-tailor -a claude-code

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

GitHub CLI
$ gh skill install iamlukethedev/Herald-OS herald-os-tailor --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/iamlukethedev/Herald-OS.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/herald-os-bridge/skills/herald-os-tailor .claude/skills/herald-os-tailor && 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
herald-os-tailor
GitHub stars
408
Token cost
~2.8k tokens
SKILL.md length
1,326 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

Change Herald OS itself - make and switch themes, fonts and the wallpaper, widgets, the menu bar, control-menu entries, branding, keybindings, settings, routines and hooks

  • Works in 6 steps: Write it into… → manifest.json → index.html loads the SDK and its own… → …
  • Documents & Office work in your project
  • SKILL.md covers Themes, Fonts and wallpaper, Widgets and The menu bar, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Herald Os Tailor is an agent skill from iamlukethedev/Herald-OS. Change Herald OS itself - make and switch themes, fonts and the wallpaper, widgets, the menu bar, control-menu entries, branding, keybindings, settings, routines and hooks

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

It sits in Documents & Office. It works with Linux. The repository describes itself as: An agent-native operating system, with Hermes Agent as the interface. Independent project, not affiliated with Nous Research. The licence is MIT.

When your agent uses it

  • Documents & Office work in your project

Example prompts

  • “/herald-os-tailor”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Write it into ~/.config/herald-os/plugins// with write_file. is lowercase
  2. manifest.json
  3. index.html loads the SDK and its own script file. Inline is blocked; inline styles
  4. The SDK in widget.js
  5. Never turn it on yourself. Say: "It's in Settings > Plugins; turn on Weather strip there after
  6. To share it, the folder is a git repository; others install it with herald-os plugin add

What it can do on your machine

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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json, html and kdl).

    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

Herald Os Tailor loads about 2.8k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 1,326 words of instructions outside code blocks.

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

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 iamlukethedev/Herald-OS at commit 7babe0c, republished under its MIT licence (© iamlukethedev). 1,326 words, ~2,849 tokens.

Download SKILL.mdSave it as .claude/skills/herald-os-tailor/SKILL.md (or your agent's skills folder).
name
herald-os-tailor
description
Change Herald OS itself - make and switch themes, fonts and the wallpaper, widgets, the menu bar, control-menu entries, branding, keybindings, settings, routines and hooks

Tailor Herald OS

Herald OS is meant to be shaped by the person using it, and by you on their behalf. Use this when they ask to change how Herald OS looks or behaves: "make me a calm green theme", "use a bigger font", "add a shortcut for Obsidian", "do this every time I log in".

Ground rules:

  • Change settings through os_ui commands, never by editing ~/.hermes/herald-os/prefs.json while the shell runs (it rewrites that file).
  • Say what you changed and how to undo it in one sentence ("Switched to Dusk; say 'use the ocean theme' to go back").
  • Ask before anything large or hard to undo, and keep a copy of any file you replace.

Themes

A theme recolours everything at once: the shell, your own CLI skin and, on Herald OS Linux, the compositor, GTK apps, the lock screen and the terminal.

  • os_ui action=run command=theme.list, then theme.set args={"theme": "<name>"}.
  • From an image: theme.generate args={"image": "<path>", "name": "<label>"} (optional "scheme": "dark" | "light"). It saves the theme, makes the image the wallpaper and applies it.
  • From a description ("a sunset theme", "something like old paper"): write the theme yourself. Create ~/.config/herald-os/themes/<name>/theme.json with write_file, then run theme.set. <name> is the folder name: lowercase letters, digits and dashes. The file:
json
{
  "name": "sunset",
  "label": "Sunset",
  "description": "Warm dusk orange on deep plum.",
  "shell": { "scheme": "dark" },
  "wallpaper": "default",
  "colors": {
    "bg": "#170d14", "bg2": "#26131f", "surface": "#2e1726",
    "fg": "#fbefe9", "fg_dim": "#c4a0a4",
    "accent": "#ff8a4c", "accent_strong": "#ffa36e",
    "border_active": "#ff8a4c", "border_inactive": "#3e1f30",
    "urgent": "#ff6b6b", "ok": "#5fd39a", "warn": "#f2c25e"
  },
  "gtk": { "color_scheme": "prefer-dark", "theme": "Adwaita-dark" }
}

Every colour is #rrggbb. Text (fg) needs at least 7:1 contrast against bg, the accent at least 3:1. Dark themes keep bg very dark; light themes set "scheme": "light", a very light bg, dark fg, and "gtk": {"color_scheme": "default", "theme": "Adwaita"}. bg2 and surface are a few steps from bg toward the accent (dark) or toward white (light). A "terminal" block (background, foreground, cursor, a 16-colour palette) is optional; the shell derives one when it is missing. "wallpaper" is "default" (the drawn Herald wallpaper, tinted to the theme) or an image file inside the theme's folder.

  • Someone shared a theme repository: theme.install args={"url": "https://…"}. Only colours and images are kept.
  • Undo: theme.set args={"theme": "herald-ocean"}, the default.

Fonts and wallpaper

  • font.list (optional filter), then font.set args={"family": "Inter"} for the interface or {"family": "JetBrains Mono", "kind": "mono"} for code and the terminal. "default" resets.
  • wallpaper.set args={"image": "<path>"}, or "default" for the drawn wallpaper.

Widgets

A widget is a small web page that sits in the menu bar (a 24 px strip), on the Overview (a card) or in its own window. Make one when they want something to glance at: "a strip with the weather", "a CPU meter", "a countdown to Friday".

  1. Write it into ~/.config/herald-os/plugins/<id>/ with write_file. <id> is lowercase letters, digits and dashes, and is the folder name.
  2. manifest.json:
json
{
  "id": "weather-strip",
  "name": "Weather strip",
  "version": "1.0.0",
  "description": "The temperature here, in the menu bar.",
  "entry": "index.html",
  "placement": ["menubar"],
  "size": { "width": 90, "height": 96 },
  "permissions": ["storage"],
  "hosts": ["api.open-meteo.com"]
}
  • placement: any of menubar, overview, panel. size.width is its menu-bar width (up to 240), size.height its Overview card height.
  • permissions: only what it needs. stats (CPU, memory, disks, battery), notify, storage (its own small key-value store) and run:<command.id> for each Herald OS command it runs, such as run:page.open. Commands that change things still ask the person.
  • hosts: the HTTPS hosts it fetches from. Nothing else is reachable, and the API must allow cross-origin requests (most public JSON APIs do).
  1. index.html loads the SDK and its own script file. Inline <script> is blocked; inline styles are fine. Keep the background transparent so it sits on the shell's glass.
html
<!doctype html>
<html>
  <head>
    <meta charset="utf-8" />
    <script src="herald-plugin://sdk/widget.js"></script>
    <script src="widget.js" defer></script>
  </head>
  <body style="margin: 0; font: 500 11px/24px system-ui; color: var(--herald-fg)">
    <span id="out">…</span>
  </body>
</html>
  1. The SDK in widget.js:
    • await herald.stats() gives { cpuPercent, memoryUsed, memoryTotal, disks, battery, uptimeSeconds }.
    • herald.notify(title, body), herald.storage.get(key) and herald.storage.set(key, value).
    • herald.run('page.open', { name: 'missions' }) runs a Herald OS command it was granted.
    • herald.placement is where it sits (menubar, overview or panel), also set as data-placement on <html> for CSS.
    • The theme arrives as CSS variables: --herald-bg, --herald-surface, --herald-fg, --herald-fg-dim, --herald-accent, --herald-line, --herald-ok, --herald-warn, --herald-urgent; herald.onTheme(colors => …) hears changes.
  2. Never turn it on yourself. Say: "It's in Settings > Plugins; turn on Weather strip there after checking what it asks for." os_ui action=run command=plugin.manage shows that page. Once it is on, every saved change reloads it, so iterate by editing the files.
  3. To share it, the folder is a git repository; others install it with herald-os plugin add <url> (it arrives turned off for them too).

The menu bar

  • bar.layout lists the items left to right (search, widgets, voice, indicators, usage, wifi, bluetooth, sound, battery, notifications, clock) and which are shown.
  • bar.hide item=bluetooth, bar.show item=battery. The status lights (indicators: recording, dictation, switches that are on) always show; say why if asked to hide them.
  • bar.move item=clock position=first (also last, a number with 1 leftmost, or before= / after= another item).
  • bar.clock hours=24 (12, system), seconds=true, date=none (short, long).
  • bar.reset puts it all back. Settings > Appearance > Menu bar shows the result.
Show full SKILL.md (573 more words)Show less

Control-menu entries

The control menu (Mod+M) takes the person's own entries from ~/.config/herald-os/menu.json. Write it with write_file, keeping any entries already there:

json
{
  "entries": [
    { "label": "Notes", "hint": "Obsidian", "icon": "notes", "herald-os": ["launch", "obsidian"] },
    { "label": "Back up photos", "group": "trigger", "exec": ["rsync", "-a", "~/Pictures/", "/mnt/backup/Pictures/"] },
    { "label": "Standup doc", "icon": "world", "url": "https://docs.example.com/standup" },
    { "label": "Missions", "command": "page.open", "args": { "name": "missions" } }
  ]
}
  • Each entry has a label and exactly one action: herald-os (a herald-os command as a list of words), exec (a program and its arguments, as a list; ~/ is the home folder; no shell, so no pipes), url (http or https) or command (a Herald OS command id and its args).
  • group puts it in an existing group (install, remove, update, style, trigger, capture, toggle, system, hermes); otherwise it sits under "Yours". icon is one of star, app, terminal, world, bolt, folder, notes, music, camera, code, calendar, mail, chat, heart, home, rocket.
  • The menu reads the file each time it opens. herald-os menu check shows what it understood and any problems.

Branding

  • branding.set args={"logo": "<image path>"} puts a PNG, JPEG, WebP or SVG logo at the top of Settings > About; "name": "Acme Corp" adds a line under it. The image is copied, so the original can move.
  • branding.set args={"lock": "<image path>"} (PNG or JPEG) is the picture behind the password ring on the Herald OS Linux lock screen.
  • branding.reset (or what=logo, lock, name) goes back to the Herald logo and the theme's lock screen.

Settings

The shell's settings are commands: accent.set, dock.autoHide, motion.reduce, voice.engine.set, voice.wake.set, crash.help, theme.followHermes and more. Run os_ui action=list for the full list with arguments, and settings.open section=<id> to show the person the result.

Keybindings (Herald OS Linux)

The compositor is niri. The Herald OS session starts it with ~/.config/niri/herald-os.kdl, which Herald OS renders from its template at every login and whenever the keymap changes, so never edit it: the next login undoes the change. The person's own binds and other per-machine settings go in ~/.config/niri/local.kdl, which that file includes last and Herald OS never touches. Add binds there, not to ~/.config/niri/config.kdl, which the Herald OS session does not read:

kdl
binds {
    Mod+Shift+O hotkey-overlay-title="Obsidian" { spawn "flatpak" "run" "md.obsidian.Obsidian"; }
    Mod+Ctrl+T { spawn "herald-os" "open" "terminal"; }
}

niri reloads the file as soon as it is saved. Check it with niri validate -c ~/.config/niri/herald-os.kdl in the terminal (it reads local.kdl through the include), and read the hotkey overlay (Mod+K) before reusing a key: Herald OS already binds many Mod+… combinations. Any herald-os command can be a bind (spawn "herald-os" "theme" "set" "herald-dusk").

To change one of Herald OS's own keys, bind the same key in local.kdl: it is included last, and niri lets a later bind replace an earlier one. To switch a key off, bind it to nothing: Mod+Q { spawn "true"; }. Only bind a key once inside local.kdl itself; niri refuses a file that binds the same key twice.

Inside Omarchy (Herald OS as an app on Hyprland), Herald's keys are in ~/.config/hypr/herald-os.lua on Omarchy 4 (herald-os.conf on Omarchy 3), which herald-os omarchy install rewrites. Change them in the person's own Hyprland config instead: on Omarchy 4, below the require("hypr.herald-os") line at the end of ~/.config/hypr/hyprland.lua (it has to run after Herald's), hl.unbind("SUPER + ALT + H") and then their own o.bind("KEYS", "description", "command"); on Omarchy 3, unbind = SUPER ALT, H and then their own bind = … line. Check the result with hyprctl configerrors after hyprctl reload.

Routines

  • Something on a schedule: automation.create args={"name": …, "schedule": "every weekday at 9am", "prompt": …}.
  • Something each time an event happens ("every time I log in", "when the battery is low", "when Safari crashes"): automation.create with "event" (and "match") instead of a schedule, or a hook script for chores that need no Hermes. The herald-os skill lists the events and how hooks run.

© iamlukethedev, 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 plugins/herald-os-bridge/skills/herald-os-tailor of iamlukethedev/Herald-OS.

Open the folder on GitHubat commit 7babe0c

Compare with similar skills

Herald Os Tailor 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.

Herald Os Tailor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Herald Os Tailor this skilliamlukethedev/Herald-OS408—~2.8kAutomated safety check: PassMIT
Static File Servingstatic-web-server/static-web-server2.4k—~2kAutomated safety check: PassApache-2.0
Local AI SearchLeoYeAI/openclaw-master-skills2.2k—~3.4kAutomated safety check: PassMIT
Ppt CompressorLeoYeAI/openclaw-master-skills2.2k—~3.9kAutomated safety check: PassMIT
PdflatexOpenHands/extensions163—~320Automated safety check: PassMIT
Scanned PDF To Epublonghaiqwe/scanned-pdf-to-epub161—~1.9kAutomated safety check: PassMIT

Similar skills

  • Static File Serving

    static-web-server/static-web-server

    Explain or change how the Static Web Server (SWS) serves files — index resolution, MIME types, pre-compressed and on-the-fly compression, Cache-Control, ETag and conditional requests, byte ranges…

    2.4k GitHub stars~2k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Local AI Search

    LeoYeAI/openclaw-master-skills

    Natural language search for local files (100G-1T). An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~3.4k tokensUpdated 2 mo ago
    Documents & OfficeAuto-check passed
  • Ppt Compressor

    LeoYeAI/openclaw-master-skills

    This skill should be used when the user wants to compress a PowerPoint (.pptx) file by reducing the size of embedded videos and large images.

    2.2k GitHub stars~3.9k tokensUpdated 2 mo ago
    Documents & OfficeAuto-check passed
  • Pdflatex

    OpenHands/extensions

    Install and use pdflatex to compile LaTeX documents into PDFs on Linux.

    163 GitHub stars~320 tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Scanned PDF To Epub

    longhaiqwe/scanned-pdf-to-epub

    A skill your agent uses when scanned Chinese PDFs or image-only books need text EPUB conversion on macOS, Windows, or Linux, especially when OCR text, original underlined proper names, 专名号, or…

    161 GitHub stars~1.9k tokensUpdated 26 days ago
    Documents & OfficeAuto-check passed
  • See

    oil-oil/see-skill

    使用外部视觉服务或本地 OCR 分析本地图片、截图、视频及明确提供的媒体 URL,输出 Markdown。用户明确要求 see,或当前主模型缺少完成媒体分析所需的视觉能力时使用。不拦截普通文本、任意 URL 或已有原生视觉可以直接完成的任务;不用于生图、编辑图片或自动操作屏幕。使用外部服务前说明发送的媒体与服务范围,无法识别时如实说明限制。

    160 GitHub stars~632 tokensUpdated 1 mo ago
    Documents & OfficeAuto-check: notes

More from iamlukethedev/Herald-OS

All 8 skills in this repo
  • Herald Sheets

    iamlukethedev/Herald-OS

    Work in Herald Sheets, the spreadsheet in Herald OS - read workbooks, write values and formulas (a formula from a description, explaining one, filling it down), fill a column from examples, clean…

    408 GitHub stars~4.6k tokensUpdated yesterday
    Auto-check passed
  • Herald Slides

    iamlukethedev/Herald-OS

    Make and change presentations in Herald Slides, the presentation editor in Herald OS - a deck from a topic (an outline first, a title slide, one idea a slide, short bullets, speaker notes, a closing…

    408 GitHub stars~4.8k tokensUpdated yesterday
    Auto-check passed
  • Herald Canvas

    iamlukethedev/Herald-OS

    Make and edit pictures in Herald Canvas, the layered image editor in Herald OS - posters, banners, thumbnails, collages and photo fixes through the canvas tool, with editable text and shape layers…

    408 GitHub stars~7.2k tokensUpdated yesterday
    Auto-check passed
  • Herald Docs

    iamlukethedev/Herald-OS

    Write and edit documents in Herald Docs, the word processor in Herald OS - letters, cover letters, CVs, reports, memos, meeting notes, proposals, essays and newsletters drafted from a brief or a…

    408 GitHub stars~6k tokensUpdated yesterday
    Auto-check passed
  • Diagnose Crash

    iamlukethedev/Herald-OS

    Explain why a program crashed from its crash report or core dump, and whether it is worth reporting

    408 GitHub stars~964 tokensUpdated yesterday
    Auto-check passed
  • File Documents

    iamlukethedev/Herald-OS

    Find documents such as invoices among badly named files, read them, name them clearly and file them where the person keeps them, with a plan they approve and an undo

    408 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Herald Os Tailor

What does Herald Os Tailor do?

Change Herald OS itself - make and switch themes, fonts and the wallpaper, widgets, the menu bar, control-menu entries, branding, keybindings, settings, routines and hooks. Herald Os Tailor is an agent skill from iamlukethedev/Herald-OS.

When should I use Herald Os Tailor?

Herald Os Tailor fits situations like: documents & Office work in your project.

How do I install Herald Os Tailor in Claude Code?

Run `npx skills add iamlukethedev/Herald-OS --skill herald-os-tailor -a claude-code`. Or copy the skill folder (plugins/herald-os-bridge/skills/herald-os-tailor in iamlukethedev/Herald-OS) into .claude/skills/herald-os-tailor in your project. Claude Code loads it when a task matches its description.

How do I install Herald Os Tailor in Codex?

Run `npx skills add iamlukethedev/Herald-OS --skill herald-os-tailor -a codex`. Or copy the skill folder (plugins/herald-os-bridge/skills/herald-os-tailor in iamlukethedev/Herald-OS) into .agents/skills/herald-os-tailor in your project. Codex loads it when a task matches its description.

Can I use Herald Os Tailor 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 iamlukethedev/Herald-OS --skill herald-os-tailor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/herald-os-tailor, .gemini/skills/herald-os-tailor, .github/skills/herald-os-tailor and .opencode/skills/herald-os-tailor in your project.

What does Herald Os Tailor need to run?

SKILL.md names no scripts, command-line tools or credentials: Herald Os Tailor is instructions for the agent only.

Does Herald Os Tailor 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 Herald Os Tailor 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 Herald Os Tailor use?

Herald Os Tailor 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 Herald Os Tailor use?

About 2.8k 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 Herald Os Tailor?

Skills that share tags, products or a category with Herald Os Tailor: Static File Serving (static-web-server/static-web-server, 2.4k stars), Local AI Search (LeoYeAI/openclaw-master-skills, 2.2k stars), Ppt Compressor (LeoYeAI/openclaw-master-skills, 2.2k stars) and Pdflatex (OpenHands/extensions, 163 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Herald Os Tailor?

iamlukethedev (a GitHub user) maintains it in iamlukethedev/Herald-OS, which has 408 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 10, 2026.

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