بهترین شیوهها
بهترین شیوهها برای استفاده کارآمد از Claude Code، راهنمای جامع از راهاندازی پروژه تا همکاری تیمی
به کلید API نیاز دارید؟ ثبتنام ←نقاط پایانی و Base URL ←
در این صفحه
بهترین شیوهها¶
این سند تجربههای کاربران Claude Code را در توسعه واقعی گردآوری میکند. چه تازهوارد و در آغاز کار با Claude Code باشید و چه کاربری باتجربه که به دنبال افزایش بهرهوری است، در اینجا نکتههای ارزشمندی خواهید یافت.
محتوا را از مقدماتی تا پیشرفته مرتب کردهایم؛ توصیه میکنیم ابتدا یکبار کل مطلب را بخوانید و سپس بهتدریج آن را در کار روزانه خود به کار ببندید.
بهترین شیوههای راهاندازی پروژه¶
شروعی خوب نیمی از موفقیت است. پیش از نخستین استفاده از Claude Code در یک پروژه، 10 دقیقه را صرف راهاندازی کنید تا هر تعامل بعدی کارآمدتر باشد.
گام 1: ساخت CLAUDE.md¶
این مهمترین گام است. CLAUDE.md بهمنزله راهنمای پروژهای است که برای Claude مینویسید. Claude Code هنگام شروع بهطور خودکار این فایل را میخواند تا زمینه پروژه شما را درک کند.
چرا این گام تا این اندازه مهم است؟
بدون CLAUDE.md، ناچار میشوید همان نکتهها را بارها به Claude توضیح دهید:
You: Install dependencies with pnpm
Claude: Okay, running npm install...
You: Not npm, pnpm!
Claude: Sorry, running pnpm install...
با CLAUDE.md، این پایهها فقط یکبار باید گفته شوند.
نمونه قالب CLAUDE.md:
# My Project Name
## Overview
This is an e-commerce backend management system based on Next.js 15, written in TypeScript.
## Tech Stack
- Runtime: Node.js 22 LTS
- Framework: Next.js 15 (App Router)
- Styling: Tailwind CSS v4
- Database: PostgreSQL 16 + Prisma ORM
- Package Manager: pnpm 9
- Testing Framework: Vitest + Playwright
## Common Commands
- Install dependencies: `pnpm install`
- Development server: `pnpm dev` (port 3000)
- Run tests: `pnpm test`
- Lint code: `pnpm lint`
- Database migration: `pnpm prisma migrate dev`
- Production build: `pnpm build`
## Coding Standards
- Strictly use TypeScript, no `any` allowed
- React components use functional style with hooks
- Styles only use Tailwind, no inline styles or CSS files
- All API routes return `{ success: boolean, data?: T, error?: string }`
- Database queries go through the service layer, don't call Prisma directly in routes
- Commit message format: `feat:` / `fix:` / `docs:` / `refactor:` prefixes
## Project Structure
- `src/app/` — Pages and API routes (App Router)
- `src/components/` — Reusable UI components
- `src/components/ui/` — Base components (Button, Input, etc.)
- `src/services/` — Business logic layer
- `src/lib/` — Utility functions and configuration
- `prisma/` — Database schema and migration files
## Notes
- Don't manually modify files under `prisma/migrations/`
- Environment variables are in `.env.local` (not committed to Git)
- API authentication middleware is in `src/middleware.ts`
- Image assets go in `public/images/`, use next/image component for loading
استفاده از /init برای تولید سریع:
اگر نمیخواهید دستی بنویسید، با فرمان /init از Claude بخواهید پروژه شما را بهطور خودکار تحلیل کند و یکی برایتان بسازد:
/init
Claude ساختار پروژه، package.json، فایلهای پیکربندی و غیره را بررسی میکند و بهطور خودکار یک CLAUDE.md میسازد. سپس میتوانید هر قرارداد تیمی را که از قلم افتاده است بهصورت دستی اضافه کنید.
گام 2: پیکربندی .claudeignore¶
.claudeignore همانند .gitignore به Claude میگوید کدام فایلها نیازی به توجه ندارند. این کار نهتنها جستوجو را سریعتر میکند، بلکه مانع میشود Claude با فایلهای بیربط پرت شود.
# .claudeignore
# Dependency directories
node_modules/
vendor/
.venv/
# Build outputs
dist/
build/
.next/
out/
# Large data files
*.sql
*.csv
*.sqlite
data/
# Binary and media files
*.jpg
*.png
*.mp4
*.zip
# Auto-generated code
generated/
*.gen.ts
prisma/migrations/
# Logs
logs/
*.log
گام 3: توصیف ساختار پوشهها در CLAUDE.md¶
این گام اغلب نادیده گرفته میشود اما بسیار مؤثر است. وقتی Claude ساختار پوشههای شما را بفهمد، میداند فایلها را کجا بیابد و فایلهای جدید را کجا بسازد:
## Project Structure
src/
├── app/ # Next.js App Router
│ ├── (auth)/ # Pages requiring authentication
│ ├── (public)/ # Public pages
│ └── api/ # API routes
├── components/
│ ├── ui/ # Base UI components (shadcn/ui)
│ ├── forms/ # Form components
│ └── layouts/ # Layout components
├── services/ # Business logic (one file per module)
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
│ ├── auth.ts # Authentication related
│ ├── db.ts # Database connection
│ └── validators.ts # Zod schema definitions
└── types/ # TypeScript type definitions
بهترین شیوههای روزانه کدنویسی¶
پس از راهاندازی اولیه، این عادتهای روزانه به شما کمک میکند کارآمدتر کار کنید.
نیازمندیها را شفاف توصیف کنید، نه با دستورهای مبهم¶
این ابتداییترین و مهمترین اصل است. Claude ذهنخوان نیست؛ هرچه شفافتر باشید، عملکرد بهتری دارد.
| دستورهای مبهم (ناکارآمد) | توضیحات شفاف (کارآمد) |
|---|---|
| «قابلیت ورود را درست کن» | «محدودیت نرخ درخواست برای شکستهای ورود را در src/app/api/auth/login/route.ts اضافه کن: پس از 5 شکست از یک IP در بازه 5 دقیقه، به مدت 15 دقیقه قفل کن و برای نگهداری شمارش از Redis استفاده کن» |
| «کمکم کن یک کامپوننت بنویسم» | «یک کامپوننت UserAvatar در src/components/ui/ بساز. باید دو پراپ با نامهای name و imageUrl بپذیرد. وقتی تصویری ارائه نشده، حروف اول name را نمایش بده. برای آواتارهای دایرهای از rounded-full در Tailwind استفاده کن» |
| «یک باگ هست، درستش کن» | «کاربران گزارش میدهند که پس از کلیک روی صفحهبندی در صفحه فهرست محصولات، شرایط فیلتر از دست میرود. لطفاً منطق صفحهبندی را در src/app/products/page.tsx بررسی کن تا مطمئن شوی پارامترهای پرسوجوی URL در حین صفحهبندی حفظ میشوند» |
برای ارائه زمینه از ارجاعهای @ استفاده کنید¶
وقتی میخواهید Claude به فایلهای مشخصی ارجاع دهد، از نماد @ برای ارجاع مستقیم استفاده کنید؛ این روش سریعتر و دقیقتر از آن است که بگذارید خودش جستوجو کند:
Look at @src/services/order-service.ts and @src/types/order.ts,
then add a cancel order method to order-service, checking if the order status allows cancellation.
چند روش ارجاع با @:
@src/services/auth.ts # Reference a single file
@src/components/ # Reference an entire directory
@package.json # Reference a config file
@https://nextjs.org/docs # Reference online docs (will fetch content)
نکته صرفهجویی در هزینه: بهجای اینکه بگذارید Claude کل پروژه را جستوجو کند، فعالانه از
@برای ارجاع به فایلهای مرتبط استفاده کنید. وقتی Claude جستوجو میکند، فایلهای زیادی را میخواند و توکنهای اضافی مصرف میکند.
هر بار یک کار انجام دهید¶
از گنجاندن کارهای بیشازحد در یک prompt پرهیز کنید. Claude وقتی روی یک چیز تمرکز دارد بهترین عملکرد را دارد:
# Not recommended: asking for too much at once
"Add avatar upload to the user module, and while you're at it tweak the login page styles,
also add debounce to that search box, and oh, update the password reset email template too."
# Recommended: do it step by step
Step 1: "Add avatar upload to UserProfile component, use S3 for storage"
Step 2: "Update login page styles, refer to @docs/design-spec.md for the design"
Step 3: "Add 300ms debounce to the search box using a custom hook"
Step 4: "Update password reset email template, match the style of @src/templates/welcome.html"
پیش از تغییر، بگذارید Claude بخواند¶
هنگام کار با کد موجود، اینکه ابتدا Claude کد را بفهمد و سپس تغییرات را انجام دهد بسیار مؤثرتر از پریدن مستقیم به تغییرات است:
# Step 1: Understand first
"Read @src/services/payment-service.ts and explain the current payment flow processing logic,
especially error handling and retry mechanisms. Don't modify any code."
# Step 2: Plan next
"Based on your understanding, I want to add WeChat Pay as a payment channel.
Please create a modification plan, listing what needs to be changed."
# Step 3: Execute modifications
"The plan looks good, let's start. Modify payment-service.ts first."
برای کارهای پیچیده از حالت Plan Mode استفاده کنید¶
برای کارهای بزرگ که چندین فایل را در بر میگیرند، از حالت Plan Mode استفاده کنید (برای تغییر حالت، Shift+Tab را فشار دهید) تا Claude ابتدا یک برنامه بسازد:
[Plan Mode]
I need to add an RBAC (Role-Based Access Control) permission system to the existing system.
Currently users only have admin and user roles. I need to support custom roles and fine-grained permissions.
Please analyze the existing code first and create a detailed implementation plan.
Claude یک برنامه گامبهگام تولید میکند. پس از تأیید شما، به حالت عادی برگردید و گامبهگام اجرا کنید.
از /clear و /compact خردمندانه استفاده کنید¶
این دو فرمان ابزارهای ضروری مدیریت زمینه هستند:
/compact # Compress current conversation history, keeping key information, freeing up context space
/clear # Completely clear conversation history, start fresh
# When to use:
# - Switching to a completely different task → /clear
# - Same task but conversation is too long → /compact
# - Feeling Claude's responses are getting worse (context overload) → /compact
# - Just finished one feature, starting the next → /clear
اصل مهم: وقتی موضوع را عوض میکنید، حتماً ابتدا /clear کنید. زمینه قدیمی باقیمانده باعث هدر رفتن توکنها میشود و ممکن است با پاسخهای Claude تداخل کند.
بهترین شیوههای بازبینی کد¶
Claude Code نهتنها میتواند کد بنویسد، بلکه میتواند در بازبینی آن نیز به شما کمک کند.
استفاده از دستور /review¶
تغییرات فعلی Git را بهسرعت بازبینی کنید:
/review
Claude همه تغییرات کامیتنشده را بررسی میکند و مشکلات بالقوه را مشخص میکند:
- خطاهای منطقی و حالتهای مرزی
- نگرانیهای امنیتی (تزریق SQL، XSS و غیره)
- مشکلات کارایی
- سبک کدنویسی ناهماهنگ
- نبود مدیریت خطا
از Claude بخواهید برای تأیید تغییرات تست بنویسد¶
پس از تغییر کد، از Claude بخواهید تستهایی برای تأیید بنویسد:
I just modified the cancel order logic in @src/services/order-service.ts.
Please write unit tests for this method, covering the following scenarios:
1. Normal cancellation of an unshipped order
2. Attempt to cancel a shipped order (should fail)
3. Cancel a non-existent order
4. Concurrent cancellation of the same order
جریان کاری بازبینی چندمرحلهای¶
برای تغییرات مهم کد، میتوانید بازبینیهای چندمرحلهای انجام دهید:
# Round 1: Overall review
"Review the latest changes to @src/services/payment-service.ts,
focusing on security and error handling."
# After making changes based on feedback, round 2:
"Please review the modified code again, this time focusing on performance and edge cases."
# Round 3 (optional): Comparison review
"Compare the code before and after changes to confirm all issues are fixed and no new problems were introduced."
بهترین شیوههای اشکالزدایی¶
رفع باگ یکی از نقاط قوت Claude Code است. تسلط بر رویکرد درست اشکالزدایی به Claude کمک میکند مشکلات را سریعتر پیدا کند.
ارائه لاگهای کامل خطا¶
فقط آخرین خط پیام خطا را به Claude نشان ندهید؛ زمینه کامل را ارائه دهید:
Got an error when running pnpm build, full error log below:
```
Type error: Argument of type 'string | undefined' is not assignable
to parameter of type 'string'.
Type 'undefined' is not assignable to type 'string'.
> 42 | const user = await getUser(session.userId)
| ^^^^^^^
43 | return NextResponse.json(user)
```
This error occurs in @src/app/api/user/route.ts.
I suspect it's a session type definition issue, please check.
اشکالزدایی گامبهگام: ابتدا تشخیص، سپس رفع¶
برای رفع مستقیم توسط Claude عجله نکنید؛ ابتدا از آن بخواهید تشخیص دهد:
# Step 1: Diagnose
"Users report that they occasionally get redirected to a 404 page after logging in.
Please check @src/middleware.ts and @src/app/(auth)/layout.tsx,
and analyze what might be causing this issue. Don't modify code yet."
# Step 2: Confirm the cause, then fix
"Your analysis makes sense—it's indeed a redirect logic issue when the session expires.
Please fix this issue and add appropriate error logging to help with future troubleshooting."
کمک گرفتن از اسکرینشاتها¶
Claude Code از خواندن اسکرینشاتها پشتیبانی میکند، که بهویژه برای باگهای مرتبط با UI مفید است:
Look at this screenshot @screenshot.png—the last column text in the table is being cut off.
Please check the styles in @src/components/DataTable.tsx and fix this issue.
در ترمینال، میتوانید مستقیماً تصویری را به ناحیه ورودی Claude Code بکشید و رها کنید و Claude Code آن را بهطور خودکار پردازش میکند.
بهترین شیوههای گردشکار Git¶
Claude Code بهطور عمیق با Git یکپارچه شده است. استفاده از این قابلیتها مدیریت نسخه را آسانتر میکند.
به Claude اجازه دهید پیامهای کامیت را بهصورت خودکار تولید کند¶
Claude تغییرات کد شما را تحلیل میکند و پیامهای کامیت استاندارد را بهصورت خودکار تولید میکند:
Commit these changes
توجه: /commit یک فرمان داخلی Claude Code نیست (در فهرست رسمی فرمانهای داخلی وجود ندارد). فقط زمانی کار میکند که شما یا یک افزونه، یک فرمان یا مهارت سفارشی ارائه دهید. در غیر این صورت، کافی است از Claude بخواهید با زبان طبیعی کامیت کند.
پیامهای کامیت تولیدشده معمولاً شامل این موارد هستند:
- پیشوند نوع تغییر (feat، fix، refactor و غیره)
- توضیح مختصر تغییر
- دامنه تأثیرگرفته
اگر از پیام تولیدشده بهصورت خودکار راضی نیستید، میتوانید درخواست تغییر دهید:
Commit these changes
# Claude's generated message not good enough?
"Please make the commit message more detailed, explaining why this logic was changed"
شاخههای ویژگی + گردشکار PR¶
گردشکار پیشنهادی:
# 1. Create feature branch
git checkout -b feature/order-cancel
# 2. Start Claude Code development
claude
# 3. Multiple small commits during development
> "Implement basic order cancellation logic"
> Commit these changes
> "Add cancel reason field and validation"
> Commit these changes
> "Add unit tests for order cancellation"
> Commit these changes
# 4. Finish development, create PR
> Create a Pull Request for the current branch, summarize all commit changes, generate a standardized PR description
از تغییرات مستقیم در شاخه main خودداری کنید¶
# Add this rule in CLAUDE.md:
## Git Standards
- All modifications must be done on feature branches, don't modify main branch directly
- Branch naming: feature/xxx, fix/xxx, refactor/xxx
- Run `pnpm lint && pnpm test` before committing to ensure everything is fine
پس از نوشتن این موارد در CLAUDE.md، Claude بهطور خودکار از این قواعد پیروی میکند. اگر بهطور تصادفی از Claude بخواهید کد را در شاخه main تغییر دهد، ابتدا به شما یادآوری میکند که یک شاخه ایجاد کنید.
بهترین شیوههای همکاری تیمی¶
هنگام استفاده از Claude Code در یک تیم، استانداردهای یکپارچه همکاری را روانتر میکنند.
استانداردهای CLAUDE.md را به اشتراک بگذارید¶
CLAUDE.md را در مخزن Git کامیت کنید تا اعضای تیم پیکربندی یکسان پروژه را به اشتراک بگذارند:
# CLAUDE.md in project root → commit to Git
git add CLAUDE.md
git commit -m "docs: add CLAUDE.md project configuration"
# Personal preference configs → put in .claude/CLAUDE.md, add to .gitignore
echo ".claude/CLAUDE.md" >> .gitignore
CLAUDE.md تیمی باید شامل این موارد باشد:
- توضیح پشته فناوری و معماری پروژه
- استانداردهای کدنویسی و قراردادهای نامگذاری
- فرمانها و اسکریپتهای رایج
- توضیح ساختار دایرکتوری
- توافقهای تیمی (راهبرد شاخهبندی، استانداردهای کامیت، فرایند بازبینی)
فایل شخصی .claude/CLAUDE.md میتواند شامل این موارد باشد:
- ترجیحات شخصی کدنویسی
- قطعهکدهای رایج
- پیکربندی خاص محیط توسعه
بازبینی PR را استاندارد کنید¶
استانداردهای بازبینی PR را در CLAUDE.md تعریف کنید تا Claude بازبینیهای یکدست انجام دهد:
## PR Review Standards
When reviewing code, check the following aspects:
1. **Functional correctness**: Does it fully implement the requirements?
2. **Error handling**: Are edge cases covered?
3. **Security**: Any risks of SQL injection, XSS, permission bypass?
4. **Performance**: Any unnecessary database queries or memory leaks?
5. **Test coverage**: Do new code changes have corresponding tests?
6. **Code style**: Does it conform to project standards?
7. **Documentation**: Do public APIs have JSDoc comments?
یکدستی سبک کد¶
سبک کد یکپارچه را از طریق CLAUDE.md اعمال کنید:
## Code Style
- Naming: Components use PascalCase, functions/variables use camelCase, constants use UPPER_SNAKE_CASE
- File names: Component files use PascalCase (e.g., UserAvatar.tsx), others use kebab-case
- Import order: React → third-party libraries → internal modules → types → styles
- Maximum function length: 50 lines, split if exceeded
- Define interface when component props exceed 3
خلاصه نکات پیشرفته¶
در ادامه چند نکته پیشرفته آورده شده است که کاربران باتجربه گردآوری کردهاند:
دستورهای اسلش سفارشی¶
قالبهای دستور سفارشی را در پوشه .claude/commands/ بسازید:
# .claude/commands/review-security.md
Please conduct a security review of the following code, focusing on:
1. SQL injection risks
2. XSS attack surface
3. CSRF protection
4. Completeness of permission checks
5. Whether sensitive data is encrypted
6. Whether sensitive information is leaked in logs
Review scope: $ARGUMENTS
هنگام استفاده:
/review-security @src/app/api/
تغییرات هماهنگ چندفایلی¶
وقتی باید چند فایل را همزمان تغییر دهید، دید کلی روشنی به Claude بدهید:
I need to add a coupon feature to the order system, involving the following files:
- @src/types/coupon.ts — new, define coupon types
- @src/services/coupon-service.ts — new, coupon business logic
- @src/services/order-service.ts — modify, apply coupon during checkout
- @src/app/api/coupons/route.ts — new, coupon API
- @prisma/schema.prisma — modify, add Coupon model
Please handle them in the order above, and tell me after completing each file.
استفاده از Extended Thinking¶
برای تصمیمهای معماری پیچیده، اجازه دهید Claude از Extended Thinking استفاده کند:
[Using Opus model]
I'm considering migrating the current REST API to GraphQL.
Please analyze the pros and cons in depth, considering the following factors:
1. Migration cost for existing 50+ API endpoints
2. Benefits of frontend query optimization
3. Changes in caching strategy
4. Team learning curve
5. Integration plan with existing React Query
No need to write code, give me a detailed technical analysis report.
از Claude بخواهید تغییرات خودش را بررسی کند¶
عادت کنید که Claude تغییرات خودش را بررسی کند:
After completing the modifications, please:
1. Run pnpm lint to check for formatting issues
2. Run pnpm test to confirm existing tests still pass
3. If there are type errors, fix them yourself
دامهای رایج¶
در پایان، چند روش است که باید از آنها پرهیز کنید:
| دام | رویکرد درست |
|---|---|
| چسباندن کل محتوای فایل در گفتگو | برای ارجاع، از @file path استفاده کنید |
| درخواست از Claude برای انجام 5 کار در یک prompt | هر بار یک کار انجام دهید و آن را به بخشهای کوچکتر بشکنید |
| مبهم بودن در توصیف الزامات | فایلها، رفتارها و نتایج مورد انتظار را بهطور مشخص ارائه دهید |
| استفاده نکردن از CLAUDE.md | 10 دقیقه صرف نوشتن آن کنید تا بعداً ساعتهای بیشماری صرفهجویی کنید |
| هرگز استفاده نکردن از /clear یا /compact | هنگام تغییر موضوع از /clear و وقتی گفتگو طولانی است از /compact استفاده کنید |
| تغییر دادن توسط Claude بدون درک قبلی | ابتدا کد را بخوانید، سپس برنامهریزی و بعد اجرا کنید |
| استفاده از Opus برای همه کارها | برای کارهای روزمره از Sonnet و فقط برای تصمیمهای پیچیده از Opus استفاده کنید |
| تلاش مکرر برای اجرای دوباره همان دستور هنگام شکست | رویکرد دیگری را امتحان کنید و زمینه بیشتری ارائه دهید |
تسلط بر این بهترین روشها زمان میبرد. توصیه میکنیم با بنیادیترین نکات شروع کنید: CLAUDE.md را بسازید، الزامات را روشن توصیف کنید و هر بار فقط یک کار انجام دهید. همین سه نکته بهتنهایی تجربه شما را بهطور چشمگیری بهتر میکند. هرچه عمیقتر از آن استفاده کنید، بهتدریج تکنیکهای پیشرفتهتر را به کار ببرید.
با QCode شروع کنید
یک کلید API برای Claude Code، Codex و بیشتر — بر اساس توکن، قیمت هر مدل در qcode.cc/models