# skills is seven folders with seven different licenses and one AGENTS.md

> michaelshimeles/skills packages agent skills as folders holding a SKILL.md with frontmatter, seven of them at the repository root, tied together by an AGENTS.md workflow. The repository has no LICENSE file of its own, one vendored folder is PolyForm Shield rather than MIT, greploop exists twice because upstream refused large pull requests, and the evidence recorder does not run on GNOME or KDE under Wayland.

**michaelshimeles/skills** — Agent skills and an AGENTS.md workflow template — isolate in worktrees, build to a service layer, prove with evidence, ship with before/after proof and Greptile review loops. For Claude Code, Cursor, and Codex.

- Repository: https://github.com/michaelshimeles/skills
- Stars: 1,231 · Forks: 196
- Language: Python
- License: not declared
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/michaelshimeles-skills

## One folder per skill, with a SKILL.md carrying name and description

The unit is a folder. Inside it is a SKILL.md with frontmatter holding a name and a description, plus the instructions themselves. The description is the trigger: the agent loads the instructions on demand when the task matches, which means the description is the part that decides whether a skill ever runs.

Seven folders sit at the repository root: before-and-after, code-structure, evidence-driven-testing, greploop, greploop-apps, new-feature, and unslop. There is also an AGENTS.md at the root and a tests/ directory.

Installation is one command:

```bash
npx skills add michaelshimeles/skills
```

After that, Claude Code picks the skill up on its own when a task matches the description, and you can also call one directly with a slash command such as /code-structure or /evidence-driven-testing.

So there are two paths to the same instructions, and they are not equivalent. Auto-invocation depends entirely on how the description is worded, while a typed slash command does not. Three of the vendored skills had their descriptions rewritten precisely to change when they fire, which is the clearest evidence in the repository that the description is doing real work.

## No LICENSE at the root, and one vendored folder is PolyForm

The repository's license is recorded as unknown, and there is no LICENSE file among the top level entries. Licensing is handled inside each folder instead.

Three folders carry an MIT license with the license file included in the folder: greploop, vendored from greptileai/skills, greploop-apps, described as a local variant derived from greptileai's greploop with no separate upstream, and unslop, vendored from cursor/plugins.

One does not. before-and-after is vendored from vercel-labs/before-and-after under PolyForm Shield 1.0.0, with the license included in the folder. PolyForm Shield is a non-commercial license, which is a different permission from MIT for the one skill that produces before and after image comparisons.

That combination is the thing to notice. A collection with no license of its own, where each vendored folder carries the license of its origin, means the terms you get depend on which skill you copied. If you need the before-and-after workflow in a commercial setting, that is the folder to check, and the license file is in the folder rather than at the root.

The disclosure itself is consistent and specific: each vendored folder names its upstream, its license, and the install command for anything it shells out to.

## The evidence recorder skips GNOME and KDE under Wayland

The evidence-driven-testing skill records video while the agent drives the app. It has a bundled recorder, scripts/evidence.py, written in Python 3 with FFmpeg, with doctor, start, annotate, and stop commands, and it is documented as running on Linux, macOS, and Windows.

The desktop requirement is where the gaps are, and the skill states them plainly. The FFmpeg build must include libx264 and the ass filter, which is what burns the timestamped annotations into the output. On Linux the capture source must be X11 through DISPLAY, or wlroots Wayland through wf-recorder, and GNOME and KDE are explicitly not supported. On macOS it needs Screen Recording permission. On Windows any standard FFmpeg is enough. The doctor command reports both whether the encoder is present and whether a capture source is available.

GNOME and KDE are not edge cases. They are the default Wayland sessions on the most common Linux desktops, so on a default Fedora or KDE setup the recorder does not run and the skill falls back to the headless path.

The fallback is described: headless environments swap the recorder for scripted screenshots and Playwright captures, and non-UI changes still get evidence in the form of measured numbers, output pairs, or transcript excerpts. So the skill degrades rather than failing, but the video path is closed on those desktops.

## Raw capture is MPEG-TS so a killed recorder still yields evidence

The recorder's design decisions are worth reading as a set, because they all point at surviving an interrupted run.

It timestamps each annotation as the agent tests, burns those annotations into evidence.mp4 on stop, and summarizes them in a generated report.md alongside a manifest.json. The raw capture is MPEG-TS, and the stated reason is that a crashed or hard-killed recorder still yields usable evidence. A container that finalizes its index on clean exit loses everything when the process dies, and an agent session is exactly the kind of process that gets killed.

The parts that need the outside world are named as well. Posting the video and the results summary to the pull request and the tracker issue requires the gh CLI or an equivalent. The headless path needs a running app and a scriptable browser, which means Playwright through npx. The recorder itself needs a live screen.

The skill also ships a test. tests/test_evidence.py smoke-tests the recorder end to end against a synthetic video source, run with python3 -m pytest tests/ -q.

So the one component with real system dependencies is also the one with an automated check, which is the right place to spend the effort in a repository that is otherwise Markdown.

## greploop wants a perfect score and stops after ten passes

greploop is a loop around a code review service. It iteratively fixes a pull request, a merge request, or a shelved changelist until Greptile returns 5/5 confidence with zero unresolved comments, triggering the review, fixing actionable comments, resolving threads, pushing, and repeating.

The convergence target is exact rather than aspirational. It wants a specific score and a specific thread count, and it caps the effort at --max-iterations with a default of 10. So the loop is bounded: after ten passes it stops regardless of the score, which is the right way to build something that otherwise has no natural exit.

The scope is three version control systems. GitHub pull requests, GitLab merge requests, and Perforce shelved changelists, with the corresponding gh, glab, and p4 command line tools. Perforce support is the unusual part of that list; a skill that pushes on every cycle across three different working-copy models is a lot of surface.

Prerequisites are stated: Greptile has to be installed on the repository, and the relevant CLI has to be authenticated. The loop is a client for a service that has to be present first.

## greploop-apps exists because the plain trigger refuses large diffs

There are two review loop skills in this repository, and the reason for the second is a refusal.

greploop-apps runs the same loop but triggers the review by tagging @greptile-apps, which bypasses Greptile's file count limit on very large pull requests that a plain @greptile mention declines to review. When no check run appears, it falls back to polling Greptile's edited summary comment instead.

The fallback is the detail that matters. The plain trigger works by producing a check run; the alternative trigger does not, at least not reliably, so this variant has to notice absence and then read a comment that Greptile edits in place. Two different mechanisms for observing the same reviewer.

The provenance note says this is a local variant derived from greptileai's greploop under MIT, with no separate upstream. So there is nowhere to send a fix, and no upstream that will ever change the file count limit.

The practical consequence is two copies of one loop to keep in sync. When the comment fixing, thread resolving, or push step changes upstream, greploop moves and greploop-apps does not unless somebody remembers. For a repository whose whole subject is keeping agents consistent across worktrees, that is an interesting place to have a fork.

The stated use case is narrow and useful: when greploop's trigger returns too many files changed for review.

## unslop was deliberately changed from upstream, and the change is written down

unslop edits prose to remove the tells of machine writing and put a human voice back in. It names 31 patterns to catch, including puffery, filler, hedging, chatbot phrases, em dashes, colons used as connectors, bold and emoji overuse, abstract metaphor nouns, and passive voice, plus a short checklist for adding opinion and rhythm. It runs as a four-step loop: scan, rewrite, add soul, self-audit.

The vendoring note is the most interesting paragraph in the repository, because it documents a deliberate divergence. The body matches upstream exactly. The frontmatter has two edits: the line disable-model-invocation: true was dropped, and the description now names the trigger, meaning text you write or edit for a human reader, in place of upstream's much broader wording. The stated reason for the first edit is that agents now apply the skill on their own instead of waiting for a typed /unslop. The reason for the second is that auto-invocation should match the scope AGENTS.md gives the skill. And the note says to restore the flag if you want slash-command-only behaviour.

So this is a vendored skill that ships with a patch, the patch is described line by line, and the reversal is documented in the same sentence. It is also the one skill here whose list of patterns overlaps with the constraints this kind of writing has to follow, which is a reminder that the rules travel with the tool.

The stated scope is anything a person will read: commit messages, pull request titles and bodies, documentation, README edits, code comments, and chat replies.

## Four beats in AGENTS.md, and Codex is named but not wired up

AGENTS.md is the piece that turns seven folders into a process. It defines a four-beat workflow: isolate with new-feature, build with code-structure, prove with evidence-driven-testing, and ship with before-and-after plus greploop, with unslop applied to everything written for humans along the way. You drop the file into a repository alongside the skills and fill in the repository-specific callouts for checks, invariants, and environment.

That division of labour is the reason the skills are separate folders. None of them knows about the others; the ordering lives entirely in the template file.

The agent support claim is where the inconsistency is. The project summary says the skills are for Claude Code, Cursor, and Codex. The README's opening line says they are a collection of agent skills for Claude Code. The new-feature skill includes harness deltas for Claude Code and Cursor, which manage worktrees themselves, and says nothing about Codex. The install command is described as working for most coding agents.

So Codex is named once, in the summary, with no harness note, no delta, and no instruction specific to it. If you are working in Codex, the four-beat workflow still applies and the auto-invocation behaviour is the part most likely to differ.

## Conclusion

skills fits a team already running an agent that can load skills on description match, and who want the workflow conventions written down rather than rediscovered per project. Four things to check before installing. What license you need, since one vendored folder is PolyForm Shield rather than MIT and the collection has no license of its own. Whether your desktop can record video, because the evidence recorder needs X11 or wlroots and skips GNOME and KDE under Wayland. Whether your ffmpeg has libx264 and the ass filter, which the doctor command checks. And whether your review platform is GitHub, GitLab, or Perforce, since the review loop only matches Greptile's behaviour on the one your CLI supports out of the box.

## FAQ

### What is michaelshimeles/skills?

It is a collection of agent skills, each one a folder holding a SKILL.md with frontmatter for a name and a description plus the instructions, loaded on demand when a task matches the description. Seven skills sit at the repository root, and an AGENTS.md ties them into a four-beat workflow.

### How do I install the michaelshimeles/skills collection?

Run npx skills add michaelshimeles/skills. Claude Code then picks a skill up automatically when a task matches its description, and you can also invoke one explicitly with a slash command such as /code-structure or /evidence-driven-testing.

### What license are the skills in michaelshimeles/skills?

Licensing is per folder rather than repository-wide, and the repository has no LICENSE file of its own. greploop, greploop-apps, and unslop carry MIT licenses included in their folders. before-and-after is vendored under PolyForm Shield 1.0.0.

### Does the evidence recorder work on Linux Wayland desktops?

Only on wlroots Wayland through wf-recorder. The skill names GNOME and KDE as not supported. On Linux the alternative is X11 through DISPLAY, on macOS it needs Screen Recording permission, and on Windows any standard ffmpeg works. The doctor command reports both requirements.

### Why are there two Greptile review skills?

greploop triggers a review with a plain @greptile mention. greploop-apps tags @greptile-apps to get around the file count limit that makes Greptile refuse very large pull requests, and falls back to polling the edited summary comment when no check run appears. It is a local variant with no separate upstream.

### What does the AGENTS.md workflow in michaelshimeles/skills do?

It defines four beats: isolate with new-feature, build with code-structure, prove with evidence-driven-testing, and ship with before-and-after plus greploop, with unslop applied to anything written for humans along the way. You drop the file into a repository and fill in the repository-specific callouts.

## Sources

- [Issues](https://github.com/michaelshimeles/skills/issues)
- [michaelshimeles/skills on GitHub](https://github.com/michaelshimeles/skills)
- [README](https://github.com/michaelshimeles/skills/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/michaelshimeles-skills
