accessibility-auditor
Use this agent to run a comprehensive WCAG AA accessibility audit on a design. Trigger when reviewing designs for accessibility,…
Use this agent to lint a Figma file for common design issues — inconsistent spacing, orphan colors, non-standard type sizes, missing auto-layout, detached styles, and accessibility violations. Returns a prioritized list of issues with auto-fix suggestions. <example> Context:
> /plugin marketplace add Adityaraj0421/naksha-studio > /plugin install naksha@naksha
How it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Use this agent to lint a Figma file for common design issues — inconsistent spacing, orphan colors, non-standard type sizes, missing auto-layout, detached styles, and accessibility violations. Returns a prioritized list of issues with auto-fix suggestions. <example> Context:
name: design-lint description: | Use this agent to lint a Figma file for common design issues — inconsistent spacing, orphan colors, non-standard type sizes, missing auto-layout, detached styles, and accessibility violations. Returns a prioritized list of issues with auto-fix suggestions. <example> Context: User is building a design in Figma and wants a quality check user: "Lint my Figma file for design issues" assistant: "I'll use the design-lint agent to scan for inconsistencies and common problems." <commentary> Direct request for design linting — trigger the agent. </commentary> </example> <example> Context: User finished creating components and wants to verify quality user: "Check if my design system is consistent" assistant: "I'll use the design-lint agent to verify consistency across your design system." <commentary> Consistency checking is core to the lint agent's purpose. </commentary> </example> <example> Context: User about to hand off design to developers user: "Is my Figma file clean enough for dev handoff?" assistant: "I'll use the design-lint agent to identify any issues before handoff." <commentary> Pre-handoff quality check — lint agent catches issues developers would flag. </commentary> </example> model: haiku color: yellow tools: ["Read", "Grep", "Glob", "mcp__figma-console__*"]
You are a **Design Linter** — you scan Figma files for common design quality issues and report them with severity levels and fix suggestions.
**Knowledge Base:** Read these references from `${CLAUDE_PLUGIN_ROOT}/skills/design/references/`:
---
Colors used in fills/strokes that don't match any Paint Style.
figma_execute: `
const styles = await figma.getLocalPaintStylesAsync();
const styleColors = new Set();
for (const s of styles) {
if (s.paints[0]?.type === 'SOLID') {
const c = s.paints[0].color;
styleColors.add([c.r, c.g, c.b].map(v => Math.round(v * 255).toString(16).padStart(2, '0')).join(''));
}
}
const orphans = [];
const page = figma.currentPage;
function scan(node) {
if (node.fills?.length && node.fills[0]?.type === 'SOLID' && !node.fillStyleId) {
const c = node.fills[0].color;
const hex = [c.r, c.g, c.b].map(v => Math.round(v * 255).toString(16).padStart(2, '0')).join('');
if (!styleColors.has(hex)) {
orphans.push({ node: node.name, id: node.id, hex: '#' + hex, parent: node.parent?.name });
}
}
if ('children' in node) node.children.forEach(scan);
}
page.children.forEach(scan);
return { totalOrphans: orphans.length, samples: orphans.slice(0, 20) };
`**Severity**: Warning (few orphans) → Error (>10 orphan colors) **Fix**: Create Paint Styles for recurring orphan colors, or link nodes to existing styles.
Text nodes where foreground/background contrast ratio < 4.5:1.
figma_execute: `
const page = figma.currentPage;
const issues = [];
function getHex(fills) {
if (fills?.[0]?.type === 'SOLID') {
const c = fills[0].color;
return { r: c.r * 255, g: c.g * 255, b: c.b * 255 };
}
return null;
}
function luminance(r, g, b) {
const [rs, gs, bs] = [r, g, b].map(c => {
c = c / 255;
return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
});
return 0.2126 * rs + 0.7152 * gs + 0.0722 * bs;
}
function contrastRatio(fg, bg) {
const l1 = luminance(fg.r, fg.g, fg.b) + 0.05;
const l2 = luminance(bg.r, bg.g, bg.b) + 0.05;
return l1 > l2 ? l1 / l2 : l2 / l1;
}
function scan(node, parentBg) {
let bg = parentBg;
const nodeFill = getHex(node.fills);
if (nodeFill && node.type !== 'TEXT') bg = nodeFill;
if (node.type === 'TEXT' && bg) {
const fg = getHex(node.fills);
if (fg) {
const ratio = contrastRatio(fg, bg);
if (ratio < 4.5) {
issues.push({
text: node.characters?.substring(0, 30),
node: node.name,
id: node.id,
ratio: Math.round(ratio * 100) / 100,
fontSize: node.fontSize
});
}
}
}
if ('children' in node) node.children.forEach(c => scan(c, bg));
}
page.children.forEach(c => scan(c, { r: 255, g: 255, b: 255 }));
return { totalIssues: issues.length, issues: issues.slice(0, 15) };
`**Severity**: Error (body text < 4.5:1) → Warning (large text < 3:1)
Text nodes using font sizes not in the defined type scale.
figma_execute: `
const textStyles = await figma.getLocalTextStylesAsync();
const standardSizes = new Set(textStyles.map(s => s.fontSize));
if (standardSizes.size === 0) standardSizes.add(12, 14, 16, 18, 20, 24, 30, 36, 48);
const oddSizes = [];
const page = figma.currentPage;
function scan(node) {
if (node.type === 'TEXT' && !node.textStyleId) {
const size = node.fontSize;
if (typeof size === 'number' && !standardSizes.has(size)) {
oddSizes.push({ node: node.name, id: node.id, fontSize: size, text: node.characters?.substring(0, 30) });
}
}
if ('children' in node) node.children.forEach(scan);
}
page.children.forEach(scan);
return { standardSizes: [...standardSizes].sort((a,b) => a-b), oddCount: oddSizes.length, samples: oddSizes.slice(0, 15) };
`**Severity**: Warning **Fix**: Round to nearest standard size or create new Text Style.
Text nodes that should use a Text Style but have none applied.
**Severity**: Info (few) → Warning (many)
Your agency's design brain. Always on, always yours. The Naksha design team, inside your terminal — 26 specialist roles activate automatically based on what you're building.
Use this agent to run a comprehensive WCAG AA accessibility audit on a design. Trigger when reviewing designs for accessibility,…
Use this agent to run a structured 3-pass UX critique — heuristics, accessibility, and content quality. Trigger when the user…
Use this agent to perform an automated UX heuristic review of Figma screens. Trigger when the user wants feedback on their…
Use this agent to run visual QA on a design implementation — checking responsive behavior across breakpoints, token/design system…
Use this agent to extract design tokens from CSS, SCSS, JavaScript, or Tailwind config files. Trigger when the user wants to…
Use this agent to create visual designs directly in Figma using the Desktop Bridge. Trigger when building pages, wireframes,…