آیا تا به حال سعی کردهاید به دوست غیرفنی خود توضیح دهید که یک درخواست pull چیست و دیدهاید که چشمانش مانند یک تسمه نقاله Krispy Kreme خیره شدهاند؟ حالا تصور کنید که به آنها بگویید یک هوش مصنوعی نهتنها میتواند repo شما را درک کند، بلکه میتواند PRها را برای شما باز کند. به سال 2025 خوش آمدید، جایی که ویرایشگر کد شما کمی کمکخلبان، کمی راننده صندلی عقب و - اگر آن را درست تنظیم کنید - یک کارآموز کاملاً مناسب است.
این راهنما به شما نشان میدهد که چگونه <b translate="No">GitHub</b> را به <b translate="No">Claude Code</b> متصل کرده و درخواستهای pull را به طور خودکار تولید کنید. ما با راهاندازی گام به گام، گردشکارهای دنیای واقعی و چند چاله برای اجتناب، از "ها؟" به "Ship it" خواهیم رفت. شما <b translate="No">GitHub</b> را سیمکشی میکنید، به <b translate="No">Claude Code</b> اجازه میدهید ببیند چه خبر است و آن را وادار میکنید PRهایی را باز و بهروزرسانی کند که میتوانید بدون اینکه احساس کنید با شیطان الگوریتمی معامله کردهاید، واقعاً ادغام کنید.
توجه: در اینجا دو مسیر اصلی را خواهید دید - استفاده از یکپارچهسازی <b translate="No">GitHub Actions</b> <b translate="No">Claude Code</b> و استفاده از سرورهای <b translate="No">Model Context Protocol (MCP)</b> برای دسترسی ایمن و محدود <b translate="No">Claude</b> به APIهای <b translate="No">GitHub</b>. کدام را باید انتخاب کنید؟ اگر کمک <b translate="No">PR</b> آماده و سریع را مستقیماً در <b translate="No">GitHub</b> میخواهید، مسیر <b translate="No">Actions</b> بهترین گزینه شما است. اگر کنترل repo محلی و مبتنی بر چت با مجوزهای دقیق میخواهید، <b translate="No">MCP</b> ابزار قدرتمند شما است.
آنچه میسازیم
- <b translate="No">GitHub</b> را به طور ایمن به <b translate="No">Claude Code</b> متصل کنید.
- به <b translate="No">Claude</b> اجازه دهید repo شما را تجزیه و تحلیل کند، تغییرات را پیشنهاد دهد و PRها را باز کند.
- بررسیها، برچسبها، چکلیستها و حتی commitهای بعدی را خودکار کنید.
- محافظهایی را اضافه کنید تا کل monorepo شما را به "final_final_v2" تغییر نام ندهد.
چرا این مهم است
زیرا تغییر context مالیات بهرهوری است که هیچکس به آن رای نداده است. هوش مصنوعی که میتواند یک PR را با همان دقتی باز کند که از یک توسعهدهنده junior انتظار دارید (در روز خوبش) یک صرفهجویی واقعی در زمان است. نه برای جایگزینی انسانها - آرام باشید - بلکه برای جایگزینی بخشهای "اه، boilerplate" مهندسی.
مسیر A: تولید خودکار <b translate="No">PR</b>ها با <b translate="No">GitHub Actions</b> <b translate="No">Claude Code</b>
اگر تمام روز را در داخل <b translate="No">GitHub</b> زندگی میکنید (به این جمع بپیوندید)، این مسیر یک بات به شما میدهد که میتواند کد را در issues و <b translate="No">PR</b>ها تجزیه و تحلیل کند، تغییرات را پیشنهاد دهد و حتی <b translate="No">PR</b>ها را باز یا بهروزرسانی کند - درست از repo شما.
آنچه شما نیاز دارید
- یک repo <b translate="No">GitHub</b> که آن را کنترل میکنید (یا یک شاخه که میتوانید بدون گریه کردن آن را خراب کنید).
- دسترسی admin repo برای پیکربندی <b translate="No">Actions</b> و secrets.
- یک کلید API <b translate="No">Claude</b> اگر action یا workflow شما به آن نیاز دارد.
مرحله 1: فعال کردن <b translate="No">GitHub Actions</b> در repo خود
- به repository خود → <b translate="No">Settings</b> → <b translate="No">Actions</b> → <b translate="No">General</b> بروید.
- "(Allow all actions and reusable workflows" را فعال کنید (یا اگر افراد امنیتی شما از قبل به شما چشم غره میروند، به actions تأیید شده سازمان خود محدود کنید).
مرحله 2: افزودن یک workflow <b translate="No">Claude Code</b>
با یک trigger مبتنی بر workflow مورد نظر خود، .github/workflows/claude-pr-bot.yml را ایجاد کنید. در اینجا دو الگوی رایج وجود دارد:
گزینه 1: <b translate="No">PR</b>های مبتنی بر issue
- هنگامی که یک issue را با یک برچسب ویژه (به عنوان مثال، ai-pr) باز میکنید، workflow اجرا میشود.
- prompt issue (به عنوان مثال، "Add dark mode toggle") را میخواند، یک شاخه جدید ایجاد میکند، فایلها را با استفاده از <b translate="No">Claude</b> ویرایش میکند، commitها را push میکند و یک PR را با یک خلاصه دقیق باز میکند.
گزینه 2: ویرایشهای مبتنی بر comment در یک <b translate="No">PR</b> موجود
- هنگامی که comment میگذارید @claude please refactor the settings modal، workflow اجرا میشود.
- diff را تجزیه و تحلیل میکند، تغییرات را پیشنهاد میدهد و بهروزرسانیها را به شاخه PR push میکند.
Workflow استارتر (طرح کلی)
name: <b translate="No">Claude PR Bot</b>
on:
issues:
types: .
- یک راهنمای سریع در مورد یکپارچهسازی و موارد استفاده، دیدی کلی از آنچه عاقلانه است در تیمهای واقعی خودکار کنید (و آنچه نیست) به شما میدهد.
- اگر یک یادگیرنده بصری هستید، این walkthrough <b translate="No">PR</b>های هوش مصنوعی تولید شده به طور خودکار را در عمل، از ابتدا تا انتها، نشان میدهد.
مسیر B: اتصال <b translate="No">GitHub</b> به <b translate="No">Claude Code</b> از طریق <b translate="No">MCP</b> (برای کاربران قدرتمند محلی)
اگر میخواهید <b translate="No">Claude</b> با context repo محلی شما کار کند - فایلهای موجود در دستگاه شما، شاخههایی که در حال دستکاری آنها هستید، دستوراتی که به آنها اعتماد دارید - <b translate="No">MCP</b> یک پل دارای مجوز به شما میدهد. آن را به عنوان یک دربان برای repo خود در نظر بگیرید: تصمیم میگیرد که <b translate="No">Claude</b> کدام درها را میتواند باز کند.
آنچه شما نیاز دارید
- <b translate="No">Claude Desktop</b> یا یک یکپارچهسازی IDE که از ابزار <b translate="No">MCP</b> پشتیبانی میکند.
- یک سرور <b translate="No">GitHub MCP</b> که به صورت محلی اجرا میکنید، که با یک token که محدودیتهایی را برای دامنهها تعیین میکند، پیکربندی شده است.
- یک <b translate="No">personal access token (PAT)</b> با فقط دامنههایی که واقعاً به آن نیاز دارید (به عنوان مثال، repo:status، public_repo، pull_request write).
مرحله 1: دریافت یک سرور <b translate="No">GitHub MCP</b>
- یک سرور رسمی open‑source وجود دارد که عملیات انتخاب شده API <b translate="No">GitHub</b> را در معرض دید قرار میدهد (جستجوی issues، ایجاد شاخهها، باز کردن <b translate="No">PR</b>ها و غیره). قابل پیکربندی است، بنابراین شما فقط آنچه را که نیاز دارید فعال میکنید، که همچنین سردرگمی هوش مصنوعی را کاهش میدهد و امنیت را خوشحال نگه میدارد. برای مشاهده گستردهتری از سرورهای <b translate="No">MCP</b> و نمونهها، دایرکتوری مرکزی را بررسی کنید.
مرحله 2: پیکربندی کلاینت خود برای صحبت با سرور
- در فایل پیکربندی کلاینت خود (به عنوان مثال، یک پیکربندی JSON برای برنامه هوش مصنوعی خود)، سرور <b translate="No">GitHub MCP</b> را ثبت کنید، token خود را از طریق متغیرهای محیطی به آن منتقل کنید و repoهای مجاز را whiteliste کنید.
- نکته حرفهای: token را در keychain سیستم خود یا یک فایل dotenv قرار دهید، نه در فایل پیکربندی خود. به مثال هشداردهنده در all‑hands بعدی خود تبدیل نشوید.
مرحله 3: تست سطح ابزار
- از <b translate="No">Claude</b> بخواهید issues باز را فهرست کند، یک فایل خاص را بخواند یا یک شاخه ایجاد کند. تأیید کنید که نمیتواند کاری را انجام دهد که صریحاً اجازه ندادهاید.
- فقط پس از اینکه دستورات اساسی را بررسی کردید، باید create_pull_request را فعال کنید.
مرحله 4: اجازه دهید <b translate="No">Claude</b> یک PR را پیشنهاد و باز کند
- مثال prompt: "در repo org/app-frontend، یک شاخه جدید feat/dark-toggle ایجاد کنید، یک toggle settings برای حالت تاریک در SettingsPanel.tsx پیادهسازی کنید، تستها را بهروزرسانی کنید و یک PR را با یک چکلیست برای QA باز کنید."
- سرور هماهنگ میکند: وضعیت repo را میخواند، تغییرات را مینویسد (اگر ابزارهای فایل محلی را پیکربندی کرده باشید)، یک شاخه را push میکند، یک PR را با قالب شما باز میکند و یک خلاصه را پست میکند.
صحبت واقعی: محافظهایی که واقعاً به آنها نیاز دارید
- اجراهای خشک فقط خواندنی: قبل از دسترسی نوشتن، <b translate="No">Claude</b> را وادار کنید یک diff متحد (git diff) تولید کند. پس از اینکه آن را بررسی کردید، ادغام کنید.
- بدنه PRهای قالببندی شده: یادداشتهای خطر، برنامههای تست و مراحل rollout را وارد کنید. بات را وادار کنید قالب را تکمیل کند؛ انسانها را وادار کنید آن را بررسی کنند.
- قوانین برچسبگذاری: به طور خودکار برچسبهایی مانند ai-generated و needs-tests را اعمال کنید تا همه چیز قابل کشف و صادقانه باقی بماند.
- نامگذاری شاخه: با قوانین حفاظت از شاخه، یک پیشوند (ai/ یا bot/) لازم دارید. رباتها هم به لباس فرم نیاز دارند.
زمان حکایت: من از یک هوش مصنوعی خواستم که "auth bug را رفع کند". با حذف احراز هویت آن را "رفع" کرد. عالی برای بهرهوری! وحشتناک برای تقریباً هر چیز دیگری. دامنهها را محدود، prompts را خاص و تستهای CI را mean نگه دارید.
از صفر تا <b translate="No">PR</b>: یک سناریوی واقعی end‑to‑end
سناریو: رفع تست debounce ناپایدار در یک پروژه <b translate="No">React</b>
- شما یک issue را باز میکنید: "Debounce util: flake on 200ms boundary in CI." آن را با ai-pr برچسب میزنید.
- <b translate="No">Workflow</b> فعال میشود. debounce.ts و تستهای مربوطه را جستجو میکند.
- <b translate="No">Claude</b> یک diff را پیشنهاد میکند: تایمرها را با jest.useFakeTimers تنظیم میکند، یک margin را در asserts اضافه میکند، docs را بهروزرسانی میکند.
- بات یک PR را با: عنوان، خلاصه، منطق، طرح تست و رتبهبندی ریسک باز میکند.
- شما diff را بررسی میکنید، push back: "Edge case when delay=0."
- شما comment میگذارید @claude handle delay=0 with immediate flush; add test. Workflow دوباره اجرا میشود، یک commit را push میکند.
- <b translate="No">CI</b> پاس میشود. شما squash و merge میکنید. در جایی، یک تست ناپایدار فریاد میزند "عمو".
prompts خوب چگونه به نظر میرسند (و از چه چیزی باید اجتناب کرد)
- عالی: "Add a dark mode toggle to SettingsPanel.tsx; persist to localStorage; update SettingsPanel.test.tsx; follow our ESLint rules; modify only /src/ui/ and /src/utils/; 250 lines max."
- متوسط: "Implement dark mode."
ایمنسازی آن: بررسی سریع امنیت و انطباق
- دامنههای token: در صورت نیاز فقط از repo:contents write استفاده کنید؛ pull_request write را برای ایجاد PR ترجیح دهید.
- allowlist repository: بات را به یک repo یا سازمان واحد قفل کنید.
- Logging: اطمینان حاصل کنید که بات actions و prompts خود را ثبت میکند (منهای secrets). وقتی <b translate="No">Dockerfile</b> شما را "بهبود" میدهد، به مدرک نیاز خواهید داشت.
- حفاظتهای شاخه: برای شاخههای ai/* به دو تأیید انسانی نیاز دارید.
عیبیابی: وقتی بات bot نمیشود
- نمیتواند شاخهها را push کند: مجوزهای <b translate="No">Actions</b> را برای contents: write بررسی کنید و مطمئن شوید که token شما دسترسی نوشتن repo را دارد.
- <b translate="No">PR</b>های خالی را باز میکند: context builder شما فایلهای صحیح را به آن نمیدهد. منطق انتخاب فایل خود را محکم کنید.
- در repoهای بزرگ تایم اوت میشود: context را به مسیرهای تغییر یافته یا یک manifest محدود کنید. هوش مصنوعی در monorepoهای 10 گیگابایتی دچار سوء هاضمه میشود، درست مانند بقیه ما.
- قالب PR شما را نادیده میگیرد: تأیید کنید که قالب در .github/pull_request_template.md است یا در تنظیمات repo شما پیوند داده شده است.
چه زمانی از کدام مسیر استفاده کنیم
- اگر یک روش سبک وزن برای تولید خودکار PRها از issues یا comments میخواهید، در حالی که همه چیز در <b translate="No">GitHub</b> اتفاق میافتد، از <b translate="No">GitHub Actions</b> استفاده کنید.
- اگر میخواهید <b translate="No">Claude</b> در محیط محلی شما یا در چندین ابزار با کنترلهای بسیار خاص عمل کند، از <b translate="No">MCP</b> استفاده کنید.
شایان ذکر است: اگر میخواهید یک بررسی سریع برای تأیید درستی workflow داشته باشید یا یک prompt استارتر محکم تولید کنید، <b translate="No">Sider.AI</b> میتواند به شما در پیشنویس قالبهای PR و prompts guardrail کمک کند، سپس با قطعههای واقعی repo بر روی آنها تکرار کنید. این مانند داشتن یک ویرایشگر صاحب نظر است که در واقع کد مینویسد. و صندلی میز شما را نمیدزدد. الگوهای رایجی که میخواهید کپی کنید
- برچسبهای <b translate="No">AI PR</b> و <b translate="No">CODEOWNERS</b>: <b translate="No">PR</b>های ai/* را به یک گروه بررسی مسیردهی کنید که از بحث و جدل با رباتها لذت میبرند.
- commitهای گام به گام: از <b translate="No">Claude</b> بخواهید commitهای کوچک و اتمی را با پیامهای واضح به جای یک commit بزرگ به نام "stuff" ایجاد کند.
- حالت تست اول: workflow را وادار کنید ابتدا تستها را تولید کند، <b translate="No">CI</b> را اجرا کند، سپس پیادهسازی را تولید کند. کندتر است. بهتر است.
- کارهای بعد از ادغام: یک workflow را برای باز کردن خودکار یک issue بعدی برای docs، feature flags یا cleanup اضافه کنید.
یک بررسی سریع رقابتی
- برخی از افراد LLMهای دیگر را به جریانهای مشابه <b translate="No">GitHub</b> متصل میکنند. آنها کار میکنند - اما استدلال کد <b translate="No">Claude Code</b> و تمایل به گفتن "مطمئن نیستم" میتواند ساعتها حدس و گمان را برای شما صرفهجویی کند. یکپارچهسازی <b translate="No">GitHub Actions</b> آن را درست در جایی که بررسیها به طور طبیعی اتفاق میافتد نگه میدارد و مسیر <b translate="No">MCP</b> برای کاربران قدرتمند انعطافپذیر است.
چکلیست راهاندازی 10 دقیقهای
- یک مسیر را انتخاب کنید: <b translate="No">GitHub Actions</b> (سریعتر) یا <b translate="No">MCP</b> (کنترل بیشتر).
- token خود را با دامنههای حداقل ایجاد کنید.
- workflow را اضافه کنید یا سرور <b translate="No">MCP</b> را پیکربندی کنید.
- یک context builder محکم بسازید: لیستهای فایل، محدودیتها و قوانین.
- حفاظتها و برچسبها را اضافه کنید.
- ابتدا روی یک تغییر کوچک تست کنید. ادغام کنید. جشن بگیرید. به PM خود بگویید "توان عملیاتی را مقیاسبندی کردهاید."
مراجع سریعی که باید دم دست داشته باشید
- مستندات <b translate="No">GitHub Actions</b> <b translate="No">Claude Code</b> (الگوها، triggerها، مثالها).
- راهنمای عملی یکپارچهسازی و بهترین شیوهها.
- Video walkthrough: <b translate="No">PR</b>های تولید شده با هوش مصنوعی end to end.
- سرور <b translate="No">GitHub MCP</b> برای دسترسی دقیق و دارای مجوز.
- دایرکتوری سرورهای <b translate="No">MCP</b> و مثالها برای الهام.
نتیجهگیری <b translate="No">Stern</b>
خودکارسازی <b translate="No">PR</b>ها با <b translate="No">Claude Code</b> جایگزین تیم مهندسی شما نخواهد شد. این جایگزین کمترین کارهای مورد علاقه تیم مهندسی شما خواهد شد. با دامنههای محدود، prompts واضح و بررسیهای دقیق شروع کنید. اجازه دهید بات داربست را مدیریت کند در حالی که شما فکر کردن را مدیریت میکنید. سپس به کارهای سرگرمکننده برگردید - مانند حذف نهایی فایل utils2.ts که از آن اجتناب میکردید زیرا فقط میدانید که برنامه را با چسب نواری و رویاها در کنار هم نگه میدارد.
حالا بروید و آینده خود را کمی کمتر بدخلق کنید. و اگر بات سرکش شد؟ شما میدانید که دکمه Revert کجا زندگی میکند.
سوالات متداول
Q1: آیا <b translate="No">Claude Code</b> میتواند به تنهایی درخواستهای pull را باز کند؟
بله. با <b translate="No">GitHub Actions</b> یا یک راهاندازی <b translate="No">MCP</b>، <b translate="No">Claude Code</b> میتواند یک شاخه ایجاد کند، تغییرات را push کند و یک درخواست pull را با یک خلاصه و چکلیست باز کند. مجوزها را محدود نگه دارید و بررسی انسانی را الزامی کنید تا امنیت شما را با حذف آن "بهینه" نکند.
Q2: امنترین راه برای اتصال <b translate="No">GitHub</b> به <b translate="No">Claude Code</b> چیست؟
از tokens با حداقل دامنه، allowlistهای repository و حفاظتهای شاخه استفاده کنید. چه با <b translate="No">Actions</b> بروید و چه با <b translate="No">MCP</b>، اجراهای خشک را فعال کنید و قبل از ادغام هر درخواست pull تولید شده توسط هوش مصنوعی، نیاز به گذراندن تستها داشته باشید.
Q3: چگونه از دست زدن <b translate="No">AI PR</b>ها به کل monorepo خود جلوگیری کنم؟
context را با دایرکتوریهای allowlist شده و یک manifest فایل محدود کنید و تعداد فایلها را در هر اجرا محدود کنید. prompts خوب هم کمک میکنند - در مورد مسیرها و محدودیتهای اندازه خاص باشید.
Q4: چرا درخواستهای pull هوش مصنوعی من خالی یا کم کیفیت هستند؟
context builder شما ممکن است فایلهای اشتباه یا جزئیات بسیار کمی را به <b translate="No">Claude</b> تغذیه کند. اهداف، محدودیتها و انتظارات تست واضح را ارائه دهید - و یک جریان دو pass را در نظر بگیرید: ابتدا تستها را تولید کنید، سپس پیادهسازی را.
Q5: آیا باید از <b translate="No">GitHub Actions</b> یا <b translate="No">MCP</b> برای <b translate="No">Claude Code</b> استفاده کنم؟
اگر اتوماسیون سریع و بومی repo برای PRها و بررسیها میخواهید، از <b translate="No">GitHub Actions</b> استفاده کنید. اگر به کنترل محلی، ابزارهای سفارشی یا مجوزهای دقیق نیاز دارید، <b translate="No">MCP</b> قدرت بیشتری به شما میدهد - با کمی راهاندازی بیشتر.