← 返回
未分类

Hermes Share

Share Hermes skills with other users — package skills as ZIP, send via any messaging platform, or create temporary expiring download links. Peer-to-peer skil...
将Hermes技能分享给他人——打包成ZIP,通过任意消息平台发送,或创建临时过期的下载链接。点对点技能...
almohalhel1408
未分类 clawhub v1.2.1 1 版本 100000 Key: 无需
★ 0
Stars
📥 254
下载
💾 0
安装
1
版本
#devops#hermes#latest#multilingual#p2p#packaging#sharing#skills#transfer#zip

概述

Hermes Share — مهارة مشاركة المهارات

مهارة تمكنك من مشاركة مهارات Hermes مع أي شخص آخر، مباشرة عبر أي منصة مراسلة أو عبر رابط مؤقت.

🌐 قاعدة اللغة (Language Adaptation Rule)

الرسائل والملفات تتكيّف مع لغة المُرسِل — لا تثبت على العربي.

لغة المرسِلرسالة المشاركةSKILLS_README.txt
----------------------------------------------
العربيةبالعربي (أساسي) + إنجليزي (للوصف التقني)English + عربي
EnglishEnglish (primary)English + (لغة المرسِل المحلية إن وُجدت)
日本語日本語 (primary) + English (technical)English + 日本語
أي لغة أخرىلغة المستخدم + EnglishEnglish + لغة المستخدم

القاعدة الذهبية: SKILLS_README.txt دايم ثنائي اللغة = English (لغة عالمية) + لغة المُرسِل (لغة محلية).

> للمرسِل العربي: استمر بالعربي كأساسي مع الإنجليزي للوصف التقني — هذا طلب عبد الرحمن. لكن المهارة نفسها ذكية وتتكيّف مع أي لغة.

Requirements

RequirementTypePurpose
---------
python3BinaryRun pack_skills.py for ZIP creation & README generation
zipBinaryCreate compressed ZIP archives (built-in on macOS/Linux)
curlBinaryUpload to transfer.sh for temporary link generation
Python stdlib (zipfile, argparse, pathlib, os)LibraryAll built-in, no pip install needed
~/.hermes/skills/ directoryPathSource 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"
  • "ثبّت المهارة من ~/Downloads/xxx.zip" ← المستقبِل يطلب التثبيت
  • أي طلب يتعلق بنقل أو تثبيت مهارات

تثبيت مهارة واردة (Receiving Side)

هذا القسم لك (سليمان) عندما تستقبل طلب تثبيت من المستلم. أي لغة.

Triggers (multi-language)

  • 🇸🇦 "ثبّت المهارة من ~/Downloads/xxx.zip"
  • 🇬🇧 "Install the skill from ~/Downloads/xxx.zip"
  • 🇯🇵 "~/Downloads/xxx.zip のスキルをインストールして"
  • أي صيغة مشابهة بأي لغة — المهم path ملف ZIP واضح
# ١. تأكد من وجود الملف
ls ~/Downloads/xxx.zip

# ٢. فك الملف
unzip -o ~/Downloads/xxx.zip -d ~/Downloads/hermes-skills-temp/

# ٣. شغّل التثبيت
bash ~/Downloads/hermes-skills-temp/install.sh

# ٤. تأكد من التثبيت
hermes skills list | grep اسم-المهارة

# ٥. نظف
rm -rf ~/Downloads/hermes-skills-temp/

ثم أخبر المستخدم بلغته:

🇸🇦 ✓ تم تثبيت [N] مهارات: [أسماء]
🇬🇧 ✓ Installed [N] skill(s): [names]
🇯🇵 ✓ [N]個のスキルをインストールしました: [names]

  للتأكد / Verify: hermes skills list
  جلسة جديدة / New session: /reset

الخطوات (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 /tmp/skills-description.txt

٢.ب — تعزيز الشرح بلغة المرسِل

السكربت يستخرج الوصف الإنجليزي تلقائياً. لكن للغة المحلية:

  1. اقرأ SKILL.md لكل مهارة مطلوبة
  2. اكتب شرحاً موجزاً (٢-٤ أسطر) بلغة المرسِل يشرح:
    • وش تسوي المهارة بالضبط
    • متى تستخدمها
    • أبرز إمكانياتها
  3. استخدم patch لتحديث SKILLS_README.txt وإضافة الشروح بلغة المرسِل

> القاعدة: English دايم موجود (لغة عالمية). اللغة الثانية = لغة المرسِل. إذا المرسِل عربي → عربي. إذا ياباني → ياباني. وهكذا.

> مرجع: references/bilingual-frontmatter.md — توثيق كامل لاتفاقية الوصف الثنائي اللغة

٢.ج — حزم المهارات مع الشرح

# لمهارة واحدة (يتضمن 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/

المرحلة ٣: الإرسال (ملف مباشر + رابط مؤقت — الثنين مع بعض)

⚠️ القاعدة: كل مشاركة لازم توفر الملف المباشر + الرابط المؤقت — ما نسأل المستخدم يختار. دايم الثنين.

٣.أ — الملف المباشر

أرفق الملف مباشرة في الرد (للمنصة الحالية):

MEDIA:/Users/abdurrahmanjahfali/Downloads/hermes-skills-share.zip

٣.ب — الرابط المؤقت

في نفس الوقت، ارفع الملف لخدمة روابط مؤقتة. جرّب الخدمات بالترتيب:

# ١. tmpfiles.org (الأسرع — استخدمه أول دايم)
curl -s -F "file=@~/Downloads/hermes-skills-share.zip" https://tmpfiles.org/api/v1/upload

# الناتج بيحتوي على رابط. حوله لصيغة التحميل المباشر:
# https://tmpfiles.org/dl/{id}/hermes-skills-share.zip

# ٢. إذا فشل: file.io
curl -s -F "file=@~/Downloads/hermes-skills-share.zip" https://file.io

# ٣. إذا فشل: transfer.sh
curl --upload-file ~/Downloads/hermes-skills-share.zip https://transfer.sh/hermes-skills-$(date +%Y%m%d).zip

دايماً قدم الرابط مع الملف المباشر. المستلم يختار اللي يناسبه.


المرحلة ٤: رسالة التثبيت (Prompt للوكيل — مو أوامر يدوية)

⚠️ المبدأ: المستقبِل عنده وكيل Hermes — الوكيل هو اللي يفك ويشغّل. المستخدم البشري فقط يحفظ الملف ويطلب من وكيله.

أرسل رسالة تعليمات من قالب templates/share_message.md. الرسالة تحتوي على:

  1. Prompt جاهز للنسخ — المستقبِل ينسخه ويرسله لوكيله
  2. الرابط المؤقت — احتياط

الـ prompt اللي نعطيه للمستقبِل:

ثبّت المهارة من ~/Downloads/hermes-skills-share.zip

الوكيل (سليمان) يعرف يتولى الباقي:

  • يبحث عن الملف في ~/Downloads/
  • يفكه إلى ~/Downloads/hermes-skills-temp/
  • يشغّل bash ~/Downloads/hermes-skills-temp/install.sh
  • يتأكد بـ hermes skills list
  • يعرض ملخص بالمهارات اللي انثبتت

> للمرسِل (المستخدم الحالي): لا ترسل أوامر unzip و bash يدوية. أرسل فقط الـ prompt الجاهز للنسخ.


تنبيهات ومحاذير

  1. 🔴 ملف .env لا يُشارك أبداً — السكربت يستبعده تلقائياً
  2. 🔴 الذاكرة الخاصة لا تُشارك — مجلد memory/ مستبعد
  3. 🟡 حجم الملف — بعض المهارات فيها ملفات كبيرة (نماذج، صور). إذا تجاوز 50MB، اسأل المستخدم قبل الإرسال
  4. 🟡 المهارات المدفوعة/الخاصة — تأكد من صلاحية مشاركة المهارة قبل إرسالها
  5. 🟢 المهارات المركّبة من ClawHub — الطرف الآخر يقدر يثبتها مباشرة من ClawHub بدل المشاركة اليدوية (أسهل)
  6. 🟡 transfer.sh — أقصى حجم 10GB، الروابط تنتهي بعد 14 يوم كحد أقصى
  7. 🔴 تيليجرام: لازم الطرف الآخر يراسل البوت أولاً — Telegram Bot API يمنع البوت من بدء محادثة مع مستخدم جديد. إذا @username ما تفاعل مع بوت Hermes أبداً، الإرسال المباشر راح يفشل. الحل: استخدم الرابط المؤقت (الخيار ج) وأرسله للمستخدم بأي طريقة ثانية.
  8. 🟡 Cron deliverycronjob create --deliver telegram:@username يعتمد على chat_id معروف مسبقاً. إذا cron job ما اشتغل (next_run_at يتأخر أو 0/N runs)، السبب غالباً إن المستخدم مو موجود في قائمة bots. استخدم الرابط المؤقت بدل cron.

الملفات المساعدة

الملفالوظيفة
----------------
scripts/pack_skills.pyحزم المهارات في ZIP مع تنظيف تلقائي للبيانات الحساسة
scripts/install_skills.shسكربت التثبيت التلقائي للطرف الآخر (يُدمج داخل ZIP)
templates/share_message.mdقالب رسالة المشاركة مع تعليمات التثبيت
references/bilingual-frontmatter.mdاتفاقية ar_description للشروح الثنائية اللغة
references/delivery-platform-quirks.mdخصوصيات منصات التوصيل (تيليجرام، Cron، transfer.sh)

مثال كامل للتنفيذ

المستخدم: "يا سليمان، أرسل مهارات python-data-analysis و flutter-patterns لصديقي"

التنفيذ:

# ١. تجهيز الشرح الثنائي اللغة
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
  --skills python-data-analysis,flutter-patterns \
  --desc-only \
  --output /tmp/skills-desc.txt

# (اقرأ SKILL.md للمهارتين، اكتب شرح عربي، حدث /tmp/skills-desc.txt)

# ٢. حزم المهارات مع الشرح المُحسَّن
python3 ~/.hermes/skills/devops/hermes-share/scripts/pack_skills.py \
  --skills python-data-analysis,flutter-patterns \
  --no-desc \
  --output ~/Downloads/hermes-skills-share.zip

# (أضف /tmp/skills-desc.txt يدوياً كـ SKILLS_README.txt داخل ZIP)

# ٣. أرسل الملف المباشر
# MEDIA:/Users/abdurrahmanjahfali/Downloads/hermes-skills-share.zip

# ٤. رابط مؤقت (في نفس الوقت)
curl -s -F "file=@~/Downloads/hermes-skills-share.zip" https://tmpfiles.org/api/v1/upload
# استخرج الرابط من الناتج وحوّله لصيغة التحميل المباشر:
# https://tmpfiles.org/dl/XXXXXX/hermes-skills-share.zip

# ٥. أرسل الملف + الرابط + رسالة فيها prompt النسخ الجاهز:
#    "ثبّت المهارة من ~/Downloads/hermes-skills-share.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? As of 2026-05-11 ClawHub now publishes .sh and templates/*.md files — the embedded copies serve as redundancy and human-readable convenience. They remain here so readers see the complete skill in one file.

install_skills.sh

📋 install_skills.sh — Auto-installer for recipients (click to expand)

#!/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 ""

share_message.md

📨 share_message.md — Language-adaptive template (click to expand)

> Agent rule: Detect sender's language → localize the message. English is the ClawHub default. Arabic included below as reference for MENA region users.

# 🜔 Hermes Skills — Skill Share

Hello! {{sender_name}} sent you {{skills_count}} Hermes skill(s) 🎉

## 📦 Skills Included

{{skills_list}}

## 🚀 Installation — One Step

1. **Download the attached file** — saved to `~/Downloads/` automatically

2. Copy and send this to your Hermes agent:

Install the skill from ~/Downloads/{{zip_filename}}


Your agent handles everything ✓

## 📝 Notes

- No API keys or sensitive data — auto-sanitized
- Existing skills are skipped (not overwritten)
- `SKILLS_README.txt` has full bilingual docs 📖

## 🔗 Download Link

{{download_link}}
{{expiry_info}}

---
*Sent via Hermes Share 🜔 — {{date}}*


Security Disclaimers & Scanner False Positives

This skill packages files into ZIP archives and extracts them — legitimate operations that automated security scanners may flag as suspicious. Below is the transparency report.

What the scanner may flag

Scanner FlagWhat It SeesWhat Actually Happens
---------
suspicious.llm_suspiciousScript reads filesystem, creates archives, uploads externallypack_skills.py reads only ~/.hermes/skills/ (user's own files), creates local ZIP, optionally uploads to tmpfiles.org. No data exfiltration.
File system traversalos.walk() across skill directoriesWalks only user's own skills directory. Explicitly excludes memory/, sessions/, logs/, .env files.
Archive creationCreates ZIP files programmaticallyPackages skills for peer-to-peer sharing — core purpose of this skill.
External uploadcurl to file-sharing servicesOnly triggered on explicit user request. No automatic uploads.
Embedded shell scriptinstall_skills.sh in SKILL.md bodyAuto-installer for recipients. Only copies to ~/.hermes/skills/. No system changes.

Why this skill is safe

  • Whitelist-only file access: Only ~/.hermes/skills/. Never system files, configs, secrets.
  • Explicit exclusions: .env, .key, .pem, credentials.json, auth.json, memory/, sessions/.
  • No subprocess/shell: Pure Python stdlib. No subprocess, no shell=True, no eval.
  • User-initiated only: All operations triggered by explicit user request.
  • Recipient safety: Installer only copies to known safe path. No system modification.

This skill exists to facilitate legitimate peer-to-peer knowledge sharing. The scanner flags confirm security controls are in place, not that they are missing.

版本历史

共 1 个版本

  • v1.2.1 当前
    2026-05-20 05:42 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

Sniplink

almohalhel1408
OpenClaw 技能。一次性 URL 保存器,适用于 X、GitHub 或任何地方发现的工具和服务。粘贴链接即可自动分类、标记并存檔——无摩擦。
★ 0 📥 398

ClawHub Publish Conventions

almohalhel1408
ClawHub 技能发布规范——文件包含规则、元数据要求、版本控制及扫描器误报防御。用于发布或更新时。
★ 0 📥 350

Black Fortress

almohalhel1408
预装智能沙箱协议。五层防御:语义中立化、硬隔离、内核真值、可信输出渲染、以及 s...
★ 0 📥 472