소스 정보
- 저장소
- aaione/everything-claude-code-zh
- 최근 소스 활동
- 2026년 5월 31일 02:24
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 27
- 포크
- 13
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/aaione/everything-claude-code-zh --skill tdd-workflow명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Kubernetes 工作负载模式、资源管理、RBAC、probes、autoscaling、ConfigMap/Secret 处理,以及面向生产级部署的 kubectl 调试。
完成任何非平凡任务后使用。智能体按 5 个维度自评输出——准确性、完整性、清晰度、可执行性、简洁性——每项都给出具体证据。生成结构化 1-5 评分卡和具体改进建议。
在 competitive-platform-analysis 产出分层竞品集合后使用。按九个加权维度(定位、声音、视觉工艺、offer packaging、证据、enterprise-readiness、thought leadership、定价、客户 strategic tension)为每个竞品评分,使用明确 1–5 rubrics 和 tension-plot。位于 competitive-report-structure 之前。
SOC 직업 분류 기준
SKILL.md 표시 중
| name | tdd-workflow |
| description | 在编写新功能、修复错误或重构代码时使用此技能。强制执行具有 80%+ 覆盖率的测试驱动开发,包括单元、集成和 E2E 测试。 |
此技能确保所有代码开发遵循 TDD 原则和全面的测试覆盖。
始终先编写测试,然后实现代码以使测试通过。
作为 [角色],我想要 [操作],以便 [利益]
示例:
作为用户,我想要语义搜索市场,
以便即使没有确切的关键词也能找到相关市场。
为每个用户旅程创建全面的测试用例:
describe('语义搜索', () => {
it('为查询返回相关市场', async () => {
// 测试实现
})
it('优雅处理空查询', async () => {
// 测试边缘情况
})
it('当 Redis 不可用时回退到子字符串搜索', async () => {
// 测试回退行为
})
it('按相似度分数对结果排序', async () => {
// 测试排序逻辑
})
})
npm test
# 测试应该失败 — 我们尚未实现
编写使测试通过的最少代码:
// 测试指导的实现
export async function searchMarkets(query: string) {
// 实现这里
}
npm test
# 测试现在应该通过
在保持测试绿色的同时提高代码质量:
npm run test:coverage
# 验证实现 80%+ 覆盖率
import { render, screen, fireEvent } from '@testing-library/react'
import { Button } from './Button'
describe('按钮组件', () => {
it('渲染正确的文本', () => {
render(<Button>点击我</Button>)
expect(screen.getByText('点击我')).toBeInTheDocument()
})
it('点击时调用 onClick', () => {
const handleClick = jest.fn()
render(<Button onClick={handleClick}>点击</Button>)
fireEvent.click(screen.getByRole('button'))
expect(handleClick).toHaveBeenCalledTimes(1)
})
it('当禁用属性为 true 时禁用', () => {
render(<Button disabled>点击</Button>)
expect(screen.getByRole()).()
})
})
import { NextRequest } from 'next/server'
import { GET } from './route'
describe('GET /api/markets', () => {
it('成功返回市场', async () => {
const request = new NextRequest('http://localhost/api/markets')
const response = await GET(request)
const data = await response.json()
expect(response.status).toBe(200)
expect(data.success).toBe(true)
expect(Array.isArray(data.data)).toBe(true)
})
it('验证查询参数', async () => {
const request = new NextRequest('http://localhost/api/markets?limit=invalid')
const response = await GET(request)
expect(response.status).()
})
(, () => {
request = ()
})
})
import { test, expect } from '@playwright/test'
test('用户可以搜索和过滤市场', async ({ page }) => {
// 导航到市场页面
await page.goto('/')
await page.click('a[href="/markets"]')
// 验证页面已加载
await expect(page.locator('h1')).toContainText('市场')
// 搜索市场
await page.fill('input[placeholder="搜索市场"]', 'election')
// 等待防抖和结果
await page.waitForTimeout(600)
// 验证显示搜索结果
const results = page.locator('[data-testid="market-card"]')
await expect(results).toHaveCount(5, { timeout: 5000 })
// 验证结果包含搜索词
const firstResult = results.first()
await expect(firstResult).toContainText('election', { ignoreCase: true })
// 按状态过滤
await page.()
(results).()
})
(, ({ page }) => {
page.()
page.(, )
page.(, )
page.(, )
page.()
(page.()).()
(page).()
})
src/
├── components/
│ ├── Button/
│ │ ├── Button.tsx
│ │ ├── Button.test.tsx # 单元测试
│ │ └── Button.stories.tsx # Storybook
│ └── MarketCard/
│ ├── MarketCard.tsx
│ └── MarketCard.test.tsx
├── app/
│ └── api/
│ └── markets/
│ ├── route.ts
│ └── route.test.ts # 集成测试
└── e2e/
├── markets.spec.ts # E2E 测试
├── trading.spec.ts
└── auth.spec.ts
jest.mock('@/lib/supabase', () => ({
supabase: {
from: jest.fn(() => ({
select: jest.fn(() => ({
eq: jest.fn(() => Promise.resolve({
data: [{ id: 1, name: '测试市场' }],
error: null
}))
}))
}))
}
}))
jest.mock('@/lib/redis', () => ({
searchMarketsByVector: jest.fn(() => Promise.resolve([
{ slug: 'test-market', similarity_score: 0.95 }
])),
checkRedisHealth: jest.fn(() => Promise.resolve({ connected: true }))
}))
jest.mock('@/lib/openai', () => ({
generateEmbedding: jest.fn(() => Promise.resolve(
new Array(1536).fill(0.1) // 模拟 1536 维嵌入
))
}))
npm run test:coverage
{
"jest": {
"coverageThresholds": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": 80
}
}
}
}
// 不要测试内部状态
expect(component.state.count).toBe(5)
// 测试用户看到的内容
expect(screen.getByText('计数: 5')).toBeInTheDocument()
// 容易破坏
await page.click('.css-class-xyz')
// 对更改具有弹性
await page.click('button:has-text("提交")')
await page.click('[data-testid="submit-button"]')
// 测试相互依赖
test('创建用户', () => { /* ... */ })
test('更新同一用户', () => { /* 依赖于前一个测试 */ })
// 每个测试设置自己的数据
test('创建用户', () => {
const user = createTestUser()
// 测试逻辑
})
test('更新用户', () => {
const user = createTestUser()
// 更新逻辑
})
npm test -- --watch
# 测试在文件更改时自动运行
# 每次提交前运行
npm test && npm run lint
# GitHub Actions
- name: 运行测试
run: npm test -- --coverage
- name: 上传覆盖率
uses: codecov/codecov-action@v3
记住:测试不是可选的。它们是支持自信重构、快速开发和生产可靠性的安全网。