Spark Creative Solutions · الوحدة الأولى
الوحدة الأولى · 7 نوفمبر 2026
التحسين الذاتي المتكرر لمساعدك الذكي: إعداد الحد الأدنى من الرصيد
لصفّي وأصدقائي. كُتب من يوم عمل واحد على إعداد دان نفسه، 7 نوفمبر 2026. يعمل مع Claude أو ChatGPT أو Gemini على Windows أو Mac؛ لا شيء هنا يتطلب أن تكون مبرمجًا. كل خطوة تقول أين يوجد الشيء في كل تطبيق.
لماذا ينجح هذا
معظم رصيدك لا يُنفَق على التفكير. يتسرب من أربع ثغرات، وكل واحدة منها يمكن سدّها في عصر يوم واحد.
- كل إضافة وموصّل وأداة شغّلتها تُحمَّل في كل رسالة، سواء استخدمتها أم لا. عشرون أداة خاملة تكلّفك في كل دور من كل محادثة.
- لقطات الشاشة. كلما نظر مساعدك إلى شاشتك أو قاد متصفحًا بالصور، دفع مئات أضعاف ما يدفعه لقراءة النص.
- إعادة الشرح. كل محادثة جديدة تبدأ عمياء تجعلك تكتب وضعك من جديد، وتجعل المساعد يبحث في ذاكرته ومحادثاته القديمة ليلحق بك. ذلك البحث يكلف أكثر من رسالتك.
- مهام مجدولة تقرأ كل شيء كل صباح على أغلى نموذج، لتنتج صفحة لا تفتحها أبدًا.
الفكرة الواحدة وراء الإعداد كله: مساعدك يقرأ ملفًا صغيرًا في البداية ويكتب ملفًا صغيرًا في النهاية. كل ما عدا ذلك تقليم. انتقل حساب دان من أربع عمليات صباحية ثقيلة إلى واحدة، ومن «أخبرني من جديد أين كنا» إلى ملف من 300 رمز يقرأه المساعد قبل أن يتكلم. الحركات نفسها تعمل في Claude وChatGPT وGemini، لأنها عادات وملفات، لا ميزات.
ما تحتاجه وكم يكلف
خطة مساعد مدفوعة واحدة، وتطبيق سطح المكتب المجاني لها، ومجلد واحد على حاسوبك، ونحو 40 دقيقة. كل ما عدا ذلك في هذا الدليل مجاني.
| البند | الكلفة | ملاحظات |
|---|---|---|
| خطة المساعد | المستوى المدفوع القياسي لتطبيق واحد (Claude Pro أو ChatGPT Plus أو Google AI Pro) | المستويات المجانية تكفي لعادات الملفات لكنها تحدّ الاستخدام الكثيف. لا تنتقل إلى مستوى أعلى إلا إذا بلغت الحد في معظم الأيام. لا خطتين مدفوعتين معًا أبدًا. |
| تطبيق سطح المكتب لذلك المساعد | مجاني | لازم لقراءة مجلد على حاسوبك. Windows وMac. |
| محرر نصوص | مجاني | Notepad على Windows، وTextEdit على Mac، أو Obsidian (مجاني، أفضل، اختياري). |
| حساب Google | مجاني | للأتمتة المجانية (Apps Script) في الخطوة 6 والمساعد الرخيص في الخطوة 5. |
| Python | مجاني | فقط لسكربت النبض الاختياري في الخطوة 4. موجود في Mac؛ وعلى Windows يُثبَّت من python.org بنقرتين. |
| سقف الإنفاق | 0 | ضعه في اليوم الأول: حد شهري، وإعادة التعبئة التلقائية مغلقة. السقف هو ما يجعل التجريب آمنًا. |
افترض Windows ما لم تملك Mac؛ كل خطوة أدناه لها النسختان. الهاتف للقراءة، لا لهذا الإعداد.
الخطوة 1، التقليم
عشر دقائق، وأكبر توفير منفرد في القائمة. كل ما هو مشغّل يُحمَّل في كل رسالة.
- افتح إعدادات التطبيق وانظر إلى الإضافات والموصّلات والتكاملات وGPTs أو الامتدادات التي فعّلتها. أطفئ كل ما لم تستخدمه في الأسبوعين الأخيرين. يمكنك إعادته بنقرة واحدة حين تحتاجه.
- احتفظ بموصّل أتمتة واحد، لا اثنين. إن كان لديك IFTTT وZapier معًا، فاختر الذي فيه شيء حقيقي.
- الذاكرة: اطلب من مساعدك أن يريك ما يتذكره («صدّر كل ما تتذكره عني، مصنفًا»). احذف الخطأ والقديم. قل له بكلمات واضحة ما يحتفظ به: اسمك، عملك، القواعد التي تريد اتباعها. الذاكرة الجيدة تعني شرحًا أقل؛ والذاكرة القديمة تعني أجوبة خاطئة بثقة.
- الإنفاق: اعثر على صفحة الفوترة، ضع حدًا شهريًا، أطفئ إعادة التعبئة التلقائية. إن كانت تعبئاتك الشهر الماضي أعلى بكثير من سعر الخطة الثابتة، فالمستوى الأعلى أرخص من الرصيد.
أين يوجد. Claude: Settings ثم Connectors وPlugins؛ الذاكرة في Settings، Memory. ChatGPT: Settings ثم Apps and connectors؛ الذاكرة في Personalization، Manage memories. Gemini: Settings ثم Apps؛ الذاكرة في Saved info. حدود الإنفاق في صفحة الفوترة لكل تطبيق، أو في لوحة API إن كنت تستخدم واحدة.
الخطوة 2، المجلد الرئيسي والملفات الثلاثة
أنشئ مجلدًا واحدًا يستطيع مساعدك رؤيته دائمًا، واحتفظ فيه بثلاثة ملفات نصية صغيرة. هذا هو نظام الاستمرارية كله؛ يتسع في 40 سطرًا.
أنشئ في مجلدك الشخصي مجلدًا اسمه ops. في تطبيق سطح المكتب للمساعد، اربطه (Claude: زر +، Add folder؛ ChatGPT: Settings، Work with apps أو منتقي المجلدات في تطبيق سطح المكتب؛ Gemini: مجلد Google Drive يؤدي الدور نفسه، لأن Gemini يقرأ Drive). ثم أنشئ داخله هذه الملفات الثلاثة بأي محرر نصوص.
| الملف | ما يحويه | من يكتبه |
|---|---|---|
NOW.md | أين أنت الآن: على ماذا تعمل، آخر ما أنجزته، الخطوة التالية، الشيء الواحد الذي ينتظرك. 20 سطرًا كحد أقصى. | أنت، في دقيقة، عند بداية فترة العمل ونهايتها. أو سكربت النبض في الخطوة 4، تلقائيًا. |
handoff.md | سطران لكل جلسة: التاريخ، ما أُنجز، ما التالي. الأحدث في الأعلى. | المساعد، في نهاية كل محادثة عمل، حين تقول «اكتب التسليم». |
hands.md | قائمة تحقق بأمور لا يفعلها غيرك: كلمة مرور تُكتب، ملف يُشارَك، زر يُنقر. | المساعد يضيف؛ وأنت تعلّم. |
قوالب الثلاثة في الملحق. القاعدة التي تجعلها تعمل: لا شيء في هذه الملفات سري، ولا شيء طويل، والمساعد يقرؤها قبل أن يفعل أي شيء آخر.
إن كنت تستخدم Obsidian، فضع المجلد داخل خزنتك. إضافة Local REST API في Obsidian، مع سطر واحد في إعدادات Claude لسطح المكتب، تتيح للمساعد قراءة الخزنة والكتابة فيها دون إرفاق مجلد كل مرة؛ ذلك مشروع أمسية لاحقة، لا لليوم الأول.
الخطوة 3، مشروع Ops وتعليمة الافتتاح
أنشئ مشروعًا واحدًا (Claude: Project؛ ChatGPT: Project أو GPT مخصص؛ Gemini: Gem، أو في الحسابات الشخصية بعد 17 نوفمبر 2026، مدخل Saved info مع مجلد Drive مثبّت) والصق هذا بوصفه تعليماته:
On the first turn of every chat, before anything else, read ops/NOW.md, ops/handoff.md and ops/hands.md. Open by saying in one line where I am and what I was doing, then take my message. No screenshots and no searching old chats until those three files are read.
At the end of a working session, when I say "write the handoff", add two lines to the top of ops/handoff.md: the date, what was done, what is next. Anything that needs my own hands goes as a tick-box line into ops/hands.md.
Style: concise, no moralising, no numbered lists, no em dashes. Ask before anything that cannot be undone: sending, deleting, sharing, publishing, paying. Never type a password; I type those.
نسخ: ops-project-instructions.txt (بالإنجليزية؛ التعليمة تعمل بالعربية بالقدر نفسه، دع مساعدك يترجمها إن شئت)
اربط مجلد ops بالمشروع نفسه، لا بمحادثة واحدة، كي تراه كل محادثة جديدة. أنجز كل عملك تقريبًا داخل هذا المشروع الواحد. عمى معظم التطبيقات بين المشاريع يتوقف عن الأهمية حين يعيش عملك في مكان واحد.
الأثر: محادثة جديدة لا تكلفك شيئًا لتبدأ. يفتتح المساعد بـ«كنت في منتصف مسودة النشرة، وTakeout ما زال يعمل، والطابعة تحتاج ورقًا»، فتكمل.
الخطوة 4، النبض (اختياري، الجزء الذي يبدو سحرًا)
سكربت صغير يعيد كتابة NOW.md كل خمس دقائق بما تفعله فعلًا، فلا تضطر إلى تحديثه يدويًا أبدًا. يسجل ثلاثة أشياء: التطبيق في المقدمة وعنوان نافذته، والملفات التي لمستها في الدقائق الخمس عشرة الأخيرة، وأعلى hands.md وhandoff.md. لا شيء يغادر حاسوبك، ولا يلتقط صورة للشاشة أبدًا.
الخصوصية مبنية في الأساس، لا مضافة لاحقًا. يحمل السكربت قائمة قصيرة بتطبيقات لا تُسجَّل عناوين نوافذها أبدًا (مديرو كلمات المرور، Signal، الخدمات المصرفية) ويتخطى أي نافذة تصفح خاص. إن لم يكن التطبيق في القائمة المسموحة، يُسجَّل اسمه فقط. عدّل تلك القوائم قبل التثبيت.
- Windows: احفظ
pulse.ps1من الملحق فيops، ثم افتح Task Scheduler، Create Basic Task، المشغّل «When I log on»، الإجراء «Start a program»:powershell.exe -ExecutionPolicy Bypass -File "C:\Users\you\ops\pulse.ps1"، وفي خصائص المهمة اضبطها لتتكرر كل 5 دقائق. حوار واحد، وانتهى. - Mac: احفظ
pulse.pyوinstall-pulse.commandمن الملحق فيops، وانقر نقرًا مزدوجًا على ملف.commandمرة واحدة، واضغط OK على طلبي الإذن.
تحقق أنه يعمل: افتح NOW.md بعد خمس دقائق. إن حمل السطر الأول الوقت، فقد أُغلقت الحلقة، ومن الآن تفتح كل محادثة وهي تعرف أين أنت.
لمستخدمي Gemini: وجّه مخرجات السكربت إلى مجلد Drive بدل مجلد محلي، وسيقرؤه Gemini من هناك.
الخطوة 5، المساعدون الرخيصون
مساعدك الرئيسي هو الغالي. أعطِ القراءة الثقيلة لمساعد أرخص وأعد النتيجة وحدها.
- الملفات الطويلة. لا تلصق أبدًا ملف PDF من 200 صفحة في محادثتك الرئيسية. اطلب من نموذج رخيص تلخيصه أولًا (المستوى المجاني لـGemini في AI Studio، أو المستوى المجاني لأي من التطبيقات الثلاثة)، ثم أعطِ مساعدك الرئيسي الملخص من صفحتين. أرخص عشر مرات، وأفضل غالبًا، لأن المساعد الرئيسي يفكر الآن في خلاصة نظيفة.
- الآراء الثانية. لقرار ما، جواب قوي واحد يغلب أربعة. استخدم عدة نماذج فقط حين تريدها أن تختلف، ثم اطلب تركيبًا.
- الصق النص، ولا ترفع الملفات أبدًا. الملف المرفوع إلى خدمة متعددة النماذج قد يبقى في تخزينهم بلا زر حذف؛ تعلم دان هذا بالطريقة المكلفة. الصق النص الذي تريد قراءته، منقّحًا من الأسماء والعناوين والصحة وتفاصيل العملاء، ولا شيء غيره. المستويات المجانية قد تستخدم ما تلصقه للتدريب، فالتنقيح ليس اختياريًا.
- السكربت الوحيد الذي يستحق الاقتناء، للفضوليين تقنيًا: ملف Python من 40 سطرًا مع مفتاح Gemini في ملف بجانبه، يلخص أي مستند من سطر الأوامر فلا يضطر مساعدك الرئيسي إلى تحميله أبدًا. نسخة دان هي
council.py؛ اطلبها منه. سقف إنفاق على المفتاح، بضعة يوروهات في الشهر، يجعل نسيانه آمنًا.
أين يوجد. مفاتيح Gemini: AI Studio، API keys؛ المستوى المدفوع بقروش، وتصرّح Google أن بيانات المستوى المدفوع لا تُستخدم للتدريب. مفاتيح Claude وChatGPT: لوحات المطورين الخاصة بهما، الفكرة نفسها، والحدود نفسها. غير لازم في اليوم الأول.
الخطوة 6، المهام المجدولة التي تستحق كلفتها
المهمة المجدولة محادثة تعمل من دونك. تكلف ما تكلفه محادثة، كل يوم، إلى الأبد، فعلى كل واحدة أن تدفع ثمن نفسها.
- احتفظ بتلك التي يصلك ناتجها كإشعار تقرؤه فعلًا. سطر صباحي فيه تقويم اليوم والرسالتان المهمتان يستحق. أما صفحة جميلة لا تفتحها أبدًا فلا.
- ضع كل مهمة على أرخص نموذج يستطيع أداءها. قراءة قائمة وتصفيتها عمل نموذج صغير. قراءة الإيصالات وإصابة المبالغ تحتاج نموذجًا متوسطًا. لا شيء تقريبًا يحتاج أعلى نموذج على مؤقّت.
- الأعمال القائمة على قواعد لا تحتاج نموذجًا أصلًا. تصنيف البريد من مرسلين معروفين وأرشفته هو مرشح Gmail. مراقبة مجلد مشترك لتعديلات الآخرين هي Google Apps Script من ستة أسطر على مؤقّت، مجانًا، وهي ترى من عدّل، وهو ما لا يستطيعه المساعد. فحوص سلامة التقويم تعبير نمطي. اطلب من مساعدك كتابة السكربت؛ تلصقه في script.google.com وتضغط Allow مرة واحدة.
- مرة في الشهر، اسرد المهام واسأل عن كل واحدة: هل قرأتها الأسبوع الماضي؟ إن لم تكن، فاحذفها أو انصفها.
أين يوجد. Claude: المهام المجدولة، ظاهرة في الشريط الجانبي، لكل منها إعداد نموذج خاص. ChatGPT: Tasks. Gemini: Scheduled actions. Google Apps Script يعمل للثلاثة، لأنه يعيش في حساب Google الخاص بك، لا في المساعد.
حساب دان قبل تدقيق واحد وبعده: أربع عمليات ثقيلة في أيام الأسبوع على أعلى نموذج صارت واحدة؛ ومراقبتان للمجلدات في اليوم صارتا سكربتًا مجانيًا؛ والباقي انتقل إلى نماذج صغيرة. المعلومات نفسها تصله، بجزء يسير من الرصيد.
قواعد الأمان التي تسافر مع كل هذا
ليست حذرًا لأجل الحذر. كل واحدة موجودة لأن تخطيها مرة كلف أحدهم وقتًا أو خصوصية حقيقية.
- كلمات المرور ومفاتيح API تكتبها أنت، في ملف على حاسوبك، لا في محادثة أبدًا. المفتاح الملصوق في محادثة يعيش في ذلك السجل. إن حدث، فأنشئ مفتاحًا جديدًا واحذف القديم في اليوم نفسه.
- لا شيء لا رجعة فيه من دون موافقتك: لا إرسال، ولا حذف، ولا مشاركة، ولا نشر، ولا دفع. ضع هذا السطر في تعليمات مشروعك وسيسأل المساعد كل مرة.
- للنماذج الخارجية نص ملصوق، لا ملفات أبدًا. نقّح أولًا الأسماء والعناوين والصحة والمال وتفاصيل العملاء. احتفظ بقائمة كلمات لا يجوز أن تغادر جهازك، وراجع النص عليها قبل اللصق.
- المجلدات المسماة Private تبقى خاصة. أخبر المساعد أي المجلدات لا يجوز له قراءتها أبدًا، واحتفظ بتلك القائمة في تعليمات المشروع أيضًا.
- عناوين النوافذ والملفات الحديثة سجل لحياتك. أبقِ قائمة المنع في النبض صادقة، وأبقِ
NOW.mdخارج أي شيء تشاركه. - رفض نظام الأذونات في المساعد ليس عقبة تُلتف حولها. إنه النظام يؤدي عمله؛ تذهب تلك الخطوة إلى قائمة
hands.mdلديك. - أبقِ كلماتك لك. حين تمرر شيئًا كتبه المساعد، قل ذلك. وحين يصوغ لك، احتفظ بترقيمك وصوتك؛ فالصقل هو ما يفضح.
ربع الساعة الأسبوعي
هذا ما يجعله متكررًا: المساعد يحسّن إعداده بنفسه، وأنت اليد التي تنقر.
مرة في الأسبوع، افتح مشروع Ops وقل: «اقرأ hands.md وhandoff.md. أخبرني ما الذي أدفع ثمنه ولم أستخدمه هذا الأسبوع، وما الذي اضطررت إلى سؤالي عنه مرتين، وأي تغيير واحد يوفر أكبر قدر من الرصيد. ثم حدّث تعليمات المشروع بما نتفق عليه.» علّم ما تستطيع في hands.md ريثما يفكر.
ثلاثة أسئلة تبقي الحلقة صادقة:
- ما الذي أعدت شرحه هذا الأسبوع؟ ذلك سطر ناقص في تعليمات المشروع أو في الذاكرة.
- ما الذي صوّره المساعد أو بحث عنه وكان بوسع ملف أن يخبره به؟ ذلك سطر ناقص في
NOW.md. - ما الذي جرى على جدول ولم أقرأه قط؟ تلك مهمة تُحذف.
اكتب الأجوبة في التعليمات، لا في رأسك. خلال شهر يصير الإعداد على مقاسك كالقفاز، وتصير فاتورة الرصيد جزءًا يسيرًا مما كانت. ثم علّمه لصديق واحد؛ فالشرح هو كيف تكتشف أي الأجزاء ما زلت تفعلها بالعادة.
لا شَرطات طويلة في أي مكان، ولا قوائم مرقمة، وترقيمك أنت في كل ما ترسله باسمك. انتهى، مع المحبة.
الملحق: قوالب وسكربتات للنسخ
الملفات الثلاثة، كما ينبغي أن تبدو في اليوم الأول. كل واحد قابل للتنزيل أيضًا؛ نقرة يمنى، واحفظ في ops. الملفات بالإنجليزية؛ تعمل بالطريقة نفسها، وترجمتها مع مساعدك تمرين أول جيد.
NOW.md
# NOW.md
Working on: the newsletter draft, section 3
Last finished: sent the invoice to the printer
Next: proofread section 3, then export the PDF
Waiting on me: reply to the landlord about Thursday
تنزيل: NOW.md
handoff.md
# handoff.md (newest on top)
2026-11-07 Set up the ops folder, Project and pulse. Next: prune the plugins, set the spend cap.
تنزيل: handoff.md
hands.md
# hands.md: things only I can do
- [ ] set the monthly spend limit and turn auto-reload off
- [ ] connect the ops folder to the Project
تنزيل: hands.md
نبض Windows: pulse.ps1
احفظه في ops، وجدوله بـTask Scheduler كل 5 دقائق. عدّل القائمتين في الأعلى أولًا.
# pulse.ps1: rewrites ops\NOW.md with what you are doing. Nothing leaves this computer.
$ops = "$HOME\ops"
$deny = @("1Password","Bitwarden","KeePass","Signal","Passwords") # never logged at all
$titleOk = @("Claude","ChatGPT","Code","Obsidian","chrome","msedge","firefox","WINWORD","EXCEL","notepad","explorer","WhatsApp","OUTLOOK","Zoom") # window title logged only for these
Add-Type @"
using System; using System.Runtime.InteropServices;
public class W { [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")] public static extern uint GetWindowThreadProcessId(IntPtr h, out uint pid); }
"@
$h = [W]::GetForegroundWindow(); $procId = 0; [W]::GetWindowThreadProcessId($h, [ref]$procId) | Out-Null
$p = Get-Process -Id $procId -ErrorAction SilentlyContinue
$app = if ($p) { $p.ProcessName } else { "unknown" }; $title = ""
if ($deny -contains $app) { $app = "[private app]" }
elseif ($titleOk -contains $app -and $p.MainWindowTitle -and $p.MainWindowTitle -notmatch "InPrivate|Incognito|Private") { $title = $p.MainWindowTitle.Substring(0, [Math]::Min(90, $p.MainWindowTitle.Length)) }
$since = (Get-Date).AddMinutes(-15)
$files = Get-ChildItem "$HOME\Documents","$HOME\Desktop","$HOME\Downloads",$ops -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt $since -and $_.FullName -notmatch "\\Private\\|Signal|\\\.git\\|node_modules|NOW\.md" } |
Sort-Object LastWriteTime -Descending | Select-Object -First 8
$lines = @("# NOW (auto, $(Get-Date -Format 'ddd dd MMM HH:mm'), pulse.ps1, read this first)", "Active: $app" + $(if ($title) { " `"$title`"" } else { "" }))
$lines += "Files touched (last 15 min):"
if ($files) { $files | ForEach-Object { $lines += " " + $_.FullName.Replace($HOME, "~") } } else { $lines += " none" }
foreach ($f in @("hands.md","handoff.md")) { if (Test-Path "$ops\$f") { $lines += "From ${f}:"; Get-Content "$ops\$f" | Where-Object { $_.Trim() -and -not $_.StartsWith("#") } | Select-Object -First 5 | ForEach-Object { $lines += " $_" } } }
$lines | Select-Object -First 22 | Set-Content "$ops\NOW.md" -Encoding UTF8
تنزيل: pulse.ps1
نبض Mac: pulse.py مع install-pulse.command
احفظ الاثنين في ops، وانقر نقرًا مزدوجًا على .command مرة واحدة.
#!/usr/bin/env python3
# pulse.py: rewrites ops/NOW.md with what you are doing. Nothing leaves this computer.
import os, subprocess, datetime, re
HOME = os.path.expanduser("~"); OPS = os.path.join(HOME, "ops")
DENY = {"Signal", "Passwords", "1Password", "Keychain Access", "Bitwarden", "Messages", "Photos"}
TITLE_OK = {"Claude", "ChatGPT", "Obsidian", "Google Chrome", "Safari", "Finder", "Pages", "Numbers", "TextEdit", "Notes", "Mail", "WhatsApp", "Zoom", "Code"}
EXCLUDE = ("/Private", "Signal", "/.git", "node_modules", "/Library/", "NOW.md")
def osa(s):
try: return subprocess.run(["osascript", "-e", s], capture_output=True, text=True, timeout=8).stdout.strip()
except Exception: return ""
app = osa('tell application "System Events" to get name of first application process whose frontmost is true')
title = ""
if app in DENY: app = "[private app]"
elif app in TITLE_OK:
title = osa('tell application "System Events" to tell (first application process whose frontmost is true) to get name of front window')[:90]
if re.search(r"incognito|private", title, re.I): title = "[private window]"
files = []
for d in ("Documents", "Desktop", "Downloads", "ops"):
r = subprocess.run(["mdfind", "-onlyin", os.path.join(HOME, d), "kMDItemFSContentChangeDate >= $time.now(-900)"], capture_output=True, text=True)
files += [p for p in r.stdout.splitlines() if os.path.isfile(p) and not any(x in p for x in EXCLUDE)]
files = sorted(set(files), key=os.path.getmtime, reverse=True)[:8]
lines = ["# NOW (auto, %s, pulse.py, read this first)" % datetime.datetime.now().strftime("%a %d %b %H:%M"), "Active: %s%s" % (app or "unknown", ' "%s"' % title if title else "")]
lines.append("Files touched (last 15 min):"); lines += [" " + p.replace(HOME + "/", "~/") for p in files] or [" none"]
for f in ("hands.md", "handoff.md"):
p = os.path.join(OPS, f)
if os.path.exists(p):
lines.append("From %s:" % f); lines += [" " + l.rstrip() for l in open(p, encoding="utf-8") if l.strip() and not l.startswith("#")][:5]
open(os.path.join(OPS, "NOW.md"), "w", encoding="utf-8").write("\n".join(lines[:22]) + "\n")
تنزيل: pulse.py
#!/bin/bash
# install-pulse.command: runs pulse.py every 5 minutes via launchd. Double-click once.
OPS="$HOME/ops"; PL="$HOME/Library/LaunchAgents/com.me.pulse.plist"; mkdir -p "$HOME/Library/LaunchAgents"
cat > "$PL" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>Label</key><string>com.me.pulse</string>
<key>ProgramArguments</key><array><string>/usr/bin/python3</string><string>$OPS/pulse.py</string></array>
<key>StartInterval</key><integer>300</integer><key>RunAtLoad</key><true/></dict></plist>
PLIST
launchctl bootout "gui/$(id -u)/com.me.pulse" 2>/dev/null; launchctl bootstrap "gui/$(id -u)" "$PL" && echo "installed"
python3 "$OPS/pulse.py" && cat "$OPS/NOW.md"
تنزيل: install-pulse.command
Gems في Gemini، إن كانت لديك على حساب Google شخصي: صدّرها قبل 17 نوفمبر 2026 (Google Takeout، ألغِ تحديد الكل، وحدّد «Gemini» فقط)؛ تخرج التعليمات نصًا يمكنك لصقه في مشروع أو في مدخل Saved info.