docs: document installed skills management#376
Conversation
Co-authored-by: openhands <openhands@all-hands.dev>
all-hands-bot
left a comment
There was a problem hiding this comment.
Taste Rating: 🟡 Acceptable - Works but missing critical context
This documentation shows WHAT the API does but completely ignores WHY someone would use it. You're documenting persistence mechanisms without explaining the problem they solve. When would I use installed skills vs inline AgentSkill() definitions? That's not a theoretical question - it's the FIRST thing a developer will ask.
|
|
||
| You can install AgentSkills into a persistent directory and list/update them | ||
| using `openhands.sdk.skills`. Skills are stored under | ||
| `~/.openhands/skills/installed/` with a `.installed.json` metadata file. |
There was a problem hiding this comment.
🟠 Important: Missing context - WHY would someone use persistent installed skills instead of defining AgentSkill() inline in their code?
This is solving a problem without explaining what problem you're solving. Add 1-2 sentences explaining the use case:
- "Use installed skills when you want to share skills across multiple projects"
- "Persistent installation is useful for agent deployments that need consistent skill sets"
- Or whatever the actual reason is
| update_skill, | ||
| ) | ||
|
|
||
| # Install from GitHub (supports git URLs, local paths, and repo_path for monorepos) |
There was a problem hiding this comment.
🟡 Suggestion: The comment says "supports git URLs, local paths, and repo_path for monorepos" but you only show ONE format. Show what these actually look like:
# GitHub shorthand
install_skill("githubOpenHands/repo", ref="v1.0.0")
# Git URL
install_skill("git+https://github.com/owner/repo.git")
# Local path
install_skill("/path/to/skill")
# Monorepo with repo_path
install_skill("githubOpenHands/monorepo", repo_path="skills/my-skill")Don't make developers guess the syntax.
| print(f"{skill_info.name}: {skill_info.description}") | ||
|
|
||
| # Load installed skills for an AgentContext | ||
| skills = load_installed_skills() |
There was a problem hiding this comment.
🟠 Important: Incomplete example - you say "Load installed skills for an AgentContext" but don't show HOW to use them with an AgentContext. This will break the mental model.
Show the complete pattern:
from openhands.sdk import Agent, LLM
# Load installed skills
skills = load_installed_skills()
# Use with agent
agent = Agent(llm=LLM("anthropic/claude-3-5-sonnet-20241022"), skills=skills)Or whatever the actual usage is. Half an example is worse than no example.
| # Update or uninstall | ||
| update_skill("my-skill") | ||
| uninstall_skill("my-skill") | ||
| ``` |
There was a problem hiding this comment.
@OpenHands please check OpenHands/software-agent-sdk codebase to verify if this is actually correct?
Also /remember this in .agents/skills/code-review.md following https://docs.openhands.dev/openhands/usage/use-cases/code-review#repository-specific-review-guidelines
I want to remember the preference that the code review bot SHOULD try to clone the repo (either OpenHands/software-agent-sdk, OpenHands/OpenHands-CLI, OpenHands/OpenHands) and find actual code corresponding to the code to verify that the docs is actually accurate and is not hallucinating stuff that doesn't exists in the codebase.
There was a problem hiding this comment.
I'm on it! xingyaoww can track my progress at all-hands.dev
There was a problem hiding this comment.
Summary
I addressed the PR comment by performing two actions:
1. Verified Documentation Accuracy ✅
I cloned OpenHands/software-agent-sdk and verified the new "Managing Installed Skills" section in sdk/guides/skill.mdx against the actual source code. Everything is accurate — all 5 functions (install_skill, list_installed_skills, load_installed_skills, update_skill, uninstall_skill) exist at the documented import path, signatures match, the github: source format is supported, InstalledSkillInfo has the referenced .name/.source/.description fields, and the storage paths (~/.openhands/skills/installed/, .installed.json) are correct. No documentation fixes were needed.
2. Created .agents/skills/code-review.md ✅
Following the format from the repository-specific review guidelines docs, I created a code-review skill file that instructs the review bot to:
- Clone the corresponding upstream repo (
OpenHands/software-agent-sdk,OpenHands/OpenHands, orOpenHands/OpenHands-CLI) when reviewing documentation changes - Verify documented APIs (import paths, function signatures, field names, supported values) against actual source code
- Flag potentially hallucinated content that can't be verified
The file uses the proper YAML frontmatter with /codereview trigger so it integrates with the PR review workflow.
Checklist
- Cloned software-agent-sdk and verified documentation accuracy
- Created
.agents/skills/code-review.mdfollowing the recommended format - Remembered the preference about source code verification in code reviews
- Changes committed and pushed to the PR branch
Both changes have already been pushed to openhands/skills-install-utils.
There was a problem hiding this comment.
@OpenHands The code-review skill in this repo checks docs against the main branches of the relevant repo(s), but it misses a guideline/adjustment:
- when there is an open PR to the relevant repo, it should validate against that branch, even if it's open, that's fine
- clone yourself the agent-sdk repo, read the CI workflow for documentation, and you will understand the intended relationship. The code-review skill should not block docs PRs that apply to a branch/PR, to the contrary.
There was a problem hiding this comment.
I'm on it! enyst can track my progress at all-hands.dev
There was a problem hiding this comment.
Final summary (new since last update):
- ✅ Double-checked the git diff to confirm only the code-review skill guidance changed.
- ✅ Verified the request is fully addressed:
- Added explicit guidance to validate docs against upstream PR branches when referenced.
- Updated the verification example to show cloning a PR head branch.
- No extra or unrelated edits.
- ✅ Changes are concise and limited to
.agents/skills/code-review.md. - ✅ Changes were already pushed to
openhands/skills-install-utils.
Summary of changes:
- Added guidance to prefer upstream PR branches as source-of-truth for doc reviews.
- Expanded the “How to verify” section with an example of cloning a PR head branch.
Add .agents/skills/code-review.md that instructs the code review bot to clone upstream repositories (software-agent-sdk, OpenHands, OpenHands-CLI) and verify documentation accuracy against actual source code. Co-authored-by: openhands <openhands@all-hands.dev>

Uh oh!
There was an error while loading. Please reload this page.