Language Support
live-codes/livecodes
Work with 90+ supported languages, compilers, CSS processors, and WASM-compiled languages for markup, style, and script editors.
Use the Gerillass Sass mixin library — loading it, the mixin catalogue, and the argument forms that are easy to get wrong.
$ npx skills add selfishprimate/gerillass --skill gerillass -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install selfishprimate/gerillass gerillass --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "gerillass" agent skill from https://github.com/selfishprimate/gerillass/tree/main into .claude/skills/gerillass/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gerillass", 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.
$ npx skills add selfishprimate/gerillass --skill gerillass -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install selfishprimate/gerillass gerillass --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gerillass" agent skill from https://github.com/selfishprimate/gerillass/tree/main into .agents/skills/gerillass/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gerillass", 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 selfishprimate/gerillass --skill gerillass -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install selfishprimate/gerillass gerillass --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "gerillass" agent skill from https://github.com/selfishprimate/gerillass/tree/main into .cursor/skills/gerillass/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gerillass", 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.
$ npx skills add selfishprimate/gerillass --skill gerillass -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install selfishprimate/gerillass gerillass --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "gerillass" agent skill from https://github.com/selfishprimate/gerillass/tree/main into .gemini/skills/gerillass/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gerillass", 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 selfishprimate/gerillass gerillassInstalls 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 selfishprimate/gerillass --skill gerillass -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "gerillass" agent skill from https://github.com/selfishprimate/gerillass/tree/main into .github/skills/gerillass/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gerillass", 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 selfishprimate/gerillass --skill gerillass -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install selfishprimate/gerillass gerillass --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "gerillass" agent skill from https://github.com/selfishprimate/gerillass/tree/main into .opencode/skills/gerillass/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gerillass", 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.
gerillassUse the Gerillass Sass mixin library — loading it, the mixin catalogue, and the argument forms that are easy to get wrong.
Gerillass is an agent skill from selfishprimate/gerillass. Use the Gerillass Sass mixin library — loading it, the mixin catalogue, and the argument forms that are easy to get wrong. Use when writing SCSS in a project that has gerillass installed.
Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1094 other files, including assets (for example `.claude/hooks/check-commit-message.js`, `.claude/hooks/check-docs-current.sh` and `.claude/hooks/check-docs.sh`).
It sits in Frontend & Design, covering CSS and styling. It works with Ruby. The repository describes itself as: Gerillass is a Sass mixin library containing a set of Sass mixins and functions to help front-end developers generate scalable CSS outputs. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 65f6638. 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.
Ships script files (Shell and JavaScript, from the files we listed), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.gerillass.comFrom 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.
Gerillass loads about 5k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 2,560 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 selfishprimate/gerillass at commit 65f6638, republished under its Apache-2.0 licence (© selfishprimate). 2,560 words, ~5,032 tokens.
.claude/skills/gerillass/SKILL.md (or your agent's skills folder). This skill also uses 1090 other files; get the full folder from GitHub.A Sass mixin library: 55 mixins and 24 functions that emit CSS from semantic declarations. It is Sass source only — there is no runtime and no utility classes, so styles live in your stylesheet and your markup stays clean.
Full documentation: https://docs.gerillass.com
Machine-readable API: gerillass.json in this package.
Through a bundler (Vite, webpack and most others resolve the package by name):
@use "gerillass" as *;Calling Dart Sass yourself, with its package importer
(new NodePackageImporter() or sass --pkg-importer=node):
@use "pkg:gerillass" as *;Anything else, by pointing a load path at node_modules/gerillass/scss:
@use "gerillass" as *;In a Ruby project, from the gerillass gem. Rails with dartsass-rails or
dartsass-sprockets, and Jekyll with the gem in its :jekyll_plugins group,
need no configuration. Plain Ruby passes the folder to sass-embedded with
load_paths: [Gerillass.load_path]. Then:
@use "gerillass" as *; // the gerillass gem: Rails and Jekyll need no setup; plain Ruby passes Gerillass.load_pathDart Sass only. LibSass and node-sass are not supported, which rules out
sass-rails and sassc-rails in Ruby.
Every mixin exists twice: bare (circle) and prefixed (gls-circle).
They are the same mixin. The prefix exists to avoid collisions with other
libraries. Pick one and stay with it; do not mix them in a file.
With the module system you can namespace instead, which is usually cleaner:
@use "gerillass" as gls;
.avatar { @include gls.circle(50px); }The conventions are not uniform across the library, so check before guessing. A mixin that wants a string will not take a bare value:
.a { @include after(42) { color: red; } } // wrong — errors
.a { @include after("→") { color: red; } } // rightMixins that reject bad input do so with a message naming what they accept. If you get one, read it: it lists the valid values. Mixins not in the table below mostly pass their arguments through to CSS, so a wrong value there shows up as a dropped declaration rather than an error.
| Mixin | Rejects, for example |
|---|---|
adaptive | .wrap { @include adaptive(auto); } |
after | .a { @include after(42) { color: red; } } |
all-buttons | @include all-buttons(nonsense) { color: red; } |
all-text-inputs | @include all-text-inputs(nonsense) { color: red; } |
antialias | @include antialias(only); |
aspect-ratio | .thumb { @include aspect-ratio("16:9", nonsense); } |
background-dots | .a { @include background-dots(red, 1em, 5em, maybe); } |
background-image | .a { @include background-image("/img/a.png", (red, blue), sideways); } |
background-stripes | .a { @include background-stripes(red, 2em, nonsense); } |
before | .a { @include before(42) { color: red; } } |
border-box | @include border-box(only); |
border-radius | .a { @include border-radius(1px, 2px, 3px); } |
brand-logo | .logo { @include brand-logo(120px, 40px, "/img/a.svg" "/img/b.svg"); } |
breakpoint | .a { @include breakpoint("between", "medium", "large") { color: red; } } |
breakpointer | .a { @include breakpointer(42); } |
center | .modal { @include center(diagonal); } |
circle | .dot { @include circle(huge); } |
columnizer | .grid { @include columnizer(3, 20px, true, 9); } |
container-query | .title { @include container-query("min", 400px, 800px) { color: red; } } |
container | .card { @include container("card", sideways); } |
ellipsis | .a { @include ellipsis(100%, huge); } |
escape-to-parent | .a { @include escape-to-parent(42) { color: red; } } |
except | .a { @include except(#ff0000) { margin: 0; } } |
focus-ring | @include focus-ring; |
font-face | .a { @include font-face("Inter", "/fonts/inter"); } |
gradient | .a { @include gradient((red, blue), sideways); } |
hide | .a { @include hide(nonsense); } |
line-clamp | .a { @include line-clamp(0); } |
loadify | @include loadify(nonsense); |
motion-safe | .card { @include motion-safe; } |
only | .a { @include only(#ff0000) { margin: 0; } } |
position | .badge { @include position(absolute, 0, $logical: yes); } |
remove | .a { @include remove(a, b, c); } |
reset-css | .a { @include reset-css; } |
resizable | .a { @include resizable(huge); } |
scissors | .a { @include scissors(5px 10px); } |
screen-agent | .a { @include screen-agent(var(--density)) { color: red; } } |
sizer | .a { @include sizer(huge); } |
smartphone | .a { @include smartphone(Nokia3310) { display: none; } } |
sprite | .icon { @include sprite("/img/sprite.txt"); } |
stretched-link | .card a { @include stretched-link(middle); } |
tablet | .a { @include tablet(Surface) { display: none; } } |
text-gradient | .a { @include text-gradient("top", (red, blue)); } |
text-image | .a { @include text-image(16 9); } |
text-selection | .a { @include text-selection(bogus) { background: yellow; } } |
text-shadow | .a { @include text-shadow(42); } |
text-stroke | .a { @include text-stroke(huge); } |
tokens | :root { @include tokens(#fff); } |
triangle | .caret { @include triangle(sideways); } |
after
content is emitted, so the pseudo-element does not render unless the block sets content. Pass "" for an empty one.aspect-ratio
height attribute, such as <img width="1600" height="900"> or an embed code's <iframe>, the attribute height wins and the ratio is ignored. Write height: auto after the include.before
content is emitted, so the pseudo-element does not render unless the block sets content. Pass "" for an empty one.breakpoint
(width: 768px), which is a single pixel, and the mixin prints a warning. Write only for that width, or min, max or a range for anything wider.@media block and win over it. Write them before the include.container-query
(width: 400px), which is a single pixel, and the mixin prints a warning. Write only for that width, or min, max or a range for anything wider.container
@container query that reads its own container, and nothing warns. Put the container-query on a descendant.counter
container-type: inline-size): containment scopes counters to each item.except
except(2n+1) becomes 3n and excludes every third element, not the odd ones. Use odd or even, or a coefficient alone such as 3n.loadify
init and every call must be in the same module, or the module with the call must @use the one that calls init. Otherwise Sass fails with "The target selector was not found".motion-safe
only
only(2n+1) becomes 3n and selects every third element, not the odd ones. Use odd or even, or a coefficient alone such as 3n.remove
(width: 768px), which is a single pixel, and the mixin prints a warning. Write only for that width, or min, max or a range for anything wider.display written after the include, in the same rule, is emitted after the @media block and wins over it. Write it before the include.| Signature | What it does |
|---|---|
adaptive($gutter: 30px) | Centred container whose max-width steps up at every breakpoint. |
after($content: null) | Styles the ::after pseudo-element. A data- argument becomes an attr() content value. |
all-buttons($pseudo: null) | Targets every button-like element at once, optionally in one pseudo-class state. |
all-text-inputs($pseudo: null) | Targets every text-like input at once, optionally in one pseudo-class state. |
antialias($value: null) | Turns on subpixel-antialiased text smoothing. |
aspect-ratio($ratio: null, $fit: cover) | Holds an element to a ratio and adds what CSS aspect-ratio alone leaves out: object-fit so an image is cropped rather than stretched, and border: 0 so an iframe does not overflow its container by 4px. Apply it to the element itself, not to a wrapper. |
background-dots($color: null, $size: 1em, $gutter: null, $diagonal: true, $image: null) | Repeating dot pattern as a background, optionally over an image. |
background-image($image-url: null, $filter-color: null, $filter-direction: null) | Background image with an optional colour or gradient filter laid over it. |
background-stripes($color: null, $thickness: 1em, $rotation: -45deg, $image: null) | Repeating stripe pattern as a background, optionally over an image. |
before($content: null) | Styles the ::before pseudo-element. A data- argument becomes an attr() content value. |
border-box($value: null) | Applies box-sizing: border-box. |
border-radius($args...) | Rounds corners, either all of them, one named corner, or all four individually. |
brand-logo($width, $height, $image-url: null) | Logo box with an image and an accessible stretched link over it. |
breakpoint($params...) | Media query built from the breakpoint map, or from raw lengths. |
breakpointer($selector: null) | Debug helper that prints the active breakpoint name into a pseudo-element. |
center($axis: "both") | Absolutely centres an element inside its positioned parent. |
circle($size) | Square element with a fully rounded border, i.e. a circle. |
clearfix | Clears floated children using an ::after pseudo-element. |
columnizer($params...) | Flexbox grid of equal columns, with an optional gutter and fill behaviour. |
container-query($params...) | A @container rule, taking the same argument shapes as breakpoint so the two read alike. Sizes may be a key from $map-for-breakpoints or a raw length, and a length is the common case because a container is usually narrower than the viewport. Nothing matches at all unless an ancestor was declared with the container mixin. |
container($name: null, $type: inline-size) | Marks an element as a query container, so container-query can ask about its width instead of the viewport's. The rule that asks has to sit on a descendant: an element is never matched by a @container rule reading its own container, and nothing warns you when it is not. |
counter($params...) | CSS counter for a list, with optional text before and after the number. |
ellipsis($width: 100%, $display: inline-block) | Truncates a single line of text with an ellipsis. |
escape-to-parent($selector: null) | Re-roots the current selector under another one using @at-root. |
except($params...) | Selects every sibling except the ones named. |
focus-ring($width: 2px, $offset: 2px, $color: currentColor) | Draws a keyboard focus ring with outline on :focus-visible, which survives forced-colors mode where a box-shadow ring disappears. |
font-face($font-family, $file-path, $font-style: normal, $font-weight: 400, $file-formats: eot woff2 woff ttf svg, $font-display: null) | Emits an @font-face rule for one family across several file formats. Must be called at the root. |
gradient($colors, $type: linear, $direction: null, $shape: null, $position: null, $from: null, $in: null, $repeating: false) | A linear, radial or conic gradient as background-image, plain or repeating, with an optional colour interpolation space. Replaced linear-gradient and radial-gradient in 3.0.0. |
hide($toggle: "hide") | Visually hides an element while keeping it available to screen readers, or reverses that. |
line-clamp($lines: 3) | Truncates text after a number of lines, where ellipsis truncates one. It emits five declarations rather than one because -webkit-line-clamp does nothing on its own: without display: -webkit-box or without -webkit-box-orient: vertical the text is not clamped at all and nothing warns you, and without overflow: hidden the clamped text spills out below the box. The unprefixed line-clamp is emitted too, for when it becomes Baseline. |
loadify($params...) | Fades elements in on page load. Call once at the root to set up, then on each element. Under prefers-reduced-motion: reduce the end state is applied directly and no animation runs. Switching the animation off alone would not do, because the element starts invisible and the animation is what reveals it, so the content would stay hidden for good. |
motion-safe | Wraps its content in @media (prefers-reduced-motion: no-preference), so motion is opt-in: a user who asked their system for less motion gets none of it. |
only($params...) | Selects only the siblings named. |
placeholder-shown | Styles an input while its placeholder is visible. |
placeholder | Styles the placeholder text of an input across vendor prefixes. |
position($position: absolute, $offsets: 0, $logical: false) | Sets position and offsets in one call, using shorthand order. |
remove($params...) | Hides an element outright, or within a media query: from a breakpoint up with min, up to it with max, or between two breakpoints. One breakpoint on its own hides the element at exactly that width, a single pixel, and prints a warning: pass only for that. |
reset-css | Meyer reset. Must be called at the root of the stylesheet. |
reset-figure | Removes default figure margins and makes the image inside responsive. |
resizable($direction: both, $overflow: auto) | Makes an element user-resizable. |
responsive-image | Makes an image fill its container width. |
scissors($corners) | Cuts the corners off an element with clip-path. |
screen-agent($resolution) | Media query targeting a screen pixel density. |
sizer($width, $height: $width) | Sets width and height together; one argument makes a square. |
smartphone($device, $orientation: null) | Media query targeting a known smartphone by device dimensions. |
sprite($params...) | Sets up an element as a sprite tile: an image, a background position, or both. |
stretched-link($value: "before") | Expands a link to cover its positioned parent, so the whole card is clickable. |
tablet($device, $orientation: null) | Media query targeting a known tablet by device dimensions. |
text-gradient($colors, $type: linear, $direction: null, $shape: null, $position: null, $from: null, $in: null, $repeating: false) | Fills the text with a gradient through background-clip: text. It takes the gradient mixin's arguments, colours first: a linear, radial or conic gradient, plain or repeating, with an optional colour space. |
text-image($image: null) | Fills the text with an image via background-clip. |
text-selection($value: null) | Styles the ::selection pseudo-element. |
text-shadow($params...) | Layered text shadows built from a direction, a colour and an offset. |
text-stroke($fallback-color: black, $color: transparent, $stroke-color: black, $stroke-width: 1px) | Outlines text using the webkit text-stroke properties. |
tokens($map, $prefix: null) | Writes a Sass map out as CSS custom properties, for any kind of token: colours, spacing, sizes, radii, type, shadows, durations. With the prefix space, (4: 1rem) becomes --space-4: 1rem. A null value is skipped, and a quoted string keeps its quotes. |
triangle($direction: "bottom", $color: black, $size: 10px 8px) | Draws a CSS triangle out of borders, pointing in a given direction. |
Called like normal Sass functions, with no @include. They are public API,
and camelCase is what tells them apart from the kebab-case mixins above.
| Signature | What it does |
|---|---|
clearUnit($value) | Strips the unit off a number, returning it unitless. |
clearWhitespace($string) | Removes every space from a string. |
convertToEm($value) | Converts a pixel length to em, against a 16px base. |
convertToNumber($value) | Parses a string of digits into a number. |
fillNulls($value, $seperation: comma, $skip: false) | Replaces null entries in a list with 0, or drops them. |
fluid($min, $max, $min-viewport: 320px, $max-viewport: 1280px) | A clamp() value that grows with the viewport between two widths, then stops. The preferred value keeps a rem term rather than being pure vw, because a vw-only value ignores browser text zoom and fails WCAG 1.4.4. It is a function rather than a mixin because the value is the hard part and belongs to any property, not only font-size. |
fontSizer($size, $time) | Multiplies a size by a factor. Handy for a modular scale. |
fontSource($font-family, $file-path, $file-formats) | Builds one src entry for an @font-face rule. |
gradientValue($colors, $type: linear, $direction: null, $shape: null, $position: null, $from: null, $in: null, $repeating: false) | The gradient mixin's gradient as a value, for layering it with an image in one background-image, or using it as a mask-image or border-image. It takes the same arguments and refuses the same input, but cannot write the fallback the mixin writes before a gradient with $in. |
isColor($value) | Returns the value if every item in it is a colour, and errors otherwise. |
isGutter($value) | True for anything that can sit where a CSS length is expected: a number, a calculation, or a CSS function such as var(). |
isNumber($value) | Returns the value if it is a number. |
isTime($value) | Returns the value if it is a time in s or ms, and errors otherwise. |
mapDeepGet($map, $keys...) | Reads a value out of a nested map by following a chain of keys. |
pixelify($value) | Returns the value with a px unit, adding one if it is missing. |
pseudoSelector($elements, $pseudo: null) | Appends a pseudo-class to every selector in a list. |
remify($value) | Converts a pixel length to rem, against a 16px root. |
shade($color, $percentage) | Mixes a colour towards black by a percentage. |
shorthandProperty($value) | Expands one to four values into the four-value CSS shorthand order. |
tint($color, $percentage) | Mixes a colour towards white by a percentage. |
validateBreakpoint($value) | Resolves a breakpoint name to its width, passing a length, a percentage or a CSS function through, and refusing a word that is not a key. |
validateLength($value) | Returns the value if it is a length or one of auto, inherit, initial, 0. Returns null quietly for null, so a caller can skip a value. |
validateRatio($ratio) | Turns an aspect ratio into a value for the CSS aspect-ratio property. |
validateScissors($value) | Normalises corner values for the scissors mixin, adding px where missing. |
Sass evaluates mixin bodies lazily, so a stylesheet that merely loads the library always compiles. Compile the file that actually calls the mixin:
sass --load-path=node_modules/gerillass/scss your.scssAn empty rule in the output means the mixin matched none of its branches — treat that as a bug, not as success.
© selfishprimate, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1,090 other files (assets) in the repository root of selfishprimate/gerillass.
Open the folder on GitHubat commit 65f6638
Gerillass 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 |
|---|---|---|---|---|---|---|
| Gerillass this skillselfishprimate/gerillass | 171 | — | ~5k | Automated safety check: Pass | Apache-2.0 | |
| Language Supportlive-codes/livecodes | 1.5k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Port Upstreamgjtorikian/tailwind_merge | 148 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Tailwindcss Developmentanonaddy/anonaddy | 4.9k | 10 repos | ~865 | Automated safety check: Pass | MIT | |
| UI StylingOhh-889/skyroc | 795 | 13 repos | ~2.5k | Automated safety check: Pass | MIT | |
| MCP Developmentcoollabsio/coolify | 63k | 1 repos | ~949 | Automated safety check: Pass | MIT |
live-codes/livecodes
Work with 90+ supported languages, compilers, CSS processors, and WASM-compiled languages for markup, style, and script editors.
gjtorikian/tailwind_merge
Check GitHub notifications for upstream dcastil/tailwind-merge pull requests and port merged ones into this Ruby gem (branch, translated code, tests, commit, PR).
anonaddy/anonaddy
Always invoke when the user's message includes 'tailwind' in any form.
Ohh-889/skyroc
Create beautiful, accessible user interfaces with shadcn/ui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs.
coollabsio/coolify
A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.
baptisteArno/typebot.io
Guides easing, timing and animation choices for UI motion, based on a web animation course, and reviews existing animations in a before-and-after table.
selfishprimate/gerillass
Sweep every mixin and function in Gerillass and report where it misbehaves — silent failures, unhelpful errors, questionable output, and gaps in test coverage.
selfishprimate/gerillass
Write a Gerillass commit message and a pull request title and description to the house standard.
selfishprimate/gerillass
Scaffold a new Gerillass mixin or utility function with the project's conventions, wire it into the folder index, describe it in meta/, and test it.
selfishprimate/gerillass
Cut and publish a Gerillass release — version bump, changelog, tag, GitHub release, npm publish, and post-publish verification.
selfishprimate/gerillass
Write or debug sass-true unit tests for Gerillass mixins and utility functions.
Works with
Categories
Use the Gerillass Sass mixin library — loading it, the mixin catalogue, and the argument forms that are easy to get wrong. Gerillass is an agent skill from selfishprimate/gerillass. Use the Gerillass Sass mixin library — loading it, the mixin catalogue, and the argument forms that are easy to get wrong.
Gerillass fits situations like: writing SCSS in a project that has gerillass installed; tasks that involve CSS and styling.
Run `npx skills add selfishprimate/gerillass --skill gerillass -a claude-code`. Or copy the skill folder (the selfishprimate/gerillass repository) into .claude/skills/gerillass in your project. Claude Code loads it when a task matches its description.
Run `npx skills add selfishprimate/gerillass --skill gerillass -a codex`. Or copy the skill folder (the selfishprimate/gerillass repository) into .agents/skills/gerillass 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 selfishprimate/gerillass --skill gerillass -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gerillass, .gemini/skills/gerillass, .github/skills/gerillass and .opencode/skills/gerillass in your project.
Going by SKILL.md and its folder, Gerillass needs a shell and JavaScript for the scripts in its folder. Our summary lists: Node.js; A Bash shell.
SKILL.md names 1 domain. As links in the text: docs.gerillass.com. 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.
Gerillass is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 5k tokens (SKILL.md is roughly 20k 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 Gerillass: Language Support (live-codes/livecodes, 1.5k stars), Port Upstream (gjtorikian/tailwind_merge, 148 stars), Tailwindcss Development (anonaddy/anonaddy, 4.9k stars) and UI Styling (Ohh-889/skyroc, 795 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
selfishprimate (a GitHub user) maintains it in selfishprimate/gerillass, which has 171 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on September 30, 2026.
Source: selfishprimate/gerillass on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.