انتقل إلى المحتوى الرئيسي

الوحدة 13 — سير العمل اليوميّ: استكشاف، تصحيح، اختبار، مراجعة، تسليم

وضعت الوحدات السابقة اللبنات: أوامر slash، وskills، وصلاحيّات، وhooks، وسب-agents، وMCP، وplugin. يبقى تسلسلها. تجمع هذه الوحدة وصفات يوم مطوّر مُجهَّز في Kiosque: فهم قاعدة غير معروفة، وإصلاح خلل انطلاقًا من trace، وممارسة TDD، وإعادة الهيكلة، والمراجعة، وفتح PR وتركها تُصلح نفسها. الخيط الناظم تذكرة واحدة في Kiosque، من الصباح حتّى تخضرّ الـPR.

قاعدة الممارسات الفضلى

كلّ الوصفات التالية تخضع لقاعدة واحدة من best-practices.md: أعطِ Claude ضابطًا يستطيع تشغيله بنفسه، اختبارات، أو build، أو lint، أو لقطة شاشة قابلة للمقارنة. من دون هذا الضابط، تصبح عبارة «يبدو أنّه انتهى» الإشارة الوحيدة، وتصير أنت حلقة التحقّق. مع الضابط، تتوقّف الجلسة حين يمرّ الأخضر. ثلاث وضعيّات تُكمل: استكشِف، خطِّط، برمِج (وضع plan حين يكون النطاق غامضًا، وشيفرة مباشرة لتصحيح خطأ إملائيّ) ؛ قدّم سياقًا دقيقًا (@fichier، لقطة ملصوقة، نمط قائم)؛ صحّح بسرعة أو انطلق من جديد (تصحيحان دون أثر أفضل من /clear يعقبه prompt أفضل صياغةً).

فهم Kiosque في ربع ساعة

تصل إلى المستودع صباح الاثنين. Claude أسرع من مسح يدويّ:

cd kiosque
claude
أعطني نظرة عامّة على هذا المستودع في صفحة واحدة:
التقنيّات، والتقسيم، ونقاط الدخول، والدَّين المرئيّ.
ثمّ اشرح سير طلب واحد، من طلب HTTP
إلى الدفع، مع الإشارة إلى الملفّات والدوالّ الرئيسة.

تابع بأسئلة ضيّقة، كما تسأل مهندسًا أقدم: «كيف يتحدّث notifications.py إلى Twilio؟» و«لماذا يستدعي create_order الدالّة _lock_menu() في السطر 87؟». إجراءان تقنيّان يُغيّران الحياة على قاعدة أكبر: تشغيل claude من المجلّد الفرعيّ المعنيّ (app/ لواجهة API) كي لا يُحمَّل سوى CLAUDE.md ذات الصلة، وتفويض الاستكشاف إلى سب-agent (use a subagent to investigate ...) كي لا تملأ خمسون قراءة سياقك الرئيس. يُكمل large-codebases.md بـ claudeMdExcludes، وقواعد Read(...) لرفض dist/ أو build/، وplugin ذكاء برمجيّ حين يكون للّغة خادم LSP.

تصحيح خلل انطلاقًا من trace

تُحوِّل لك ليا الـtrace: الدفع يفشل متقطّعًا في الطلبات فوق 50 EUR. لا تُملِ الحلّ، بل صِف العَرَض، ومكانه المرجَّح، ومعنى «مُصحَّح»:

العَرَض: POST /commandes/{id}/payer يُعيد 502 نحو مرّة كلّ عشر
على السلال > 50 EUR. الـtrace:
[الصق الـtrace]

المسار المرجَّح في app/paiements.py، حول timeout الخاصّ بـ Stripe.
اكتب أوّلًا اختبارًا يُعيد إنتاج المشكلة، ثمّ صحّح،
ثمّ أعِد تشغيل make test. هاجم السبب الجذريّ، لا تُخفِ الخطأ.

ثلاثة عناصر مهمّة: الاختبار أوّلًا يُغلق الحلقة (لدى Claude ضابط يشغّله)، و**«السبب الجذريّ»** صريح (وإلّا لفَّ try/except حول العَرَض)، والـمؤشّر (paiements.py، وtimeout لـStripe) يوفّر عشر قراءات لا لزوم لها. ثلاثة اختصارات ينبغي معرفتها: Esc يقطع Claude محافظًا على السياق، وEsc Esc (أو /rewind) يفتح قائمة checkpoint لاستعادة المحادثة، والشيفرة، أو الاثنين، و/clear يُعيد التهيئة بين مهمّتَين غير مترابطتَين.

TDD على notifications.py

يوم الثلاثاء، تُضيف قناة SMS احتياطيّة. تعني TDD هنا: الاختبار أوّلًا، ثمّ الشيفرة، ثمّ ضابط قابل للتنفيذ للتحقّق. يعطي common-workflows.md الإطار — امزجه مع skill /tests-cibles من الوحدة 6 لعدم تشغيل سوى ما يتّصل بالـdiff:

أضِف دالّة envoyer_sms_secours(commande) في app/notifications.py:
تنطلق إن حصل timeout > 5 ث على Twilio، فتنتقل إلى المزوّد B.
أوّلًا، اكتب اختبارات الوحدة في tests/test_notifications.py
(timeout Twilio، ردّ OK للـB، إخفاقان متتاليان).
ثمّ نفّذ، ثمّ شغّل /tests-cibles حتّى ينجح كلّ شيء.

يكتب Claude الاختبارات، ويفشل عن قصد، ويبرمج، ويُعيد. لا تنظر إلّا إلى نهاية الحلقة. لضابط أوسع — «يجب أن يستجيب المسار في أقلّ من 200 ms على 10 آلاف صفّ» —، مرّ عبر /goal: مُقيِّم منفصل يُعيد التحقّق من الشرط بعد كلّ دور حتّى الحلّ. لضابط يجب أن ينطلق دائمًا، فضِّل Stop hook يحجب نهاية الدور ما دام make test أحمر (يرفع Claude Code الـhook بعد ثمانية حجوب متتالية).

إعادة الهيكلة دون كسر

يوم الأربعاء، يريد كريم تنظيف commandes.py. أمران يتكاملان:

  • /simplify هي skill تنظيف: أربعة agents متوازون يبحثون عن إعادة استعمال وتبسيطات وربح كفاءة ومستويات تجريد سيّئة — دون البحث عن أخطاء.
  • /code-review (بديل: /review) هي skill مراجعة تصحيحيّة على الـdiff الجاري أو هدف مُمرَّر (pr#، فرع، مسار). تقبل مستوى low أو medium أو high أو xhigh أو max أو ultra، وعلمَين: --fix لتطبيق التصحيحات و--comment لنشر الملاحظات تعليقات inline على GitHub. بلا مستوى، تُعيد استخدام آخر مستوى low..max مكتوب، حتّى في جلسة سابقة؛ أمّا ultra فلا يستعمل ولا يُعدّل ذلك المستوى.

تسلسل نموذجيّ: /simplify app/commandes.py، ثمّ التصديق على التنظيفات، ثمّ /code-review high --fix. يُعيد Claude قراءة الـdiff، ويُطبّق التصحيحات التي يعدّها موثوقة، ويقدّم تقريرًا.

المراجعة النظيرة على طريقة Kiosque

ترفض نادية الدمج دون رأي ثانٍ. ثلاث درجات، من الأخفّ إلى الأثقل:

  1. /code-review محلّيّ. skill مضمَّنة، تعمل في سب-agent يعمل في الخلفيّة بنافذة سياقه الخاصّة. التصحيحات المطبَّقة بـ--fix داخل سب-agent في الخلفيّة لا تلتقطها checkpoints — استعمل git للتراجع، لا /rewind.
  2. /code-review ultra. يُطلق ultrareview في sandbox سحابيّ، مقارنًا فرعك بالفرع الافتراضيّ إضافةً إلى التغييرات المحلّيّة staged وunstaged. على PR في github.com، يُهيّئ --post النشر من حساب GitHub الخاصّ بك. يتطلّب حساب claude.ai ولا يتوفّر عبر Bedrock وVertex AI وMicrosoft Foundry.
  3. مراجعة الشيفرة المُدارة (معاينة بحثيّة). خطط Team وEnterprise، غير متوفّرة إن كان Zero Data Retention مُفعَّلًا. أسطول agents يُحلِّل كلّ PR وينشر مكتشفاته تعليقات inline مُصنَّفة بالخطورة (أحمر Important، أصفر Nit، بنفسجيّ Pre-existing). المُفعِّلات لكلّ مستودع: Once after PR creation وAfter every push وManual. افرض عبر @claude review (مرّة) أو @claude review always (اشتراك بالـpushes). خصِّص عبر CLAUDE.md (سياق عامّ، مخالفات تُعامَل نيتًا) وREVIEW.md في الجذر (تعليمات لعملاء المراجعة فقط).

في Kiosque، احتفظ بـ/code-review high --fix محلّيًّا قبل كلّ push، ثمّ اترك الخدمة المُدارة تُعالج الـPR. ينتهي check run دائمًا بنتيجة محايدة؛ لتحويل «Important واحد على الأقلّ» إلى بوّابة، حلّل السطر القابل للقراءة الآليّة في نهاية الخرج بـgh وjq.

فتح الـPR وتركها تُصلح نفسها

يوصي common-workflows.md بختم الجلسة بـcommit وPR. صيغتان ممكنتان:

commit برسالة وصفيّة، وافتح PR

أو خطوة خطوة:

لخِّص التغييرات التي أجريتها على وحدة الدفع
أنشِئ pr

يربط Claude Code الجلسة بالـPR حين تُنشَأ الـPR بـgh pr create (أو glab mr create)؛ ستجد الجلسة بعد ذلك عبر claude --from-pr 1234 — يقبل مُنتقي /resume رابط الـPR أيضًا.

بمجرّد فتح الـPR، يُطلق /autofix-pr جلسة Claude Code على الويب تراقب فرعك: عند كلّ إخفاق CI أو تعليق مراجعة جديد، يُحقّق Claude ويدفع تصحيحًا حين تكون الطريق واضحة. يكتشف الأمر PR المفتوحة للفرع الجاري عبر gh pr view — لمراقبة PR أخرى، افعل checkout لفرعها أوّلًا. prompt اختياريّ يُضيّق النطاق، مثلًا /autofix-pr only fix lint and type errors. يتطلّب الأمر gh ووصولًا إلى Claude Code على الويب؛ ويجب تثبيت تطبيق GitHub الخاصّ بـClaude على المستودع.

سلوك في سلسلة

تُنشَر ردود Auto-fix من حسابك على GitHub وقد توقظ أتمتات مربوطة بـissue_comment (Atlantis وTerraform Cloud وActions مخصّصة). راجِع ما يجري على هذا الحدث قبل التفعيل على مستودع حسّاس.

التحقّق النهائيّ: /verify و/run

skillان مضمَّنتان تختمان اليوم: /verify يبني التطبيق ويُشغّله ويراقب النتيجة — بعد الاختبارات والتحقّق من الأنواع؛ و/run يشغّله من دون التحقّق حتمًا. يكتب /run-skill-generator ملفّ SKILL.md لكلّ مشروع يُعلِّم /run و/verify كيف يُقلعان التطبيق من بيئة نظيفة. منذ v2.1.215، لا يعمل /verify إلّا عند استدعائك له. في Kiosque: /run-skill-generator مرّةً، ثمّ يختم /verify كلّ PR.

الـIDE والويب والمتصفّح

ثلاث سطوح تمتدّ بـClaude Code خارج الطرفيّة:

  • VS Code. تُقدِّم الإضافة لوحة رسوميّة، ومراجعة الخطط قبل الموافقة، و@-mentions مع نطاق أسطر (Option+K / Alt+K يُدرج @fichier#L5-L10)، وسجلًّا وتبويبات متوازية. Cmd+Esc / Ctrl+Esc يبدّل بين المحرِّر والـprompt. يُرسَل التحديد تلقائيًّا — لاستبعاده على ملفّ حسّاس، أضِف قاعدة Read بالرفض. من طرفيّة خارجيّة، يربط /ide بين Claude Code وIDE المفتوح.
  • JetBrains (IntelliJ وPyCharm وWebStorm وGoLand…). يُطلق plugin Claude Code [Beta] الأمر claude في الطرفيّة المدمَجة، ويفتح الـdiffs في العارض الأصيل، ويشارك التحديد، ويقرأ التشخيصات عبر mcp__ide__getDiagnostics. اختصارات: Cmd+Esc / Ctrl+Esc، وCmd+Option+K / Alt+Ctrl+K لإدراج @src/auth.ts#L1-99. في وضع acceptEdits، تنبّه: يستطيع الـplugin تعديل ملفّات تهيئة IDE تنفيذيّة تلقائيًّا.
  • Claude Code على الويب. claude --cloud "…" يُنشئ جلسة سحابيّة تستنسخ الفرع الجاري من remote GitHub — ادفع commits أوّلًا. --teleport أو /teleport (بديل /tp) يُعيد جلسة سحابيّة إلى الطرفيّة بعد التحقّق (git نظيف، نفس المستودع، الفرع مدفوع، نفس حساب claude.ai). /remote-control (بديل /rc) يعرِض الجلسة المحلّيّة للقيادة من claude.ai أو تطبيق الموبايل. لا تخلط: --cloud يُنشئ في السحابة، و--remote-control يعرِض محلّيًّا.

لاختبار واجهة Kiosque، يربط /chrome بين Claude وChrome أو Edge أو Chromium (Brave وArc وVivaldi وOpera) عبر إضافة Claude in Chrome 1.0.36+. الإطلاق المباشر بـ claude --chrome، والتفعيل الدائم عبر /chrome > Enabled by default. تسجيل الدخول بـ/login على خطّة مباشرة — مزوّدو طرف ثالث وWSL مستثنون. في وضع plan، تمرّ الاستدعاءات القرائيّة دون تأكيد؛ أمّا النقر والكتابة والتنقّل وتسجيل GIF فتتطلّب موافقة.

فخّ شائع: المراجعة «بلا مِرساة»

مراجعة مفتوحة جدًّا (/code-review بلا مستوى، بلا هدف، على diff ضخم) مُكلفة وتُنتج كثيرًا من nits لا يتوافق مع طبيعة المشروع. حركتان: ثبِّت المرساة بمستوى صريح (/code-review high أوّل مرّة على PR، لتثبيت المرجع)؛ أطِّر بـREVIEW.md في الجذر جانب الخدمة المُدارة — أعِد ضبط الخطورة، سقفًا أقصاه خمس nits لكلّ مراجعة، استبعِد ما تفرضه CI أصلًا، اطلب التقارب بعد أوّل مراجعة («انشر Important فقط لاحقًا»).

الخلاصة

  • ضابط قابل للتنفيذ يُغلق الحلقة: اختبارات، وbuild، وlint، ولقطة — الفارق بين جلسة تراقبها وأخرى تتركها تعمل.
  • ثلاثيّة استكشِف، خطِّط، برمِج تمنعك من حلّ المسألة الخطأ؛ وضع plan مفيد حين يكون النطاق غامضًا، ولا لزوم له لخطأ إملائيّ.
  • يجب طلب السبب الجذريّ صراحةً في prompt إصلاح الأخطاء، وإلّا لفَّ Claude العَرَض بـtry/except.
  • /code-review هو المرجع محلّيًّا؛ و**/simplify** ينظّف دون البحث عن أخطاء؛ و**ultra** يرفع المحرّك إلى السحابة؛ وتنشر الخدمة المُدارة تعليقات مُصنَّفة بالخطورة في معاينة بحثيّة.
  • /autofix-pr يُفوِّض صيانة PR إلى السحابة، ويتطلّب gh وتطبيق GitHub الخاصّ بـClaude.
  • سطوح IDE والويب وChrome تمتدّ بالـCLI: /ide يوصل المحرِّر، و--cloud و/teleport ينقلان الجلسة بين المحلّيّ والسحابة، و/chrome يختبر الواجهة فعلًا.

الوحدة التالية: الوضع غير التفاعليّ، وCI مع GitHub Actions، وAgent SDK — إخراج Claude من الطرفيّة ليعمل ليلًا، وفي Actions، وفي Python.