/drift-detection
Identify where a design system has diverged from its original intent across the whole system — components implemented differently to spec, tokens overridden locally, patterns forked across teams. This is a system-wide sweep for divergence patterns, NOT a single-component spec
$ npx -y skills add murphytrueman/design-system-ops --skill drift-detection --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/drift-detection
Context preview
The summary Claude sees to decide when to auto-load this skill.
Identify where a design system has diverged from its original intent across the whole system — components implemented differently to spec, tokens overridden locally, patterns forked across teams. This is a system-wide sweep for divergence patterns, NOT a single-component spec
SKILL.md
drift-detection.SKILL.mdname: drift-detection
description: "Identify where a design system has diverged from its original intent across the whole system — components implemented differently to spec, tokens overridden locally, patterns forked across teams. This is a system-wide sweep for divergence patterns, NOT a single-component spec comparison. Trigger when someone says: find drift, where has the system diverged, design code inconsistency, what's out of sync, where are teams going off-system, component drift, or anything about identifying gaps between design system intent and actual implementation. Do NOT trigger for checking one specific component against its design spec — use design-to-code-check for that."
references:
- ../../knowledge-notes/token-architecture.md
- ../../knowledge-notes/design-to-code-contract.md
- ../../knowledge-notes/output-discipline.md
Drift detection
A skill for identifying and classifying drift in a design system — the accumulated distance between design system intent and actual implementation across consuming products. Produces a drift report with severity ratings, origin classification, and recommended response for each finding.
Context
Drift is the normal condition of a used design system. The question is not whether your system has drifted — it has — but whether the drift is intentional, how severe it is, and whether it is compounding.
Not all drift is bad. A product team that made a deliberate, documented exception to an established pattern is making a design decision. A product team that unknowingly re-implemented a design system component with slightly different spacing is creating maintenance debt. The distinction matters, because the response is different: intentional drift might become a contribution, while accidental drift needs to be corrected and its root cause addressed.
This skill distinguishes between drift types and routes each finding to the appropriate response.
---
Configuration
Before producing output, check for a `.ds-ops-config.yml` file in the project root. If present, load:
- `severity.*` — overrides for drift finding severity ratings
- `system.styling` — pre-selects token drift detection approach (CSS vars, SCSS, Tailwind, CSS-in-JS)
- `integrations.*` — enables auto-pull for drift comparison data (see below)
- `recurring.*` — enables comparison with previous drift report
Auto-pull integrations
If integrations are configured in `.ds-ops-config.yml`, pull data automatically:
**Figma MCP** (`integrations.figma.enabled: true`):
- Read component specifications from the published library at `integrations.figma.file_key`
- Use as the design-side reference for visual and API drift detection
- Compare Figma component properties against code component props to detect API drift without manual specification
**GitHub** (`integrations.github.enabled: true`):
- Search `integrations.github.repo` for code patterns that indicate drift:
- Hardcoded colour values outside the design system package
- Local component re-implementations (component names used outside the system's source)
- Token overrides using CSS `!important` on design token properties
- Pull recent PRs to identify components changed outside the design system package
- Use commit history on component files to detect version lag
**Chromatic** (`integrations.chromatic.enabled: true`):
- Pull visual diff data — components with accepted visual changes outside a DS release cycle are potential visual drift
- High rates of accepted changes may indicate the team is accepting drift rather than correcting it
If an integration fails, log it and proceed with manual input.
Recurring workflow
If `recurring` is configured in `.ds-ops-config.yml`:
1. **Load the previous drift report** from `recurring.output_directory`. 2. **Compare against current findings:**
- New drift instances since last run
- Resolved drift instances (corrected since last run)
- Persistent drift (present for 2+ cycles — escalate severity)
- Classification shift (e.g. accidental drift that became intentional divergence)
3. **Add a "Drift trend" section** to the report:
- Total drift count: increasing / stable / decreasing
- Drift velocity: how fast is new drift accumulating vs. being resolved?
- Classification trend: is the mix shifting toward more system gaps (E) or more accidental drift (C)?
4. **Save output** and prune per `recurring.retain_count`.
Step 1: Define the scope
Ask for or confirm (skip questions already answered by auto-pull):
- What is being assessed? (Specific product, specific component set, specific token scope, or full system)
- What sources are available for comparison? (Figma files, codebase, documentation, Storybook, token files in any format — JSON, CSS custom properties, SCSS variables, Tailwind config)
- Are there specific areas where drift is already suspected?
- Is there any known intentional divergence that should be documented rather than flagged as a problem?
The more specific the scope, the more actionable the report. A drift detection across "the whole system" surfaces patterns but produces a long list of findings with limited prioritisation signal. Scoping to a specific product or a specific component category produces a more actionable output.
**Small-system note (fewer than 5 components):** For systems this size, scope to the full system — there is no need to sample. Drift patterns are different in small systems: teams are typically smaller and more aligned, so drift is less likely to be accidental and more likely to be intentional divergence (Classification A) or a system gap (Classification E). Simplify the output to a per-component checklist rather than a full drift report. If all components show no drift, state that as the finding and recommend a review cadence.
Step 2: Establish the reference point
Drift is always relative to something. Confirm the source of truth being used as the reference:
- The design system's Figma library
- Th
Read more
name: drift-detection description: "Identify where a design system has diverged from its original intent across the whole system — components implemented differently to spec, tokens overridden locally, patterns forked across teams. This is a system-wide sweep for divergence patterns, NOT a single-component spec comparison. Trigger when someone says: find drift, where has the system diverged, design code inconsistency, what's out of sync, where are teams going off-system, component drift, or anything about identifying gaps between design system intent and actual implementation. Do NOT trigger for checking one specific component against its design spec — use design-to-code-check for that." references: - ../../knowledge-notes/token-architecture.md - ../../knowledge-notes/design-to-code-contract.md - ../../knowledge-notes/output-discipline.md
Drift detection
A skill for identifying and classifying drift in a design system — the accumulated distance between design system intent and actual implementation across consuming products. Produces a drift report with severity ratings, origin classification, and recommended response for each finding.
Context
Drift is the normal condition of a used design system. The question is not whether your system has drifted — it has — but whether the drift is intentional, how severe it is, and whether it is compounding.
Not all drift is bad. A product team that made a deliberate, documented exception to an established pattern is making a design decision. A product team that unknowingly re-implemented a design system component with slightly different spacing is creating maintenance debt. The distinction matters, because the response is different: intentional drift might become a contribution, while accidental drift needs to be corrected and its root cause addressed.
This skill distinguishes between drift types and routes each finding to the appropriate response.
---
Configuration
Before producing output, check for a `.ds-ops-config.yml` file in the project root. If present, load:
- `severity.*` — overrides for drift finding severity ratings
- `system.styling` — pre-selects token drift detection approach (CSS vars, SCSS, Tailwind, CSS-in-JS)
- `integrations.*` — enables auto-pull for drift comparison data (see below)
- `recurring.*` — enables comparison with previous drift report
Auto-pull integrations
If integrations are configured in `.ds-ops-config.yml`, pull data automatically:
**Figma MCP** (`integrations.figma.enabled: true`):
- Read component specifications from the published library at `integrations.figma.file_key`
- Use as the design-side reference for visual and API drift detection
- Compare Figma component properties against code component props to detect API drift without manual specification
**GitHub** (`integrations.github.enabled: true`):
- Search `integrations.github.repo` for code patterns that indicate drift:
- Hardcoded colour values outside the design system package
- Local component re-implementations (component names used outside the system's source)
- Token overrides using CSS `!important` on design token properties
- Pull recent PRs to identify components changed outside the design system package
- Use commit history on component files to detect version lag
**Chromatic** (`integrations.chromatic.enabled: true`):
- Pull visual diff data — components with accepted visual changes outside a DS release cycle are potential visual drift
- High rates of accepted changes may indicate the team is accepting drift rather than correcting it
If an integration fails, log it and proceed with manual input.
Recurring workflow
If `recurring` is configured in `.ds-ops-config.yml`:
1. **Load the previous drift report** from `recurring.output_directory`. 2. **Compare against current findings:**
- New drift instances since last run
- Resolved drift instances (corrected since last run)
- Persistent drift (present for 2+ cycles — escalate severity)
- Classification shift (e.g. accidental drift that became intentional divergence)
3. **Add a "Drift trend" section** to the report:
- Total drift count: increasing / stable / decreasing
- Drift velocity: how fast is new drift accumulating vs. being resolved?
- Classification trend: is the mix shifting toward more system gaps (E) or more accidental drift (C)?
4. **Save output** and prune per `recurring.retain_count`.
Step 1: Define the scope
Ask for or confirm (skip questions already answered by auto-pull):
- What is being assessed? (Specific product, specific component set, specific token scope, or full system)
- What sources are available for comparison? (Figma files, codebase, documentation, Storybook, token files in any format — JSON, CSS custom properties, SCSS variables, Tailwind config)
- Are there specific areas where drift is already suspected?
- Is there any known intentional divergence that should be documented rather than flagged as a problem?
The more specific the scope, the more actionable the report. A drift detection across "the whole system" surfaces patterns but produces a long list of findings with limited prioritisation signal. Scoping to a specific product or a specific component category produces a more actionable output.
**Small-system note (fewer than 5 components):** For systems this size, scope to the full system — there is no need to sample. Drift patterns are different in small systems: teams are typically smaller and more aligned, so drift is less likely to be accidental and more likely to be intentional divergence (Classification A) or a system gap (Classification E). Simplify the output to a per-component checklist rather than a full drift report. If all components show no drift, state that as the finding and recommend a review cadence.
Step 2: Establish the reference point
Drift is always relative to something. Confirm the source of truth being used as the reference:
- The design system's Figma library
- Th
Showing the first part of this file.
Claude Code skills for the work that keeps a design system alive.
Repo: murphytrueman/design-system-ops
Other skills on design-system-ops.
- /accessibility-per-component
Run an accessibility audit on a specific design system component. Trigger when someone says: accessibility check, a11y audit, WCAG compliance, is this accessible, check accessibility, does this meet WCAG, screen reader support, keyboard navigation check, or anything about
Open skill - /adoption-report
Produce a design system adoption report separating coverage from actual adoption, with trend direction and risk flags. Trigger when someone says: adoption report, how much is the system being used, usage metrics, adoption status, coverage report, which teams are using the
Open skill - /ai-component-description
Generate AI-optimised text descriptions for components, formatted for Figma's MCP server and LLM consumption. This produces prose descriptions in a six-section format (purpose, props, anti-patterns, composition, accessibility, examples), NOT JSON schemas or structured data
Open skill - /backlog-generator
Transform audit findings into sprint-ready work items with effort estimates, acceptance criteria, and stakeholder-friendly rationale. This converts existing findings into tickets, NOT the process for contributing new components to the system. Trigger when someone says: generate
Open skill - /change-communication
Produce a communication package for a design system change — release notes, migration guide, and team announcement. This produces communication artefacts for changes that have already been decided, NOT the deprecation lifecycle itself. Trigger when someone says: communicate this
Open skill - /cicd-integration
Generate CI/CD pipeline configurations that automate design system quality checks — token validation, component linting, visual regression, accessibility scanning, and release gating. Produces ready-to-use pipeline files for GitHub Actions, GitLab CI, CircleCI, or Bitbucket
Open skill

