Skip to content

feat(skills-hub): add claude-marketplace support - #7522

Closed
baekteun wants to merge 1 commit into
NousResearch:mainfrom
baekteun:feat/claude-marketplace-install
Closed

feat(skills-hub): add claude-marketplace support#7522
baekteun wants to merge 1 commit into
NousResearch:mainfrom
baekteun:feat/claude-marketplace-install

Conversation

@baekteun

Copy link
Copy Markdown

What does this PR do?

Enables hermes skills install owner/repo for repos that use .claude-plugin/marketplace.json (e.g. hermes skills install anthropics/skills).

This adds a resolution chain: parse .claude-plugin/marketplace.json → fallback to repo root as plugin. It also handles all official Claude Code marketplace source types and stores the selected plugin name in lock metadata so hermes skills update can auto-select without re-prompting.

Related Issue

Fixes #7514

Type of Change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 🔒 Security fix
  • 📝 Documentation update
  • ✅ Tests (adding or improving test coverage)
  • ♻️ Refactor (no behavior change)
  • 🎯 New skill (bundled or hub)

Changes Made

  • tools/skills_hub.py: Add _github_url_to_repo(), _fetch_marketplace_json(), _resolve_plugin_source(), _resolve_repo_root(), _select_plugins(), _fetch_plugin_from_marketplace(), _inspect_repo_root() to GitHubSource

  • tools/skills_hub.py: Modify GitHubSource.fetch() and inspect() to handle 2-part owner/repo identifiers

  • tools/skills_hub.py: Fix _download_directory_via_tree() to handle empty path (repo root download)

  • tools/skills_hub.py: Store marketplace_plugin in SkillBundle.metadata; thread plugin_name through check_for_skill_updates()

  • hermes_cli/skills_hub.py: Add plugin_name param to do_install() and _resolve_source_meta_and_bundle(); pass it from do_update(). Install remaining plugins individually when multiple are selected

  • website/docs/user-guide/features/skills.md: Update claude-marketplace section with direct install docs

  • tests/tools/test_skills_hub_plugin_discovery.py: 32 new tests covering all source types, depth limits, multi-selection, caching, and end-to-end flows

How to Test

  1. hermes skills inspect anthropics/skills — should display plugin metadata from marketplace.json
  2. hermes skills install anthropics/skills — should discover marketplace.json, auto-select the single plugin, and install
  3. hermes skills update — should update the installed plugin without prompting for selection
  4. hermes skills install anthropics/skills/skills/skill-creator — existing 3-part identifiers should still work
  5. pytest tests/tools/test_skills_hub_plugin_discovery.py tests/tools/test_skills_hub.py -v

Checklist

Code

  • I've read the Contributing Guide
  • My commit messages follow Conventional Commits (fix(scope):, feat(scope):, etc.)
  • I searched for existing PRs to make sure this isn't a duplicate
  • My PR contains only changes related to this fix/feature (no unrelated commits)
  • I've run pytest tests/ -q and all tests pass
  • I've added tests for my changes (required for bug fixes, strongly encouraged for features)
  • I've tested on my platform: macOS 26.4

Documentation & Housekeeping

  • I've updated relevant documentation (README, docs/, docstrings) — or N/A
  • I've updated cli-config.yaml.example if I added/changed config keys — or N/A
  • I've updated CONTRIBUTING.md or AGENTS.md if I changed architecture or workflows — or N/A
  • I've considered cross-platform impact (Windows, macOS) per the compatibility guide — or N/A
  • I've updated tool descriptions/schemas if I changed tool behavior — or N/A

For New Skills

  • This skill is broadly useful to most users (if bundled) — see Contributing Guide
  • SKILL.md follows the standard format (frontmatter, trigger conditions, steps, pitfalls)
  • No external dependencies that aren't already available (prefer stdlib, curl, existing Hermes tools)
  • I've tested the skill end-to-end: hermes --toolsets skills -q "Use the X skill to do Y"

Screenshots / Logs

log output
Inspect
/Users/baegteun/Projects/hermes-agent/.venv/bin/hermes skills inspect anthropics/skills                             ✔

╭───────────────────────────────────────────────────────────────────────────────────── Skill: skills ─────────────────────────────────────────────────────────────────────────────────────╮
│ Name: skills                                                                                                                                                                            │
│ Description: 3 plugins available: document-skills, example-skills, claude-api                                                                                                           │
│ Source: skills.sh                                                                                                                                                                       │
│ Trust: trusted                                                                                                                                                                          │
│ Identifier: skills-sh/anthropics/skills                                                                                                                                                 │
│ Repo: https://github.com/anthropics/skills                                                                                                                                              │
│ Detail Page: https://skills.sh/anthropics/skills                                                                                                                                        │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Install
/Users/baegteun/Projects/hermes-agent/.venv/bin/hermes skills install anthropics/skills --force                  ✔

Fetching: anthropics/skills

Found 3 plugins:
  [1] document-skills — Collection of document processing suite including Excel, Word, PowerPoint, and PDF capabilities
  [2] example-skills — Collection of example skills demonstrating various capabilities including skill creation, MCP building, visual design, algorithmic art, internal communications, web testing, artifact building, Slack GIFs, and theme styling
  [3] claude-api — Claude API and SDK documentation skill for building LLM-powered applications

Select plugins to install [1-3, comma-separated, or 'all']: 1,3
Quarantined to .hub/quarantine/document-skills
Running security scan...
Scan: document-skills (skills-sh/anthropics/skills/trusted)  Verdict: CAUTION
  HIGH     structural     (directory):0                  "3323KB total"
  HIGH     exfiltration   skills/xlsx/scripts/office/soffice.py:25 "env = os.environ.copy()"
  HIGH     exfiltration   skills/pptx/scripts/office/soffice.py:25 "env = os.environ.copy()"
  HIGH     exfiltration   skills/docx/scripts/office/soffice.py:25 "env = os.environ.copy()"
  MEDIUM   structural     (directory):0                  "186 files"
  MEDIUM   supply_chain   skills/pdf/SKILL.md:235        "# Requires: pip install pytesseract pdf2image"
  MEDIUM   supply_chain   skills/pptx/pptxgenjs.md:238   "Install: `npm install -g react-icons react react-dom sharp`"
  MEDIUM   supply_chain   skills/pptx/SKILL.md:228       "- `pip install "markitdown"` - text extraction"
  MEDIUM   supply_chain   skills/pptx/SKILL.md:229       "- `pip install Pillow` - thumbnail grids"
  MEDIUM   supply_chain   skills/pptx/SKILL.md:230       "- `npm install -g pptxgenjs` - creating from scratch"
  MEDIUM   supply_chain   skills/docx/SKILL.md:58        "Generate .docx files with JavaScript, then validate. Install"
  MEDIUM   supply_chain   skills/docx/SKILL.md:588       "- **docx**: `npm install -g docx` (new documents)"
  MEDIUM   execution      skills/xlsx/scripts/recalc.py:34 "subprocess.run("
  MEDIUM   execution      skills/xlsx/scripts/recalc.py:55 "subprocess.run("
  MEDIUM   execution      skills/xlsx/scripts/recalc.py:92 "result = subprocess.run(cmd, capture_output=True, text=True,"
  MEDIUM   execution      skills/xlsx/scripts/office/soffice.py:14 "subprocess.run(["soffice", ...], env=env)"
  MEDIUM   execution      skills/xlsx/scripts/office/soffice.py:37 "return subprocess.run(["soffice"] + args, env=env, **kwargs)"
  MEDIUM   execution      skills/xlsx/scripts/office/soffice.py:59 "subprocess.run("
  MEDIUM   execution      skills/xlsx/scripts/office/validators/redlining.py:138 "result = subprocess.run("
  MEDIUM   execution      skills/xlsx/scripts/office/validators/redlining.py:167 "result = subprocess.run("
  MEDIUM   execution      skills/pptx/scripts/thumbnail.py:161 "result = subprocess.run("
  MEDIUM   execution      skills/pptx/scripts/thumbnail.py:178 "result = subprocess.run("
  MEDIUM   execution      skills/pptx/scripts/office/soffice.py:14 "subprocess.run(["soffice", ...], env=env)"
  MEDIUM   execution      skills/pptx/scripts/office/soffice.py:37 "return subprocess.run(["soffice"] + args, env=env, **kwargs)"
  MEDIUM   execution      skills/pptx/scripts/office/soffice.py:59 "subprocess.run("
  MEDIUM   execution      skills/pptx/scripts/office/validators/redlining.py:138 "result = subprocess.run("
  MEDIUM   execution      skills/pptx/scripts/office/validators/redlining.py:167 "result = subprocess.run("
  MEDIUM   execution      skills/docx/scripts/accept_changes.py:68 "result = subprocess.run("
  MEDIUM   execution      skills/docx/scripts/accept_changes.py:99 "subprocess.run("
  MEDIUM   execution      skills/docx/scripts/office/soffice.py:14 "subprocess.run(["soffice", ...], env=env)"
  MEDIUM   execution      skills/docx/scripts/office/soffice.py:37 "return subprocess.run(["soffice"] + args, env=env, **kwargs)"
  MEDIUM   execution      skills/docx/scripts/office/soffice.py:59 "subprocess.run("
  MEDIUM   execution      skills/docx/scripts/office/validators/redlining.py:138 "result = subprocess.run("
  MEDIUM   execution      skills/docx/scripts/office/validators/redlining.py:167 "result = subprocess.run("

Decision: ALLOWED — Allowed (trusted source, caution verdict)
╭─────────────────────────────────────────────────────────────────────────────────── Upstream Metadata ───────────────────────────────────────────────────────────────────────────────────╮
│ Repo: https://github.com/anthropics/skills                                                                                                                                              │
│ Detail Page: https://skills.sh/anthropics/skills                                                                                                                                        │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Installed: document-skills
Files: skills/xlsx/LICENSE.txt, skills/xlsx/SKILL.md, skills/xlsx/scripts/office/helpers/__init__.py, skills/xlsx/scripts/office/helpers/merge_runs.py,
skills/xlsx/scripts/office/helpers/simplify_redlines.py, skills/xlsx/scripts/office/pack.py, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd, skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd,
skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd, skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd,
skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd, skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd,
skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd, skills/xlsx/scripts/office/schemas/mce/mc.xsd, skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd,
skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd, skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd, skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd,
skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd, skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd,
skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd, skills/xlsx/scripts/office/soffice.py, skills/xlsx/scripts/office/unpack.py, skills/xlsx/scripts/office/validate.py,
skills/xlsx/scripts/office/validators/__init__.py, skills/xlsx/scripts/office/validators/base.py, skills/xlsx/scripts/office/validators/docx.py,
skills/xlsx/scripts/office/validators/pptx.py, skills/xlsx/scripts/office/validators/redlining.py, skills/xlsx/scripts/recalc.py, skills/docx/LICENSE.txt, skills/docx/SKILL.md,
skills/docx/scripts/__init__.py, skills/docx/scripts/accept_changes.py, skills/docx/scripts/comment.py, skills/docx/scripts/office/helpers/__init__.py,
skills/docx/scripts/office/helpers/merge_runs.py, skills/docx/scripts/office/helpers/simplify_redlines.py, skills/docx/scripts/office/pack.py,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd, skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd,
skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd, skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd,
skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd, skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd,
skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd, skills/docx/scripts/office/schemas/mce/mc.xsd, skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd,
skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd, skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd, skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd,
skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd, skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd,
skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd, skills/docx/scripts/office/soffice.py, skills/docx/scripts/office/unpack.py, skills/docx/scripts/office/validate.py,
skills/docx/scripts/office/validators/__init__.py, skills/docx/scripts/office/validators/base.py, skills/docx/scripts/office/validators/docx.py,
skills/docx/scripts/office/validators/pptx.py, skills/docx/scripts/office/validators/redlining.py, skills/docx/scripts/templates/comments.xml,
skills/docx/scripts/templates/commentsExtended.xml, skills/docx/scripts/templates/commentsExtensible.xml, skills/docx/scripts/templates/commentsIds.xml,
skills/docx/scripts/templates/people.xml, skills/pptx/LICENSE.txt, skills/pptx/SKILL.md, skills/pptx/editing.md, skills/pptx/pptxgenjs.md, skills/pptx/scripts/__init__.py,
skills/pptx/scripts/add_slide.py, skills/pptx/scripts/clean.py, skills/pptx/scripts/office/helpers/__init__.py, skills/pptx/scripts/office/helpers/merge_runs.py,
skills/pptx/scripts/office/helpers/simplify_redlines.py, skills/pptx/scripts/office/pack.py, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd, skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd,
skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd, skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd,
skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd, skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd,
skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd, skills/pptx/scripts/office/schemas/mce/mc.xsd, skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd,
skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd, skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd, skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd,
skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd, skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd,
skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd, skills/pptx/scripts/office/soffice.py, skills/pptx/scripts/office/unpack.py, skills/pptx/scripts/office/validate.py,
skills/pptx/scripts/office/validators/__init__.py, skills/pptx/scripts/office/validators/base.py, skills/pptx/scripts/office/validators/docx.py,
skills/pptx/scripts/office/validators/pptx.py, skills/pptx/scripts/office/validators/redlining.py, skills/pptx/scripts/thumbnail.py, skills/pdf/LICENSE.txt, skills/pdf/SKILL.md,
skills/pdf/forms.md, skills/pdf/reference.md, skills/pdf/scripts/check_bounding_boxes.py, skills/pdf/scripts/check_fillable_fields.py, skills/pdf/scripts/convert_pdf_to_images.py,
skills/pdf/scripts/create_validation_image.py, skills/pdf/scripts/extract_form_field_info.py, skills/pdf/scripts/extract_form_structure.py, skills/pdf/scripts/fill_fillable_fields.py,
skills/pdf/scripts/fill_pdf_form_with_annotations.py


Installing additional plugin: claude-api
Quarantined to .hub/quarantine/claude-api
Running security scan...
Scan: claude-api (anthropics/skills/trusted)  Verdict: DANGEROUS
  CRITICAL persistence    skills/claude-api/SKILL.md:90  "> **Managed Agents code examples**: dedicated language-speci"
  CRITICAL persistence    skills/claude-api/SKILL.md:234 "**Reading guide:** Start with `shared/managed-agents-overvie"
  CRITICAL persistence    skills/claude-api/SKILL.md:273 "→ Read `shared/managed-agents-overview.md` + the rest of the"
  CRITICAL persistence    skills/claude-api/shared/managed-agents-onboarding.md:114 "Pull exact syntax from `python/managed-agents/README.md`, `t"
  CRITICAL persistence    skills/claude-api/shared/managed-agents-client-patterns.md:5 "Code samples are TypeScript — Python and cURL follow the sam"
  CRITICAL credential_exposure skills/claude-api/go/managed-agents/README.md:512 "AuthorizationToken: "ghp_your_github_token","
  CRITICAL credential_exposure skills/claude-api/go/managed-agents/README.md:531 "AuthorizationToken: "ghp_your_github_token","
  CRITICAL credential_exposure skills/claude-api/go/managed-agents/README.md:539 "AuthorizationToken: "ghp_your_github_token","
  CRITICAL credential_exposure skills/claude-api/go/managed-agents/README.md:556 "AuthorizationToken: "ghp_your_new_github_token","
  CRITICAL credential_exposure skills/claude-api/php/managed-agents/README.md:433 "authorizationToken: 'ghp_your_new_github_token',"
  CRITICAL credential_exposure skills/claude-api/ruby/managed-agents/README.md:353 "authorization_token: "ghp_your_github_token""
  CRITICAL credential_exposure skills/claude-api/ruby/managed-agents/README.md:367 "authorization_token: "ghp_your_github_token""
  CRITICAL credential_exposure skills/claude-api/ruby/managed-agents/README.md:373 "authorization_token: "ghp_your_github_token""
  CRITICAL credential_exposure skills/claude-api/ruby/managed-agents/README.md:387 "authorization_token: "ghp_your_new_github_token""
  HIGH     exfiltration   skills/claude-api/shared/managed-agents-environments.md:182 ""authorization_token": os.environ["GITHUB_TOKEN"],  # repo c"
  HIGH     exfiltration   skills/claude-api/python/claude-api/README.md:227 "The API is stateless — send the full conversation history ea"
  HIGH     exfiltration   skills/claude-api/python/managed-agents/README.md:99 ""authorization_token": os.environ["GITHUB_TOKEN"],"
  HIGH     exfiltration   skills/claude-api/typescript/claude-api/README.md:225 "The API is stateless — send the full conversation history ea"
  MEDIUM   supply_chain   skills/claude-api/curl/managed-agents.md:175 "curl "https://api.anthropic.com/v1/sessions/$SESSION_ID/even"
  MEDIUM   supply_chain   skills/claude-api/curl/managed-agents.md:263 "curl "https://api.anthropic.com/v1/files?scope=$SESSION_ID" "
  MEDIUM   supply_chain   skills/claude-api/curl/managed-agents.md:267 "curl "https://api.anthropic.com/v1/files/$FILE_ID/content" \"
  MEDIUM   traversal      skills/claude-api/go/managed-agents/README.md:152 "> 💡 **Stream-first:** Open the stream *before* (or concurren"
  MEDIUM   traversal      skills/claude-api/python/claude-api/tool-use.md:3 "For conceptual overview (tool definitions, tool choice, tips"
  MEDIUM   supply_chain   skills/claude-api/python/claude-api/tool-use.md:54 "**Beta.** Convert [MCP (Model Context Protocol)](https://mod"
  MEDIUM   supply_chain   skills/claude-api/python/claude-api/README.md:6 "pip install anthropic"
  MEDIUM   traversal      skills/claude-api/python/managed-agents/README.md:122 "> 💡 **Stream-first:** Open the stream *before* (or concurren"
  MEDIUM   traversal      skills/claude-api/python/managed-agents/README.md:192 "> ⚠️ **Prefer the SDK over raw `requests`/`httpx`.** If you "
  MEDIUM   supply_chain   skills/claude-api/python/managed-agents/README.md:10 "pip install anthropic"
  MEDIUM   traversal      skills/claude-api/typescript/claude-api/tool-use.md:3 "For conceptual overview (tool definitions, tool choice, tips"
  MEDIUM   traversal      skills/claude-api/typescript/claude-api/README.md:219 "All classes extend `Anthropic.APIError` with a typed `status"
  MEDIUM   supply_chain   skills/claude-api/typescript/claude-api/README.md:6 "npm install @anthropic-ai/sdk"
  MEDIUM   traversal      skills/claude-api/typescript/managed-agents/README.md:132 "> 💡 **Stream-first:** Open the stream *before* (or concurren"
  MEDIUM   supply_chain   skills/claude-api/typescript/managed-agents/README.md:10 "npm install @anthropic-ai/sdk"
  MEDIUM   traversal      skills/claude-api/java/managed-agents/README.md:119 "> 💡 **Stream-first:** Open the stream *before* (or concurren"
  MEDIUM   traversal      skills/claude-api/php/managed-agents/README.md:107 "> 💡 **Stream-first:** Open the stream *before* (or concurren"
  MEDIUM   traversal      skills/claude-api/ruby/managed-agents/README.md:104 "> 💡 **Stream-first:** Open the stream *before* (or concurren"

Decision: BLOCKED — Blocked (trusted source + dangerous verdict, 36 findings). Use --force to override.
Installed: claude-api
Files: skills/claude-api/LICENSE.txt, skills/claude-api/SKILL.md, skills/claude-api/csharp/claude-api.md, skills/claude-api/curl/examples.md, skills/claude-api/curl/managed-agents.md,
skills/claude-api/go/claude-api.md, skills/claude-api/go/managed-agents/README.md, skills/claude-api/java/claude-api.md, skills/claude-api/java/managed-agents/README.md,
skills/claude-api/php/claude-api.md, skills/claude-api/php/managed-agents/README.md, skills/claude-api/python/claude-api/README.md, skills/claude-api/python/claude-api/batches.md,
skills/claude-api/python/claude-api/files-api.md, skills/claude-api/python/claude-api/streaming.md, skills/claude-api/python/claude-api/tool-use.md,
skills/claude-api/python/managed-agents/README.md, skills/claude-api/ruby/claude-api.md, skills/claude-api/ruby/managed-agents/README.md, skills/claude-api/shared/agent-design.md,
skills/claude-api/shared/error-codes.md, skills/claude-api/shared/live-sources.md, skills/claude-api/shared/managed-agents-api-reference.md,
skills/claude-api/shared/managed-agents-client-patterns.md, skills/claude-api/shared/managed-agents-core.md, skills/claude-api/shared/managed-agents-environments.md,
skills/claude-api/shared/managed-agents-events.md, skills/claude-api/shared/managed-agents-onboarding.md, skills/claude-api/shared/managed-agents-overview.md,
skills/claude-api/shared/managed-agents-tools.md, skills/claude-api/shared/models.md, skills/claude-api/shared/prompt-caching.md, skills/claude-api/shared/tool-use-concepts.md,
skills/claude-api/typescript/claude-api/README.md, skills/claude-api/typescript/claude-api/batches.md, skills/claude-api/typescript/claude-api/files-api.md,
skills/claude-api/typescript/claude-api/streaming.md, skills/claude-api/typescript/claude-api/tool-use.md, skills/claude-api/typescript/managed-agents/README.md

 ~/Projects/hermes-agent ╱ feat/claude-marketplace-install ⇡3 !1 ?3
skill list after install
/Users/baegteun/Projects/hermes-agent/.venv/bin/hermes skills list                                      ✔ ╱ 1m 35s
                                  Installed Skills
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┓
┃ Name                                   ┃ Category             ┃ Source  ┃ Trust   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━┩
...
│ claude-api                             │ claude-api           │ github  │ trusted │
...
│ docx                                   │ document-skills      │ locallocal   │
│ pdf                                    │ document-skills      │ locallocal   │
│ pptx                                   │ document-skills      │ locallocal   │
│ xlsx                                   │ document-skills      │ locallocal   │
...
└────────────────────────────────────────┴──────────────────────┴─────────┴─────────┘
1 hub-installed, 68 builtin, 49 local
all skill list
/Users/baegteun/Projects/hermes-agent/.venv/bin/hermes skills list                                      ✔ ╱ 1m 35s
                                  Installed Skills
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┓
┃ Name                                   ┃ Category             ┃ Source  ┃ Trust   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━┩
│ dogfood                                │                      │ builtinbuiltin │
│ ios-accessibility                      │                      │ locallocal   │
│ swift-accessibility-skill              │                      │ locallocal   │
│ apple-notes                            │ apple                │ builtinbuiltin │
│ apple-reminders                        │ apple                │ builtinbuiltin │
│ findmy                                 │ apple                │ builtinbuiltin │
│ imessage                               │ apple                │ builtinbuiltin │
│ claude-code                            │ autonomous-ai-agents │ builtinbuiltin │
│ codex                                  │ autonomous-ai-agents │ builtinbuiltin │
│ gemini-cli                             │ autonomous-ai-agents │ locallocal   │
│ hermes-agent                           │ autonomous-ai-agents │ builtinbuiltin │
│ opencode                               │ autonomous-ai-agents │ builtinbuiltin │
│ claude-api                             │ claude-api           │ github  │ trusted │
│ ascii-art                              │ creative             │ builtinbuiltin │
│ ascii-video                            │ creative             │ builtinbuiltin │
│ excalidraw                             │ creative             │ builtinbuiltin │
│ manim-video                            │ creative             │ builtinbuiltin │
│ p5js                                   │ creative             │ builtinbuiltin │
│ popular-web-designs                    │ creative             │ builtinbuiltin │
│ songwriting-and-ai-music               │ creative             │ builtinbuiltin │
│ jupyter-live-kernel                    │ data-science         │ builtinbuiltin │
│ webhook-subscriptions                  │ devops               │ builtinbuiltin │
│ docx                                   │ document-skills      │ locallocal   │
│ pdf                                    │ document-skills      │ locallocal   │
│ pptx                                   │ document-skills      │ locallocal   │
│ xlsx                                   │ document-skills      │ locallocal   │
│ himalaya                               │ email                │ builtinbuiltin │
│ minecraft-modpack-server               │ gaming               │ builtinbuiltin │
│ pokemon-player                         │ gaming               │ builtinbuiltin │
│ codebase-inspection                    │ github               │ builtinbuiltin │
│ github-auth                            │ github               │ builtinbuiltin │
│ github-code-review                     │ github               │ builtinbuiltin │
│ github-issues                          │ github               │ builtinbuiltin │
│ github-pr-workflow                     │ github               │ builtinbuiltin │
│ github-repo-management                 │ github               │ builtinbuiltin │
│ inference-sh-cli                       │ inference-sh         │ locallocal   │
│ claude-code-plugin-install             │ ios                  │ locallocal   │
│ todaywhat-ios-build-testflight         │ ios                  │ locallocal   │
│ todaywhat-ios-feature-development      │ ios                  │ locallocal   │
│ find-nearby                            │ leisure              │ builtinbuiltin │
│ mcporter                               │ mcp                  │ builtinbuiltin │
│ native-mcp                             │ mcp                  │ builtinbuiltin │
│ gif-search                             │ media                │ builtinbuiltin │
│ heartmula                              │ media                │ builtinbuiltin │
│ songsee                                │ media                │ builtinbuiltin │
│ youtube-content                        │ media                │ builtinbuiltin │
│ audiocraft-audio-generation            │ mlops                │ locallocal   │
│ axolotl                                │ mlops                │ builtinbuiltin │
│ chroma                                 │ mlops                │ locallocal   │
│ clip                                   │ mlops                │ builtinbuiltin │
│ distributed-llm-pretraining-torchtitan │ mlops                │ locallocal   │
│ dspy                                   │ mlops                │ builtinbuiltin │
│ evaluating-llms-harness                │ mlops                │ locallocal   │
│ faiss                                  │ mlops                │ locallocal   │
│ fine-tuning-with-trl                   │ mlops                │ locallocal   │
│ gguf-quantization                      │ mlops                │ locallocal   │
│ grpo-rl-training                       │ mlops                │ builtinbuiltin │
│ guidance                               │ mlops                │ builtinbuiltin │
│ hermes-atropos-environments            │ mlops                │ locallocal   │
│ huggingface-accelerate                 │ mlops                │ locallocal   │
│ huggingface-hub                        │ mlops                │ builtinbuiltin │
│ huggingface-tokenizers                 │ mlops                │ locallocal   │
│ instructor                             │ mlops                │ locallocal   │
│ lambda-labs-gpu-cloud                  │ mlops                │ locallocal   │
│ llama-cpp                              │ mlops                │ builtinbuiltin │
│ llava                                  │ mlops                │ locallocal   │
│ modal-serverless-gpu                   │ mlops                │ locallocal   │
│ nemo-curator                           │ mlops                │ locallocal   │
│ obliteratus                            │ mlops                │ builtinbuiltin │
│ optimizing-attention-flash             │ mlops                │ locallocal   │
│ outlines                               │ mlops                │ builtinbuiltin │
│ peft-fine-tuning                       │ mlops                │ locallocal   │
│ pinecone                               │ mlops                │ locallocal   │
│ pytorch-fsdp                           │ mlops                │ builtinbuiltin │
│ pytorch-lightning                      │ mlops                │ locallocal   │
│ qdrant-vector-search                   │ mlops                │ locallocal   │
│ segment-anything-model                 │ mlops                │ locallocal   │
│ serving-llms-vllm                      │ mlops                │ locallocal   │
│ simpo-training                         │ mlops                │ locallocal   │
│ slime-rl-training                      │ mlops                │ locallocal   │
│ sparse-autoencoder-training            │ mlops                │ locallocal   │
│ stable-diffusion-image-generation      │ mlops                │ locallocal   │
│ tensorrt-llm                           │ mlops                │ locallocal   │
│ unsloth                                │ mlops                │ builtinbuiltin │
│ weights-and-biases                     │ mlops                │ builtinbuiltin │
│ whisper                                │ mlops                │ builtinbuiltin │
│ obsidian                               │ note-taking          │ builtinbuiltin │
│ google-workspace                       │ productivity         │ builtinbuiltin │
│ linear                                 │ productivity         │ builtinbuiltin │
│ nano-pdf                               │ productivity         │ builtinbuiltin │
│ notion                                 │ productivity         │ builtinbuiltin │
│ notion-mcp-remote                      │ productivity         │ locallocal   │
│ ocr-and-documents                      │ productivity         │ builtinbuiltin │
│ powerpoint                             │ productivity         │ builtinbuiltin │
│ godmode                                │ red-teaming          │ builtinbuiltin │
│ arxiv                                  │ research             │ builtinbuiltin │
│ autoresearch                           │ research             │ locallocal   │
│ blogwatcher                            │ research             │ builtinbuiltin │
│ domain-intel                           │ research             │ locallocal   │
│ duckduckgo-search                      │ research             │ locallocal   │
│ file-first-llm-knowledge-base-eval     │ research             │ locallocal   │
│ llm-wiki                               │ research             │ builtinbuiltin │
│ local-llm-knowledge-base-eval          │ research             │ locallocal   │
│ ml-paper-writing                       │ research             │ locallocal   │
│ parallel-cli                           │ research             │ locallocal   │
│ polymarket                             │ research             │ builtinbuiltin │
│ research-paper-writing                 │ research             │ builtinbuiltin │
│ x-post-summarization                   │ research             │ locallocal   │
│ openhue                                │ smart-home           │ builtinbuiltin │
│ xitter                                 │ social-media         │ builtinbuiltin │
│ code-review                            │ software-development │ locallocal   │
│ plan                                   │ software-development │ builtinbuiltin │
│ planner-first-multi-review-design      │ software-development │ locallocal   │
│ requesting-code-review                 │ software-development │ builtinbuiltin │
│ subagent-driven-development            │ software-development │ builtinbuiltin │
│ systematic-debugging                   │ software-development │ builtinbuiltin │
│ test-driven-development                │ software-development │ builtinbuiltin │
│ writing-plans                          │ software-development │ builtinbuiltin │
└────────────────────────────────────────┴──────────────────────┴─────────┴─────────┘
1 hub-installed, 68 builtin, 49 local
uninstall plugin
 ~/Projects/hermes-agent ╱ feat/claude-marketplace-install ⇡3 !1 ?3  /Users/baegteun/Projects/hermes-agent/.venv/bin/hermes skills uninstall document-skills                          ✔

Uninstall 'document-skills'?
Confirm [y/N]: y
Uninstalled 'document-skills' from document-skills


 ~/Projects/hermes-agent ╱ feat/claude-marketplace-install ⇡3 !1 ?3  /Users/baegteun/Projects/hermes-agent/.venv/bin/hermes skills uninstall claude-api                               ✔

Uninstall 'claude-api'?
Confirm [y/N]: y
Uninstalled 'claude-api' from claude-api
skill list after uninstall
/Users/baegteun/Projects/hermes-agent/.venv/bin/hermes skills list                                               ✔
                                  Installed Skills
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┓
┃ Name                                   ┃ Category             ┃ Source  ┃ Trust   ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━┩
│ dogfood                                │                      │ builtinbuiltin │
│ ios-accessibility                      │                      │ locallocal   │
│ swift-accessibility-skill              │                      │ locallocal   │
│ apple-notes                            │ apple                │ builtinbuiltin │
│ apple-reminders                        │ apple                │ builtinbuiltin │
│ findmy                                 │ apple                │ builtinbuiltin │
│ imessage                               │ apple                │ builtinbuiltin │
│ claude-code                            │ autonomous-ai-agents │ builtinbuiltin │
│ codex                                  │ autonomous-ai-agents │ builtinbuiltin │
│ gemini-cli                             │ autonomous-ai-agents │ locallocal   │
│ hermes-agent                           │ autonomous-ai-agents │ builtinbuiltin │
│ opencode                               │ autonomous-ai-agents │ builtinbuiltin │
│ ascii-art                              │ creative             │ builtinbuiltin │
│ ascii-video                            │ creative             │ builtinbuiltin │
│ excalidraw                             │ creative             │ builtinbuiltin │
│ manim-video                            │ creative             │ builtinbuiltin │
│ p5js                                   │ creative             │ builtinbuiltin │
│ popular-web-designs                    │ creative             │ builtinbuiltin │
│ songwriting-and-ai-music               │ creative             │ builtinbuiltin │
│ jupyter-live-kernel                    │ data-science         │ builtinbuiltin │
│ webhook-subscriptions                  │ devops               │ builtinbuiltin │
│ himalaya                               │ email                │ builtinbuiltin │
│ minecraft-modpack-server               │ gaming               │ builtinbuiltin │
│ pokemon-player                         │ gaming               │ builtinbuiltin │
│ codebase-inspection                    │ github               │ builtinbuiltin │
│ github-auth                            │ github               │ builtinbuiltin │
│ github-code-review                     │ github               │ builtinbuiltin │
│ github-issues                          │ github               │ builtinbuiltin │
│ github-pr-workflow                     │ github               │ builtinbuiltin │
│ github-repo-management                 │ github               │ builtinbuiltin │
│ inference-sh-cli                       │ inference-sh         │ locallocal   │
│ claude-code-plugin-install             │ ios                  │ locallocal   │
│ todaywhat-ios-build-testflight         │ ios                  │ locallocal   │
│ todaywhat-ios-feature-development      │ ios                  │ locallocal   │
│ find-nearby                            │ leisure              │ builtinbuiltin │
│ mcporter                               │ mcp                  │ builtinbuiltin │
│ native-mcp                             │ mcp                  │ builtinbuiltin │
│ gif-search                             │ media                │ builtinbuiltin │
│ heartmula                              │ media                │ builtinbuiltin │
│ songsee                                │ media                │ builtinbuiltin │
│ youtube-content                        │ media                │ builtinbuiltin │
│ audiocraft-audio-generation            │ mlops                │ locallocal   │
│ axolotl                                │ mlops                │ builtinbuiltin │
│ chroma                                 │ mlops                │ locallocal   │
│ clip                                   │ mlops                │ builtinbuiltin │
│ distributed-llm-pretraining-torchtitan │ mlops                │ locallocal   │
│ dspy                                   │ mlops                │ builtinbuiltin │
│ evaluating-llms-harness                │ mlops                │ locallocal   │
│ faiss                                  │ mlops                │ locallocal   │
│ fine-tuning-with-trl                   │ mlops                │ locallocal   │
│ gguf-quantization                      │ mlops                │ locallocal   │
│ grpo-rl-training                       │ mlops                │ builtinbuiltin │
│ guidance                               │ mlops                │ builtinbuiltin │
│ hermes-atropos-environments            │ mlops                │ locallocal   │
│ huggingface-accelerate                 │ mlops                │ locallocal   │
│ huggingface-hub                        │ mlops                │ builtinbuiltin │
│ huggingface-tokenizers                 │ mlops                │ locallocal   │
│ instructor                             │ mlops                │ locallocal   │
│ lambda-labs-gpu-cloud                  │ mlops                │ locallocal   │
│ llama-cpp                              │ mlops                │ builtinbuiltin │
│ llava                                  │ mlops                │ locallocal   │
│ modal-serverless-gpu                   │ mlops                │ locallocal   │
│ nemo-curator                           │ mlops                │ locallocal   │
│ obliteratus                            │ mlops                │ builtinbuiltin │
│ optimizing-attention-flash             │ mlops                │ locallocal   │
│ outlines                               │ mlops                │ builtinbuiltin │
│ peft-fine-tuning                       │ mlops                │ locallocal   │
│ pinecone                               │ mlops                │ locallocal   │
│ pytorch-fsdp                           │ mlops                │ builtinbuiltin │
│ pytorch-lightning                      │ mlops                │ locallocal   │
│ qdrant-vector-search                   │ mlops                │ locallocal   │
│ segment-anything-model                 │ mlops                │ locallocal   │
│ serving-llms-vllm                      │ mlops                │ locallocal   │
│ simpo-training                         │ mlops                │ locallocal   │
│ slime-rl-training                      │ mlops                │ locallocal   │
│ sparse-autoencoder-training            │ mlops                │ locallocal   │
│ stable-diffusion-image-generation      │ mlops                │ locallocal   │
│ tensorrt-llm                           │ mlops                │ locallocal   │
│ unsloth                                │ mlops                │ builtinbuiltin │
│ weights-and-biases                     │ mlops                │ builtinbuiltin │
│ whisper                                │ mlops                │ builtinbuiltin │
│ obsidian                               │ note-taking          │ builtinbuiltin │
│ google-workspace                       │ productivity         │ builtinbuiltin │
│ linear                                 │ productivity         │ builtinbuiltin │
│ nano-pdf                               │ productivity         │ builtinbuiltin │
│ notion                                 │ productivity         │ builtinbuiltin │
│ notion-mcp-remote                      │ productivity         │ locallocal   │
│ ocr-and-documents                      │ productivity         │ builtinbuiltin │
│ powerpoint                             │ productivity         │ builtinbuiltin │
│ godmode                                │ red-teaming          │ builtinbuiltin │
│ arxiv                                  │ research             │ builtinbuiltin │
│ autoresearch                           │ research             │ locallocal   │
│ blogwatcher                            │ research             │ builtinbuiltin │
│ domain-intel                           │ research             │ locallocal   │
│ duckduckgo-search                      │ research             │ locallocal   │
│ file-first-llm-knowledge-base-eval     │ research             │ locallocal   │
│ llm-wiki                               │ research             │ builtinbuiltin │
│ local-llm-knowledge-base-eval          │ research             │ locallocal   │
│ ml-paper-writing                       │ research             │ locallocal   │
│ parallel-cli                           │ research             │ locallocal   │
│ polymarket                             │ research             │ builtinbuiltin │
│ research-paper-writing                 │ research             │ builtinbuiltin │
│ x-post-summarization                   │ research             │ locallocal   │
│ openhue                                │ smart-home           │ builtinbuiltin │
│ xitter                                 │ social-media         │ builtinbuiltin │
│ code-review                            │ software-development │ locallocal   │
│ plan                                   │ software-development │ builtinbuiltin │
│ planner-first-multi-review-design      │ software-development │ locallocal   │
│ requesting-code-review                 │ software-development │ builtinbuiltin │
│ subagent-driven-development            │ software-development │ builtinbuiltin │
│ systematic-debugging                   │ software-development │ builtinbuiltin │
│ test-driven-development                │ software-development │ builtinbuiltin │
│ writing-plans                          │ software-development │ builtinbuiltin │
└────────────────────────────────────────┴──────────────────────┴─────────┴─────────┘
0 hub-installed, 68 builtin, 45 local

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have tool/skills Skills system (list, view, manage) labels Apr 29, 2026

@teknium1 teknium1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for covering the direct marketplace-repository workflow. The premise remains valid: current HEAD rejects a two-segment owner/repo identifier in tools/skills_hub.py:598, while the existing ClaudeMarketplaceSource only delegates installs back to that GitHub source (tools/skills_hub.py:2670-2675).

Problems

  • tools/skills_hub.py:815 in this PR calls input() for multiple plugins. Current slash installs deliberately set skip_confirm=True because input() hangs under prompt_toolkit (hermes_cli/skills_hub.py:1857-1859); this path has no corresponding noninteractive handling.
  • The PR adds marketplace parsing to GitHubSource (tools/skills_hub.py:658) although HEAD already has ClaudeMarketplaceSource (tools/skills_hub.py:2608-2705). Keeping two resolvers would make marketplace behavior and cache handling diverge.

Suggested changes

  • Consolidate the resolver into the existing marketplace source and use it for discovery, install, inspect, and update.
  • Make plugin selection surface-aware: noninteractive callers need a deterministic selector or an actionable error, never input().

Automated hermes-sweeper review.

Comment thread tools/skills_hub.py
print(f" [{i}] {p.get('name', '?')} — {desc}")

try:
answer = input(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This raw input() is reached before do_install(..., skip_confirm=True) can suppress interaction. /skills install explicitly uses skip_confirm=True because prompt_toolkit input hangs on that surface (hermes_cli/skills_hub.py:1857-1859 on HEAD). Thread a noninteractive selection policy here and return an actionable error or use an explicit plugin selector instead.

Comment thread tools/skills_hub.py
logger.debug("GitHub contents API fetch failed: %s", e)
return None

def _fetch_marketplace_json(self, repo: str) -> list:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HEAD already has ClaudeMarketplaceSource and _fetch_marketplace_index() in this module (tools/skills_hub.py:2608-2705). Please consolidate manifest parsing and resolution there rather than creating a second implementation in GitHubSource; otherwise search and direct-install paths will diverge.

@teknium1 teknium1 added sweeper:risk-security-boundary Sweeper risk: may affect sandboxing, auth, credentials, or sensitive data sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 12, 2026
@teknium1

Copy link
Copy Markdown
Contributor

Thanks @baekteun for the work here — the implementation was solid and the premise (2-segment owner/repo installs failing) was real when filed.

We've since decided to remove marketplace.json support entirely rather than extend it (#73903). Rationale:

  • Anthropic changed the manifest format: plugins are now bundles (source: "./" + a skills: array), so plugin entries no longer map to installable skill directories — every plugin resolves to the repo root. Supporting the new format would require fresh parsing work with no payoff (see next point).
  • The only real-world repo publishing this manifest is anthropics/skills, and its skills are already fully discoverable and installable through the GitHub tap (the "Anthropic" hub tab) using standard 3-segment identifiers, e.g. hermes skills install anthropics/skills/skills/pdf.
  • The second known marketplace repo (aiskillstore/marketplace) is gone (404).

With no remaining live use case, we're closing this rather than asking for a rebase. If the marketplace.json ecosystem grows real independent repos again, the right home for this would be manifest parsing inside GitHubSource with bundle-format awareness — and this PR would be the reference for that. Appreciated!

@teknium1 teknium1 closed this Jul 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-security-boundary Sweeper risk: may affect sandboxing, auth, credentials, or sensitive data tool/skills Skills system (list, view, manage) type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: support hermes skills install owner/repo via .claude-plugin/marketplace.json

3 participants