4227336677
Optional skills merged to main after a user's install was cut were invisible to 'hermes skills install official/...' until they ran 'hermes update' — the OptionalSkillSource only scanned the local optional-skills/ checkout. Now, when an official/<category>/<skill> identifier is not found locally, OptionalSkillSource resolves it against the live default branch of NousResearch/hermes-agent: one Trees API call enumerates optional-skills/*/SKILL.md dirs (cached on disk via the shared index cache, 1h TTL), then the full skill directory is downloaded byte-exact (including root-level install scripts, LICENSE, tests/ — files the generic GitHubSource.fetch path drops). search() and inspect() also surface remote-only skills so discovery works pre-update too. Local checkout always wins when present; offline degrades to the old local-only behavior; traversal and ambiguous bare names are refused; provenance stays official/builtin.