Development
Skill
/coding-standards
适用于 TypeScript、JavaScript、React 和 Node.js 开发的通用编码标准、最佳实践和模式。
Install
$ npx -y skills add xu-xiang/everything-claude-code-zh --skill coding-standards --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/coding-standards
Context preview
The summary Claude sees to decide when to auto-load this skill.
适用于 TypeScript、JavaScript、React 和 Node.js 开发的通用编码标准、最佳实践和模式。
SKILL.md
coding-standards.SKILL.mdname: coding-standards
description: 适用于 TypeScript、JavaScript、React 和 Node.js 开发的通用编码标准、最佳实践和模式。
origin: ECC
编码标准与最佳实践 (Coding Standards & Best Practices)
适用于所有项目的通用编码标准。
何时启用 (When to Activate)
- 启动新项目或模块时
- 为了质量和可维护性进行代码审查(Code Review)时
- 重构现有代码以遵循规范时
- 强制执行命名、格式或结构的一致性时
- 设置 linting、格式化或类型检查规则时
- 引导新贡献者了解编码规范时
代码质量原则 (Code Quality Principles)
1. 可读性优先 (Readability First)
- 代码被阅读的次数远多于编写的次数
- 变量和函数命名应清晰明确
- 优先选择自描述代码,而非依赖注释
- 保持一致的格式化风格
2. KISS 原则 (Keep It Simple, Stupid)
- 采用最简单的可行方案
- 避免过度设计(Over-engineering)
- 不进行过早优化
- 易于理解胜过奇技淫巧
3. DRY 原则 (Don't Repeat Yourself)
- 将公共逻辑提取为函数
- 创建可复用的组件
- 在模块间共享工具函数
- 避免“复制粘贴式”编程
4. YAGNI 原则 (You Aren't Gonna Need It)
- 不要在功能被需要之前就构建它
- 避免投机性的通用设计
- 仅在必要时增加复杂性
- 从简单开始,在需要时重构
TypeScript/JavaScript 规范
变量命名 (Variable Naming)
// ✅ 优:描述性命名
const marketSearchQuery = 'election'
const isUserAuthenticated = true
const totalRevenue = 1000
// ❌ 劣:含义不明
const q = 'election'
const flag = true
const x = 1000
函数命名 (Function Naming)
// ✅ 优:动词-名词模式
async function fetchMarketData(marketId: string) { }
function calculateSimilarity(a: number[], b: number[]) { }
function isValidEmail(email: string): boolean { }
// ❌ 劣:不清晰或仅有名词
async function market(id: string) { }
function similarity(a, b) { }
function email(e) { }不可变性模式(关键) (Immutability Pattern)
// ✅ 始终使用展开运算符(Spread Operator)
const updatedUser = {
...user,
name: 'New Name'
}
const updatedArray = [...items, newItem]
// ❌ 严禁直接修改(Mutate)
user.name = 'New Name' // 劣
items.push(newItem) // 劣错误处理 (Error Handling)
// ✅ 优:完善的错误处理
async function fetchData(url: string) {
try {
const response = await fetch(url)
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
}
return await response.json()
} catch (error) {
console.error('Fetch failed:', error)
throw new Error('Failed to fetch data')
}
}
// ❌ 劣:没有错误处理
async function fetchData(url) {
const response = await fetch(url)
return response.json()
}Async/Await 最佳实践
// ✅ 优:尽可能并行执行
const [users, markets, stats] = await Promise.all([
fetchUsers(),
fetchMarkets(),
fetchStats()
])
// ❌ 劣:非必要的串行执行
const users = await fetchUsers()
const markets = await fetchMarkets()
const stats = await fetchStats()
类型安全 (Type Safety)
// ✅ 优:定义正确的类型
interface Market {
id: string
name: string
status: 'active' | 'resolved' | 'closed'
created_at: Date
}
function getMarket(id: string): Promise<Market> {
// 实现代码
}
// ❌ 劣:滥用 'any'
function getMarket(id: any): Promise<any> {
// 实现代码
}React 最佳实践
组件结构 (Component Structure)
// ✅ 优:带类型的函数式组件
interface ButtonProps {
children: React.ReactNode
onClick: () => void
disabled?: boolean
variant?: 'primary' | 'secondary'
}
export function Button({
children,
onClick,
disabled = false,
variant = 'primary'
}: ButtonProps) {
return (
<button
onClick={onClick}
disabled={disabled}
className={`btn btn-${variant}`}
>
{children}
</button>
)
}
// ❌ 劣:无类型,结构不清晰
export function Button(props) {
return <button onClick={props.onClick}>{props.children}</button>
}自定义 Hook (Custom Hooks)
// ✅ 优:可复用的自定义 Hook
export function useDebounce<T>(value: T, delay: number): T {
const [debouncedValue, setDebouncedValue] = useState<T>(value)
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value)
}, delay)
return () => clearTimeout(handler)
}, [value, delay])
return debouncedValue
}
// 使用示例
const debouncedQuery = useDebounce(searchQuery, 500)状态管理 (State Management)
// ✅ 优:正确更新状态
const [count, setCount] = useState(0)
// 基于先前状态的函数式更新
setCount(prev => prev + 1)
// ❌ 劣:直接引用状态
setCount(count + 1) // 在异步场景下可能会由于闭包导致状态过期
条件渲染 (Conditional Rendering)
// ✅ 优:清晰的条件渲染
{isLoading && <Spinner />}
{error && <ErrorMessage error={error} />}
{data && <DataDisplay data={data} />}
// ❌ 劣:三元运算符嵌套地狱
{isLoading ? <Spinner /> : error ? <ErrorMessage error={error} /> : data ? <DataDisplay data={data} /> : null}API 设计规范 (API Design Standards)
REST API 约定 (REST API Conventions)
GET /api/markets # 列出所有市场
GET /api/markets/:id # 获取特定市场
POST /api/markets # 创建新市场
PUT /api/markets/:id # 更新市场(完整更新)
PATCH /api/markets/:id # 更新市场(局部更新)
DELETE /api/markets/:id # 删除市场
# 用于过滤的查询参数
GET /api/markets?status=active&limit=10&offset=0
响应格式 (Response Format)
// ✅ 优:一致的响应结构
interface ApiResponse<T> {
success: boolean
data?: T
error?: string
meta?: {
total: number
page: number
limit: number
}
}
// 成功响应
return NextResponse.json({
success: true,
data: markets,
meta: { total: 100, page: 1, limit: 10 }
})
// 错误响应
return NextResponse.json({
success: false,
error: 'Invalid request'
}, { status: 400 })输入验证 (Input Validation)
import { z } from 'zod'
// ✅ 优:模式(Schema)验证
const CreateMarketSchema = z.object({
name: z.string().min(1).max(200),
description: z.string().min(1).max(2000),
endDate: z.string().datetime(),
categories: z.array(z.string()).min(1)
})
export async function POST(request: Request) {
const body = await request.json()
try {
const validated = CreateMarketSchema.parse(body)
// 使用验证后的数据继续执行
} catch (error) {
if (error instanceof z.ZodError) {
return NextResponse.json({
success: false,
error: 'Validation failed',
details: error.errors
}, { status: 400 })
}
}
}文件组织 (File Organization)
项目结构 (Project Structure)
src/
├── app/ # Next.js App Router (路由)
│ ├── api/ # API 路由
│ ├── markets/ # 市场页面
│ └── (auth)/ # 认证页面 (路由分组)
├── c
Read more
name: coding-standards description: 适用于 TypeScript、JavaScript、React 和 Node.js 开发的通用编码标准、最佳实践和模式。 origin: ECC
编码标准与最佳实践 (Coding Standards & Best Practices)
适用于所有项目的通用编码标准。
何时启用 (When to Activate)
- 启动新项目或模块时
- 为了质量和可维护性进行代码审查(Code Review)时
- 重构现有代码以遵循规范时
- 强制执行命名、格式或结构的一致性时
- 设置 linting、格式化或类型检查规则时
- 引导新贡献者了解编码规范时
代码质量原则 (Code Quality Principles)
1. 可读性优先 (Readability First)
- 代码被阅读的次数远多于编写的次数
- 变量和函数命名应清晰明确
- 优先选择自描述代码,而非依赖注释
- 保持一致的格式化风格
2. KISS 原则 (Keep It Simple, Stupid)
- 采用最简单的可行方案
- 避免过度设计(Over-engineering)
- 不进行过早优化
- 易于理解胜过奇技淫巧
3. DRY 原则 (Don't Repeat Yourself)
- 将公共逻辑提取为函数
- 创建可复用的组件
- 在模块间共享工具函数
- 避免“复制粘贴式”编程
4. YAGNI 原则 (You Aren't Gonna Need It)
- 不要在功能被需要之前就构建它
- 避免投机性的通用设计
- 仅在必要时增加复杂性
- 从简单开始,在需要时重构
TypeScript/JavaScript 规范
变量命名 (Variable Naming)
// ✅ 优:描述性命名 const marketSearchQuery = 'election' const isUserAuthenticated = true const totalRevenue = 1000 // ❌ 劣:含义不明 const q = 'election' const flag = true const x = 1000
函数命名 (Function Naming)
// ✅ 优:动词-名词模式
async function fetchMarketData(marketId: string) { }
function calculateSimilarity(a: number[], b: number[]) { }
function isValidEmail(email: string): boolean { }
// ❌ 劣:不清晰或仅有名词
async function market(id: string) { }
function similarity(a, b) { }
function email(e) { }不可变性模式(关键) (Immutability Pattern)
// ✅ 始终使用展开运算符(Spread Operator)
const updatedUser = {
...user,
name: 'New Name'
}
const updatedArray = [...items, newItem]
// ❌ 严禁直接修改(Mutate)
user.name = 'New Name' // 劣
items.push(newItem) // 劣错误处理 (Error Handling)
// ✅ 优:完善的错误处理
async function fetchData(url: string) {
try {
const response = await fetch(url)
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
}
return await response.json()
} catch (error) {
console.error('Fetch failed:', error)
throw new Error('Failed to fetch data')
}
}
// ❌ 劣:没有错误处理
async function fetchData(url) {
const response = await fetch(url)
return response.json()
}Async/Await 最佳实践
// ✅ 优:尽可能并行执行 const [users, markets, stats] = await Promise.all([ fetchUsers(), fetchMarkets(), fetchStats() ]) // ❌ 劣:非必要的串行执行 const users = await fetchUsers() const markets = await fetchMarkets() const stats = await fetchStats()
类型安全 (Type Safety)
// ✅ 优:定义正确的类型
interface Market {
id: string
name: string
status: 'active' | 'resolved' | 'closed'
created_at: Date
}
function getMarket(id: string): Promise<Market> {
// 实现代码
}
// ❌ 劣:滥用 'any'
function getMarket(id: any): Promise<any> {
// 实现代码
}React 最佳实践
组件结构 (Component Structure)
// ✅ 优:带类型的函数式组件
interface ButtonProps {
children: React.ReactNode
onClick: () => void
disabled?: boolean
variant?: 'primary' | 'secondary'
}
export function Button({
children,
onClick,
disabled = false,
variant = 'primary'
}: ButtonProps) {
return (
<button
onClick={onClick}
disabled={disabled}
className={`btn btn-${variant}`}
>
{children}
</button>
)
}
// ❌ 劣:无类型,结构不清晰
export function Button(props) {
return <button onClick={props.onClick}>{props.children}</button>
}自定义 Hook (Custom Hooks)
// ✅ 优:可复用的自定义 Hook
export function useDebounce<T>(value: T, delay: number): T {
const [debouncedValue, setDebouncedValue] = useState<T>(value)
useEffect(() => {
const handler = setTimeout(() => {
setDebouncedValue(value)
}, delay)
return () => clearTimeout(handler)
}, [value, delay])
return debouncedValue
}
// 使用示例
const debouncedQuery = useDebounce(searchQuery, 500)状态管理 (State Management)
// ✅ 优:正确更新状态 const [count, setCount] = useState(0) // 基于先前状态的函数式更新 setCount(prev => prev + 1) // ❌ 劣:直接引用状态 setCount(count + 1) // 在异步场景下可能会由于闭包导致状态过期
条件渲染 (Conditional Rendering)
// ✅ 优:清晰的条件渲染
{isLoading && <Spinner />}
{error && <ErrorMessage error={error} />}
{data && <DataDisplay data={data} />}
// ❌ 劣:三元运算符嵌套地狱
{isLoading ? <Spinner /> : error ? <ErrorMessage error={error} /> : data ? <DataDisplay data={data} /> : null}API 设计规范 (API Design Standards)
REST API 约定 (REST API Conventions)
GET /api/markets # 列出所有市场 GET /api/markets/:id # 获取特定市场 POST /api/markets # 创建新市场 PUT /api/markets/:id # 更新市场(完整更新) PATCH /api/markets/:id # 更新市场(局部更新) DELETE /api/markets/:id # 删除市场 # 用于过滤的查询参数 GET /api/markets?status=active&limit=10&offset=0
响应格式 (Response Format)
// ✅ 优:一致的响应结构
interface ApiResponse<T> {
success: boolean
data?: T
error?: string
meta?: {
total: number
page: number
limit: number
}
}
// 成功响应
return NextResponse.json({
success: true,
data: markets,
meta: { total: 100, page: 1, limit: 10 }
})
// 错误响应
return NextResponse.json({
success: false,
error: 'Invalid request'
}, { status: 400 })输入验证 (Input Validation)
import { z } from 'zod'
// ✅ 优:模式(Schema)验证
const CreateMarketSchema = z.object({
name: z.string().min(1).max(200),
description: z.string().min(1).max(2000),
endDate: z.string().datetime(),
categories: z.array(z.string()).min(1)
})
export async function POST(request: Request) {
const body = await request.json()
try {
const validated = CreateMarketSchema.parse(body)
// 使用验证后的数据继续执行
} catch (error) {
if (error instanceof z.ZodError) {
return NextResponse.json({
success: false,
error: 'Validation failed',
details: error.errors
}, { status: 400 })
}
}
}文件组织 (File Organization)
项目结构 (Project Structure)
src/ ├── app/ # Next.js App Router (路由) │ ├── api/ # API 路由 │ ├── markets/ # 市场页面 │ └── (auth)/ # 认证页面 (路由分组) ├── c
Ships witheverything-claude-code
🌐 Language / 语言 / 語言 为 AI 智能体(Agent)框架打造的性能优化系统。源自 Anthropic 黑客松获胜作品。 这不仅仅是配置文件。它是一个完整的系统:包含技能(Skills)、本能(Instincts)、内存优化、持续学习、安全扫描以及研究优先的开发模式。这些生产级的智能体(Agents)、钩子(Hooks)、命令(Commands)、规则(Rules)以及 MCP 配置,是在构建真实产品的 10 个多月高强度日常使用中演化而来的。 适用于 Claude Code, Codex,
Get the whole plugin
Stats
1,945
Stars
317
Forks
Quiet
Maintenance
JavaScript
Language
MIT
License
6mo ago
Last commit
7mo ago
Created
Repo: xu-xiang/everything-claude-code-zh
Other skills on everything-claude-code.
Skill
Skill
Skill
article-writing
编写文章、指南、博客帖子、教程、新闻通讯(newsletter)以及其他长篇内容。这些内容具有从提供的示例或品牌指南中提取出的独特语气。当用户需要比段落更长的精美文案,且对语气一致性、结构和可信度有要求时,请使用此技能(Skill)。
Skill
Skill
backend-patterns
后端架构模式、API 设计、数据库优化以及针对 Node.js、Express 和 Next.js API 路由的服务端最佳实践。
Skill

