الحاجات اللي ضفتها بعد ما شغّلت الـ setup ده على شغل حقيقي
الخلاصةأي setup بيشتغل في الـ demo بيقع في جلسة طويلة. اللي صلّح ده: ملف handoff عشان خلاص الـ context ما يضيّعش عليك الجلسة، فهرس ذاكرة متقسّم بالموضوع عشان يتقري فعلاً، مكان شغل معزول لكل تاسك، قاعدة إن مفيش حاجة تتقال من غير ما تتشاف، sweep بعد كل تغيير، وhooks لأي حاجة لازم تحصل كل مرة من غير استثناء.
…
لازم أقرا التمن حلقات الأول ولا أقدر أبدأ من هنا؟
تقدر تقراه لوحده، بس هيبقى أوضح بعد السلسلة. كل حاجة هنا هي حل لمشكلة مش هتقابلك غير لما الـ setup الأساسي يبقى شغال على شغل حقيقي — لو لسه ما عملتش الـ vault وملف القواعد وعادة الـ memory، المشاكل دي لسه ما وصلتلكش.
ده مخصوص Claude Code ولا لأ؟
لأ. الست حاجات دول patterns مش features. ملف الـ handoff ده ملف عادي. مكان الشغل المعزول ده git worktree. قاعدة التأكد دي سطر في ملف القواعد. بتشتغل مع أي AI بيقرا ويكتب ملفات وبينفّذ أوامر.
لو هعمل حاجة واحدة بس منهم، أعمل إيه؟
اعمل ملف الـ handoff. أرخص واحد فيهم، وهو الوحيد اللي بيوفّرلك جلسة كاملة مش دقايق. الباقي تحسين؛ ده الفرق بين إنك تضيّع شغل نص يوم وإنك ما تضيّعوش.
قاعدة زي «اتأكد قبل ما تقول» مش واضحة لوحدها؟
واضحة، وبرضه بتتنسي — مني ومن الـ AI. وده بالظبط سبب إنها لازم تتكتب كقاعدة مش تتساب كمنطق سليم. القيمة مش في الفكرة، القيمة إنها في الملف اللي الـ AI بيقراه قبل ما يعمل أي حاجة.
التمن حلقات بنوا نظام: vault، وgraph، وmemory، وقواعد، وskills، وagents، وMCPs. وكله شغال. وأنا شغّال بيه على شغل production حقيقي من ساعتها — مشاريع عملاء، وdeploys، وحاجات بتقع الساعة تلاتة بالليل وبتكلّف فلوس.
وست حاجات وقعت. مش القطع نفسها — القطع تمام. اللي وقع هو كل اللي حواليها لما الجلسات بقت طويلة، والشغل بقى بالتوازي، والمسؤولية بقت حقيقية.
دي اللي ضفتها.
الجلسة بتخلص وبتاخد معاها كل حاجة
أول حاجة وجعت: الجلسة الطويلة بتتملي. تكون قاعد تلات ساعات بتبني context — جربت إيه، وقع إيه، وليه اخترت الطريقة دي — وفجأة مفيش مساحة. تبدأ من الأول، يبقى ضاع كله. تشرح تاني، يبقى ضيّعت عشرين دقيقة بتأسّس حاجة الـ AI كان عارفها من ساعة.
الحل بسيط لدرجة محرجة: ملف handoff الجلسة بتحدّثه وهي شغالة.
ملف واحد، في جذر المشروع، فيه خمس أقسام: الهدف، الوضع الحالي، اللي خلص، اللي شغال دلوقتي، واللي فاضل. القاعدة إنه يتحدّث وإنت ماشي، مش في الآخر — لأن «في الآخر» هي بالظبط اللحظة اللي مش فاضلك فيها مساحة تكتبه.
وبعدين لما الجلسة تتملي، تنزّل آخر حاجتين فيه، تبدأ جلسة جديدة، والجديدة تقرا الملف ده الأول. فبتكمّل من نص الفكرة مش من الصفر.
الحتة اللي الناس بتغلط فيها إنهم بيعاملوه كملخّص بيتكتب لما تخلص. وهو مش كده. ده ملف حيّ بيصادف إنه بيشتغل كملخّص كمان. لو هتكتبه في الآخر بس، هتكتبه في أسوأ وقت ممكن.
ملف الذاكرة كبر لدرجة إن محدش بقى يقراه
الحلقة التالتة كانت عن إنك تدّي للـ AI بتاعك ذاكرة — تسجّل اللي اتعلمته، تعمل فهرس، وتحمّله الجلسة الجاية. ده شغال تمام لحد ما الفهرس يطوّل.
بتاعي طوّل. والفهرس الطويل ليه مشكلة محدش بيحذّرك منها: بيبطّل يتقري. مش بقصد — بس لما الفهرس يبقى ضخم، تحميله بياكل المساحة اللي كنت محتاجها للشغل نفسه، فبيتقري بسرعة أو بيتخطّى، وترجع لـ AI ما بيعرفش عنك حاجة.
الحل إنك تقسّم الفهرس بالموضوع وتحمّل بس اللي يخص الشغل اللي في إيدك. فهرس رئيسي قصير بيعدّد المواضيع، وتحته فهارس منفصلة لكل مجال — واحد للـ database والـ infrastructure، وواحد للـ deploys، وواحد للـ frontend، أو أي مجالات إنت فعلاً بتشتغل فيها.
حاجتين غلطت فيهم أول مرة. الأولى إني عملت خانة «متنوّع». ما تعملهاش. إنت عمرك ما هتعرف إنك محتاج الملف المتنوّع، فعمره ما هيتفتح — الفكرة كلها في فهرس الموضوع إن اسمه هو اللي بيقولك إمتى تقراه. التانية إني حاولت أصغّر الفهرس الرئيسي بإني أشيل الشرح. ده ما بيشتغلش: الحجم أصلاً في اللينكات نفسها. الفهرس الكبير ما بيتصلّحش بالتقليم، بيتصلّح بالتقسيم.
تاسكين في مكان شغل واحد بيخرّبوا على بعض
أول ما تبقى بتعمل أكتر من حاجة في نفس الوقت — ومع الـ agents ده هيحصل — النسخة الواحدة بتبقى مشكلة. تاسك بيغيّر branch وتاسك تاني في نص تعديل. إعدادات من ده بتسرّب لده. وبتعمل commit لحاجة ما كنتش قاصدها لأنها كانت قاعدة هناك.
الحل: مكان شغل معزول لكل تاسك. git بيديك ده على طول بالـ worktrees — مجلد منفصل، بـ branch خاص بيه، وبيشارك نفس تاريخ الـ repository. النسخة الرئيسية تفضل نضيفة وللقراءة بس؛ مفيش commit بيطلع منها أبداً.
والقاعدة اللي بتثبّت ده إنك تتأكد إنت على أنهي branch قبل كل commit، مش بعده. بتبان زيادة عن اللزوم لحد أول مرة تنقذك من commit على branch غلط.
واثق وغلط
دي اللي كلّفتني أكتر حاجة، وهي أصلاً مش عن الـ AI.
التعليمات بتوصف الدنيا. وهي مش دليل على الدنيا. لو ملف القواعد بتاعك بيقول إن خدمة معيّنة اتلغت، ده كلام حد كتبه مرة — مش إثبات إنها ملغية دلوقتي. أنا اتعلمت دي لما اشتغلت على ملاحظة زي دي وقفلت أدوات تلات مواقع شغالة كانت معتمدة عليها.
فبقى في قاعدة في أول ملف القواعد بتاعي، فوق كل حاجة: قبل ما تقول على حاجة إنها قديمة أو مش مستخدمة أو بايظة أو غلط — روح شوفها.
عملياً ده معناه شوية عادات محدّدة. الرد الحيّ بيكسب ملف الإعدادات: اللي السيرفر بيرجّعه فعلاً هو الحقيقة، واللي مكتوب على الديسك ده نيّة. اتأكد من المجموعة كلها قبل ما تقول إن فيه استثناء — «سبعة من التمنية غلط» غالباً معناها «التمنية كلهم على نمط أنا ما فهمتوش». واتأكد من مخرجاتك إنت كمان، لأن أمر بيطبع «تمام» ده مش إثبات إنه نجح؛ اتأكد بطريقة مستقلة.
وأهمهم: لو ما تقدرش تتأكد، قول كده، وقول إيه اللي هيحسمها. «الدوكيومنتيشن بيقول كذا، وأنا ما وصلتش للسيرفر، شغّل الأمر ده عشان تتأكد» — دي مفيدة. أما «الحاجة دي بايظة» بنفس الأدلة دي، فدي مجرد تخمين واثق.
إصلاح في مكان واحد، والتسع أماكن اللي نسيتهم
بتغيّر اسم حقل. الكود بيتبني. الاختبارات بتعدّي. بتنزّله.
وبعدين بيقع، لأن الحقل ده كان كمان في ملف إعدادات، وفي CI workflow، وفي job مجدول، وفي الدوكيومنتيشن، وفي ملف env نموذجي، وفي مشروع تاني بيقرا من نفس الـ database.
الحل عادة مش أداة: بعد كل تغيير، مشّط كل اسم لمسته على كل حاجة — كود، وإعدادات، وCI، وjobs مجدولة، وmonitoring، ودوكيومنتيشن، ومشاريع مجاورة. مرة واحدة، بكل الأسماء مع بعض.
والنسخة اللي فعلاً بتشتغل من دي إنك تقول النتيجة بصوت عالي: مشّطت الأسماء دي على الأماكن دي، ما لقيتش حاجة — أو لقيت تلاتة وصلّحتهم. لو ما قلتش النتيجة، يبقى ما عملتش الـ sweep. سهل جداً إنك تنوي تتأكد وبعدين ما تتأكدش.
وفي نسخة أكبر من نفس الفكرة: البج اللي اتبلّغ ده عيّنة، مش العيب كله. حد بيبلّغ عن صفحة واحدة بايظة. دي حالة واحدة من فصيلة. دوّر على السبب، وبعدين دوّر على كل مكان تاني نفس السبب موجود فيه، وصلّح الفصيلة كلها في مرة واحدة. غير كده هتصلّح نفس البج أربع مرات كمان بأربع بلاغات مختلفة.
في حاجات ما ينفعش تسيبها للذاكرة
آخر واحدة: في حاجات لازم تحصل كل مرة من غير استثناء، و«الـ AI غالباً بيفتكر» دي مش كفاية.
القواعد والـ skills دي تعليمات — كويسة جداً، وبتتنفّذ في أغلب الوقت. وأغلب دي هي المشكلة لما الحاجة تبقى «ما تعملش commit لـ secret» أو «شغّل الفحص ده قبل الـ deploy».
للحاجات دي استخدم hooks — أتمتة الأداة نفسها بتشغّلها، على trigger، سواء حد فتكر ولا لأ. مش بيتطلب منها تعمل الحاجة؛ هي بتحصل وخلاص.
الخط اللي أنا بحطّه: لو نسيانها مزعج، القاعدة تكفي. لو نسيانها غالي أو ما ينفعش يترجع فيه، لازم تبقى hook. وتأكد إن الـ hooks بتاعتك فعلاً بتشتغل — hook بيشاور على أداة مش متثبّتة بيفشل في صمت وشكله بالظبط زي hook ناجح. البوابة اللي محدش شافها بتشتغل ولا مرة، دي مش بوابة.
إنت بتكسب إيه فعلاً
ولا واحدة من الست دول بتضيف قدرة. كل واحدة فيهم بتشيل طريقة كان النظام بيقع بيها في صمت:
الجلسات الطويلة بطّلت تضيّع الـ context بتاعها.
الذاكرة فضلت شغالة وهي بتكبر بدل ما تتحوّل لحاجة محدش بيقراها.
الشغل المتوازي بطّل يخرّب على نفسه.
الكلام بقى بيتشاف قبل ما حد يشتغل عليه.
الإصلاح بقى بيوصل كل مكان محتاجه، مش بس المكان اللي البلاغ جه منه.
والحاجات اللي لازم تحصل دايماً، بقت بتحصل دايماً.
وده الفرق الحقيقي بين setup بيبان حلو في الـ demo وsetup تقدر تشغّله على شغل بيفرق. التمن حلقات بيدّوك النظام. ودي اللي بيتطلبها عشان يفضل واقف وهو شايل حِمل حقيقي.
إزاي ده مرتبط بباقي الإعداد
كل واحدة من دول بتصلّح حتة معيّنة من اللي السلسلة بنته. ملف الـ handoff هو اللي بيخلي الذاكرة تعدّي حدود الجلسة بدل ما تعيش جوه واحدة بس. وتقسيم الفهرس هو اللي بيخلي نفس الذاكرة دي تفضل قابلة للاستخدام وهي بتكبر. والـ worktrees هي اللي بتخلي الـ agents آمنة إنها تشتغل بالتوازي بدل ما تبقى طريقة تخرّب بيها مكان شغلك. وقاعدة التأكد وعادة الـ sweep الاتنين مكانهم ملف القواعد، لأن ده الملف اللي الـ AI بيقراه قبل ما يعمل أي حاجة. والـ hooks هي الطبقة اللي تحت الـ skills — للمجموعة الصغيرة من الحاجات اللي أهم من إنها تتساب لتعليمات أصلاً.
ولو لسه ما بنيتش الأساس، ابدأ من الإعداد وارجع هنا لما يبقى شغال. دي المشاكل اللي بتيجي بعد ما النظام يشتغل — وده مكان كويس إنك تكون فيه.