feat(skills): registry-based skill management + RPC state migration#98
Merged
Conversation
…ment - Simplified the syntax of RPC method calls in the `tauriCommands.ts` file by removing unnecessary line breaks, enhancing code readability. - Updated descriptions in the `schemas.rs` file to maintain consistent formatting for RPC method descriptions, improving documentation clarity.
- Introduced a new action `setSkillStatus` to manage the skill's connection status. - Updated the OAuth deep link handling to dispatch the skill status as 'ready' upon successful connection, improving state management for skills.
- Added a `CaptureMode` enum to differentiate between windowed and fullscreen screenshot captures. - Enhanced the `capture_screen_image_ref_for_context` function to determine capture mode based on window bounds, with fallback to fullscreen. - Implemented logic to downscale screenshots exceeding size limits when captured in fullscreen mode. - Introduced a new `parse_foreground_output` function to parse application context from AppleScript output, improving context retrieval for screenshots.
…creation - Modified the TAURI_CONFIG_OVERRIDE to exclude the creation of updater artifacts during the build process, streamlining the build workflow.
… functionality - Introduced new properties `captureTestResult` and `isCaptureTestRunning` to the `AccessibilityState` interface for managing capture test states. - Added `CaptureTestResult` and `CaptureTestContextInfo` interfaces to define the structure of capture test results. - Implemented `openhumanScreenIntelligenceCaptureTest` function to initiate screen intelligence capture tests, improving accessibility features.
…tics - Introduced a new `ScreenIntelligenceDebugPanel` component to display accessibility status, session information, and capture test results. - Integrated the debug panel into the existing `ScreenIntelligencePanel`, allowing users to expand and collapse the debug section. - Updated accessibility state management to include `captureTestResult` and `isCaptureTestRunning` for improved testing feedback. - Enhanced test setup to accommodate new debug functionalities.
…nce items - Added `useScreenIntelligenceItems` hook to fetch and manage screen intelligence items from the accessibility state. - Integrated the hook into the `Intelligence` component, combining items from both memory and screen intelligence sources. - Enhanced loading state management to reflect the combined loading status of both data sources.
…ems mapping and confidenceToPriority functions - Introduced tests for the mapping logic of AccessibilityVisionSummary to ActionableItem, ensuring correct transformation of properties. - Added tests for confidenceToPriority function to validate priority assignment based on confidence levels. - Included edge cases such as handling empty arrays, null app names, and long actionable notes truncation.
- Refactored mnemonic import logic to accommodate BIP39 phrase lengths (12, 15, 18, 21, 24 words). - Updated state initialization and validation to dynamically adjust based on the allowed word counts. - Enhanced user prompts to reflect the new word count options for recovery phrases. - Adjusted focus handling for input fields to improve user experience during phrase entry.
- Replaced Redux-based skill state management with RPC-backed hooks for improved performance and reactivity. - Introduced `useSkillSnapshot` and `useAllSkillSnapshots` hooks to fetch skill states directly from the Rust core. - Updated components to utilize the new hooks, enhancing the overall architecture and reducing dependency on Redux. - Added event listeners to trigger state updates in response to skill state changes, ensuring real-time updates across the application.
… test Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
senamakel
added a commit
that referenced
this pull request
May 14, 2026
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
openhuman-skillsrepo and the Rust core. Skills are discovered from a remoteregistry.json, downloaded as JS bundles, and executed in the QuickJS runtime.SkillSnapshotnow includessetup_complete(persisted in preferences) andconnection_status(derived server-side), eliminating Redux/Rust state sync bugs.openerplugin + window permissions for deep link and OAuth URL handling.Key Changes
Rust Core:
registry_types.rs,registry_ops.rs— registry fetch, search, install, uninstall with SHA-256 verificationpreferences.rs— extended withsetup_completepersistencetypes.rs—SkillSnapshotenriched withsetup_complete+connection_statusderivationschemas.rs— 4 new RPC endpoints (set_setup_complete,get_all_snapshots,skills_install,skills_uninstall, etc.)qjs_engine.rs— dual-directory discovery (bundled + workspace),workspace_dirsupportFrontend:
skillsApi.ts— imperative RPC wrapper for all skill operationsskillEvents.ts— event bus bridging Tauri events to React hookshooks.ts— rewritten with RPC-backed hooks (useSkillSnapshot,useAvailableSkills,useSkillConnectionStatus)Skills.tsx— loads from registry via RPC, no Redux dispatchSkillSetupWizard.tsx— reads manifest from registry, skips runtime start for OAuth skillsruntime.ts— usesopenhuman.skills_startRPC instead of missing Tauri commanddesktopDeepLinkListener.ts— persists setup completion via RPC + emits skill eventsSkills Repo:
generate-registry.mjs— build script producingregistry.jsonwith checksumstest-registry.mjs— validates generated registryTest plan
cargo check— Rust compilescargo test -p openhuman --lib -- registry— 21 unit tests passcargo test --test json_rpc_e2e -- json_rpc_skills— E2E test passes (fetch → search → install → list → uninstall)npx tsc --noEmit— TypeScript compiles🤖 Generated with Claude Code