--- name: code-card-news-generator description: Generate code explanation cards with syntax highlighting for tutorials and education. Creates title cards and explanation cards with Korean descriptions and code examples. --- # Code Card News Generator 코드 설명용 카드 뉴스를 생성하는 스킬입니다. 제목 카드와 함수/개념 설명 카드를 자동으로 만듭니다. ## When to Use Use this skill when user requests: - "코드 설명 카드 만들어줘" - "React Hook 설명 카드 생성해줘" - "코드 튜토리얼 카드 뉴스 만들어줘" - Any request for code tutorial/explanation cards ## Core Workflow ### Step 1: Get Topic and Content from User Ask user for: - **Topic** (주제): What library/framework/concept (e.g., "React Router Hooks") - **Functions/Concepts**: List of items to explain (e.g., "useNavigate, useParams, useLocation") Example conversation: ``` Claude: 어떤 주제로 코드 카드를 만들까요? User: React Router Hooks Claude: 어떤 Hook들을 설명할까요? User: useNavigate, useParams, useLocation ``` ### Step 2: Generate Content For each function/concept, create: 1. **Description** (한국어 설명): Brief explanation in Korean/English 2. **Code Example**: Working code snippet 3. **Explanation**: What the code does Example: ``` 1. useNavigate Description: It's used for programmatic navigation, allowing you to redirect users or change routes without needing to render a component. Code: const navigate = useNavigate(); const handleClick = () => { navigate('/home'); }; Explanation: In this example, calling handleClick will navigate the user to the /home route. ``` ### Step 3: Auto-Generate Cards Use this command: ```bash python3 auto_code_generator.py \ --topic "React Router Hooks" \ --output-dir ./output \ --base-filename "react_router" << 'EOF' TITLE: React|Router|Hooks 1. useNavigate Description: It's used for programmatic navigation, allowing you to redirect users or change routes without needing to render a component. Code: const navigate = useNavigate(); const handleClick = () => { navigate('/home'); }; Explanation: In this example, calling handleClick will navigate the user to the /home route. 2. useParams Description: useParams is used to access dynamic parameters from the current URL. Code: const { id } = useParams(); console.log(id); // Outputs the 'id' from URL Explanation: If the route is /user/:id and you visit /user/123, useParams will return { id: '123' }. EOF ``` The script will generate: - `react_router_00_title.png` - Title card - `react_router_01.png` - useNavigate explanation - `react_router_02.png` - useParams explanation ### Step 4: Provide Download Links After generation, show user: ``` ✅ 코드 카드 3장이 생성되었습니다! [View title card](computer:///path/to/react_router_00_title.png) [View card 1](computer:///path/to/react_router_01.png) [View card 2](computer:///path/to/react_router_02.png) ``` ## Input Format ### Title Card ``` TITLE: Part1|Part2|Part3 ``` Parts separated by `|` will alternate colors (white/pink). Example: - `React|Router|Hooks` → "React" (white), "Router" (pink), "Hooks" (white) Optional subtitle: ``` TITLE: React|Router|Hooks SUBTITLE: Navigation Made Easy ``` ### Explanation Cards ``` 1. functionName Description: Korean or English description... Code: code line 1 code line 2 code line 3 Explanation: Additional explanation about what the code does... 2. nextFunction Description: ... Code: ... Explanation: ... ``` **Important:** - Each card starts with a number (1., 2., etc.) - `Description:` - The main explanation - `Code:` - Code example (starts on next line) - `Explanation:` - Optional additional context ## Design Specifications ### Colors - Background: `#1a1a1a` (Dark) - Text: `#ffffff` (White) - Accent: `#ff6b9d` (Pink) - Code Background: `#2d2d2d` - Code Border: `#ff6b9d` (Pink) ### Canvas - Size: 1080x1080 pixels (Instagram optimized) - Padding: 60px ### Fonts - General Text: Cafe24Ssurround (bundled) - Code: Menlo/Monaco (monospace, system font) ### Layout - Title Card: Large centered title with optional subtitle - Explanation Card: - Number + Function name (top, pink) - Description (white) - Code box (pink border, dark background) - Explanation (white, with pink highlights) ## Content Guidelines ### Good Code Example ``` 1. useState Description: useState is a Hook that lets you add state to functional components. Code: const [count, setCount] = useState(0); setCount(count + 1); Explanation: This creates a state variable 'count' with initial value 0. ``` ✓ Clear function name ✓ Concise description ✓ Simple, working code ✓ Helpful explanation ### Bad Code Example ``` 1. This is a very long function name that explains everything Description: This is a very long description that goes on and on explaining every single detail about how this function works in various scenarios and edge cases... Code: // 50 lines of complex code ... ``` ✗ Too verbose ✗ Code too long/complex ✗ Won't fit in 1080x1080 canvas ## Manual Single Card Creation ### Create Title Card Only ```bash python3 generate_code_card.py title \ --title "React|Router|Hooks" \ --subtitle "Navigation Made Easy" \ --output ./title.png ``` ### Create Explanation Card Only ```bash python3 generate_code_card.py explain \ --number "1" \ --function "useNavigate" \ --description "It's used for programmatic navigation..." \ --code "const navigate = useNavigate();" \ --explanation "This allows navigation without Link component." \ --output ./card_01.png ``` ## Example Topics - React Hooks (useState, useEffect, useContext) - React Router Hooks (useNavigate, useParams, useLocation) - Array Methods (map, filter, reduce) - Python Built-ins (enumerate, zip, lambda) - CSS Flexbox (flex-direction, justify-content, align-items) - Git Commands (commit, push, pull, merge) ## Tips for Good Cards 1. **Keep It Simple**: One concept per card 2. **Code Length**: Max 5-7 lines of code 3. **Use Comments**: Add helpful comments in code 4. **Highlight Keywords**: Important terms will be auto-highlighted 5. **Test Code**: Make sure code examples actually work ## Error Handling If text overflows: - Shorten description - Reduce code lines - Simplify explanation - Use more concise language ## Example Workflow User request: "React Router Hooks 설명 카드 3개 만들어줘" Claude response: 1. Confirm: "React Router Hooks에 대한 코드 카드를 만들겠습니다. useNavigate, useParams, useLocation을 설명하겠습니다." 2. Generate content for 3 hooks 3. Run auto_code_generator.py with heredoc 4. Provide download links Total time: ~1 minute for 4-card series (1 title + 3 explanations)