إنشاء المهارات واستخدامها في Bob Shell

أنشئ مهارة قابلة لإعادة الاستخدام تُعلّم Bob Shell سير عمل إدخال changelog متكرر، ثم استدعها صراحةً ودع Bob يفعّلها تلقائيًا.

مهارات Bob Shell في IBM هي مجموعات تعليمات قابلة لإعادة الاستخدام، مخزّنة في ملف SKILL.md، تُعلّم Bob سير عملاً متكررًا. في هذا الدرس، تبني مهارة changelog-entry تُضيف إدخالات Keep a Changelog إلى CHANGELOG.md، ثم تشغّلها صراحةً بـ $changelog-entry، وتراقب Bob يفعّلها تلقائيًا عندما يتطابق الأمر مع وصف المهارة.

المهارات توفّر عليك إعادة كتابة نفس قواعد التنسيق أو قائمة المراجعة في كل أمر. تُعرّف سير العمل مرة واحدة، ويتبعه Bob متى انطبقت المهارة.

المتطلبات المسبقة

إنشاء مهارة changelog-entry

يحمّل Bob Shell المهارات من المجلدات التي تحتوي على ملف SKILL.md. مهارات المشروع توجد في .bob/skills/ في المجلد الجذر للمشروع، لذا يتتبعها Git جنبًا إلى جنب مع قاعدة الكود ويمكن لفريقك استخدامها. المهارات العالمية توجد في ~/.bob/skills/ وتنطبق على جميع مشاريعك.

إنشاء مجلد المهارة

انتقل إلى المجلد الجذر لـ Galaxium Travels وأنشئ مجلدًا للمهارة:

cd galaxium-travels
mkdir -p .bob/skills/changelog-entry

كتابة ملف SKILL.md

أنشئ .bob/skills/changelog-entry/SKILL.md بالمحتوى التالي. يمكنك استخدام أي محرر نصوص، أو تشغيل الأمر كما هو مكتوب:

cat > .bob/skills/changelog-entry/SKILL.md <<'EOF'
---
name: changelog-entry
description: Adds an entry to CHANGELOG.md using the Keep a Changelog format, creating the file if it does not exist, so change history stays consistent and release-ready.
---

Add an entry to CHANGELOG.md using the Keep a Changelog format (https://keepachangelog.com/).

- If CHANGELOG.md does not exist, create it at the project root with this structure before adding an entry:

  # Changelog

  All notable changes to this project are documented in this file.
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

  ## [Unreleased]

- Add new entries under the `## [Unreleased]` section, under one of these subheadings: `### Added`, `### Changed`, `### Fixed`, `### Removed`. Create the subheading if it is not already present under `## [Unreleased]`.
- Write each entry as a single bullet point in the imperative mood ("Add", not "Added"), starting with a capital letter, with no trailing period.
- Base the entry on the actual diff, not on the wording of the request. Run `git diff` to review what changed before writing the entry.
- Only edit CHANGELOG.md. Do not stage or commit the change.
EOF

يُعرّف الـ front matter حقلين مطلوبين:

  • name: اسم المهارة. طابقه مع اسم المجلد، لأن Bob Shell يستخدم اسم المجلد للإشارة إلى المهارة، مثلاً $changelog-entry.
  • description: ما يقرأه Bob لتقرير ما إذا كانت المهارة تنطبق على طلب عندما لا تُشير إليها بالاسم. إذا حذفته، يستخدم Bob السطر الأول من التعليمات بدلاً من ذلك، لذا اكتب دائمًا وصفًا واضحًا.

كل شيء أسفل --- الختامية هو مجموعة التعليمات التي يتبعها Bob عند تفعيل المهارة.

تشغيل Bob Shell

ابدأ جلسة تفاعلية في وضع Agent من المجلد الجذر لـ Galaxium Travels:

bob chat --mode agent

وضع Agent يمنح Bob صلاحية الأدوات التي يحتاجها لتفعيل المهارات وتعديل الملفات. إذا سألك Bob Shell عما إذا كنت تثق بالمجلد، ثق بالمجلد حتى يتمكن Bob من تحميل مهارات المشروع.

استدعاء المهارة مباشرةً

أشر إلى المهارة بالاسم حتى تتمكن من رؤية التعليمات التي يتبعها Bob.

تعديل README.md

اطلب من Bob إجراء تعديل صغير وقليل الخطورة حتى يكون لديك شيء لتسجيله:

Add a one-line note to the end of the README.md that says "Powered by IBM Bob."

يُظهر Bob التغيير المقترح كـ diff. اختر Approve لتطبيق التعديل.

تسجيل التغيير بالمهارة

اكتب $ لفتح منتقي المهارات، ثم اختر changelog-entry. يُدرج Bob Shell مرجع المهارة في أمرك:

$changelog-entry Add a changelog entry for this change.

يطلب Bob إذنًا لاستخدام المهارة وتعديل الملفات. وافق على كل طلب. يحمّل Bob مهارة changelog-entry وينشئ CHANGELOG.md، لأن المشروع لا يحتوي على واحد. ثم يُضيف Bob إدخالاً مشابهاً للتالي:

## [Unreleased]

### Added

- Add "Powered by IBM Bob." note to the end of README.md

التحقق من إدخال changelog الأول

اطلب من Bob أن يريك changelog:

Show me @CHANGELOG.md

الإدخال يتطابق مع إدخال changelog الذي ولّده Bob في تسجيل التغيير بالمهارة.

السماح لـ Bob بتفعيل المهارة تلقائيًا

أجرِ تغييرًا ثانيًا واطلب من Bob تسجيله دون ذكر المهارة بالاسم. يمكن لـ Bob أن يتعرف من وصف المهارة أنها تنطبق ويفعّلها من تلقاء نفسه.

مسح سجل المحادثة

أدخل أمر /clear slash لإعادة تعيين سجل المحادثة، حتى لا يكون لدى Bob ذاكرة بمرجع المهارة السابق:

/clear

إجراء تعديل ثانٍ على README.md

اطلب من Bob إجراء تعديل ثانٍ:

Add a one-line comment above the main heading in README.md that says "Galaxium Travels".

وافق على التعديل عند المطالبة.

تسجيل التغيير دون تسمية المهارة

اطلب من Bob تسجيل التغيير دون تسمية المهارة:

Add an entry to CHANGELOG.md in Keep a Changelog format.

يتعرف Bob أن الطلب يتطابق مع وصف مهارة changelog-entry ويفعّلها دون مرجع $changelog-entry. وافق على طلبات المهارة وتعديل الملفات عند المطالبة. يُضيف Bob إدخالاً آخر بنفس التنسيق.

التحقق من كلا إدخالَي changelog

اطلب من Bob أن يريك changelog:

Show me @CHANGELOG.md

يحتوي changelog الآن على إدخالَين تحت ## [Unreleased]، مشابهَين للتالي:

## [Unreleased]

### Added

- Add "Powered by IBM Bob." note to the end of README.md
- Add "Galaxium Travels" comment above the main heading in README.md

إدارة مهاراتك

كل مهارة هي مجلد على القرص، لذا تُدير المهارات بأدوات الملفات المعتادة:

  • قائمة المهارات: ابحث في .bob/skills/ لمهارات المشروع و~/.bob/skills/ للمهارات العالمية. إذا احتوى كلا الموقعَين على مهارة بنفس الاسم، تأخذ مهارة المشروع الأولوية.
  • تعديل مهارة: عدّل ملف SKILL.md الخاص بها. يمكنك أيضًا إضافة ملفات داعمة، مثل القوالب أو قوائم المراجعة، إلى مجلد المهارة.
  • الإشارة إلى مهارة: اكتب $ أو أدخل /skills في Bob Shell لإدراج مرجع مهارة في أمرك.

استكشاف الأخطاء وإصلاحها

المهارة لا تظهر في منتقي $

تأكد من أن مسار الملف هو .bob/skills/changelog-entry/SKILL.md، وأن الـ front matter يتضمن name وdescription، وأن المجلد موثوق به. للتفاصيل، راجع المجلدات الموثوقة. يجب أن يكون اسم مجلد المهارة kebab-case بأحرف صغيرة، مثل changelog-entry. يتخطى Bob المجلدات ذات الأسماء غير الصالحة دون إظهار خطأ. أعد تشغيل Bob Shell بعد إضافة مهارة.

لا يفعّل Bob المهارة تلقائيًا

يُطابق Bob الطلبات مع description المهارة. أعد صياغة الأمر باستخدام كلمات من الوصف، أو أشر إلى المهارة مباشرةً بـ $changelog-entry.

الخطوات التالية

في هذا الدرس، تعلمت كيف تُمكّنك المهارات من تعريف سير عمل مرة واحدة وجعل Bob يطبّقه بشكل متسق. يمكنك الإشارة إلى مهارة صراحةً بـ $<skill-name> أو السماح لـ Bob بتفعيلها تلقائيًا بناءً على وصفها.

لإضافة قوالب وملفات داعمة إلى مهارة، راجع المهارات.

لبناء شخصية متخصصة بدورها وتعليماتها وصلاحية أدواتها، راجع الأوضاع المخصصة.

ما رأيك في هذا الموضوع؟