# إدارة المشاريع على GitHub Issues مع Claude Code: خطط وبوابات وبورد

> Claude GitHub PMS هو plugin مفتوح المصدر لـ Claude Code بيحوّل GitHub Issues لنظام إدارة مشروع كامل، ومفيش issue بتتنقل من غير دليل.

*2026-10-19T12:49:02Z*

![إدارة المشاريع على GitHub Issues مع Claude Code](/uploads/sites/c345bccc-2d8f-4569-8da0-2b15a05b5151/media/gh-pms-article-ar.png)

# إدارة المشاريع على GitHub Issues مع Claude Code

لو بتخلّي Claude Code يشتغل على الـrepos بتاعتك، الشغل ده محتاج مكان يتتبع فيه. أغلب الفرق بتنتهي بأداة تانية الـagent مش شايفها، وبتبعد مع الوقت عن اللي فعلاً في الكود.

Claude GitHub PMS (واسمه المختصر gh-pms) ماشي في الاتجاه التاني: إدارة مشاريع على GitHub Issues بتتحرك من جوه Claude Code. هو plugin مفتوح المصدر بيستخدم أدوات GitHub نفسها كمصدر الحقيقة. الخطة milestone، والـfeatures والـbugs أنواع issues أصلية، والحالة على بورد Projects v2، ومفيش issue بتتنقل لقدام قبل ما الدليل يتكتب.

**الإجابة المختصرة:** نزّل الـplugin، شغّل `/gh-pms:gh-init` مرة واحدة لكل repo، وبعد كده كلّم Claude عادي. الطلبات بتتحول لـissues، والـissues بتمشي في دورة حياة ببوابات، وكل حاجة تفضل ظاهرة في تابات Issues وMilestones وProjects.

## المشكلة

أغلب الفرق بتستخدم GitHub Issues كـbacklog عادي. الحالة هي اللي حد كتبه في العنوان، و«خلصت» ممكن تبقى معناها «أظن شغّالة»، والـagent اللي بيشتغل في الـrepo معندوش تعريف مشترك لأي منهم.

لما الـagent هو اللي بيشتغل، حاجتين بتبوظ:

- **الشغل مش متتبع.** الـagent يخلّص مهمة، ومفيش issue مسجّلة إيه اللي اتغيّر واتراجع إزاي.
- **«خلصت» مجرد ادّعاء.** مفيش حاجة بتطلب دليل قبل ما الحالة تتغيّر.

## بيشتغل إزاي

### الخطط بتبقى milestones

الطلب اللي هيطلّع ثلاث features أو أكتر بيبقى **milestone** ومعاه issue متابعة (`gh-plan`). بعدها `gh-breakdown` بيعمل **sub-issues** للأبناء، ويربطها بالـmilestone ويضيفها لبورد المشروع، فشريط التقدم بيتحرك كل ما issue تتقفل.

### أدوات GitHub الأصلية الأول

- **Issue Types** (‏Feature وBug وTask) بتتحط عن طريق GraphQL لو الـorganization بتاعتك مفعّلاها. على الحسابات الشخصية أو الـorgs اللي مفيهاش، الـplugin بيرجع لـlabels من نوع `type:*`.
- **الحالة** بتتخزن في حقل `Status` في Projects v2 لو فيه project مربوط، وإلا في labels `status:*`. والاتنين بيتحدّثوا مع بعض.
- **الأهمية (Severity)** (‏critical وhigh وmedium وlow) موجودة على كل أنواع الـissues، كـlabel وكحقل في البورد.
- **العلاقات** (`depends on` و`blocks` و`related to` و`duplicate of`) بتتكتب في جسم الـissue وبتتعمل لها إشارات متبادلة في التعليقات، فتظهر في الاتنين.

### دورة حياة بتحتاج دليل

الحالات بتمشي من `todo` و`in-progress` لحد `in-review` و`done` مرورًا بالاختبار والتوثيق. الانتقال بين بعضها حر. وبعضها بوابات محتاجة تعليق دليل فيه `## Sections` محددة، معرّفة في `plugins/gh-pms/workflows/default.yaml`:

| البوابة | الانتقال | الأقسام المطلوبة |
|---|---|---|
| 1 | in-progress ← ready-for-testing | Summary وChanges (بمسارات الملفات) وVerification |
| 2 | in-testing ← ready-for-docs | Summary وResults وCoverage |
| 3 | in-docs ← documented | دليل التوثيق (بتتخطى للـbugs والـhotfixes والـtestcases) |
| 4 | documented ← in-review | Summary وQuality وChecklist وPR فيه `Closes #N` |
| 5 | in-review ← done | موافقتك أنت |

الـbugs ليها أقسام خاصة في البوابة 1: Reproduction وRoot cause وFix وRegression test. والبوابة 5 مفيش غيرك يعدّيها.

وفوق ده فيه ضوابط: issue واحدة in-progress لكل شخص، وانتظار 30 ثانية بين الانتقالات المشروطة على نفس الـissue، وسياسة branches بتمنع شغل الـfeature على `main`. والبوابة 4 كمان بترفض فتح المراجعة لو فحوصات الـPR المطلوبة فاشلة أو لسه شغّالة.

### إيه اللي في الـplugin

- **22 skill**، من `gh-init` و`gh-plan` و`gh-feature` لحد `gh-push` و`gh-triage` و`gh-metrics` و`gh-test-plan` (معدودة من مجلد `plugins/gh-pms/skills`).
- **4 hooks**: `SessionStart` بيحقن ملخص الحالة الحالية، و`UserPromptSubmit` بيصنّف الطلب، و`PreToolUse` بيمنع PR من غير `Closes #N`، و`Stop` بينبّه على الـissues الواقفة في in-progress.
- **agent منسّق واحد** لتنسيق أكتر من issue.
- **إعدادات لكل repo** في `.github/gh-pms.yaml`، تغيّر بيها الأهمية أو أقسام البوابات أو قالب الـbranch من غير ما تعمل fork.

## ابدأ إزاي

```bash
# Add the marketplace (one-time)
/plugin marketplace add fadymondy/gh-pms

# Install the plugin
/plugin install gh-pms@gh-pms
```

محتاج GitHub MCP متظبط في Claude Code، وأداة `gh`، و`jq`. ولو عايز Projects v2 شغّل كمان `gh auth refresh -s project`.

بعدها في أي repo على GitHub:

```bash
/gh-pms:gh-init                  # labels + templates only
/gh-pms:gh-init --with-project   # also create the gh-pms Projects v2 board
```

من هنا بتوصف الشغل بس. «خطّط لنقل نظام تسجيل الدخول» بيعمل milestone وsub-issues. و«صفحة الدخول بتحوّل على 404 بعد الـ2FA» بتفتح bug بنوع Bug وبأهمية.

## حدود بصراحة

- **محتاج GitHub.** مفيش backend تاني.
- **Issue Types على مستوى الـorg.** على الحساب الشخصي الـplugin بيستخدم labels.
- **البوابة بتفحص الشكل، مش الحقيقة.** بتتأكد إن الأقسام ومسارات الملفات موجودة. مش بتقدر تتأكد إن الاختبارات فعلاً نجحت، وعشان كده البوابة 5 قرار بشري.
- **جزء من الاحتكاك مقصود.** الانتظار وحد الـWIP هيبطّئوا اللي متعوّد يقفل issues بالجملة.

## أسئلة شائعة

**فريقي لازم يتعلّم أداة جديدة؟** لأ. هيكمّلوا على Issues وMilestones وبورد Projects. الـplugin بيغيّر بس طريقة إنشاء Claude Code للشغل ونقله.

**بيشتغل من غير بورد Projects v2؟** أيوه. الحالة بترجع لـlabels `status:*`. والأمر `gh-init --with-project` بيضيف البورد.

**أقدر أغيّر البوابات؟** أيوه. غيّر الأقسام أو الأهمية أو قالب الـbranch في `.github/gh-pms.yaml`.

**مفتوح المصدر؟** أيوه، بترخيص MIT.

**مبني على ToGO أو أي framework؟** لأ. هو Claude Code plugin متكوّن من skills وhooks وسكربتات shell.

## الخطوة الجاية

- اقرا ليه عملته: [ليه بنيت Claude GitHub PMS](https://fadymondy.com/ar/blog/why-i-built-claude-github-pms).
- الكود والـREADME: [github.com/fadymondy/gh-pms](https://github.com/fadymondy/gh-pms).
- ناقشه على [Product Hunt](https://www.producthunt.com/products/claude-github-pms) (إطلاق 20 أكتوبر).
- الموقع: [gh-pms.fadymondy.com](https://gh-pms.fadymondy.com).

---

Source: https://gh-pms.fadymondy.com/ar/blog/github-issues-project-management-claude-code
