crewrig
A layered AI assistant configuration with shared skill sandbox and built-in harness engineering loop.
Install / Use
npx skills add crewrig/crewrig --skill frontendInstalls into whichever agent you are using.
Gemini Rules
Gemini CLI config
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of crewrig
crewrig scores 69/100 on our quality scale, 3827th of 4,609 Development & Engineering skills we index.
Its Gemini Rules is 17 KB long, well organised into 43 sections with 18 code examples: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- The repository was last updated 7 days ago, so crewrig is actively maintained.
- Our last check on 2026-09-24 found the source still online.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 80/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
crewrig compared with similar skills
All 4 of these similar skills score higher than crewrig; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| crewrig (this skill)by crewrig | 69 | 0 | 7d ago | Gemini Rules |
| ai-job-searchby MadsLorentzen | 100 | 45.4k | 1d ago | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.8k | 9d ago | CLAUDE.md |
| algorithmic-artby anthropics | 100 | 177.9k | 17d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 133.6k | 6d ago | SKILL.md |
Frequently asked questions
- How do I install crewrig?
- Run
npx skills add crewrig/crewrig. The install tabs above show the steps for each supported agent. - Which AI agents does crewrig work with?
- It is written for Gemini CLI, as a Gemini Rules file. Other agents that read the same format can often use it too.
- Is crewrig safe to use?
- It declares no license and scores 80/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is crewrig still maintained?
- The repository was last updated 7 days ago, so crewrig is actively maintained.
Skill content
View source on GitHubname: frontend description: "Practitioner-grade reference knowledge for modern frontend development. Covers HTML semantics, CSS custom properties and design tokens, Tailwind CSS, WCAG 2.1 AA accessibility baseline, Core Web Vitals, asset optimization, and framework-agnostic JavaScript baseline. Activate when authoring or reviewing HTML, CSS, Tailwind configuration, accessibility audits, performance budgets, or any UI implementation concern that is not tied to a specific framework." license: Apache-2.0 compatibility: "No runtime prerequisites; this skill is documentation-only." metadata: provenance: canonical: "https://github.com/crewrig/crewrig" feedback: "https://github.com/crewrig/crewrig" version: "1.0.2"
Frontend
Practitioner reference for modern, framework-agnostic frontend work. Activate whenever the change touches HTML, CSS, design tokens, Tailwind configuration, accessibility, asset delivery, or vanilla JavaScript concerns that are not bound to a specific framework. Framework wiring (Astro, React, Vue, Svelte) belongs to its dedicated specialist — this skill stops at the platform boundary.
When to activate
- Writing or reviewing HTML markup, including semantic structure and forms.
- Authoring CSS, design tokens, or Tailwind configuration.
- Running an accessibility audit against WCAG 2.1 AA.
- Diagnosing Core Web Vitals regressions (LCP, CLS, INP).
- Optimizing fonts, images, or script loading.
- Writing framework-agnostic JavaScript: observers, fetch, ES modules.
HTML semantics
Semantics are the cheapest accessibility win and the foundation every
later layer depends on. Generic <div> soup forces you to bolt ARIA
back on; semantic elements come with the correct role, focus
behavior, and assistive-tech mapping for free.
Document outline
Each page has exactly one <h1> — typically the hero title. Heading
levels descend without gaps (h1 → h2 → h3). Screen readers expose a
heading tree; gaps and duplicate h1 tags break that navigation.
Landmark roles
Wrap the page in landmark elements rather than <div>s. Each landmark
appears in the AT rotor and gives keyboard users a skip target.
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header><nav aria-label="Primary">…</nav></header>
<main id="main">
<article>
<h1>Page title</h1>
<section aria-labelledby="features">
<h2 id="features">Features</h2>
</section>
</article>
<aside aria-label="Related">…</aside>
</main>
<footer>…</footer>
</body>
Semantic element checklist
<button>for in-page actions;<a href>for navigation.<nav>for navigation groups; label witharia-labelwhen more than one exists on the page.<main>once per page; everything outside lives in<header>,<aside>, or<footer>.<figure>+<figcaption>for images that need attribution or a caption.<time datetime="…">for machine-readable dates.<dl>/<dt>/<dd>for definition lists and key/value pairs.
Forms
- Every input has a
<label for>(or wraps the input). Placeholders are not labels. - Group related inputs in
<fieldset>with a<legend>. - Use the right
type(email,tel,url,number,date) — it drives mobile keyboards, validation, and assistive announcements. - Use
autocompletetokens (name,email,current-password,one-time-code) — password managers and AT depend on them. - Surface validation errors with
aria-invalid="true"andaria-describedbypointing to the error message.
CSS
Custom properties and design tokens
CSS custom properties are the runtime substrate for design tokens.
They cascade, can be themed at any DOM depth, and respond to media
queries — which :root-only Sass variables cannot.
:root {
--primitive-color-white: #ffffff;
--primitive-color-blue-400: #60a5fa;
--primitive-color-blue-500: #3b82f6;
--primitive-space-4: 1rem;
--color-accent: var(--primitive-color-blue-500);
--color-on-accent: var(--primitive-color-white);
--space-md: var(--primitive-space-4);
}
@media (prefers-color-scheme: dark) {
:root {
--color-accent: var(--primitive-color-blue-400);
--color-on-accent: var(--primitive-color-white);
}
}
Container queries
Container queries let a component respond to its container, not the viewport. Prefer them for reusable components that may live in sidebars, modals, or full-width layouts.
.card-host {
container-type: inline-size;
container-name: card;
}
@container card (min-width: 32rem) {
.card {
grid-template-columns: 1fr 2fr;
}
}
@layer
Cascade layers let you order origins explicitly and stop specificity arms races. Declare the order once at the top of the entry stylesheet.
@layer reset, tokens, base, components, utilities;
@layer components {
.button { /* … */ }
}
Tailwind's base, components, utilities map onto this model.
Logical properties
Use logical properties (margin-inline, padding-block,
border-inline-start, inset-inline-end) instead of physical
(left / right). They flip automatically under
direction: rtl and writing-mode: vertical-rl.
Fluid typography with clamp()
:root {
--font-size-h1: clamp(2rem, 1.5rem + 2.5vw, 3.5rem);
}
clamp(min, preferred, max) removes most named breakpoints for
typography. Pair the preferred value with a viewport-relative term so
it scales between the bounds.
Dark mode
Prefer prefers-color-scheme and token swaps over .dark class
toggling unless the product needs an explicit user override.
@media (prefers-color-scheme: dark) {
:root {
--color-surface: #0b0f17;
--color-text: #e6edf3;
}
}
When a manual override is required, gate the swap on a
data-theme="dark" attribute on <html> and persist the choice in
localStorage.
Design systems
Token taxonomy
Three layers, in this order:
- Primitive — raw values, no meaning. Prefix with
--primitive-color-*,--primitive-space-*,--primitive-font-*. Never reference primitives directly from components. - Semantic — intent-bound aliases of primitives.
--color-accent,--color-surface,--space-md,--radius-card. Components consume only this layer. - Component — local tokens scoped to a component.
--button-bg,--button-padding-inline. Defined inside the component scope, defaulted from semantic tokens.
.button {
--button-bg: var(--color-accent);
--button-fg: var(--color-on-accent);
background: var(--button-bg);
color: var(--button-fg);
}
.button[data-variant="ghost"] {
--button-bg: transparent;
--button-fg: var(--color-accent);
}
This taxonomy is what makes a design system theme-able. Swap primitives to rebrand; swap semantics to retheme; swap component tokens to vary a single component.
Tailwind CSS
Configuration extension
Tailwind's defaults are the floor, not the ceiling. Extend with
theme.extend so you keep the defaults and add tokens; replace
theme.colors only when you have a complete palette.
// tailwind.config.js
export default {
content: ['./src/**/*.{html,js,ts,astro,jsx,tsx}'],
theme: {
extend: {
colors: {
accent: {
DEFAULT: 'var(--color-accent)',
fg: 'var(--color-on-accent)',
},
},
spacing: {
gutter: 'var(--space-md)',
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
},
},
},
};
Reference CSS custom properties from the config — that keeps Tailwind utilities theme-aware without rebuilding.
@apply vs utility-first
Default to utility-first in markup. Reach for @apply only when:
- The same utility cluster repeats in three or more places and the
cluster names a real concept (
.button,.card). - A third-party component (CMS, email) cannot accept utilities.
- You need a selector that utilities cannot express
(
:has,:nth-child, complex@container).
@apply chains longer than ~8 utilities are a smell — extract a
component layer rule instead.
JIT and content scanning
Tailwind v3+ runs JIT by default; the only knob that matters is
content. Misconfigured globs are the number-one cause of "my class
does not apply" reports.
- Include every file extension where class names can appear.
- Avoid dynamic class concatenation (
bg-${color}) — JIT cannot see it. Use a safelist or a lookup map of full class names.
Plugin authoring
Plugins are the right tool when you need utilities the core does not ship (focus-visible variants, custom typography, design-system shortcuts). Stay framework-agnostic — emit CSS, not JavaScript.
import plugin from 'tailwindcss/plugin';
export default plugin(({ addUtilities, theme }) => {
addUtilities({
'.text-balance': { 'text-wrap': 'balance' },
'.focus-ring': {
'outline': '2px solid transparent',
'outline-offset': '2px',
'&:focus-visible': {
'outline-color': theme('colors.accent.DEFAULT'),
},
},
});
});
Accessibility — WCAG 2.1 AA
WCAG 2.1 AA is the legal baseline in most jurisdictions and the practical baseline everywhere else. Treat it as a floor, not a goal.
Focus management
- Every interactive element has a visible
:focus-visiblestyle. Remove the default outline only if you replace it with something at least as legible. - Focus order follows the visual order.
tabindex="0"makes a non-interactive element focusable; never use positivetabindexvalues. - After a route change or modal open, move focus to the new context (the modal title, the page heading).
Skip links
Provide a skip link as the first focusable element. Style it visible on focus so it is discoverable.
.skip-link {
position: absolute;
inset-block-start: -100px;
inset-inline-start: 0;
}
.skip-link:focus-visible {
inset-block-start: 0;
}
aria-* attributes
The first rule of ARIA is: do not use ARIA. Pick the right semantic element first; reach for ARIA only when no element fits.
aria-label/aria-labelledby— accessible name when the visible text is missing or ambiguous (icon-only buttons).aria-describedby— supplementary description (form hints, error messages).aria-expanded/aria-controls— disclosure widgets and menus.aria-current="page"— the active item in a navigation list.aria-live="polite"— status updates, toast regions.
Never set role="button" on a <div> when <button> would do.
Color contrast ratios
| Content | Minimum | |------------------------------------------------------------|---------| | Normal text (under 18 pt, or under 14 pt bold) | 4.5 : 1 | | Large text (18 pt+, or 14 pt+ bold) | 3 : 1 | | Non-text UI: icons, focus rings, form borders, separators | 3 : 1 | | Decorative / disabled UI | Exempt |
Verify with a contrast checker against the actual background, not the nominal one — gradients and translucent layers shift the result.
Touch targets
Interactive controls have a minimum hit area of 44×44 CSS pixels (WCAG 2.5.5 AAA, but practical baseline). When the visible target is smaller, expand the hit area with padding or a transparent pseudo- element — do not scale the visible glyph.
Core Web Vitals
Targets
| Metric | Good | Needs improvement | Poor | |-------------------------------------|----------|-------------------|----------| | LCP — Largest Contentful Paint | ≤ 2.5 s | ≤ 4.0 s | > 4.0 s | | CLS — Cumulative Layout Shift | ≤ 0.1 | ≤ 0.25 | > 0.25 | | INP — Interaction to Next Paint | ≤ 200 ms | ≤ 500 ms | > 500 ms |
INP replaced FID as a Core Web Vital in March 2024. It measu
Truncated for display — read the full file on GitHub.
Related Skills
ai-job-search
45.4kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.8kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
design
133.6kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
