كل جلسة Claude Code تنتهي وتنسى: أي حل رفضناه ولماذا، أي خطأ أُصلح وكيف، وأين وقف العمل. DevLog يلتقط ذلك من ثلاثة أسطر في نهاية الرد، ويردّه لكلود قبل أن يكرّر الخطأ نفسه، ويوقفه عند اللحظات المهمة: لا إصدار وخلفه عمل مفتوح، ولا مكتبة تُثبَّت بلا فحص — في لوحة محلية على جهازك، بدون سطر تكتبه بنفسك.
الجلسة تنتهي والسياق يتبخر معها. تفتح المشروع بعد أيام ولا أنت ولا كلود تتذكرون أين وقفتم.
«نرجع لها لاحقاً» تُقال في جلسة، وتُنسى في التي بعدها. لا أحد يحاسب أحداً.
بق مكتشف لم يُصلَّح، خطوة خطة لم تكتمل — والإصدار خرج للناس لأن لا شيء اعترض طريقه.
كلود لم يحضر النقاش الذي حسم القرار؛ يقرأ الكود فقط — والسبب ليس في الكود.
لا أوامر تحفظها، لا ملفات تكتبها، وسجلّك لا يدخل مستودعك. أنت تعمل مع كلود كالمعتاد.
البروتوكول يصل لكلود تلقائياً مع بداية كل جلسة، فيختم عمله بأسطر مثل -(built) و-(todo) و-(bug fix) #7.
عند نهاية كل رد، يقرأ DevLog التاقات ويرسلها للسيرفر المحلي. صفر ضجيج في سياق المحادثة؛ سجلّك يعيش في مجلد بيانات DevLog الخاص، لا في مستودعك.
افتح 127.0.0.1:7777 وشاهد كل مشاريعك: النشاط، الخطط، الإصدارات، الثغرات — تتحرك أمامك أولاً بأول عبر WebSocket.
أدوات التتبع المعتادة تدوّن وتتفرج. DevLog يفرض الانضباط على كلود نفسه — ١٩ حارساً يرفضون بدل أن يحذّروا؛ هذه ثلاثة منها.
-(built) نظام تسجيل الدخول ✓-(done) #14
zod@3.23.8 — أحدث مستقرة ناضجة، نظيفة في OSVكلود أنهى عملاً يطابق مهمة مفتوحة ولم يغلقها؟ الرد يُرفض حتى يغلقها. حاول أحد إطلاق إصدار وخلفه عناصر مفتوحة أو اختبارات لم تنجح؟ الأمر يُعترض قبل أن يُنفذ. حاول كلود تثبيت مكتبة بلا استشارة؟ يُحجب الأمر ومعه النسخة الآمنة الموصى بها — أحدث مستقرة عمرها 7 أيام فأكثر ونظيفة في OSV. هكذا لا يضيع شيء — ليس لأن أحداً انتبه، بل لأن النظام لا يسمح.
كل مشروع يلمسه كلود يظهر تلقائياً: ما بُني، ما فُتح، ما أُغلق — بتحديث لحظي بلا refresh.
خطة بمراحل وخانات اختيار، تتحدّث عبر الجلسات: كلود يقول «أنجزت الخطوة» فتنقلب ☑ في اللوحة.
فحص مدمج عبر قاعدة OSV.dev — بلا مفتاح API وبلا خدمة خارجية — مع كشف التبعيات غير المباشرة.
npm وcrates.io وPyPI وGo وPackagist — يقارن نسخك بآخر إصدار رسمي ويحذرك من الأحدث من 7 أيام.
يكفي -(release): يشغّل DevLog فحوص مشروعك نفسها (typecheck وlint والاختبارات) في الخلفية، ويسجّل الإصدار حين تنجح. ثم يكتب تقريره، ويرقّي رقم النسخة في manifest مشروعك، ويشغّل خطوات ما بعد الإصدار التي عرّفتها (نسخ الشجرة إلى المستودع العام ثم البناء). أي فشل يصلك في الرد التالي، والتراجع عن إصدار خاطئ ممكن.
مع بداية كل جلسة يُحقن سياق مضغوط: ما أُنجز سابقاً وما زال مفتوحاً — فلا يعيد كلود اختراع ما بناه أمس.
كل تعديل يجريه كلود مسجّل بفرقه الكامل — لكل ملف، لكل جلسة، قابل للمراجعة من اللوحة.
تقارير وتحليلات وخطط تُكتب كـMarkdown وتُقدَّم كـHTML منسّق — بدون أن يكتب كلود صفحة ويب بيده.
كل قدرة يراها المستخدم تُسجَّل سطراً بلغة غير تقنية، ويتولّد من الجرد تقرير عميل أنيق تشاركه من اللوحة متى شئت.
كلود يسأل «هل مررنا بهذا من قبل؟» فيستلم القرارات والإصلاحات المخزنة في نفس الدور — وبقٌ جديد يشبه بقاً مغلقاً يستدعي إصلاحه القديم تلقائياً.
«ما الذي يتكرر انكساره؟» — محضر بكل بق وثغرة عبر التاريخ بأعمارها وملفاتها، ودراسة كاملة تُحفظ مستنداً يقيس التقدم منذ سابقتها. كل إصلاح يُغلق بسببه ومعه صنف الخلل من قائمة ثابتة (شرط، توقيت، صمت عند الفشل…) فيبان أي نوع يتكرر، وخطأ عاد بعد إصلاحه يُربط بالقديم بعلامة ⟲.
قواعد تُلتقط من تصحيحاتك، وتُسحب حسب اللغة أو نوع التطبيق حين تطلبها أنت فقط — كلود لا يسحبها من نفسه، فلا تشوّش على مشروع لا تناسبه. القاعدة المكتوبة داخل مشروع تبقى فيه، وبادئة global: ترفعها لكل مشاريعك — فلا يعيد كلود الخطأ نفسه في مشروع آخر.
-(ask:why) يعطي كلود تاريخ الملف كاملاً — غرضه، القرارات التي شكّلته، كل بق مسّه وكيف انتهى — قبل أي تعديل كبير. و-(ask:map) يرتّب الملفات حسب من يعتمد عليها.
أول ما يلمس كلود ملفاً يعتمد عليه خمسة ملفات فأكثر يُستوقف مرة: «هذا جدار حامل — هذا ما فوقه». لا تمنع الهدم؛ تمنع الهدم بلا وعي.
-(ask:recent) خلاصة الجلسات السابقة بالزمن: تاقاتها، ملفاتها، أوامرها وما فشل منها. ومع كل دفعة يُحفظ طلبك الحرفي، فـ«ليش انطلب هذا؟» له جواب من كلامك أنت.
بعد دفعة تغلق عناصر، همسة واحدة تطلب المنعطفات فقط: نهج فشل، اتجاه تغيّر، تأجيل متعمد — وتُختم بختم الدليل: ادعاء بلا أثر في الجلسة يوسم «بلا سند».
صفحة لكل مكتبة في مشروعك: لماذا هي هنا، وصفها الرسمي، وحالتها الأمنية. تجاوز أي تحذير يُسجَّل بند أمان مفتوح — لا يُمحى.
أي نموذج يفتح أخطاء أكثر، وأيهم إصلاحاته تثبت، ومن يسلّم بلا اختبار — أرقام من عملك الحقيقي، وكل تاق يحمل اسم من كتبه.
فاعلية كل قاعدة قبل/بعد، عدّاد صدّ لكل حارس (يفرّق الساكت عن الميت)، وختم «مسنود/بلا أثر» على كل ادعاء «سويت» — بلا أي ذكاء اصطناعي مدمج.
القديم يُؤرشف مضغوطاً، والتراجع يحفظ نسخة أولاً — وإن تعذّر الحفظ رُفض الحذف. صدّر أي مشروع ملفاً واحداً واستورده على جهاز آخر.
انقل مجلد المشروع أو غيّر اسمه ويبقى تاريخه معه. ونسخة من المجلد، أو مجلدان بنفس الاسم، يصيران مشروعين منفصلين لا يختلط سجلّهما — عبر رقم عشوائي في .devlog/project.json لا يدخل git.
كل بياناتك على جهازك. السيرفر يستمع على 127.0.0.1 فقط — لا شيء يخرج للإنترنت.
Bun ومكتبات Node المدمجة فقط. لا سلسلة توريد تقلق منها، ولا حزمة مجهولة تفحصها.
لا تسجيل، لا تتبّع، لا سحابة. الاتصالات الخارجية الوحيدة استعلامات عن الاعتماديات — أسماء الحزم ونسخها إلى السجلات الرسمية وOSV.dev، وفحص تحديث من GitHub Releases. بيانات وصفية فقط، لا كودك ولا سجلّك؛ ولكلٍّ مفتاح إيقاف خاص.
دفاعات مدمجة ضد DNS rebinding وXSS وتجاوز المسارات، ومفاتيح API وكلمات المرور والتوكنات تُمسح من سجل الأوامر قبل حفظه — ومغطى بأكثر من 2500 اختبار آلي.
/plugin marketplace add fmaaakcode/devlog
/plugin install devlog@devlog
هذا كل شيء: الـhooks والبروتوكول والسيرفر كلها داخل الإضافة، والسيرفر يعمل وحده مع أول جلسة.
افتح http://127.0.0.1:7777 وشاهد لوحتك.
المتطلب الوحيد: Bun على جهازك.
شبه لا شيء. التاقات تُلتقط من ردود كلود مباشرة، والسجل يُخزَّن في مجلد DevLog الخاص (~/.devlog/data) خارج مشاريعك. ما يكتبه DevLog داخل المشروع هو مجلد واحد .devlog/: ملف هوية صغير (project.json، مستثنى من git تلقائياً)، ثم الوثائق المولَّدة وصفحات الإصدارات ومرآة DEVLOG_STATUS.md عند استخدام هذه الميزات. أضفه إلى .gitignore أو ارفعه؛ لا يُمَسّ شيء آخر في شجرتك.
الحقن عند بداية الجلسة مضغوط ومشروط (يظهر فقط عند الحاجة)، والتقاط التاقات يضيف أجزاء من الثانية في نهاية الرد — ثمن زهيد مقابل إنفاذ حقيقي.
ليس لعمله الأساسي — الالتقاط والداشبورد والحرّاس والاسترجاع كلها تعمل بلا اتصال. ثلاثة أشياء تتصل، وكلها قابلة للإيقاف: فحص نضارة/ثغرات الاعتماديات (السجلات الرسمية + OSV.dev، أسماء الحزم ونسخها فقط)، ومستشار المكتبات خلف -(ask:lib) وبوابة التثبيت، وفحص تحديث كل ساعة من GitHub Releases. مفاتيح الإيقاف: DEVLOG_REGISTRY_CHECK_DISABLED=1 وDEVLOG_VULN_CHECK_DISABLED=1 وDEVLOG_VERSION_CHECK_DISABLED=1.
حارس الإصدارات قابل للتجاوز الواعي بمتغير بيئة (DEVLOG_RELEASE_GUARD=0) — القرار يبقى بيدك، لكن لا يمر شيء بالسهو أبداً.