Back to skill

Security audit

UI Craft Pro

Security checks for vulnerabilities and agentic risk

Overview

This is mostly a coherent UI design helper, but its optional save feature can overwrite Markdown files outside its intended folder if given crafted names or paths.

Review this before installing if you may use `--persist`. Use only simple trusted project/page names and trusted output directories, and prefer patching the generator to validate slugs, enforce containment under `design-system/`, and avoid silent overwrites. The search-only workflow is much lower risk.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/design_system.py:504
Finding

Unsanitized Persistence Paths Permit Writes Outside the Intended Output Directory

Content
View full analysis

Vulnerability Details

File Location: scripts/design_system.py, lines 504–531
Vulnerability Type: Path traversal and unrestricted file overwrite
Risk Level: Medium

Vulnerable Code

python
base_dir = Path(output_dir) if output_dir else Path.cwd()

# Use project name for project-specific folder
project_name = design_system.get("project_name", "default")
project_slug = project_name.lower().replace(' ', '-')

design_system_dir = base_dir / "design-system" / project_slug
pages_dir = design_system_dir / "pages"

created_files = []

# Create directories
design_system_dir.mkdir(parents=True, exist_ok=True)
pages_dir.mkdir(parents=True, exist_ok=True)

master_file = design_system_dir / "MASTER.md"

# Generate and write MASTER.md
master_content = format_master_md(design_system)
with open(master_file, 'w', encoding='utf-8') as f:
    f.write(master_content)
created_files.append(str(master_file))

# If page is specified, create page override file with intelligent content
if page:
    page_file = pages_dir / f"{page.lower().replace(' ', '-')}.md"
    page_content = format_page_override_md(design_system, page, page_query)
    with open(page_file, 'w', encoding='utf-8') as f:
        f.write(page_content)
    created_files.append(str(page_file))

Technical Analysis

The persistence implementation derives filesystem paths from the CLI-controlled project name and page name. Its only normalization is replacing spaces with hyphens. It does not reject:

  • Absolute paths
  • .. traversal components
  • / or platform-specific path separators
  • Symlink-based escapes
  • Existing destination files

Python path composition does not provide automatic containment. In particular, joining a Path with an absolute user-controlled component discards the preceding path components. Relative traversal components can likewise escape the intended directory after filesystem resolut ...[truncated 2316 chars]

Remediation
View remediation

Remediation Suggestions

  1. Apply strict slug validation

    • Permit only a conservative character set such as lowercase ASCII letters, digits, hyphens, and underscores.
    • Reject empty names, . and .., path separators, drive prefixes, and absolute paths.
    • Prefer generating the slug rather than attempting to clean a path-like input.
  2. Enforce resolved-path containment

    • Resolve the approved output root.
    • Resolve each candidate destination.
    • Verify that every destination is beneath the approved root using Path.relative_to() or an equivalent containment check.
    • Perform containment checks for both project and page output paths.
  3. Address symlink traversal

    • Reject symlinked destination directories where appropriate.
    • Recheck containment immediately before writing.
    • For stronger guarantees, use directory-relative, no-follow filesystem operations supported by the platform.
  4. Prevent silent destructive overwrites

    • Use exclusive creation mode ('x') by default.
    • Require an explicit --force option before replacing existing files.
    • If replacement is intended, write to a temporary file in the validated destination directory and atomically replace the target.
  5. Validate --output-dir separately

    • Treat it as an explicitly authorized root, not as validation for descendant paths.
    • Optionally require the directory to exist and be selected by the caller rather than creating arbitrary parent trees.

A suitable containment pattern is:

python
import re
from pathlib import Path

def safe_slug(value: str) -> str:
    slug = value.strip().lower().replace(" ", "-")
    if not re.fullmatch(r"[a-z0-9_-]+", slug):
        raise ValueError("Name contains unsupported path characters")
    return slug

base_dir = (Path(output_dir) if output_dir else Path.cwd()).resolve()
output_root = (base_dir / "design-system").resolve()

project_slug
...[truncated 381 chars]
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
Findings (32)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill is presented as a UI design and implementation assistant, but the referenced behavior includes dataset synchronization, cleanup, taxonomy rewriting, and automated CSV generation on local files. This mismatch is dangerous because users and orchestrators may invoke the skill expecting advisory/design behavior while it performs hidden state-changing operations on the filesystem, enabling unintended data corruption, tampering, or misuse of local project assets.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · data/products.csv (reported line 112)May include surrounding context.

text
108,Parenting & Baby Tracker,"baby, parenting, child, feeding, sleep, diaper, milestone, family, newborn",Claymorphism + Soft UI Evolution,"Vibrant & Block-based, Accessible & Ethical",Social Proof-Focused + Trust,User Behavior Analytics,Soft pastels (baby pink/sky blue/mint/peach) + warm accents,Feed/sleep/diaper quick-log buttons. Growth percentile chart. Milestone timeline with photos. Multiple child profiles. Partner invite + shared access. Pediatric reference. One-handed operation.
109,Scanner & Document Manager,"scanner, document, ocr, pdf, scan, camera, file, archive, digitize",Minimalism + Flat Design,"Dark Mode (OLED), Accessible & Ethical",Feature-Rich Showcase + Demo,N/A - Tool focused,Clean white + camera viewfinder accent + file-type color coding,Camera capture with auto-edge detection. Crop/rotate/enhance. OCR text extraction overlay. PDF multi-page creation. Folder tree organization. Cloud sync. Share/export. Batch scan mode.
110,Calendar & Scheduling App,"calendar, scheduling, planner, agenda, events, reminder, appointment, organize, date, sync",Flat Design + Micro-interactions,"Minimalism, Soft UI Evolution",Feature-Rich Showcase + Demo,N/A - Calendar focused,Clean blue + event category accent colors + success green,Event color coding. Week/month/day views. Recurring events. Conflict detection. Multi-calendar sync.
111,Password Manager,"password, security, vault, credentials, login, secure, encrypt, keychain, 2fa, biometric",Minimalism + Accessible & Ethical,"Dark Mode (OLED), Trust & Authority",Trust & Authority + Feature-Rich,N/A - Vault focused,Trust blue + security green + dark neutral,Security-first. Zero-knowledge architecture. Biometric unlock. Breach alert dashboard. Password generator.
112,Expense Splitter / Bill Split,"split, expense, bill, aa, share, friends, group, settle, debt, payment, owe",Flat Design + Vibrant & Block-based,"Minimalism, Micro-interactions",Minimal & Direct + Demo,N/A - Balance focused,Success green + alert red + neut
...[truncated 25 chars]

Unvalidated Output Injection

High
Category
Output Handling
Confidence
65% confidence
Finding

Model output is used without validation or sanitization. Unvalidated output injected into downstream contexts (SQL, shell, HTML) enables injection attacks and arbitrary code execution.

Content

Scanner excerpt · data/react-performance.csv (reported line 29)May include surrounding context.

text
25,Rendering,SVG Animation Wrapper,svg animation wrapper div,React/Next.js,Wrap SVG in div and animate wrapper for hardware acceleration,Animate div wrapper around SVG,Animate SVG element directly,"<div class='animate-spin'><svg>...</svg></div>","<svg class='animate-spin'>...</svg>",Low
26,Rendering,Content Visibility,content-visibility auto,React/Next.js,Apply content-visibility: auto to defer off-screen rendering,Use content-visibility for long lists,Render all list items immediately,".item { content-visibility: auto; contain-intrinsic-size: 0 80px }","Render 1000 items without optimization",High
27,Rendering,Hoist Static JSX,hoist static jsx element,React/Next.js,Extract static JSX outside components to avoid re-creation,Hoist static elements to module scope,Create static elements inside components,"const skeleton = <div class='animate-pulse' />; function C() { return skeleton }","function C() { return <div class='animate-pulse' /> }",Low
28,Rendering,Hydration No Flicker,hydration mismatch flicker,React/Next.js,Use inline script to set client-only data before hydration,Inject sync script for client-only values,Use useEffect causing flash,"<script dangerouslySetInnerHTML={{ __html: 'el.className = localStorage.theme' }} />","useEffect(() => setTheme(localStorage.theme), []) // flickers",Medium
29,Rendering,Conditional Render,conditional render ternary,React/Next.js,Use ternary instead of && when condition can be 0 or NaN,Use explicit ternary for conditionals,Use && with potentially falsy numbers,"{count > 0 ? <Badge>{count}</Badge> : null}","{count && <Badge>{count}</Badge>} // renders '0'",Low
30,Rendering,Activity Component,activity show hide preserve,React/Next.js,Use Activity component to preserve state/DOM for toggled components,Use Activity for expensive toggle components,Unmount/remount on visibility toggle,"<Activity mode={isOpen ? 'visible' : 'hidden'}><Menu /></Activity>","{isOpen && <Menu />} // loses state",Medium
31,JS Perf,Batch DOM CSS,batch dom cs
...[truncated 25 chars]

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · data/style-signatures.csv (reported line 7)May include surrounding context.

text
Stripe-like,"Stripe marketing","B2B SaaS marketing, platform pages, launches","Premium, technical, fluid, polished","Controlled gradients plus trustworthy neutrals","Editorial headlines with polished product copy","Airy top sections, strong section pivots","Clean surfaces plus selective gradient drama","Narrative sections, product frames, proof blocks","Smooth reveal, gradient motion, premium transitions","Section sequencing, product storytelling, gradient restraint","Overusing aurora gradients everywhere","stripe-like premium marketing gradients fintech saas"
Linear-like,"Linear app UI","Productivity apps, command-heavy tools, issue trackers","Focused, sharp, compact, low-noise","Dark neutrals with disciplined accent color","Dense modern sans, compact headings, clean metadata","Compact spacing with deliberate breathing points","Thin borders, dark surfaces, subtle translucency","Command bars, lists, chips, sharp modals","Fast and nearly invisible","Density, shell clarity, command-surface feel","Making everything too tiny and low-contrast","linear-like productivity compact dark sharp command"
Notion-like,"Notion product UI","Knowledge tools, editors, docs, internal tools","Quiet, editorial, flexible, approachable","Soft neutrals, very low chroma accents","Readable editorial sans/serif support, strong content hierarchy","Relaxed content spacing, modular blocks","Almost flat surfaces, content-first framing","Blocks, slash menus, lightweight chrome","Minimal, content-preserving motion","Content-first composition, low chrome, flexible blocks","Turning quiet into bland and structureless","notion-like editorial quiet content workspace docs"
Shopify-like,"Polaris, Shopify surfaces","Commerce admin, merchant ops, onboarding","Friendly operational, productive, practical","Safe semantic palette with clear state roles","Readable sans, action-first labels, support text clarity","Dense but breathable workflow spacing","Soft surfaces, clear cards, trustworthy forms","Tables, filte
...[truncated 26 chars]

Instruction Override

High
Category
Prompt Injection
Confidence
90% confidence
Finding

This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.

Content

Scanner excerpt · data/ux-guidelines.csv (reported line 25)May include surrounding context.

text
21,Layout,Container Width,Web,Content too wide is hard to read,Limit max-width for text content (65-75ch),Let text span full viewport width,max-w-prose or max-w-3xl,Full width paragraphs,Medium
22,Touch,Touch Target Size,Mobile,Small buttons are hard to tap accurately,Minimum 44x44px touch targets,Tiny clickable areas,min-h-[44px] min-w-[44px],w-6 h-6 buttons,High
23,Touch,Touch Spacing,Mobile,Adjacent touch targets need adequate spacing,Minimum 8px gap between touch targets,Tightly packed clickable elements,gap-2 between buttons,gap-0 or gap-1,Medium
24,Touch,Gesture Conflicts,Mobile,Custom gestures can conflict with system,Avoid horizontal swipe on main content,Override system gestures,Vertical scroll primary,Horizontal swipe carousel only,Medium
25,Touch,Tap Delay,Mobile,300ms tap delay feels laggy,Use touch-action CSS or fastclick,Default mobile tap handling,touch-action: manipulation,No touch optimization,Medium
26,Touch,Pull to Refresh,Mobile,Accidental refresh is frustrating,Disable where not needed,Enable by default everywhere,overscroll-behavior: contain,Default overscroll,Low
27,Touch,Haptic Feedback,Mobile,Tactile feedback improves interaction feel,Use for confirmations and important actions,Overuse vibration feedback,navigator.vibrate(10),Vibrate on every tap,Low

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/design_system.py (reported line 71)May include surrounding context.

python
# Try exact match first
        for rule in self.reasoning_data:
            if rule.get("UI_Category", "").lower() == category_lower:
                return rule

        # Try partial match
        for rule in self.reasoning_data:

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/design_system.py (reported line 77)May include surrounding context.

python
# Try exact match first
        for rule in self.reasoning_data:
            if rule.get("UI_Category", "").lower() == category_lower:
                return rule

        # Try partial match
        for rule in self.reasoning_data:

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/design_system.py (reported line 84)May include surrounding context.

python
# Try exact match first
        for rule in self.reasoning_data:
            if rule.get("UI_Category", "").lower() == category_lower:
                return rule

        # Try partial match
        for rule in self.reasoning_data:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill exposes operational behavior that can read and write local files, but the manifest does not declare any explicit tool scope, permissions, or allowed-tools boundaries. That creates an authorization ambiguity: an agent or reviewer cannot easily tell whether filesystem access is intended, constrained, or excessive, which increases the chance of unintended file modification or overbroad execution in a larger agent environment.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · data/app-interface.csv (reported line 15)May include surrounding context.

text
11,Navigation,Modal Escape,modal dismiss close affordance,iOS/Android/React Native,Modals/sheets must have clear close actions,Provide close button and swipe-down where platform expects,Trapping users in modal with no obvious exit,"<Modal><Button title=""Close"" onPress={onClose} /></Modal>","<Modal><View>{children}</View></Modal>",High
12,State,Preserve Screen State,navigation preserve state,iOS/Android/React Native,Returning to a screen should restore its scroll and form state,Keep components mounted or persist state,Reset list scroll and form inputs on every visit,"<Tab.Navigator screenOptions={{ unmountOnBlur: false }}>","<Tab.Screen options={{ unmountOnBlur: true }} />",Medium
13,Feedback,Loading Indicators,activity indicator skeleton,iOS/Android/React Native,Show visible feedback during network operations,Use ActivityIndicator or skeleton for >300ms operations,Leave button and screen frozen,"{loading ? <ActivityIndicator /> : <Button title=""Save"" />}", "<Button title=""Save"" onPress={submit} /> // no loading",High
14,Feedback,Success Feedback,toast checkmark banner,iOS/Android/React Native,Confirm successful actions with brief feedback,Show toast/checkmark or banner,Complete actions silently with no confirmation,"showToast('Saved successfully')","// silently update state only",Medium
15,Feedback,Error Feedback,inline error banner,iOS/Android/React Native,Show clear error messages near the problem,input-level error + summary banner,Only change border color with no explanation,"<TextInput ... /><Text style={{color:'red'}}>{error}</Text>","<TextInput style={{borderColor:'red'}} />",High
16,Forms,Inline Validation,onBlur validation,iOS/Android/React Native,Validate inputs on blur or submit with clear messaging,Validate onBlur and onSubmit,Validate on every keystroke causing jank,"onBlur={() => validateEmail(value)}","onChangeText={v => validateEmail(v)} // every char",Medium
17,Forms,Keyboard Type,keyboardType returnKeyType,iOS/Android/React Native,Use appropri
...[truncated 25 chars]

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The Neo-Brutalism section requires button text to use uppercase. This enforces a specific text-formatting convention across all uses without accounting for languages where uppercase is unsupported, unnatural, or harmful to readability.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file instructs that headlines are the primary UI and explicitly requires a massive headline as the main visual anchor, but more importantly elsewhere mandates all-caps text for interface elements. In this context, line L1066 contributes to a prescriptive typography policy that can force one presentation style regardless of user language needs, which is risky when combined with multilingual content in the file.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Line L1122 requires CTA text to be uppercase. Forced uppercase is a locale-sensitive text policy that may not work correctly or naturally for many languages and scripts, and the file does not offer user opt-in or locale-specific exceptions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Line L0001 states in Chinese that the file is only a design backup/reference document. Because SQP-3 applies to all file types and covers language/locale policy violations in natural-language content, this is a forced language choice with no indication of user choice or justified regional scope.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This CSV is a plain-text/config-style file, so natural-language policy checks apply. The usage text on L106 is written in Chinese while the rest of the file is in English, and the file does not indicate that the skill is region-specific or that users can opt into a different language.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · data/stacks/react-native.csv (reported line 52)May include surrounding context.

text
48,Testing,Use Detox for E2E,End-to-end testing,Detox for critical flows,Manual E2E testing,detox test,Manual testing only,Medium,https://wix.github.io/Detox/
49,Native,Use native modules carefully,Bridge has overhead,Batch native calls,Frequent bridge crossing,Batch updates,Call native on every keystroke,High,
50,Native,Use Expo when possible,Simplified development,Expo for standard features,Bare RN for simple apps,expo install package,react-native link package,Low,https://docs.expo.dev/
51,Native,Handle permissions,Request permissions properly,Check and request permissions,Assume permissions granted,PermissionsAndroid.request(),Access without permission check,High,https://reactnative.dev/docs/permissionsandroid

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

Line L70 describes 'Minimalist Monochrome' as 'Light Mode Enforced,' which is a natural-language locale/display policy constraint applied unconditionally rather than offering user choice. The rule covers forced user-facing language/locale-style policy constraints broadly, and this is the clearest analogous forced preference in the file.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This CSV contains prescriptive UI recommendations such as "Dark Mode (OLED)" and explicitly lists "Light mode default" as an anti-pattern. That is a language/locale-style policy issue under the provided rule because it mandates a presentation preference without user choice or documented opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The row for Podcast Platform recommends "Dark Mode (OLED) + Minimalism" and marks "Light mode default" as an anti-pattern. This is a forced UI preference in natural language and does not mention opt-in, user settings, or accessibility exceptions.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · data/ui-reasoning.csv (reported line 30)May include surrounding context.

text
26,Subscription Box Service,Feature-Rich + Conversion,Vibrant & Block-based + Motion-Driven,Brand + Excitement colors,Engaging + Clear typography,Unboxing reveal animations + Product carousel,"{""must_have"": ""personalization-quiz"", ""must_have"": ""subscription-management""}",Confusing pricing + No unboxing preview,HIGH
27,Podcast Platform,Storytelling + Feature-Rich,Dark Mode (OLED) + Minimalism,Dark + Audio waveform accents,Modern + Clear typography,Waveform visualizations + Episode transitions,"{""must_have"": ""audio-player-ux"", ""must_have"": ""episode-discovery""}",Poor audio player + Cluttered layout,HIGH
28,Dating App,Social Proof + Feature-Rich,Vibrant & Block-based + Motion-Driven,Warm + Romantic (Pink/Red gradients),Modern + Friendly typography,Profile card swipe + Match animations,"{""must_have"": ""profile-cards"", ""must_have"": ""safety-features""}",Generic profiles + No safety,HIGH
29,Micro-Credentials/Badges Platform,Trust & Authority + Feature,Minimalism + Flat Design,Trust Blue + Gold (#FFD700),Professional + Clear typography,Badge reveal animations + Progress tracking,"{""must_have"": ""credential-verification"", ""must_have"": ""progress-display""}",No verification + Hidden progress,MEDIUM
30,Knowledge Base/Documentation,FAQ + Minimal,Minimalism + Accessible & Ethical,Clean hierarchy + Minimal color,Clear + Readable typography,Search highlight + Smooth scrolling,"{""must_have"": ""search-first"", ""must_have"": ""version-switching""}",Poor navigation + No search,HIGH
31,Hyperlocal Services,Conversion + Feature-Rich,Minimalism + Vibrant & Block-based,Location markers + Trust colors,Clear + Functional typography,Map hover + Provider card reveals,"{""must_have"": ""map-integration"", ""must_have"": ""booking-system""}",No map + Hidden reviews,HIGH
32,Beauty/Spa/Wellness Service,Hero-Centric + Social Proof,Soft UI Evolution + Neumorphism,Soft pastels (Pink Sage Cream) + Gold accents,Elegant + Calming typography,Soft shadows + Smooth transitions 
...[truncated 25 chars]

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The cybersecurity platform row specifies "Cyberpunk UI + Dark Mode (OLED)" and lists "Light mode" as an anti-pattern. This mandates a display preference without offering user choice, which falls under the policy-violation category defined in the prompt.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The Developer Tool / IDE row recommends "Dark Mode (OLED) + Minimalism" and identifies "Light mode default" as an anti-pattern. This is a prescriptive preference that does not provide users a choice of interface theme.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · data/ux-guidelines.csv (reported line 35)May include surrounding context.

text
31,Interaction,Disabled States,All,Clearly indicate non-interactive elements,Reduce opacity and change cursor,Confuse disabled with normal state,opacity-50 cursor-not-allowed,Same style as enabled,Medium
32,Interaction,Loading Buttons,All,Prevent double submission during async actions,Disable button and show loading state,Allow multiple clicks during processing,disabled={loading} spinner,Button clickable while loading,High
33,Interaction,Error Feedback,All,Users need to know when something fails,Show clear error messages near problem,Silent failures with no feedback,Red border + error message,No indication of error,High
34,Interaction,Success Feedback,All,Confirm successful actions to users,Show success message or visual change,No confirmation of completed action,Toast notification or checkmark,Action completes silently,Medium
35,Interaction,Confirmation Dialogs,All,Prevent accidental destructive actions,Confirm before delete/irreversible actions,Delete without confirmation,Are you sure modal,Direct delete on click,High
36,Accessibility,Color Contrast,All,Text must be readable against background,Minimum 4.5:1 ratio for normal text,Low contrast text,#333 on white (7:1),#999 on white (2.8:1),High
37,Accessibility,Color Only,All,Don't convey information by color alone,Use icons/text in addition to color,Red/green only for error/success,Red text + error icon,Red border only for error,High

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · data/ux-guidelines.csv (reported line 84)May include surrounding context.

text
31,Interaction,Disabled States,All,Clearly indicate non-interactive elements,Reduce opacity and change cursor,Confuse disabled with normal state,opacity-50 cursor-not-allowed,Same style as enabled,Medium
32,Interaction,Loading Buttons,All,Prevent double submission during async actions,Disable button and show loading state,Allow multiple clicks during processing,disabled={loading} spinner,Button clickable while loading,High
33,Interaction,Error Feedback,All,Users need to know when something fails,Show clear error messages near problem,Silent failures with no feedback,Red border + error message,No indication of error,High
34,Interaction,Success Feedback,All,Confirm successful actions to users,Show success message or visual change,No confirmation of completed action,Toast notification or checkmark,Action completes silently,Medium
35,Interaction,Confirmation Dialogs,All,Prevent accidental destructive actions,Confirm before delete/irreversible actions,Delete without confirmation,Are you sure modal,Direct delete on click,High
36,Accessibility,Color Contrast,All,Text must be readable against background,Minimum 4.5:1 ratio for normal text,Low contrast text,#333 on white (7:1),#999 on white (2.8:1),High
37,Accessibility,Color Only,All,Don't convey information by color alone,Use icons/text in addition to color,Red/green only for error/success,Red text + error icon,Red border only for error,High

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · data/ux-guidelines.csv (reported line 36)May include surrounding context.

text
32,Interaction,Loading Buttons,All,Prevent double submission during async actions,Disable button and show loading state,Allow multiple clicks during processing,disabled={loading} spinner,Button clickable while loading,High
33,Interaction,Error Feedback,All,Users need to know when something fails,Show clear error messages near problem,Silent failures with no feedback,Red border + error message,No indication of error,High
34,Interaction,Success Feedback,All,Confirm successful actions to users,Show success message or visual change,No confirmation of completed action,Toast notification or checkmark,Action completes silently,Medium
35,Interaction,Confirmation Dialogs,All,Prevent accidental destructive actions,Confirm before delete/irreversible actions,Delete without confirmation,Are you sure modal,Direct delete on click,High
36,Accessibility,Color Contrast,All,Text must be readable against background,Minimum 4.5:1 ratio for normal text,Low contrast text,#333 on white (7:1),#999 on white (2.8:1),High
37,Accessibility,Color Only,All,Don't convey information by color alone,Use icons/text in addition to color,Red/green only for error/success,Red text + error icon,Red border only for error,High
38,Accessibility,Alt Text,All,Images need text alternatives,Descriptive alt text for meaningful images,Empty or missing alt attributes,alt='Dog playing in park',alt='' for content images,High

Static analysis

No suspicious patterns detected.