מדריך קלוד קוד בעברית

תיעוד 83

יצירת מרקטפלייס

בנו מרקטפלייס של תוספים מקובץ marketplace.json ובדקו אותו מקומית לפני שאתם מארחים אותו.

מרקטפלייס של תוספים הוא תיקייה או מאגר עם קובץ .claude-plugin/marketplace.json שמפרט את התוספים שלכם ומאיפה למשוך כל אחד. דוחפים את התיקייה למארח git, וכל מי שיש לו גישה רושם אותו ב-Claude Code בפקודה אחת ומתקין ממנו את התוספים שלכם.

צרו מרקטפלייס משלכם כשאתם רוצים שקבוצה שאתם בוחרים, כמו הצוות או הארגון שלכם, תתקין את התוספים שלכם ותמשיך לקבל את העדכונים שלכם מקטלוג שבשליטתכם. המאגר יכול להיות פרטי, הוא יכול לרשום כמה תוספים שתרצו, ומנהל יכול לדרוש אותו בכל מחשב.

[!NOTE]

המקרים האלה מכוסים בעמודים אחרים:

התחילו ביצירת מרקטפלייס כדי לבנות אחד במחשב שלכם ולהתקין ממנו תוסף, ואז הוסיפו עוד רשומות תוספים.

#יצירת מרקטפלייס

השלבים הבאים יוצרים מרקטפלייס במחשב שלכם, מוסיפים אליו תוסף, רושמים אותו ב-Claude Code, ומתקינים ממנו את התוסף. זו כל הלולאה, וזו אותה לולאה שהמשתמשים שלכם עוברים ברגע שאתם מארחים את המרקטפלייס במקום שהם יכולים להגיע אליו. הריצו כל פקודה ב-shell, מהתיקייה שבה אתם רוצים ש-my-marketplace/ תיווצר.

צריך תוסף כדי לרשום אותו. הדוגמה משתמשת ב-my-first-plugin מתוך יצירת התוסף הראשון, תוסף עם skill אחד שמריצים כ-/my-first-plugin:hello. בנו אותו קודם אם עדיין אין לכם תוסף. כדי להשתמש בתוסף משלכם, החליפו את התיקייה שלו ואת ה-name שלו בכל מקום שבו השלבים אומרים my-first-plugin. למה תיקיית תוסף יכולה להכיל, ראו את סייר תיקיית התוסף.

1. הקמת תיקיית המרקטפלייס

מרקטפלייס הוא תיקייה עם קובץ .claude-plugin/marketplace.json, ועם התוספים שהוא רושם. צרו את תיקיית המרקטפלייס ואת התיקייה .claude-plugin/ שלה, ואז העתיקו את התוסף שלכם אל תוך plugins/:

mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins
cp -r my-first-plugin my-marketplace/plugins/

בדקו שהתוסף תקין במקום שבו הוא נמצא עכשיו, כדי שכל שגיאה מאוחרת תהיה על המרקטפלייס ולא על התוסף:

claude plugin validate ./my-marketplace/plugins/my-first-plugin

השורה האחרונה של הפלט היא ✔ Validation passed.

2. יצירת קובץ המרקטפלייס

שמרו את marketplace.json בנתיב my-marketplace/.claude-plugin/marketplace.json. הקובץ דורש name, owner, ומערך plugins.

כל אובייקט ב-plugins הוא רשומת תוסף וצריך name ו-source. כתבו את ה-source של הרשומה כנתיב משורש המרקטפלייס. השורש הוא my-marketplace/, התיקייה שמכילה את .claude-plugin/.

{
  "name": "my-marketplace",
  "description": "Plugins for my team",
  "owner": {
    "name": "Your Name"
  },
  "plugins": [
    {
      "name": "my-first-plugin",
      "source": "./plugins/my-first-plugin",
      "description": "A greeting plugin to learn the basics"
    }
  ]
}

3. אימות המרקטפלייס

הריצו את claude plugin validate על תיקיית המרקטפלייס כדי לבדוק את תחביר ה-JSON, את השדות הנדרשים, וכל רשומת תוסף בקובץ .claude-plugin/marketplace.json שלה.

claude plugin validate ./my-marketplace

עבור הקובץ כפי שנכתב בשלב 2, השורה האחרונה של הפלט היא ✔ Validation passed.

4. הוספת המרקטפלייס והתקנת התוסף

רשמו את התיקייה כמרקטפלייס.

claude plugin marketplace add ./my-marketplace

הפקודה מדפיסה ✔ Successfully added marketplace: my-marketplace (declared in user settings), וזה אומר שהמרקטפלייס נרשם בקובץ הגדרות המשתמש שלכם.

התקינו את התוסף. מזהה ההתקנה הוא ה-name של הרשומה, סימן @, וה-name של המרקטפלייס.

claude plugin install my-first-plugin@my-marketplace

הפקודה מדפיסה ✔ Successfully installed plugin: my-first-plugin@my-marketplace (scope: user).

בתוך סשן, /plugin marketplace add ./my-marketplace רושם את המרקטפלייס באותו אופן. /plugin install my-first-plugin@my-marketplace פותח את פרטי התוסף בחלונית /plugin, ושם מתקינים אותו. לזרימה הזו, ראו התקנה וניהול של תוספים.

5. אישור שהתוסף נטען

הציגו את התוספים המותקנים.

claude plugin list

הפלט מציג את my-first-plugin@my-marketplace עם Status: ✔ enabled.

כדי לראות מה התוסף טען, הציגו את הפרטים שלו.

claude plugin details my-first-plugin

המקטע Component inventory הוא Skills (1) hello.

כדי להריץ את ה-skill, התחילו סשן והקלידו /my-first-plugin:hello. Claude מברך אתכם. לפקודה יש את שם התוסף כקידומת, כמו לכל שם של skill של תוסף.

#הוספת רשומות תוספים

כל תוסף שאתם מפיצים הוא אובייקט אחד במערך plugins של marketplace.json. כדי להוסיף תוסף שני, הוסיפו אובייקט שני. השדות האלה מכסים את רוב הרשומות:

  • name: המזהה שאנשים מקלידים לפני @ כשהם מתקינים. רשומות תוספים מפרט את התווים ששם יכול להכיל.
  • source: המקום שממנו Claude Code מושך את התוסף. כתבו מחרוזת נתיב יחסי לתוסף שנמצא בתוך תיקיית המרקטפלייס, כמו בההדרכה, או אובייקט מקור לתוסף שנמצא מחוץ לה. ראו בחירת מקור לתוסף.
  • description: השורה שאנשים רואים ליד התוסף כשהם מדפדפים במרקטפלייס שלכם ב-/plugin.

לרשימת השדות המלאה, ראו רשומות תוספים, שמכסה גם את שדות plugin.json שרשומה יכולה לקבוע ומתי הם חלים.

#כללים לרשומות תוספים

רוב ההתקנות שנכשלות ממרקטפלייס חדש נובעות מנתיב יחסי שנכתב מהתיקייה הלא נכונה, או משם רשומה ששונה מה-name בקובץ plugin.json של התוסף.

#כתיבת נתיבים יחסיים משורש המרקטפלייס

שורש המרקטפלייס הוא התיקייה שמכילה את .claude-plugin/. בההדרכה, זו my-marketplace/, ולכן ה-source של הרשומה הוא "./plugins/my-first-plugin". הנתיב לא מתחיל בתוך .claude-plugin/, ולכן אל תשתמשו ב-.. כדי לצאת ממנה.

נתיב עם .. ונתיב לתיקייה חסרה נכשלים בפקודות שונות:

  • נתיב עם ..: claude plugin validate מדווח שהרשומה לא תקינה. ההודעה מתחילה ב-Path contains "..": ./../plugins/my-first-plugin.
  • נתיב לתיקייה שלא קיימת: claude plugin validate עובר. claude plugin install נכשל עם Source path does not exist: <path>, ו-<path> הוא המיקום המוחלט ש-Claude Code בדק.

#שמירה על שם הרשומה ושם המניפסט זהים

לתוסף במרקטפלייס יש name של רשומה ב-marketplace.json ו-name בקובץ plugin.json שלו, שנקרא שם המניפסט. כל שם מופיע במקומות שונים:

  • שם הרשומה: מזהה ההתקנה, <entry-name>@<marketplace>. זה מה שאנשים מקלידים כדי להתקין, מה ש-claude plugin list מציג, והמפתח ש-Claude Code כותב תחת enabledPlugins בקובץ ההגדרות שלהם.
  • שם המניפסט: הקידומת על ה-skills של התוסף, והשם ש-claude plugin details מקבל.

כששני השמות שונים ומישהו מתקין לפי שם המניפסט, Claude Code מדווח Plugin "<manifest-name>" not found in marketplace "<marketplace>". שמרו על שני השמות זהים. לעוד על האופן שבו Claude Code משתמש בשני השמות, ראו הפניה לטעינת תוספים.

#השארת submodules שלא בשימוש מחוץ לשכפול

כשמישהו מוסיף את המרקטפלייס שלכם, Claude Code משכפל את המאגר ומושך רק את ה-git submodules שמחזיקים קבצי תוספים. נדרש Claude Code v2.1.295 או חדש יותר.

אתם מחליטים אילו submodules Claude Code מושך לפי המקום שבו אתם שמים כל תוסף:

  • תוסף בתת-תיקייה: Claude Code מושך את ה-submodules שבתוך תיקיית התוסף ו-submodule שמכיל אותו. שימו submodule שהתוסף צריך בתוך תיקיית התוסף, והשאירו submodule שהוא לא צריך בחוץ
  • תוסף בשורש המרקטפלייס: Claude Code מושך כל submodule במאגר ברגע שאחד מקבצי התוסף מפנה לנתיב בתוך אחד מהם. אם במאגר יש submodule גדול שרק תהליך הבנייה שלכם משתמש בו, העבירו את התוסף לתת-תיקייה

אם תוסף בשורש מריץ קובץ מתוך submodule, כתבו את נתיב הקובץ בתצורת ה-hook או השרת של התוסף, למשל ${CLAUDE_PLUGIN_ROOT}/vendor/tool/run.sh. Claude Code קורא את הנתיבים האלה כדי לברר אם התוסף צריך את ה-submodules. הוא לא יכול לראות נתיב שסקריפט בונה בזמן ריצה.

לכלל המלא, ראו Git submodules במאגר המרקטפלייס.

#בחירת מקור לתוסף

לכל רשומת תוסף ב-marketplace.json יש source שאומר ל-Claude Code מאיפה למשוך את התוסף הזה. בחרו את המקור לפי המקום שבו קבצי התוסף מאוחסנים. הטבלה מפרטת את המקורות שרוב בעלי המרקטפלייס משתמשים בהם.

מקורמתי להשתמש בוערך source מינימלי
נתיב יחסיקבצי התוסף נמצאים בתוך תיקיית המרקטפלייס עצמה"./plugins/my-first-plugin"
githubהתוסף הוא מאגר GitHub בפני עצמו{ "source": "github", "repo": "your-org/my-first-plugin" }
git-subdirהתוסף הוא תת-תיקייה של מאגר אחר, כמו monorepo{ "source": "git-subdir", "url": "your-org/monorepo", "path": "tools/my-first-plugin" }

במקור git-subdir, השדה url מקבל כתובת git או קיצור GitHub מסוג owner/repo.

תוסף יכול להגיע גם מאחד מסוגי המקור האלה:

  • url: מאגר git לפי כתובת, על כל מארח
  • archive: קובץ zip שמורדים ב-HTTPS
  • npm: חבילת npm
  • command: תיקייה שנוצרת מהרצת פקודה במחשב שבו התוסף מותקן

לשדות של כל סוג מקור, ולנעיצה של מקור מבוסס git ל-ref או sha, ראו מקורות תוספים.

#אימות ובדיקה

כשאתם מוסיפים תוספים, הריצו claude plugin validate ./my-marketplace ב-shell אחרי כל עריכה, והתקינו מהמרקטפלייס במחשב שלכם לפני שאתם משתפים אותו. האימות וההתקנה תופסים בעיות שונות.

#בעיות שהאימות מדווח

claude plugin validate קורא רק קבצים בתוך תיקיית המרקטפלייס. הוא מדווח:

  • שגיאות תחביר JSON, כ-json: Invalid JSON syntax: <reason>
  • שדות נדרשים חסרים, כמו owner: Invalid input
  • שם מרקטפלייס או תוסף שמפר את כללי השמות בהפניה למרקטפלייס
  • source יחסי שמכיל ..
  • שדות לא מוכרים ברמה העליונה או ברשומת תוסף, כאזהרות
  • בעיות ב-plugin.json של כל תוסף בנתיב יחסי, כ-plugins[N] plugin.json → <field>: <message>

לכל הודעה ש-validate יכול להדפיס, ראו הודעות אימות. לדגלים ולקודי היציאה שלו, ראו plugin validate.

#בעיות שצצות כשמוסיפים או מתקינים

בעיות ש-claude plugin validate לא מדווח מופיעות כשמוסיפים את המרקטפלייס או מתקינים ממנו:

  • כשמוסיפים את המרקטפלייס: שמות המרקטפלייס הרשמיים המדויקים, כמו claude-plugins-official, עוברים אימות. כשמוסיפים מרקטפלייס עם אחד מהשמות האלה, Claude Code מסרב לו עם הודעה שמתחילה ב-The name '<name>' is reserved for official Anthropic marketplaces.
  • כשמתקינים תוסף:
    • Claude Code מושך קודם מקור github, git-subdir, או מקור מרוחק אחר כשמתקינים את התוסף, ולכן repo או path שגויים מופיעים אז.
    • source יחסי שהתיקייה שלו לא קיימת גם נכשל בהתקנה, עם Source path does not exist: <path>.

#בדיקת עריכה של תוסף

בההדרכה הוספתם את my-marketplace מתיקייה מקומית עם source בנתיב יחסי. בהגדרה הזו, Claude Code קורא את קבצי התוסף ישירות מ-my-marketplace/plugins/. העריכות שלכם נכנסות לתוקף בתחילת הסשן הבא או כשמריצים /reload-plugins בסשן, בלי שינוי ב-version של התוסף.

אנשים שמתקינים מהמרקטפלייס המתארח שלכם מקבלים עותק במטמון התוספים. לאופן שבו הם מקבלים גרסה חדשה, ראו שמירה על משתמשים מעודכנים.

#הסרת המרקטפלייס כדי להתחיל מחדש

כדי להסיר הכל ולהתחיל מחדש, הריצו claude plugin marketplace remove my-marketplace ב-shell. הפקודה מסירה את המרקטפלייס ומסירה את ההתקנה של התוספים שלו.

#אירוח המרקטפלייס

אחרי שאפשר להתקין תוסף מהמרקטפלייס במחשב שלכם, כמו ביצירת מרקטפלייס, דחפו את תיקיית המרקטפלייס למארח git. לפני הדחיפה, תנו למרקטפלייס name ברמה העליונה שסביר שכותבים אחרים לא יבחרו, כי משתמש לא יכול להחזיק שני מרקטפלייסים עם אותו שם.

חברי הצוות מריצים אז claude plugin marketplace add <owner>/<repo> ב-shell עבור מאגר GitHub, או את אותה פקודה עם כתובת המאגר. אחר כך הם מתקינים תוסף לפי שם כמו בההדרכה.

לגישה למאגר פרטי, לעדכונים, לניהול גרסאות, ולשינוי שם או הסרה של רשומות, ראו אירוח ותחזוקה של מרקטפלייס.

#הצעדים הבאים