feat(skills): add optional openhands skill — closes #477#32261
Merged
Conversation
Adds an optional autonomous-ai-agents skill that delegates coding tasks to the OpenHands CLI (https://github.com/All-Hands-AI/OpenHands). Sits alongside claude-code / codex / opencode and is the model-agnostic option in that family — any LiteLLM-supported provider works. This is a ground-truth rewrite of #19325 by @xzessmedia (Tim Koepsel). The original PR's SKILL.md was drafted by the OpenHands agent itself and hallucinated several flags that don't exist in the real CLI (\`--model\`, \`--max-iterations\`, \`--workspace\`, \`--sandbox docker\`), pointed at the wrong PyPI package (\`openhands-ai\`, which is the legacy V0 SDK), and claimed native Windows support that the upstream docs explicitly disclaim. Rather than cherry-pick and rewrite half the lines under contributor authorship, the SKILL.md was rebuilt against a verified install (\`uv tool install openhands --python 3.12\`) and a real end-to-end \`--headless --json\` run against openrouter/openai/gpt-4o-mini. Authorship credited via the \`author:\` frontmatter field and an AUTHOR_MAP entry in scripts/release.py. Changes: - optional-skills/autonomous-ai-agents/openhands/SKILL.md (new) - website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-openhands.md (auto-gen) - website/docs/reference/optional-skills-catalog.md (one new row) - website/sidebars.ts (one new entry under Optional → Autonomous AI Agents) - scripts/release.py (AUTHOR_MAP entry for xzessmedia) Pitfalls documented in the SKILL came from running the tool, not from the upstream README: LiteLLM bedrock/sagemaker stderr noise on every invocation, banner spam (\`OPENHANDS_SUPPRESS_BANNER=1\` required), \`--override-with-envs\` mandatory or the CLI ignores LLM_* env vars entirely, the dashed-vs-undashed Conversation ID footgun for \`--resume\`, LiteLLM model-slug double-prefix when going through OpenRouter.
Contributor
🔎 Lint report:
|
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds an optional
openhandsskill underoptional-skills/autonomous-ai-agents/so the agent can delegate coding tasks to the OpenHands CLI alongsideclaude-code/codex/opencode. OpenHands is the model-agnostic member of that family — any LiteLLM-supported provider (OpenAI, Anthropic, OpenRouter, DeepSeek, Ollama, vLLM, etc.).Closes #477.
Why a ground-truth rewrite of #19325
#19325 (by @xzessmedia / Tim Koepsel) was drafted with OpenHands itself, and the LLM hallucinated several flags that don't exist in the real CLI:
--model anthropic/claude-sonnet-4-5--modelflag. UseLLM_MODELenv var.--max-iterations N--workspace <path>workdiryou pass through.--sandbox docker/--sandbox localRUNTIME/SANDBOX_VOLUMESenv.pip install openhands-aiuv tool install openhands --python 3.12.conda install -c conda-forge openhandsopenhands modelssubcommandacp/serve/web/mcp/cloud/login/logout/view.platforms: [linux, macos, windows](inherited from sibling skills)[linux, macos].Rewrote from scratch against a verified install + a real
--headless --jsonend-to-end run onopenrouter/openai/gpt-4o-mini. Author credit preserved in theauthor:frontmatter (Tim Koepsel (xzessmedia), Hermes Agent) and via anAUTHOR_MAPentry inscripts/release.py. Original PR will be closed with credit + a link to this one.Changes
optional-skills/autonomous-ai-agents/openhands/SKILL.mdopenhands --help(CLI 1.16.0 / SDK 1.21.0). Pitfalls section sourced from the real run.website/docs/user-guide/skills/optional/autonomous-ai-agents/autonomous-ai-agents-openhands.mdwebsite/docs/reference/optional-skills-catalog.mdwebsite/sidebars.tsscripts/release.pyAUTHOR_MAPentry for3153586+xzessmedia@users.noreply.github.com→xzessmedia.Validation
Live install + end-to-end run in
~/scratch/openhands-spike/:Pitfalls landed in the SKILL because they hit during the spike — not because the upstream README mentioned them:
botocorenot installed)OPENHANDS_SUPPRESS_BANNER=1--override-with-envsmandatory in headless or the CLI ignoresLLM_*env vars and hangs on first-run setupopenrouter/anthropic/claude-sonnet-4.5, notanthropic/claude-sonnet-4-5)--resumewants--llm-approveis rejected in headless mode (argparse error)Notes
version: 0.1.0,license: MIT,platforms: [linux, macos], contributor-first author field.Infographic