Repository navigation
Add OMP skill discovery source - #6422
Conversation
📝 WalkthroughWalkthrough
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Rebuild the OMP home source on main's six-argument `source()` signature, which now carries a pathApi adapter and an owning agent.
…ation - Drop the `SkillProvider` widening: `~/.omp/agent/skills` is a provider home like `~/.pi/agent/skills`, so it carries `agent-skills` and identifies OMP through the source `owner`. That keeps every `Record<SkillProvider, ...>` (including the Skills page label map) at a zero diff. - Add the `omp-home` orchestration coverage location and map OMP to it, so the Agent coverage panel stops reporting a real OMP install as missing.
Both roots end in agent/skills, so dropping either leading segment let one agent's install mark the other with a green suite. Also corrects the OMP owner assertion's rationale: no OMP native-chat profile exists, so owner matters because a null owner leaks OMP-only skills into other pickers.
|
Thanks for this — the diagnosis in #6369 was right and the OMP home path is correct. I've pushed a few changes on top so it can land. De-staled the branch. It was branched off Dropped the Added the half that was missing. Tests. Extended the discovery test to cover the OMP root and pin Validated in a dev build with a real Two adjacent gaps are deliberately left alone: coverage matches the singular |
Greptile SummaryThis PR adds OMP (
Confidence Score: 5/5The change is purely additive — one new scan root, one new location definition, and accompanying tests — with no modifications to existing paths, IPC boundaries, or runtime behavior. Every added piece mirrors the immediately-preceding Pi entry in structure and naming. The cross-contamination test for Pi vs OMP on a shared path tail, plus the owner-is-omp assertion, cover the only subtle correctness concern. No existing paths, providers, or UI mappings were altered. Files Needing Attention: No files require special attention.
|
| Filename | Overview |
|---|---|
| src/main/skills/skill-discovery-sources.ts | Adds OMP home source with correct path, owner, and providers — consistent with all prior agent home entries. |
| src/renderer/src/lib/orchestration-skill-coverage.ts | Adds omp-home location definition and agent mapping; segment matching correctly disambiguates from Pi's identical path tail. |
| src/main/skills/discovery.test.ts | Extends filesystem-level discovery test with an OMP skill and verifies the owner assertion; coverage is well-targeted. |
| src/renderer/src/lib/orchestration-skill-coverage.test.ts | New Pi/OMP cross-contamination test (including Windows-style path) fully covers the shared agent/skills suffix concern. |
Reviews (1): Last reviewed commit: "review: guard the Pi/OMP matcher anchors" | Re-trigger Greptile
stablyai#6422 adds an omp-home scan root plus an omp entry in the path-segment table this PR deletes. The root is what matters; owner: 'omp' already satisfies the new matcher, so re-express the coverage cases here and the rebase can drop that PR's coverage hunks with nothing lost. Also pins the Pi/OMP distinction stablyai#6422 guarded: both roots end in agent/skills, so a mis-mapped owner would cross-cover them.
stablyai#6422 added an omp-home scan root plus an omp entry in the path-segment table this branch deletes. Kept its skill-discovery-sources.ts root in full — without it ~/.omp/agent/skills is never scanned. Dropped its orchestration-skill-coverage.ts and .test.ts hunks: the tables are gone, and owner: 'omp' already satisfies the owner-based matcher. Both of its coverage concerns are carried here in the new shape, including the Pi/OMP anchor guard.
Settings → Orchestration → Agent coverage decided whether each detected agent had the orchestration skill by matching a skill's single `rootPath` against a hand-maintained table of path segments. Skill discovery dedups by canonical file path, so when one provider home is a symlink onto another agent's skills directory — which `npx skills add --global` does — the two collapse into one row and the absorbed roots survive only in `rootPaths`, which the old matcher ignored. With `~/.grok/skills` symlinked onto `~/.claude/skills`, Claude read Ready and Grok read Missing even though Grok loads the same files. Now classifies every entry in `rootPaths` and resolves each root through the `SkillDiscoverySource` the scanner already returns, accepting it when `sourceKind` is not `repo` and `owner` is either the agent's owner or `null`. Deletes `ORCHESTRATION_SKILL_LOCATIONS` and `ORCHESTRATION_SKILL_LOCATION_IDS_BY_AGENT` — a renderer-side mirror of `buildSkillDiscoverySources` that had to be hand-edited for every new provider root, which is what caused this class of bug. No discovery roots change here; those landed in #8510. Fixed during review: - Restored the required `{ kind: 'local' }` argument to `useDetectedAgents`. Dropping it failed typecheck (TS2554) and pinned `detectedIds` to null, leaving the widget on "Checking installed agents and skill paths…" forever. It also reverted the remote-host scoping from #9790. - Stopped a duplicate repo root from shadowing an owning home root. `SkillDiscoverySource.path` is not unique: when the scan cwd is the home directory, `~/.claude/skills` is scanned as both a home root and a repo root, and a path-keyed Map is last-write-wins — so every agent read Missing while the panel above said Installed. Guaranteed in Settings on a WSL project. - Carried OMP coverage in the owner-based shape so #6422's coverage-table hunks could be dropped on merge. Behavior note: an orchestration skill inside an enabled Claude plugin now counts for Claude. That is a deliberate consequence of trusting the scanner's ownership data, matches how the Codex plugin cache was already treated, and is pinned by a test. Refs #8256 Co-authored-by: sdhilip200 <49802211+sdhilip200@users.noreply.github.com>
* Add OMP skill discovery source * review: scope OMP discovery to the shared provider and cover orchestration - Drop the `SkillProvider` widening: `~/.omp/agent/skills` is a provider home like `~/.pi/agent/skills`, so it carries `agent-skills` and identifies OMP through the source `owner`. That keeps every `Record<SkillProvider, ...>` (including the Skills page label map) at a zero diff. - Add the `omp-home` orchestration coverage location and map OMP to it, so the Agent coverage panel stops reporting a real OMP install as missing. * review: guard the Pi/OMP matcher anchors Both roots end in agent/skills, so dropping either leading segment let one agent's install mark the other with a green suite. Also corrects the OMP owner assertion's rationale: no OMP native-chat profile exists, so owner matters because a null owner leaks OMP-only skills into other pickers. --------- Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
Settings → Orchestration → Agent coverage decided whether each detected agent had the orchestration skill by matching a skill's single `rootPath` against a hand-maintained table of path segments. Skill discovery dedups by canonical file path, so when one provider home is a symlink onto another agent's skills directory — which `npx skills add --global` does — the two collapse into one row and the absorbed roots survive only in `rootPaths`, which the old matcher ignored. With `~/.grok/skills` symlinked onto `~/.claude/skills`, Claude read Ready and Grok read Missing even though Grok loads the same files. Now classifies every entry in `rootPaths` and resolves each root through the `SkillDiscoverySource` the scanner already returns, accepting it when `sourceKind` is not `repo` and `owner` is either the agent's owner or `null`. Deletes `ORCHESTRATION_SKILL_LOCATIONS` and `ORCHESTRATION_SKILL_LOCATION_IDS_BY_AGENT` — a renderer-side mirror of `buildSkillDiscoverySources` that had to be hand-edited for every new provider root, which is what caused this class of bug. No discovery roots change here; those landed in stablyai#8510. Fixed during review: - Restored the required `{ kind: 'local' }` argument to `useDetectedAgents`. Dropping it failed typecheck (TS2554) and pinned `detectedIds` to null, leaving the widget on "Checking installed agents and skill paths…" forever. It also reverted the remote-host scoping from stablyai#9790. - Stopped a duplicate repo root from shadowing an owning home root. `SkillDiscoverySource.path` is not unique: when the scan cwd is the home directory, `~/.claude/skills` is scanned as both a home root and a repo root, and a path-keyed Map is last-write-wins — so every agent read Missing while the panel above said Installed. Guaranteed in Settings on a WSL project. - Carried OMP coverage in the owner-based shape so stablyai#6422's coverage-table hunks could be dropped on merge. Behavior note: an orchestration skill inside an enabled Claude plugin now counts for Claude. That is a deliberate consequence of trusting the scanner's ownership data, matches how the Codex plugin cache was already treated, and is pinned by a test. Refs stablyai#8256 Co-authored-by: sdhilip200 <49802211+sdhilip200@users.noreply.github.com>
Summary
Adds OMP as a first-class skill provider in skill discovery, scanning
~/.omp/agent/skillsalongside Codex, Claude, and Agent Skills homes.This follows the confirmation in #6369 that OMP consumes skills from
~/.omp/agent/skills, so future OMP users/devices do not need a manual symlink for Orca's skill discovery UI to see those skills.Changes
omptoSkillProvider.OMP home→~/.omp/agent/skills.OMPprovider label in the skills page.Screenshots
No visual behavior change beyond adding the
OMPprovider label for discovered OMP skills in the existing skills list UI.Testing
pnpm lint— not run separately; this PR only touches a typed provider union/source list, UI label map, and a focused discovery test.pnpm exec tsgo --noEmit -p config/tsconfig.node.jsonpnpm exec tsgo --noEmit -p config/tsconfig.tc.web.jsonpnpm vitest run --config config/vitest.config.ts src/main/skills/discovery.test.tspnpm build— not run; targeted typechecks and discovery tests passed.git diff --checkNote: this environment uses Node v22.22.2, so
pnpm install --frozen-lockfileprinted the repo's Node 24 engine warning. The targeted tests/typechecks above still passed.AI Review Report
I reviewed the change for the main compatibility risks touched by this PR:
os.homedir()plus path joining rather than shell expansion;The generated review bot did not produce actionable code comments. It did flag the missing PR-template sections, which this update fills in.
Security Audit
Security-sensitive review points:
~/.omp/agent/skills.Follow-up: if Orca later supports configurable skill homes, that path should be validated and represented distinctly from fixed provider homes.
Notes
The provider label is intentionally
OMPto match the user-facing provider name in #6369. The source label isOMP home, mirroring the existingCodex home/Claude homepattern.ELI5
Skill discovery includes OMP’s home folder (
~/.omp/agent/skills) as a first-class source. OMP skills show up in Orca without manual symlinks.