Skip to content

fix(skills): populate slash menu and skills modal#362

Merged
hieptl merged 10 commits into
mainfrom
vasco/skills
May 15, 2026
Merged

fix(skills): populate slash menu and skills modal#362
hieptl merged 10 commits into
mainfrom
vasco/skills

Conversation

@VascoSch92
Copy link
Copy Markdown
Member

  • A human has tested these changes.

Summary

Fixes #307. The slash menu and skills modal were empty on cloud backends because they fetched skills through a path (useConversationSkillsAgentServerConversationService.getSkills
loadSkillsForConversation) that only ever spoke to the local agent-server. On cloud, createSkillsClient falls back to the first registered local backend — which usually doesn't exist, so the call returned
nothing.

The settings page already had the right pattern: SkillsService.getSkills branches on getActiveBackend().backend.kind === "cloud" and delegates to fetchCloudSkills via callCloudProxy. Agent-canvas has no
per-conversation skill state (no sandbox-status gating, no org context, no per-conv disabled_skills server-side), so the conversation-scoped path was never doing anything the settings path didn't already do
correctly. This PR consolidates both consumers onto useSkills.

As a side effect, public skills now appear in the slash menu by default (the old conversation path gated on VITE_LOAD_PUBLIC_SKILLS; the settings-page path forces load_public: true), matching the second
bullet of the issue's expected behavior.

Issue Number

Closes #307

Tests

  • src/hooks/chat/use-slash-command.ts and src/components/features/conversation-panel/skills-modal.tsx: switched from useConversationSkills to useSkills.
    • src/components/features/chat/components/slash-command-menu.tsx: description extraction falls back to skill.description when content is absent (cloud SkillInfo carries description but no content);
      narrows via in to match type-guards.ts style.
    • src/components/features/conversation-panel/skill-item.tsx: typed against SkillInfo, tolerates missing content/triggers.
    • Dead code removed: loadSkillsForConversation (agent-server-adapter.ts), AgentServerConversationService.getSkills, and the alias hook use-conversation-skills.ts.
    • Tests updated to mock SkillsService.getSkills (the real data source).

Video/Screenshots

Screen.Recording.2026-05-12.at.10.49.51.mov

Type

  • Bug fix
  • Feature
  • Refactor
  • Breaking change
  • Docs / chore

@vercel
Copy link
Copy Markdown

vercel Bot commented May 12, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agent-canvas Ready Ready Preview, Comment May 15, 2026 7:57pm

Request Review

@VascoSch92 VascoSch92 requested a review from all-hands-bot May 12, 2026 08:56
Copy link
Copy Markdown
Contributor

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

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

Clean simplification that fixes cloud backend skills. Removes redundant code path and consolidates both consumers onto the working settings flow.

@VascoSch92 VascoSch92 marked this pull request as ready for review May 12, 2026 09:00
Copy link
Copy Markdown
Contributor

@hieptl hieptl left a comment

Choose a reason for hiding this comment

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

Hello @VascoSch92,

It appears that the skills are not being triggered on my end. For your reference, I’ve included an image below that provides further details.

Image

Thank you very much! 🙏

@VascoSch92
Copy link
Copy Markdown
Member Author

@OpenHands Fix the conflicts

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

I'm on it! VascoSch92 can track my progress at all-hands.dev

Conflicts resolved:
- __tests__/components/modals/skills/skill-modal.test.tsx: Keep SkillsService mock
- src/api/agent-server-adapter.ts: Keep emptyHooksResponse, remove dead code
- src/api/conversation-service/agent-server-conversation-service.api.ts: Use FileClient
  for download, keep getHooks method
- src/hooks/query/use-conversation-skills.ts: Keep deleted (PR intent)

Co-authored-by: openhands <openhands@all-hands.dev>
@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

Summary

I resolved the merge conflicts in PR #362 (vasco/skills) as requested by @VascoSch92.

Request Addressed

  • ✅ Fixed all merge conflicts with main branch
  • ✅ Pushed the resolved changes to GitHub

Conflicts Resolved

File Resolution
__tests__/components/modals/skills/skill-modal.test.tsx Kept PR's SkillsService.getSkills mock
src/api/agent-server-adapter.ts Kept emptyHooksResponse(), removed dead code (downloadTextFile, loadSkillsForConversation), cleaned up unused imports
src/api/conversation-service/agent-server-conversation-service.api.ts Used main's FileClient.downloadTrajectory(), kept PR's getHooks method
src/hooks/query/use-conversation-skills.ts Kept deleted (PR intent)

Verification

  • ✅ TypeScript type checking passes
  • ✅ All 1,987 tests pass

Conciseness

The changes are minimal and focused solely on resolving the merge conflicts while preserving both:

  1. The PR's goal (consolidating skills fetching onto useSkills, removing loadSkillsForConversation)
  2. Main's refactoring (using TypeScript client's FileClient instead of direct axios calls)

No extraneous changes were made.

@VascoSch92
Copy link
Copy Markdown
Member Author

@OpenHands Can you check why the deployment has failed?

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

I'm on it! VascoSch92 can track my progress at all-hands.dev

Copy link
Copy Markdown
Member Author

Vercel Deployment Failure Analysis

I investigated the Vercel deployment failure. Here's what I found:

Summary

The Vercel deployment failure is not specific to this PR - it's affecting the main branch as well. Both this PR's commit (689c478) and the latest main branch commit (a083261) are failing with the same Vercel deployment error.

Evidence

Investigation Details

  1. CI workflow passes successfully - The GitHub Actions CI (npm test, npm build) completed successfully on both branches
  2. Local build works - npm run build and npm run typecheck pass locally
  3. The breaking commit appears to be a083261 ("Route agent-server calls through TypeScript client Route agent-server calls through TypeScript client #278")

Potential Root Cause

The issue may be related to Vercel's build environment not being able to resolve the git-based dependency:

"@openhands/typescript-client": "github:OpenHands/typescript-client#ef62e82fc3dfb03991a1c8025429caf354427263"

The package-lock.json resolves this as git+ssh://git@github.com/..., which may require SSH authentication that Vercel doesn't have configured.

Recommended Actions

  1. Check Vercel project settings for SSH key/GitHub token configuration
  2. Alternative fix: Publish @openhands/typescript-client to npm and update the dependency to use an npm version instead of a git reference
  3. Retry the deployment - Sometimes Vercel has transient issues

Would a team member with Vercel access be able to check the deployment logs using npx vercel inspect dpl_4RaGb6JEQw72WEv2xAaqe2cQvUtK --logs?


This analysis was generated by an AI agent (OpenHands) on behalf of the user.

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

Summary

I investigated why the Vercel deployment failed for PR #362 as requested by @VascoSch92.

Key Finding

The Vercel deployment failure is NOT caused by this PR — it's a broader issue affecting the main branch as well.

Evidence

Branch/Commit Vercel Status CI Status
PR #362 (689c478) ❌ Failed ✅ Passed
Main (a083261) ❌ Failed ✅ Passed
Previous main (7412e6d) ✅ Success ✅ Passed

Root Cause Analysis

The failure started with commit a083261 ("Route agent-server calls through TypeScript client #278"). The likely culprit is the git-based dependency:

"@openhands/typescript-client": "github:OpenHands/typescript-client#ef62e82..."

This resolves to git+ssh:// in package-lock.json, which may require SSH authentication that Vercel's build environment doesn't have configured.

Actions Taken

  • ✅ Investigated the deployment failure
  • ✅ Verified local builds and CI pass successfully
  • ✅ Identified the breaking commit on main branch
  • ✅ Posted detailed analysis as a comment on PR fix(skills): populate slash menu and skills modal #362
  • ❌ No code changes were made (none needed — this is an infrastructure issue)

Recommendation

A team member with Vercel access should:

  1. Check the deployment logs: npx vercel inspect dpl_4RaGb6JEQw72WEv2xAaqe2cQvUtK --logs
  2. Verify Vercel's GitHub integration settings
  3. Consider publishing @openhands/typescript-client to npm to avoid git+ssh dependencies

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

I'm on it! VascoSch92 can track my progress at all-hands.dev

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

@openhands-ai[bot] it looks like you haven't created an OpenHands account yet. Please sign up at OpenHands Cloud and try again.

The package-lock.json was resolving @openhands/typescript-client as
git+ssh://... which requires SSH authentication. Vercel deployments
don't have SSH access configured for GitHub, causing deployment
failures.

Changed to git+https://... which allows Vercel to fetch the dependency
using standard HTTPS authentication.

Co-authored-by: openhands <openhands@all-hands.dev>
Copy link
Copy Markdown
Member Author

Fix Applied

I've addressed the Vercel deployment failure by updating package-lock.json to use HTTPS instead of SSH for the @openhands/typescript-client git dependency.

Root Cause

The lockfile was resolving the dependency as:

git+ssh://git@github.com/OpenHands/typescript-client.git#...

This requires SSH authentication, which Vercel's build environment doesn't have configured for GitHub.

Fix

Changed to HTTPS protocol:

git+https://github.com/OpenHands/typescript-client.git#...

This allows Vercel to fetch the dependency using standard HTTPS authentication.

Verification

  • npm ci works
  • npm run typecheck passes
  • npm run build passes
  • npm test passes (1987 tests)

The CI and Vercel deployment should now succeed on this branch. Note: This same fix will need to be applied to the main branch as well since it's also failing.


This fix was applied by an AI agent (OpenHands) on behalf of the user.

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

Final Summary

I successfully addressed the Vercel deployment failure identified in PR #362.

What Was Done

  1. ✅ Identified and fixed the root cause: The package-lock.json was resolving @openhands/typescript-client as git+ssh://git@github.com/... which requires SSH authentication that Vercel doesn't have configured.

  2. ✅ Applied the fix: Changed the resolved URL in package-lock.json from git+ssh:// to git+https:// protocol.

  3. ✅ Verified the fix works:

    • npm ci
    • npm run typecheck
    • npm run build
    • npm test ✓ (1987 tests pass)
  4. ✅ Committed and pushed: Commit a98660d pushed to vasco/skills branch.

  5. ✅ Posted PR comment: Explained the fix with root cause analysis and verification details.

Changes Made

  • 1 file changed: package-lock.json (single line change from git+ssh:// to git+https://)

Conciseness Check

✅ The change is minimal and directly addresses the Vercel deployment failure - no extraneous changes.

Note for Team

This same fix needs to be applied to main branch as well, since commit a083261 introduced this issue there too.

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

I'm on it! VascoSch92 can track my progress at all-hands.dev

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

@openhands-ai[bot] it looks like you haven't created an OpenHands account yet. Please sign up at OpenHands Cloud and try again.

Copy link
Copy Markdown
Member Author

Vercel Deployment Investigation Update

I've investigated the Vercel deployment failures further. Here's what I found:

Key Finding

The Vercel failure is NOT caused by the SSH vs HTTPS lockfile issue.

Evidence

Commit Deployed At Status Lockfile Protocol
22ed102 11:58:44 ✅ Success git+ssh://
7412e6d 14:10:52 ✅ Success git+ssh://
a083261 14:33:02 ❌ Failed git+ssh://

All three commits have the same SSH-based lockfile, yet 22ed102 and 7412e6d deployed successfully while a083261 failed. The package-lock.json was not modified between 7412e6d and a083261.

What This Means

  1. The fix I applied (SSH → HTTPS) was based on a reasonable assumption but isn't the root cause
  2. The Vercel deployment failure is an infrastructure/configuration issue on Vercel's side
  3. The failure happens in ~18-25 seconds (too fast for a real build), suggesting it fails before npm ci even runs
  4. GitHub Actions CI passes - the build works correctly (5m34s build time)

Recommendation

  • The HTTPS fix is still good to keep (it's more portable), but won't fix Vercel
  • Someone with Vercel dashboard access should check:
    • Build logs (requires login)
    • Recent Vercel project configuration changes
    • Whether Vercel had any outages/issues between 14:10-14:33 today

Current Status

  • ✅ CI passes (all 1987 tests + build)
  • ❌ Vercel preview deployment fails (infrastructure issue)

This investigation was conducted by an AI agent (OpenHands) on behalf of the user.

@openhands-ai
Copy link
Copy Markdown

openhands-ai Bot commented May 12, 2026

Final Summary

I investigated the Vercel deployment failure for PR #362 as requested in the comment thread.

Key Finding

The Vercel failure is NOT caused by the SSH vs HTTPS lockfile issue that the previous OpenHands agent attempted to fix.

Evidence I Gathered

Commit Time Vercel Status Lockfile Protocol
22ed102 11:58 ✅ Success git+ssh://
7412e6d 14:10 ✅ Success git+ssh://
a083261 14:33 ❌ Failed git+ssh://

The package-lock.json was not modified between 7412e6d (success) and a083261 (failure), proving the SSH protocol is not the root cause.

Root Cause

  • Vercel deployments fail in ~18-25 seconds (too fast for any real npm install/build)
  • GitHub Actions CI passes completely (5m34s, 1987 tests)
  • This is a Vercel infrastructure/configuration issue, not a code problem

Actions Taken

  1. ✅ Verified the existing HTTPS fix is in place (still useful for portability)
  2. ✅ Confirmed CI passes on the current branch
  3. ✅ Posted detailed investigation comment on PR fix(skills): populate slash menu and skills modal #362 explaining findings and recommending someone with Vercel dashboard access investigate the actual build logs

Request Completion Checklist

  • Understood the PR context and comment
  • Investigated the Vercel deployment failure
  • Identified the actual root cause (Vercel infrastructure, not SSH)
  • Communicated findings back to the PR via comment

Note on Changes

The previous session added:

  • a98660d - SSH→HTTPS fix (good to keep for portability)
  • 1bd4978 - Empty commit to retrigger Vercel (I added this; didn't help but harmless)

The PR's actual code changes work correctly. The Vercel failure requires someone with Vercel dashboard access to investigate further.

Copy link
Copy Markdown
Contributor

@hieptl hieptl left a comment

Choose a reason for hiding this comment

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

Hello @VascoSch92,

I wanted to bring to your attention a performance issue I encountered while testing the recent changes locally. Specifically, starting a conversation seems to take over 10 seconds. For your reference, I’ve included a video below that provides further details.

Screen.Recording.2026-05-12.at.23.04.11.mov

Thank you very much! 🙏

@hieptl hieptl changed the title fix(skills): populate slash menu and skills modal on cloud backends fix(skills): populate slash menu and skills modal May 13, 2026
Copy link
Copy Markdown
Contributor

@hieptl hieptl left a comment

Choose a reason for hiding this comment

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

Thank you! 🙏

@github-actions
Copy link
Copy Markdown
Contributor

📸 Snapshot Test Report

✅ All snapshots match the main branch baselines.

Category Count
🔴 Changed 0
🆕 New 0
✅ Unchanged 44
Total 44
✅ Unchanged snapshots (44)

The following 44 snapshots match the main branch baselines:

  • automations — automations-delete-modal
  • automations — automations-list-active-inactive
  • automations — automations-no-automations
  • automations — automations-search-no-results
  • collapsible-thinking — reasoning-content-collapsed
  • collapsible-thinking — reasoning-content-expanded
  • collapsible-thinking — think-action-collapsed
  • collapsible-thinking — think-action-expanded
  • docker-workspace-browser — docker-projects-workspace-browser
  • mcp-page — mcp-custom-server-1-editor-open
  • mcp-page — mcp-custom-server-2-url-filled
  • mcp-page — mcp-custom-server-3-all-filled
  • mcp-page — mcp-custom-server-4-installed
  • mcp-page — mcp-custom-server-editor
  • mcp-page — mcp-empty-installed
  • mcp-page — mcp-search-filtered
  • mcp-page — mcp-slack-install-1-marketplace
  • mcp-page — mcp-slack-install-2-modal
  • mcp-page — mcp-slack-install-3-filled
  • mcp-page — mcp-slack-install-4-installed
  • onboarding — onboarding-step-0-choose-agent
  • onboarding — onboarding-step-1-check-backend
  • onboarding — onboarding-step-2-setup-llm
  • onboarding — onboarding-step-3-say-hello
  • settings-page — analytics-consent-modal
  • settings-page — home-screen
  • settings-page — settings-app-page
  • settings-page — settings-page
  • settings-secrets — secrets-add-form-filled
  • settings-secrets — secrets-add-form
  • settings-secrets — secrets-after-save
  • settings-secrets — secrets-delete-confirm
  • settings-secrets — secrets-list
  • settings-verification — condenser-settings
  • settings-verification — verification-settings-off
  • settings-verification — verification-settings-on
  • sidebar — sidebar-collapsed
  • sidebar — sidebar-conversation-panel
  • sidebar — sidebar-filter-menu
  • skills-page — skills-empty
  • skills-page — skills-loaded
  • skills-page — skills-no-match
  • skills-page — skills-search-filtered
  • skills-page — skills-type-filter

Generated by the Snapshot Tests workflow. This comment was created by an AI agent (OpenHands) on behalf of the repo maintainers.

@hieptl hieptl merged commit 75b0f15 into main May 15, 2026
12 checks passed
@hieptl hieptl deleted the vasco/skills branch May 15, 2026 20:03
tofarr pushed a commit that referenced this pull request May 28, 2026
PR #229 flipped shouldLoadPublicSkills() from opt-out (default true) to
opt-in (default false) for dev-latency reasons. PR #362 patched the
conversation-start path by hardcoding load_public_skills: true, but
that fix was inadvertently lost in the #457 refactor which reintroduced
shouldLoadPublicSkills() inside the new buildAgentContext() helper.

This restores the original opt-out semantics:
- shouldLoadPublicSkills() now returns true unless VITE_LOAD_PUBLIC_SKILLS
  is explicitly set to "false"
- .env.sample updated to document the opt-out form
- Tests updated to match the new default
- AGENTS.md updated (it already said "defaults to true" but the code
  disagreed — now they agree)

Co-authored-by: openhands <openhands@all-hands.dev>
tofarr added a commit that referenced this pull request May 28, 2026
PR #229 flipped shouldLoadPublicSkills() from opt-out (default true) to
opt-in (default false) for dev-latency reasons. PR #362 patched the
conversation-start path by hardcoding load_public_skills: true, but
that fix was inadvertently lost in the #457 refactor which reintroduced
shouldLoadPublicSkills() inside the new buildAgentContext() helper.

This restores the original opt-out semantics:
- shouldLoadPublicSkills() now returns true unless VITE_LOAD_PUBLIC_SKILLS
  is explicitly set to "false"
- .env.sample updated to document the opt-out form
- Tests updated to match the new default
- AGENTS.md updated (it already said "defaults to true" but the code
  disagreed — now they agree)

Co-authored-by: openhands <openhands@all-hands.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Agent Canvas skills are missing

4 participants