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
Coding and workflow patterns extracted from the emskin repo (nested Wayland compositor for Emacs).
$ npx skills add emskin/emskin --skill emskin-patterns -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install emskin/emskin emskin-patterns --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "emskin-patterns" agent skill from https://github.com/emskin/emskin/tree/main/.claude/skills/emskin-patterns into .claude/skills/emskin-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "emskin-patterns", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/emskin/emskin/tree/main/.claude/skills/emskin-patternsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add emskin/emskin --skill emskin-patterns -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install emskin/emskin emskin-patterns --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/emskin/emskin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/emskin-patterns .agents/skills/emskin-patterns && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "emskin-patterns" agent skill from https://github.com/emskin/emskin/tree/main/.claude/skills/emskin-patterns into .agents/skills/emskin-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "emskin-patterns", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add emskin/emskin --skill emskin-patterns -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install emskin/emskin emskin-patterns --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/emskin/emskin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/emskin-patterns .cursor/skills/emskin-patterns && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "emskin-patterns" agent skill from https://github.com/emskin/emskin/tree/main/.claude/skills/emskin-patterns into .cursor/skills/emskin-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "emskin-patterns", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/emskin/emskin.git --path .claude/skills/emskin-patterns--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add emskin/emskin --skill emskin-patterns -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install emskin/emskin emskin-patterns --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/emskin/emskin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/emskin-patterns .gemini/skills/emskin-patterns && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "emskin-patterns" agent skill from https://github.com/emskin/emskin/tree/main/.claude/skills/emskin-patterns into .gemini/skills/emskin-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "emskin-patterns", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install emskin/emskin emskin-patternsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add emskin/emskin --skill emskin-patterns -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/emskin/emskin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/emskin-patterns .github/skills/emskin-patterns && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "emskin-patterns" agent skill from https://github.com/emskin/emskin/tree/main/.claude/skills/emskin-patterns into .github/skills/emskin-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "emskin-patterns", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add emskin/emskin --skill emskin-patterns -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install emskin/emskin emskin-patterns --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/emskin/emskin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/emskin-patterns .opencode/skills/emskin-patterns && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "emskin-patterns" agent skill from https://github.com/emskin/emskin/tree/main/.claude/skills/emskin-patterns into .opencode/skills/emskin-patterns/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "emskin-patterns", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
emskin-patternsCoding 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). 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.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 8dc7de7. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
cargogitFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from emskin/emskin at commit 8dc7de7, republished under its GPL-3.0 licence (© emskin). 621 words, ~1,632 tokens.
.claude/skills/emskin-patterns/SKILL.md (or your agent's skills folder).Patterns derived from 154 commits of git history. Use these as defaults when working in this repo; override only with explicit reason.
This repo uses Conventional Commits, filtered by cliff.toml into the
changelog. Distribution across the analyzed window:
| type | count | share | notes |
|---|---|---|---|
feat: | 36 | 24% | new user-facing feature |
fix: | 25 | 16% | bug fix |
docs: | 25 | 16% | README, CLAUDE.md, changelog notes |
chore: | 18 | 12% | releases, asset refreshes; filtered out |
refactor: | 17 | 11% | no behavior change |
ci: | 8 | 5% | workflow edits |
perf: | 2 | 1% | 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.
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.These files tend to move together. When you touch one, check the others:
A protocol change touches all three:
crates/emskin/src/ipc/messages.rs — add enum variantcrates/emskin/src/ipc/dispatch.rs — handle the variantelisp/emskin*.el — send/receive on the elisp sideipc/messages.rs uses #[serde(rename_all = "snake_case")]; acronyms like
XWaylandReady wire as x_wayland_ready (not xwayland_ready).
History shows this exact sequence for every new effect (key_cast,
cursor_trail, jelly_cursor, recorder):
crates/effect-plugins/src/<name>.rs — new file, impl Effectcrates/effect-plugins/src/lib.rs — pub mod <name>;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()crates/emskin/src/ipc/messages.rs + ipc/dispatch.rs — Set<Name> variant; dispatch reaches the overlay via state.effects.<name>.borrow_mut()elisp/emskin-<name>.el — emskin-define-bool-effect or
emskin-define-toggle macro; auto-registered on emskin-connected-hookcrates/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.
[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.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.Before pushing, run what .github/workflows/ci.yml runs:
cargo fmt --all --check
cargo clippy --workspace -- -D warnings
cargo build --workspacePlus, if the change plausibly affects IPC or window lifecycle:
cargo build -p emez
cargo test -p emskinEach 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.
.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.git push without explicit user approval. git commit does not
include push. Same for creating releases.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
Just SKILL.md in .claude/skills/emskin-patterns of emskin/emskin.
Open the folder on GitHubat commit 8dc7de7
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Emskin Patterns this skillemskin/emskin | 124 | — | ~1.6k | Automated safety check: Pass | GPL-3.0 | |
| Issue Trackingstatic-web-server/static-web-server | 2.4k | — | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| OpenLogi Device DiagnosisAprilNEA/OpenLogi | 23k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Gridbash Panesjasonsuhari/gridbash | 134 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Rust Backendstatic-web-server/static-web-server | 2.4k | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Code Qualitystatic-web-server/static-web-server | 2.4k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 |
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
AprilNEA/OpenLogi
Finds the first failing layer when an OpenLogi Logitech device is missing or misbehaving across enumeration, open, probe, IPC and UI.
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…
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
static-web-server/static-web-server
Ensure high-quality Rust code in the Static Web Server (SWS) project
elodin-sys/elodin
Profile Elodin with Tracy. An agent skill from elodin-sys/elodin.
Categories
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).
Emskin Patterns fits situations like: contributing code; writing commits; adding plugins/IPC messages.
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.
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.
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.
Going by SKILL.md and its folder, Emskin Patterns needs the command-line tools its instructions call (cargo and git).
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.
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.
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.
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.
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.
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.