en un clic
component
Generate a new React component with Mantine styling
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
Generate a new React component with Mantine styling
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
Update documentation after implementing features or making changes
Run a quick architecture review via architect-reviewer agent
Generate mobile-specific React components with platform detection and safe areas
Run a quick security audit on recent changes or specific files
Generate a test file for a component, hook, or utility
Generate comprehensive tests via test-generator agent
| name | component |
| description | Generate a new React component with Mantine styling |
Generates a React component following Skelenote patterns with Mantine UI.
TaskCard, FilterDropdown)src/components/)src/components/{category}/{ComponentName}.tsx:
import { FC } from 'react';
import { Box, Text } from '@mantine/core';
import styles from './ComponentName.module.css';
export interface ComponentNameProps {
prop1: string;
prop2?: number;
onAction?: () => void;
}
export const ComponentName: FC<ComponentNameProps> = ({
prop1,
prop2,
onAction,
}) => {
return (
<Box className={styles.container}>
<Text>{prop1}</Text>
</Box>
);
};
src/components/{category}/{ComponentName}.module.css:
.container {
/* Use design system tokens */
padding: var(--mantine-spacing-md);
border: 1px solid var(--mantine-color-dark-4);
border-radius: var(--mantine-radius-sm);
}
src/components/{category}/{ComponentName}.test.tsx:
import { render, screen } from '@testing-library/react';
import { describe, it, expect } from 'vitest';
import { ComponentName } from './ComponentName';
describe('ComponentName', () => {
it('renders correctly', () => {
render(<ComponentName prop1="test" />);
expect(screen.getByText('test')).toBeInTheDocument();
});
});
// src/components/tasks/TaskPriorityBadge.tsx
import { FC } from 'react';
import { Badge, MantineColor } from '@mantine/core';
export type Priority = 'urgent' | 'high' | 'medium' | 'low' | 'none';
export interface TaskPriorityBadgeProps {
priority: Priority;
}
const priorityConfig: Record<Priority, { label: string; color: MantineColor }> = {
urgent: { label: 'Urgent', color: 'red' },
high: { label: 'High', color: 'orange' },
medium: { label: 'Medium', color: 'yellow' },
low: { label: 'Low', color: 'blue' },
none: { label: 'None', color: 'gray' },
};
export const TaskPriorityBadge: FC<TaskPriorityBadgeProps> = ({ priority }) => {
const config = priorityConfig[priority];
return (
<Badge color={config.color} variant="light" size="sm">
{config.label}
</Badge>
);
};
src/components/Before generating, review docs/product/design/ for:
import { useMantineTheme } from '@mantine/core';
const theme = useMantineTheme();
import { useNavigation } from '@/contexts';
const { navigateTo } = useNavigation();
import { useObjects } from '@/contexts';
const { store, refreshData } = useObjects();
@/ for imports from src/