Issue برای ثبت باگ و کار است، Project برای برد کارهای تیم، Discussion برای سؤال باز. اینها روی GitHub زندگی میکنند، نه داخل پوشهٔ .git.
🎯 اهداف یادگیری
- Issue خوب بنویسی (بازتولید، انتظار، واقعیت)
- برچسب، مایلاستون و قالب را بچینی
- GitHub Projects v2 را به PR وصل کنی
- بدانی Discussion کی بهتر از Issue است
🐞 آناتومی Issue
## شرح ## گام بازتولید ## انتظار ## واقعیت ## نسخه / محیط ## لاگ
قانون: یک Issue = یک مشکل. «همچنین این را هم درست کنید» را Issue جدا کن و لینک بده (blocked by #12).
کلیدواژههای جادویی در PR:
Fixes #12— با merge، Issue بسته میشودRefs #12— فقط لینک
🏷️ لیبلهای مفید
bug، feat، docs، good first issue، help wanted، security، wontfix. رنگ مهم نیست؛ قرارداد مهم است.
📊 Projects v2
Projects جدید روی جدول/بورد/زمانبندی است و فیلد سفارشی دارد (تخمین، ناحیه). میتوانی با Actions وقتی PR باز شد کارت بسازی.
# در workflow: gh project item-add
در سازمانها Projects جایگزین Trello داخلی میشود چون به commit و PR وصل است.
💬 Discussions در برابر Issues
| Discussions | Issues | |
|---|---|---|
| سؤال باز | ✓ | ضعیف |
| باگ مشخص | ✓ | |
| RFC / ایده | ✓ | گاهی |
| قابل بستن با PR | ✓ |
آسیبپذیری را Issue عمومی نکن. Security → Advisories یا SECURITY.md. افشای مسئولانه اعتبار میسازد.
Junior — Fixes #n کجا کار میکند؟ در پیام کامیت پیشفرض شاخه یا بدنهٔ PR، وقتی به همان ریپو merge شود.
Senior — Projects v2 داده را کجا نگه میدارد؟ جدا از Issue؛ GraphQL API. Issue میتواند در چند Project باشد.
✅ چکلیست فهم
- قالب Issue داری
Fixes #را امتحان کردهای- Discussion را برای سؤال باز نگه میداری
فصل بعد: استراتژی شاخهبندی — GitHub Flow و دوستان.