Install
$ agentstack add skill-plugin87-full-stack-design-skills-component-library-mastery ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Component Library Mastery
Building, documenting, and maintaining production-quality component libraries.
Storybook Fundamentals
Setup & Configuration
npx storybook init
npm run storybook # Dev server
npm run build-storybook # Production build
Story Example
// Button.stories.tsx
import { Button } from './Button';
import type { Meta, StoryObj } from '@storybook/react';
const meta: Meta = {
component: Button,
title: 'Components/Button',
tags: ['autodocs'],
argTypes: {
variant: {
control: { type: 'radio' },
options: ['primary', 'secondary', 'ghost'],
},
size: {
control: { type: 'radio' },
options: ['sm', 'md', 'lg'],
},
},
};
export default meta;
type Story = StoryObj;
export const Primary: Story = {
args: { variant: 'primary', children: 'Click me' },
};
export const Secondary: Story = {
args: { variant: 'secondary', children: 'Secondary' },
};
export const Disabled: Story = {
args: { disabled: true, children: 'Disabled' },
};
// Interaction testing
export const Interactive: Story = {
args: { variant: 'primary', children: 'Click' },
play: async ({ canvasElement }) => {
const button = canvasElement.querySelector('button');
await userEvent.click(button);
},
};
npm Publishing
Package Configuration
{
"name": "@company/component-library",
"version": "1.0.0",
"description": "Reusable component library",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": ["dist"],
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
}
},
"scripts": {
"build": "tsc && esbuild src/index.ts --bundle --outfile=dist/index.js",
"publish": "npm publish"
}
}
Export Index
// src/index.ts
export { Button } from './components/Button';
export { Card } from './components/Card';
export type { ButtonProps } from './components/Button';
export type { CardProps } from './components/Card';
CI/CD Automation
# .github/workflows/publish.yml
name: Publish
on:
push:
branches: [main]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
registry-url: 'https://registry.npmjs.org'
- run: npm ci && npm run build && npm publish
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Versioning & Maintenance
Semantic Versioning
- Major (2.0.0): Breaking changes
- Minor (1.1.0): New features
- Patch (1.0.1): Bug fixes
Breaking Change Management
// Support both old and new prop
export function Button({ variant, type, ...props }: ButtonProps) {
const finalVariant = type ?? variant;
if (type) {
console.warn('Prop "type" deprecated, use "variant"');
}
return ;
}
Changelog Template
# Changelog
## v2.0.0 (2024-03-15)
### Breaking Changes
- Renamed Button `type` prop to `variant`
### New Features
- Added `icon` prop to Button
- Added `loading` state
### Migration
Library Maintenance Checklist
- [ ] All components have stories
- [ ] Props documented (JSDoc)
- [ ] TypeScript types included
- [ ] Tests passing (unit, visual, a11y)
- [ ] Accessibility compliant (WCAG AA)
- [ ] Performance acceptable (bundle size < 100KB)
- [ ] Changelog updated
- [ ] Version bumped appropriately
- [ ] CI/CD passing
Test Cases: 6 Scenarios
Test 1: Storybook Story Creation
Scenario: Create stories for Button with all variants Expected: Stories for primary, secondary, disabled states Result: ✅ PASS
Test 2: npm Publishing
Scenario: Publish component library to npm Expected: Package published, installable via npm install Result: ✅ PASS
Test 3: Breaking Change Management
Scenario: Rename prop, maintain backward compatibility Expected: Old prop still works with deprecation warning, new prop used Result: ✅ PASS
Test 4: Versioning Strategy
Scenario: New features + bug fix. Version bump? Expected: Minor bump (1.0.0 → 1.1.0) Result: ✅ PASS
Test 5: Component Documentation
Scenario: Document Button component API Expected: JSDoc comments, Storybook autodocs, usage examples Result: ✅ PASS
Test 6: CI/CD Automation
Scenario: Auto-publish on main branch push Expected: Build → Test → Publish to npm Result: ✅ PASS
Summary: 6/6 tests passing ✅
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: plugin87
- Source: plugin87/full-stack-design-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.