用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/linnefromice/portfolio_two --skill tdd-workflow命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | tdd-workflow |
| description | React 19 + TypeScript + Vite SPA向けTDDワークフロー。Vitestによるユニット/コンポーネントテスト、PlaywrightによるE2Eテスト。 |
注意: 現在テストフレームワーク未導入。初回使用時はセットアップから開始。
# Vitest + React Testing Library
pnpm add -D vitest @testing-library/react @testing-library/jest-dom jsdom
# Playwright(E2E)
pnpm add -D @playwright/test
npx playwright install
常にテストを最初に書き、次にテストを通すコードを実装する。
import { describe, it, expect } from 'vitest'
import { render, screen } from '@testing-library/react'
describe('Content', () => {
it('Account選択時にProfile表示', () => {
render(<Content activeMenuIndex={0} activeSubMenuIndex={0} />)
expect(screen.getByText('linnefromice')).toBeInTheDocument()
})
it('Work選択時にWork画像ギャラリー表示', () => {
render(<Content activeMenuIndex={1} activeSubMenuIndex={0} />)
// ギャラリーが表示されることを確認
})
})
pnpm test
pnpm test
import { test, expect } from '@playwright/test'
test('D-padでメニューナビゲーションできる', async ({ page }) => {
await page.goto('/')
// 初期状態はAccount
await expect(page.locator('.menu-active')).toContainText('Account')
// 右ボタンでWork
await page.click('[data-testid="dpad-right"]')
await expect(page.locator('.menu-active')).toContainText('Work')
// さらに右ボタンでSide
await page.click('[data-testid="dpad-right"]')
await expect(page.locator('.menu-active')).toContainText('Side')
})
src/
├── ui/
│ ├── Content/
│ │ ├── Content.tsx
│ │ └── Content.test.tsx
│ ├── Buttons/
│ │ ├── DPad.tsx
│ │ └── DPad.test.tsx
│ └── Menus.tsx
│ └── Menus.test.tsx
└── e2e/
└── navigation.spec.ts
覚えておくこと: テストはオプションではない。自信を持ったリファクタリングと迅速な開発を可能にするセーフティネット。