46e20083d8
Adds hermes-pack.yaml: a single YAML file pinning a set of plugins to exact 40-char commit SHAs with optional non-secret plugins.entries config seeds and a declared (not yet installed) skills list. CLI: - hermes plugins pack install <path|https-url> [--force]: mandatory review screen (plugins + refs + declared capabilities), one summary confirmation, then fan-out through the existing pinned install path. Per-plugin capability consent rides the standard #64228 flow — a pack never bulk-grants. Partial failures reported per plugin; non-zero exit when any fail. Interactive only (no --yes in v1). - hermes plugins pack export [--enabled-only] [--name]: pack YAML on stdout from install metadata (repo + exact SHA); local-only plugins become warning comments; secrets/capability grants stripped. - hermes plugins pack show <path|url>: dry-run view. Supply chain: refs must be exact 40-char SHAs (tags/branches rejected naming the entry, same rule as the community index); config seeds reject secret-shaped, capability, and allow_* keys; bare names resolve through the community index; https-only URL fetch with size cap. Tests: tests/hermes_cli/test_plugin_packs.py (36) — parse/validate, SHA enforcement, mocked install fan-out, consent-per-plugin assertion, export round-trip + sanitization, partial-failure exit code, parser wiring. No live network. Docs: user-guide plugins.md packs section (notes packs build on the manifest v2 fields per #64165) + cli-commands.md rows. Closes #64166