Hermes Share — مهارة مشاركة المهارات
مهارة تمكنك من مشاركة مهارات Hermes مع أي شخص آخر، مباشرة عبر أي منصة مراسلة أو عبر رابط مؤقت.
Requirements
| Requirement | Type | Purpose |
|---|---|---|
python3 | Binary | Run pack_skills.py for ZIP creation & README generation |
zip | Binary | Create compressed ZIP archives (built-in on macOS/Linux) |
curl | Binary | Upload to transfer.sh for temporary link generation |
Python stdlib (zipfile, argparse, pathlib, os) | Library | All built-in, no pip install needed |
~/.hermes/skills/ directory | Path | Source of skills to package |
All dependencies are built-in — no pip packages, no Docker, no external services required for core functionality. curl is only needed for the temporary link delivery option.
المحفزات (Triggers)
استخدم هذه المهارة عندما يقول المستخدم:
- "شارك مهارة X مع فلان"
- "أرسل كل مهاراتي لصديقي"
- "أبغى أشارك المهارات مع أحد"
- "send/share my skills to someone"
- أي طلب يتعلق بنقل مهارات من جهاز لآخر
الخطوات (Workflow)
المرحلة ١: تحديد المهارات المطلوبة
اسأل المستخدم (إذا ما كان محدد):
وش المهارات اللي تبغى تشاركها؟
1. مهارة وحدة (حدد الاسم)
2. مجموعة مهارات (حدد الأسماء)
3. كل المهارات اللي عندي
إذا المستخدم محدد من البداية، انتقل للمرحلة ٢ مباشرة.
المرحلة ٢: تجهيز ملفات الشرح الثنائية اللغة (Bilingual README)
⚠️ مهم: قبل حزم المهارات، اقرأ ملف SKILL.md لكل مهارة مطلوبة لتوليد شرح عربي دقيق.
٢.أ — توليد الشرح (تلقائي + يدوي)
# أولاً: شغّل السكربت لتوليد ملف الشرح الأولي (يستخرج الوصف الإنجليزي)
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
--skills python-data-analysis,flutter-patterns \
--desc-only \
--output ~/Downloads/skills-description.txt
٢.ب — تعزيز الشرح العربي
السكربت يستخرج الوصف الإنجليزي تلقائياً. لكن للعربي:
- اقرأ
SKILL.mdلكل مهارة مطلوبة (استخدمskill_viewإذا المهارة محملة) - إذا المهارة فيها
ar_descriptionفي الـ frontmatter → استخدمها مباشرة - إذا ما فيها → اكتب شرحاً عربياً موجزاً (٢-٤ أسطر):
- وش تسوي المهارة بالضبط
- متى تستخدمها
- أبرز إمكانياتها
- شغّل
--desc-onlyلتوليدSKILLS_README.txtالأولي - اقرأ الملف المُولَّد، وعدّل الأقسام العربية فيه
- اختيارياً: أضف
ar_descriptionلـ SKILL.md المهارة الأصلية عشان المرات الجاية
مرجع:
references/bilingual-frontmatter.md— توثيق كامل لاتفاقيةar_description
٢.ج — حزم المهارات مع الشرح
# لمهارة واحدة (يتضمن SKILLS_README.txt تلقائياً)
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
--skills python-data-analysis \
--output ~/Downloads/hermes-skills-share.zip
# لعدة مهارات
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
--skills python-data-analysis,power-bi-dax,flutter-patterns \
--output ~/Downloads/hermes-skills-share.zip
# لكل المهارات
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
--all \
--output ~/Downloads/hermes-skills-share.zip
# إذا تبغى بدون ملف الشرح:
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
--skills X \
--no-desc \
--output ~/Downloads/hermes-skills-share.zip
📄 كل حزمة ZIP تحتوي تلقائياً على:
install.sh— سكربت التثبيت التلقائيSKILLS_README.txt— شرح ثنائي اللغة (عربي + إنجليزي) لكل مهارة ⭐- مجلدات المهارات نفسها
ملاحظة أمنية مهمة: السكربت يستبعد تلقائياً أي ملفات تحتوي على:
- مفاتيح API (يصنفها بـ
[SANITIZED]) - توكنات
- ملفات
.env - مجلد
memory/ - بيانات الجلسات
sessions/
المرحلة ٣: اختيار طريقة الإرسال
اسأل المستخدم عن طريقة الإرسال المفضلة:
كيف تبغى ترسل المهارات؟
1. عبر المنصة الحالية (اللي نتكلم منها دلوقتي)
2. عبر منصة ثانية (واتساب، تيليجرام، ديسكورد...)
3. رابط مؤقت (ينتهي بعد مدة تحددها)
الخيار أ: الإرسال عبر المنصة الحالية
أرفق الملف مباشرة في الرد:
MEDIA:/Users/abdurrahmanjahfali/Downloads/hermes-skills-share.zip
مع رسالة ترحيبية من قالب templates/share_message.md.
الخيار ب: الإرسال عبر منصة أخرى
إذا المستخدم يبي يرسل عبر منصة ثانية، استخدم منصات Hermes المتاحة. مثلاً للواتساب إذا كان مربوط:
أرسل الملف للشخص على المنصة المحددة مع تعليمات التثبيت
الخيار ج: رابط مؤقت (Expiring Link)
استخدم transfer.sh لإنشاء رابط مؤقت:
# رابط ينتهي بعد ٢٤ ساعة (افتراضي)
curl --upload-file ~/Downloads/hermes-skills-share.zip https://transfer.sh/hermes-skills-$(date +%Y%m%d).zip
# رابط ينتهي بعد ٣ أيام
curl -H "Max-Days: 3" --upload-file ~/Downloads/hermes-skills-share.zip https://transfer.sh/hermes-skills-$(date +%Y%m%d).zip
# رابط ينتهي بعد عدد معين من التحميلات (مثلاً ٥ تحميلات)
curl -H "Max-Downloads: 5" --upload-file ~/Downloads/hermes-skills-share.zip https://transfer.sh/hermes-skills-$(date +%Y%m%d).zip
إذا transfer.sh ما اشتغل (может يكون محظور)، استخدم البدائل:
file.io:curl -F "file=@~/Downloads/hermes-skills-share.zip" https://file.io0x0.st:curl -F "file=@~/Downloads/hermes-skills-share.zip" https://0x0.st
المرحلة ٤: تعليمات التثبيت للطرف الآخر
أرسل رسالة تحتوي على تعليمات التثبيت. استخدم قالب templates/share_message.md واملأ المتغيرات.
الطرف الآخر يحتاج فقط إلى:
# ١. فك الملف المضغوط
unzip hermes-skills-share.zip -d ~/Downloads/hermes-skills-temp/
# ٢. تشغيل سكربت التثبيت التلقائي
bash ~/Downloads/hermes-skills-temp/install.sh
سكربت install.sh (المتضمن تلقائياً داخل كل ZIP) يتولى:
- نسخ المهارات إلى
~/.hermes/skills/ - التحقق من عدم وجود تعارضات
- إظهار ملخص بالمهارات المثبتة
تنبيهات ومحاذير
- 🔴 ملف
.envلا يُشارك أبداً — السكربت يستبعده تلقائياً - 🔴 الذاكرة الخاصة لا تُشارك — مجلد
memory/مستبعد - 🟡 حجم الملف — بعض المهارات فيها ملفات كبيرة (نماذج، صور). إذا تجاوز 50MB، اسأل المستخدم قبل الإرسال
- 🟡 المهارات المدفوعة/الخاصة — تأكد من صلاحية مشاركة المهارة قبل إرسالها
- 🟢 المهارات المركّبة من ClawHub — الطرف الآخر يقدر يثبتها مباشرة من ClawHub بدل المشاركة اليدوية (أسهل)
- 🟡 transfer.sh — أقصى حجم 10GB، الروابط تنتهي بعد 14 يوم كحد أقصى
الملفات المساعدة
| الملف | الوظيفة |
|---|---|
scripts/pack_skills.py | حزم المهارات في ZIP مع تنظيف تلقائي للبيانات الحساسة |
scripts/install_skills.sh | سكربت التثبيت التلقائي للطرف الآخر (يُدمج داخل ZIP) |
templates/share_message.md | قالب رسالة المشاركة مع تعليمات التثبيت |
references/bilingual-frontmatter.md | اتفاقية ar_description للشروح الثنائية اللغة |
مثال كامل للتنفيذ
المستخدم: "يا سليمان، أرسل مهارات python-data-analysis و flutter-patterns لصديقي على التيليجرام"
التنفيذ:
# ١. تجهيز الحزمة
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
--skills python-data-analysis,flutter-patterns \
--output ~/Downloads/hermes-skills-share.zip
# ٢. إرسال عبر المنصة
# MEDIA:/Users/abdurrahmanjahfali/Downloads/hermes-skills-share.zip
# + رسالة تعليمات التثبيت
المستخدم: "أبغى رابط مؤقت لكل مهاراتي ينتهي بعد ٤٨ ساعة"
التنفيذ:
# ١. تجهيز كل المهارات
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
--all \
--output ~/Downloads/all-hermes-skills.zip
# ٢. رفع للرابط المؤقت
curl -H "Max-Days: 2" --upload-file ~/Downloads/all-hermes-skills.zip \
https://transfer.sh/all-hermes-skills.zip
# الناتج: https://transfer.sh/xxxxx/all-hermes-skills.zip
صيانة السكربت (Maintenance Notes)
pack_skills.py — argparse هيكلية
عند تعديل السكربت، انتبه إلى:
--list،--skills،--allفي مجموعةmutually_exclusive_groupبدونrequired=True— هذا يسمح بتمرير--listبدون--skillsأو--all.- لا تضف
--listخارج المجموعة الحصرية — سيسبب تعارضconflicting option string. - إذا أضفت flag جديد، تأكد من منطق
if args.list:قبل منطقif args.all:فيmain().
التحقق بعد التعديل
# ١. عرض المهارات (اختبار --list)
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py --list
# ٢. حزم مهارة وحدة
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
--skills hermes-share --output /tmp/test-pack.zip
# ٣. فحص محتويات ZIP
unzip -l /tmp/test-pack.zip
# ٤. تنظيف
rm /tmp/test-pack.zip
Embedded Files
Why embedded? ClawHub's publish filter only includes
.mdand.pyfiles. Shell scripts and templates are embedded here so they're always accessible.
install_skills.sh
<details> <summary>📋 install_skills.sh — Auto-installer for recipients (click to expand)</summary>#!/usr/bin/env bash
# ============================================================
# Hermes Skills — Auto-Installer
# المهارات المرسلة عبر hermes-share
# ============================================================
# طريقة الاستخدام:
# 1. فك الملف المضغوط
# 2. شغّل: bash install.sh
# ============================================================
set -e
HERMES_SKILLS="${HERMES_HOME:-$HOME/.hermes}/skills"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
RED='\033[0;31m'
NC='\033[0m'
echo ""
echo -e "${CYAN}🜔 Hermes Skills Installer${NC}"
echo -e "${CYAN}==========================${NC}"
echo ""
if [[ ! -d "$HERMES_SKILLS" ]]; then
echo -e "${YELLOW}📁 Creating skills directory: $HERMES_SKILLS${NC}"
mkdir -p "$HERMES_SKILLS"
fi
INSTALLED=0
SKIPPED=0
FAILED=0
for skill_dir in "$SCRIPT_DIR"/*/; do
skill_name=$(basename "$skill_dir")
[[ ! -d "$skill_dir" ]] && continue
[[ "$skill_name" == "install.sh" ]] && continue
if [[ ! -f "$skill_dir/SKILL.md" ]]; then
echo -e "${YELLOW}⚠️ $skill_name — no SKILL.md, skipping...${NC}"
SKIPPED=$((SKIPPED + 1))
continue
fi
target="$HERMES_SKILLS/$skill_name"
existing=$(find "$HERMES_SKILLS" -name "$skill_name" -type d -maxdepth 4 2>/dev/null | head -1)
if [[ -n "$existing" ]]; then
echo -e "${YELLOW}⏭️ $skill_name — already exists in: $(basename $(dirname $existing))/"
echo -e " To update: delete old skill first then reinstall${NC}"
SKIPPED=$((SKIPPED + 1))
else
skill_md="$skill_dir/SKILL.md"
category=""
if [[ -f "$skill_md" ]]; then
category_line=$(head -20 "$skill_md" | grep -i "category:" | head -1 || true)
if [[ -n "$category_line" ]]; then
category=$(echo "$category_line" | sed 's/.*category:[[:space:]]*//i' | xargs)
fi
fi
if [[ -n "$category" && "$category" != "general" ]]; then
target="$HERMES_SKILLS/$category/$skill_name"
fi
echo -e "📦 ${GREEN}Installing${NC} $skill_name..."
mkdir -p "$(dirname "$target")"
cp -r "$skill_dir" "$target"
echo -e " ${GREEN}✓ Done${NC}"
INSTALLED=$((INSTALLED + 1))
fi
done
echo ""
echo -e "${CYAN}==========================${NC}"
echo -e "${GREEN}✓ Installed: $INSTALLED skill(s)${NC}"
if [[ $SKIPPED -gt 0 ]]; then
echo -e "${YELLOW}⏭️ Skipped: $SKIPPED (already exist)${NC}"
fi
echo ""
if [[ $INSTALLED -gt 0 ]]; then
echo -e "${CYAN}📋 Verify:${NC}"
echo " hermes skills list"
echo ""
echo -e "${CYAN}💡 Load new skills:${NC}"
echo " /reset"
fi
echo ""
</details>
share_message.md
<details> <summary>📨 share_message.md — Message template for recipients (click to expand)</summary># 🜔 Hermes Skills — Skill Share
Hello! {{sender_name}} sent you {{skills_count}} Hermes skill(s) 🎉
---
## 📦 Skills Included
{{skills_list}}
---
## 🚀 Installation (2 steps)
**1. Extract the ZIP:**
```bash
unzip {{zip_filename}} -d ~/Downloads/hermes-skills-temp/
2. Run the auto-installer:
bash ~/Downloads/hermes-skills-temp/install.sh
✅ After Install
Verify:
hermes skills list
Start a fresh session:
hermes --continue
# or in-session: /reset
📝 Notes
- Skills are copied to
~/.hermes/skills/automatically - If a skill already exists, it will be skipped (not overwritten)
- No API keys or sensitive data are included — automatically sanitized
🔗 Download Link
{{download_link}}
{{expiry_info}}
Sent via Hermes Share 🜔 — {{date}}
</details>