redesign skills library#8868
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8aa2038872
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Reapplies the skills page redesign on top of the ACP-based sources
backend. The redesign was originally built against the legacy Tauri
`skills.rs` commands; this rewires it to `_goose/sources/*` and derives
`SkillInfo` (id, sourceKind, sourceLabel, projectLinks) from the
`SourceEntry { name, description, content, directory, global }` shape
the new backend exposes.
Highlights:
- New skills page with header, search, project/global filter chips, and
accordion-grouped list with hover affordance to start a chat.
- Dedicated detail subpage per skill showing source, location, file
path, and instructions.
- Adds `PageShell`/`DetailPageShell`/`PageHeader`/`FilterRow` shared
layout primitives, an `AccordionSectionTrigger`, an `inline-subtle`
button variant, `--border-soft(-divider)` tokens, and the
`accordion-content-open/close` keyframes the redesign relies on.
- `updateSkill`/`deleteSkill`/`exportSkill` now thread `{ global,
projectDir }` so project-scoped skills can be operated on.
- Drops UI for fields the new backend does not expose
(supportingFiles, symlinkedLocations, duplicateNameCount).
- SkillsView is split into SkillDetailPage, SkillsListSections,
SkillsEmptyState, SkillsDialogs, and a `lib/skillsHelpers.ts` to
stay under the 500-line file size limit.
- Updates unit tests, e2e fixtures, and the e2e spec to match the new
flow.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5221ae2401
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
5221ae2 to
6385379
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6385379362
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44eebce915
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
…merge-after-nits; docs: INDEX +8 PRs (drip-123)
…esign Merges main's path-based source addressing (#8731), redesigned skills library (#8868), and 70+ other commits while preserving the projects-as-sources work. Backend: - SourceType gains Project alongside main's Skill/BuiltinSkill/Recipe/Subrecipe/Agent - SourceEntry.directory renamed to .path so the field name matches its role (a stable path identifier passed back to update/delete/export, regardless of whether the underlying entity is a directory or file) - SourceEntry.properties (free-form metadata bag) coexists with main's supporting_files - ListSourcesRequest.include_project_sources scans every known project's workingDirs and tags resulting skills with projectName/projectDir - CreateSourceRequest.project_id resolves to the project's first workingDir - Projects stored as <dataDir>/projects/<slug>.md flat-file frontmatter - read_project / project_working_dirs helpers used by agent.rs to inject project instructions into the system prompt - Drops our SetSessionProjectRequest in favor of main's identical UpdateSessionProjectRequest (_goose/session/update_project) Frontend: - features/projects/api/projects.ts rewritten on the typed SDK; ProjectInfo loses createdAt/updatedAt/artifactsDir, gains path - Skills API uses main's typed GooseSourcesCreate/List/Update/Delete/Export/ Import calls. toSkillInfo prefers backend-provided properties.projectName/ projectDir tags over path-derived guesses - CreateSkillDialog keeps our save-location picker (Global vs each project) on top of main's redesigned UI; edits use path-based addressing - SkillsView takes main's redesigned filter row + sectioned list rendering - AppShell drops the old inline-type adapter - Removes ui/goose2/src-tauri/src/commands/projects.rs (508 lines) and its 9 Tauri command registrations; main's project_icons.rs (filesystem icon scanning, a real shell concern) is kept Verification: cargo test -p goose passes (incl. 17 sources tests, 2 new project ones); cargo clippy clean; pnpm tsc clean; pnpm test 538/538; pnpm check clean.
Category: improvement
User Impact: Users can browse skills in a richer library with project-aware filtering, category grouping, and a detail view.
Problem: The skills view was a flat list that did not clearly show where skills came from, how to inspect them, or how project skills related to saved Goose projects. It also needed review cleanup so chat-only affordances did not appear before their behavior is wired and skill counts localize correctly.
Solution: This PR redesigns the skills library around categorized sections, project/source filters, a dedicated detail page, and ACP-backed project skill discovery. It also adds shared layout primitives needed by the new view, while leaving repo-level skill bundles out of this PR.
File changes
crates/goose/src/sources.rs
Adds project-aware source handling so Goose can list and operate on project skills in addition to global skills.
ui/goose2/src/features/skills/api/skills.ts
Expands the skills API model with stable ids, directory paths, source metadata, project links, and global/project options for update, delete, and export flows.
ui/goose2/src/features/skills/api/skills.test.ts
Covers project skill aggregation, deduping, and legacy
.gooseproject skill path handling.ui/goose2/src/features/skills/lib/skillCategories.ts
Adds category inference so skills can be grouped and filtered by likely task type.
ui/goose2/src/features/skills/lib/skillsHelpers.ts
Adds shared helpers for project filters, category filters, skill sorting, and export download behavior.
ui/goose2/src/features/skills/ui/SkillsView.tsx
Rebuilds the skills library with source/project/category filters, search, grouped sections, detail navigation, and project-aware edit/delete/export behavior.
ui/goose2/src/features/skills/ui/SkillsListSections.tsx
Adds the sectioned list UI with accessible sibling click targets for row details and chat actions, plus localized skill counts.
ui/goose2/src/features/skills/ui/SkillDetailPage.tsx
Adds the skill detail page with metadata, instructions, source location, and available actions.
ui/goose2/src/features/skills/ui/SkillsDialogs.tsx
Extracts the skills dialog orchestration from the main view.
ui/goose2/src/features/skills/ui/SkillsEmptyState.tsx
Adds focused empty and no-result states for the redesigned list.
ui/goose2/src/features/skills/ui/CreateSkillDialog.tsx
Passes global/project context when editing an existing skill.
ui/goose2/src/features/skills/ui/tests/SkillsView.test.tsx
Updates coverage for the redesigned skills view, project filters, category filtering, detail navigation, and delete confirmation.
ui/goose2/src/features/skills/ui/tests/CreateSkillDialog.test.tsx
Updates edit expectations for the new skill location options.
ui/goose2/tests/e2e/skills.spec.ts
Updates the skills end-to-end coverage for the redesigned flows.
ui/goose2/tests/e2e/fixtures/mock-data.ts
Updates mocked data for project-linked skills.
ui/goose2/tests/e2e/fixtures/tauri-mock.ts
Updates the Tauri mock for the new skills API behavior.
ui/goose2/src/shared/i18n/locales/en/skills.json
Adds English strings for the redesigned skills UI, including pluralized skill counts.
ui/goose2/src/shared/i18n/locales/es/skills.json
Adds Spanish strings for the redesigned skills UI, including pluralized skill counts.
ui/goose2/src/shared/ui/page-shell.tsx
Adds reusable page shell/header primitives for detail-style Goose 2 pages.
ui/goose2/src/shared/ui/page-columns.tsx
Adds reusable resizable page columns for detail layouts.
ui/goose2/src/shared/ui/page-columns.test.tsx
Covers the page columns behavior.
ui/goose2/src/shared/ui/detail-field.tsx
Adds a small detail metadata primitive used by the skills detail page.
ui/goose2/src/shared/ui/accordion.tsx
Extends accordion primitives for the sectioned skills list.
ui/goose2/src/shared/ui/button.tsx
Extends button variants and sizing for the redesigned controls.
ui/goose2/src/shared/ui/button.test.tsx
Covers button behavior added for the new variants.
ui/goose2/src/shared/ui/SearchBar.tsx
Updates the shared search input behavior and styling used by the skills view.
ui/goose2/src/shared/ui/input.tsx
Adjusts shared input styling for the updated search/filter controls.
ui/goose2/src/shared/ui/MainPanelLayout.tsx
Adjusts panel layout support for the redesigned skills surface.
ui/goose2/src/shared/ui/resizable.tsx
Updates the resizable primitive used by the detail columns.
ui/goose2/src/shared/styles/globals.css
Adds global styling utilities used by the redesigned page transitions and layout.
ui/goose2/scripts/check-file-sizes.mjs
Allows the redesigned skills view while the main list/detail state is still centralized.
ui/goose2/src/features/agents/ui/PersonaDetails.tsx
Aligns persona detail styling with the shared page/detail primitives.
Reproduction Steps
Screenshots/Demos
Not included in this pass; the branch was validated with local checks and targeted skills tests.