Agent skill

Emskin Patterns

by emskin in emskin/emskin

Coding and workflow patterns extracted from the emskin repo (nested Wayland compositor for Emacs).

GPL-3.0Auto-check passedDevelopment

Install Emskin Patterns

skills CLI
$ npx skills add emskin/emskin --skill emskin-patterns -a claude-code

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

GitHub CLI
$ gh skill install emskin/emskin emskin-patterns --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/emskin/emskin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/emskin-patterns .claude/skills/emskin-patterns && 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
emskin-patterns
GitHub stars
124
Token cost
~1.6k tokens
SKILL.md length
621 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
GPL-3.0

At a glance

Coding and workflow patterns extracted from the emskin repo (nested Wayland compositor for Emacs).

  • Works in 3 steps: crates/emskin/src/ipc/messages.rs — add… → crates/emskin/src/ipc/dispatch.rs —… → elisp/emskin*.el — send/receive on the…
  • Contributing code
  • SKILL.md covers Commit conventions, Repository layout, Co-change patterns and Versioning & release, plus 3 more sections
  • Calls cargo and git

What it does

Emskin Patterns is an agent skill from emskin/emskin. Coding and workflow patterns extracted from the emskin repo (nested Wayland compositor for Emacs). Use when contributing code, writing commits, or adding plugins/IPC messages.

Its SKILL.md is about 1.6k 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 Development. It works with Rust and Linux. The repository describes itself as: Nested Wayland compositor for Emacs. The licence is GPL-3.0.

When your agent uses it

  • Contributing code
  • Writing commits
  • Adding plugins/IPC messages

Example prompts

  • “/emskin-patterns”

Workflow steps

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

  1. crates/emskin/src/ipc/messages.rs — add enum variant
  2. crates/emskin/src/ipc/dispatch.rs — handle the variant
  3. elisp/emskin*.el — send/receive on the elisp side

What it can do on your machine

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

    • cargo
    • git

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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

Emskin Patterns loads about 1.6k tokens when it runs. Until then it costs about 48 tokens; SKILL.md has 621 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~48
When it runs · the whole SKILL.md, loaded when a task matches
~1.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 emskin/emskin at commit 8dc7de7, republished under its GPL-3.0 licence (© emskin). 621 words, ~1,632 tokens.

Download SKILL.mdSave it as .claude/skills/emskin-patterns/SKILL.md (or your agent's skills folder).
name
emskin-patterns
description
Coding and workflow patterns extracted from the emskin repo (nested Wayland compositor for Emacs). Use when contributing code, writing commits, or adding plugins/IPC messages.
version
1.0.0
source
local-git-analysis
analyzed_commits
154

emskin Patterns

Patterns derived from 154 commits of git history. Use these as defaults when working in this repo; override only with explicit reason.

Commit conventions

This repo uses Conventional Commits, filtered by cliff.toml into the changelog. Distribution across the analyzed window:

typecountsharenotes
feat:3624%new user-facing feature
fix:2516%bug fix
docs:2516%README, CLAUDE.md, changelog notes
chore:1812%releases, asset refreshes; filtered out
refactor:1711%no behavior change
ci:85%workflow edits
perf:21%performance

Scopes observed: release, ci, focus, elisp, key-cast, cli, readme, emskin, cursor_trail. Scopes are optional but preferred when the change is localized — e.g. feat(key-cast): …, refactor(focus): ….

chore:, style:, merge, and revert commits are stripped by cliff.toml. Pick a different type if the change deserves a changelog line.

Repository layout

Cargo workspace with four crates and a hard dep boundary:

crates/
├── effect-core/      # Effect trait, EffectChain, render helpers (no host state)
├── effect-plugins/   # built-in overlays — one file per plugin in src/
│   ├── measure.rs   skeleton.rs   splash.rs
│   ├── cursor_trail.rs   jelly_cursor.rs
│   ├── recorder.rs   key_cast.rs
│   └── bitmap_font.rs
├── emskin/           # compositor binary, IPC, handlers/, tests/
└── emskin-bar/       # standalone Wayland client (zero workspace deps)
elisp/                # Emacs-side client, embedded via include_dir!

Rules enforced by history and CLAUDE.md:

  • effect-plugins never imports from emskin. Plugins are purely visual via effect_core::Effect; host concerns (IPC, workspaces, focus) stay in emskin.
  • emskin-bar links against nothing in this workspace — any third-party layer-shell bar (waybar, eww) must remain a drop-in replacement.

Co-change patterns

These files tend to move together. When you touch one, check the others:

IPC change → three sides in lockstep

A protocol change touches all three:

  1. crates/emskin/src/ipc/messages.rs — add enum variant
  2. crates/emskin/src/ipc/dispatch.rs — handle the variant
  3. elisp/emskin*.el — send/receive on the elisp side

ipc/messages.rs uses #[serde(rename_all = "snake_case")]; acronyms like XWaylandReady wire as x_wayland_ready (not xwayland_ready).

New effect plugin — 5-file pattern

History shows this exact sequence for every new effect (key_cast, cursor_trail, jelly_cursor, recorder):

  1. crates/effect-plugins/src/<name>.rs — new file, impl Effect
  2. crates/effect-plugins/src/lib.rs — pub mod <name>;
  3. crates/emskin/src/state/effects.rs — add an Rc<RefCell<T>> field to EffectsState and a register(&mut chain, YourOverlay::new()) call inside EffectsState::default()
  4. crates/emskin/src/ipc/messages.rs + ipc/dispatch.rs — Set<Name> variant; dispatch reaches the overlay via state.effects.<name>.borrow_mut()
  5. elisp/emskin-<name>.el — emskin-define-bool-effect or emskin-define-toggle macro; auto-registered on emskin-connected-hook
Code change → CLAUDE.md update

crates/emskin/CLAUDE.md accumulates non-obvious invariants, gotchas, and protocol quirks alongside the code. If your fix was tricky enough to deserve a comment, also add a bullet under the matching section in CLAUDE.md.

Show full SKILL.md (278 more words)Show less

Versioning & release

  • Workspace version lives in [workspace.package] in root Cargo.toml (inherited by effect-core / effect-plugins / emskin-bar).
  • crates/emskin/Cargo.toml also keeps a literal version = "x.y.z" because cargo-aur 0.x doesn't support version.workspace = true. Both sites must stay in sync — cargo release bumps them together via release.toml pre-release-replacements anchored by # x-release-please-version.
  • Release is cargo release patch --execute (or minor / explicit). That runs git-cliff → updates CHANGELOG.md → single chore: release commit → tag → tag push triggers .github/workflows/release.yml → cargo-aur → GitHub Release + AUR publish.
  • Historical note: the repo migrated from release-please to cargo-release + git-cliff; don't re-introduce release-please config.

Local verification (matches CI)

Before pushing, run what .github/workflows/ci.yml runs:

cargo fmt --all --check
cargo clippy --workspace -- -D warnings
cargo build --workspace

Plus, if the change plausibly affects IPC or window lifecycle:

cargo build -p emez
cargo test -p emskin

Each test spawns its own private host compositor — emez (crates/emez/, smithay-based headless Wayland host) for the Wayland variants, Xvfb for X11 — so tests never touch the developer's real compositor. Tests run in parallel: the harness pre-allocates a unique X DISPLAY number per emez/emskin pair from a process-wide reservation pool and passes them via --xwayland-display, so smithay's XWayland bootstrap never races.

Code-style defaults

  • Comments / logs / docs in Rust source: English only. No Chinese in .rs files — it's in CLAUDE.md and the feedback memory.
  • -p targeting doesn't rebuild siblings. cargo run -p emskin will happily use a stale emskin-bar. Plain cargo run / cargo build hits both via default-members; with -p, also run cargo build -p emskin-bar explicitly.
  • Never git push without explicit user approval. git commit does not include push. Same for creating releases.

smithay is a fork

When reading smithay source to trace behavior, use the vendored checkout at ~/.cargo/git/checkouts/smithay-*/<commit>/ — that revision carries the emskin patches (backend/winit/mod.rs, text_input/text_input_handle.rs, selection/seat_data.rs). A clean upstream clone won't match what the compositor actually links against.

© emskin, GPL-3.0. 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 .claude/skills/emskin-patterns of emskin/emskin.

Open the folder on GitHubat commit 8dc7de7

Compare with similar skills

Emskin Patterns 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.

Emskin Patterns compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Emskin Patterns this skillemskin/emskin124—~1.6kAutomated safety check: PassGPL-3.0
Issue Trackingstatic-web-server/static-web-server2.4k—~1.5kAutomated safety check: PassApache-2.0
OpenLogi Device DiagnosisAprilNEA/OpenLogi23k—~1.6kAutomated safety check: PassApache-2.0
Gridbash Panesjasonsuhari/gridbash134—~1.5kAutomated safety check: PassMIT
Rust Backendstatic-web-server/static-web-server2.4k—~1.7kAutomated safety check: PassApache-2.0
Code Qualitystatic-web-server/static-web-server2.4k—~1.1kAutomated safety check: PassApache-2.0

Similar skills

  • Issue Tracking

    static-web-server/static-web-server

    Triage, debug, fix, and document issues for the Static Web Server (SWS) project — bug reports, root cause analysis, fix implementation, and regression prevention

    2.4k GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed
  • OpenLogi Device Diagnosis

    AprilNEA/OpenLogi

    Finds the first failing layer when an OpenLogi Logitech device is missing or misbehaving across enumeration, open, probe, IPC and UI.

    23k GitHub stars~1.6k tokensUpdated 4 days ago
    DevelopmentAuto-check passed
  • Gridbash Panes

    jasonsuhari/gridbash

    Coordinate with sibling agent panes from inside a GridBash grid — list panes and their roles, read what a pane is currently doing, prompt one pane or every other pane, and rename pane titles so the…

    134 GitHub stars~1.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Rust Backend

    static-web-server/static-web-server

    Write or review Rust backend code for the Static Web Server (SWS) project — crates, modules, functions, types, error handling, and async code

    2.4k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Code Quality

    static-web-server/static-web-server

    Ensure high-quality Rust code in the Static Web Server (SWS) project

    2.4k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Elodin Tracy

    elodin-sys/elodin

    Profile Elodin with Tracy. An agent skill from elodin-sys/elodin.

    547 GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check: notes

Works with

Questions about Emskin Patterns

What does Emskin Patterns do?

Coding and workflow patterns extracted from the emskin repo (nested Wayland compositor for Emacs). Emskin Patterns is an agent skill from emskin/emskin. Coding and workflow patterns extracted from the emskin repo (nested Wayland compositor for Emacs).

When should I use Emskin Patterns?

Emskin Patterns fits situations like: contributing code; writing commits; adding plugins/IPC messages.

How do I install Emskin Patterns in Claude Code?

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

How do I install Emskin Patterns in Codex?

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

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

What does Emskin Patterns need to run?

Going by SKILL.md and its folder, Emskin Patterns needs the command-line tools its instructions call (cargo and git).

Does Emskin Patterns access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Emskin Patterns 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 Emskin Patterns use?

Emskin Patterns is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Emskin Patterns use?

About 1.6k tokens (SKILL.md is roughly 6.5k 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 Emskin Patterns?

Skills that share tags, products or a category with Emskin Patterns: Issue Tracking (static-web-server/static-web-server, 2.4k stars), OpenLogi Device Diagnosis (AprilNEA/OpenLogi, 23k stars), Gridbash Panes (jasonsuhari/gridbash, 134 stars) and Rust Backend (static-web-server/static-web-server, 2.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Emskin Patterns?

emskin (a GitHub organization) maintains it in emskin/emskin, which has 124 GitHub stars. The repository was last updated on May 4, 2026.

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