Install
$ agentstack add skill-ggombee-code-forge-tailwind ✓ 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
Tailwind CSS 컨벤션
기본 규칙
- 스타일은 Tailwind className으로 작성한다
- 조건부/동적 className은
cn()유틸을 사용한다 - 커스텀 값이 필요할 때는
tailwind.config에 추가한다 - 인라인
styleprop 사용은 최소화한다
cn() 유틸 (clsx + tailwind-merge)
// src/utils/cn.ts
import { clsx, type ClassValue } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
// ✅ 좋은 예: cn()으로 조건부 클래스 처리
import { cn } from '@/utils/cn';
interface ButtonProps {
variant?: 'primary' | 'secondary' | 'danger';
size?: 'sm' | 'md' | 'lg';
disabled?: boolean;
className?: string;
children: React.ReactNode;
}
function Button({ variant = 'primary', size = 'md', disabled, className, children }: ButtonProps) {
return (
{children}
);
}
// ❌ 나쁜 예: 템플릿 리터럴로 클래스 조합 (Tailwind merge 없음)
const className = `btn ${variant === 'primary' ? 'bg-blue-600' : 'bg-gray-100'} ${disabled ? 'opacity-50' : ''}`;
// ❌ 나쁜 예: 동적 클래스명 생성 (Tailwind PurgeCSS가 감지 못함)
const color = 'blue';
const className = `bg-${color}-600`; // ❌ 제거됨
tailwind.config 설정
// tailwind.config.ts
import type { Config } from 'tailwindcss';
const config: Config = {
content: [
'./src/**/*.{js,ts,jsx,tsx,mdx}',
'./app/**/*.{js,ts,jsx,tsx,mdx}',
'./components/**/*.{js,ts,jsx,tsx,mdx}',
],
theme: {
extend: {
colors: {
primary: {
50: '#eff6ff',
500: '#3b82f6',
600: '#2563eb',
700: '#1d4ed8',
},
brand: '#1677ff',
},
fontFamily: {
sans: ['Pretendard', 'system-ui', 'sans-serif'],
},
spacing: {
18: '4.5rem',
88: '22rem',
},
borderRadius: {
'4xl': '2rem',
},
screens: {
xs: '475px', // 커스텀 브레이크포인트
},
},
},
plugins: [
require('@tailwindcss/forms'), // 폼 스타일 초기화
require('@tailwindcss/typography'), // prose 스타일
],
};
export default config;
Dark Mode
// tailwind.config.ts - class 전략 (수동 제어)
const config: Config = {
darkMode: 'class', // 또는 'media' (시스템 설정 기반)
...
};
// Dark mode 적용 예시
function Card({ children }: { children: React.ReactNode }) {
return (
{children}
);
}
// Dark mode 토글 (class 전략)
function ThemeToggle() {
const [isDark, setIsDark] = useState(false);
const toggleTheme = () => {
setIsDark(!isDark);
document.documentElement.classList.toggle('dark');
};
return {isDark ? '라이트 모드' : '다크 모드'};
}
반응형 디자인
// Mobile-first 반응형 클래스
function ResponsiveGrid() {
return (
{items.map((item) => (
{item.name}
))}
);
}
자주 사용하는 패턴
// Flexbox 중앙 정렬
'flex items-center justify-center'
// 텍스트 말줄임
'truncate' // 1줄
'line-clamp-2' // 2줄 (CSS)
// 카드 기본 스타일
'rounded-lg border border-gray-200 bg-white p-6 shadow-sm'
// 반응형 숨김
'hidden md:block' // mobile 숨김, md+ 표시
'block md:hidden' // md+ 숨김, mobile 표시
// 포커스 링
'focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500'
// 트랜지션
'transition-colors duration-200'
'transition-all duration-300 ease-in-out'
체크리스트
- [ ] 동적/조건부 className은
cn()사용? - [ ] 동적 클래스명을 템플릿 리터럴로 생성하지 않음?
- [ ] 커스텀 색상/간격은
tailwind.config에 추가? - [ ] Mobile-first 반응형 작성 (
sm:,md:,lg:순서)? - [ ] Dark mode 클래스는
dark:접두사로 작성? - [ ]
content배열에 모든 파일 패턴 포함?
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ggombee
- Source: ggombee/code-forge
- 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.