name: new-component description: Create a new React component following project conventions with PropTypes and test attributes user-invocable: true allowed-tools: Read, Write, Edit, Grep, Glob
Skill: Create New Component
Create a new React component following project conventions.
Usage
/new-component <ComponentName> [directory]
Prerequisites
This should typically be done as part of implementing a feature. Ensure:
- A feature file exists that requires this component
- Step definitions reference the component's behavior
Steps
- Create the component file at
src/components/{directory}/{ComponentName}.jsx - Use functional component with hooks
- Define PropTypes for type checking
- Export the component as default
- Add data-testid attributes for acceptance testing
Template
// src/components/{directory}/{ComponentName}.jsx
import { useState } from 'react';
import PropTypes from 'prop-types';
function {ComponentName}({ prop1, prop2 }) {
// Component logic here
return (
<div data-testid="{component-name}">
{/* Component content */}
</div>
);
}
{ComponentName}.propTypes = {
prop1: PropTypes.string.isRequired,
prop2: PropTypes.number
};
{ComponentName}.defaultProps = {
prop2: 0
};
export default {ComponentName};
Naming Conventions
- Component files: PascalCase (
StepEditor.jsx) - Test IDs: kebab-case (
data-testid="step-editor") - CSS classes: kebab-case with BEM (
step-editor__input)
Test ID Guidelines
Add data-testid attributes for elements that acceptance tests need to interact with:
<button data-testid="add-step-button">Add Step</button>
<input data-testid="step-name-input" />
<div data-testid="metrics-dashboard">...</div>
Integration with Acceptance Tests
Components should be designed to support acceptance testing:
// In step definitions
When('I click the add step button', async function () {
const button = await this.page.$('[data-testid="add-step-button"]');
await button.click();
});
Then('I should see the step editor', async function () {
const editor = await this.page.$('[data-testid="step-editor"]');
expect(editor).to.exist;
});
Related skills
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
Claude CodeCursoradvanced
890
234
2,680
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
claudeCursorWindsurfbeginner
259
72
640
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.
claudeCursorWindsurfintermediate
156
44
505