Skip to content

feat(skills): add skill details view page#1159

Open
bmahabirbu wants to merge 2 commits intokortex-hub:mainfrom
bmahabirbu:skill-details
Open

feat(skills): add skill details view page#1159
bmahabirbu wants to merge 2 commits intokortex-hub:mainfrom
bmahabirbu:skill-details

Conversation

@bmahabirbu
Copy link
Copy Markdown
Contributor

Summary

  • Add a skill details view page with three tabs: Summary, Instructions, and Resources
  • Make skill names clickable in the skills list table to navigate to the details view
  • Wire up navigation via SKILL_DETAILS enum in NavigationPage and routing in App.svelte

Fixes #1043

Test plan

  • Click a skill name in the Skills list to verify navigation to the details page
  • Verify Summary tab displays skill name, type, status, path, description, and resource count
  • Verify Instructions tab renders the SKILL.md content
  • Verify Resources tab lists bundled files from the skill folder
  • Verify enable/disable toggle and delete action work from the details page
  • Verify breadcrumb navigation returns to the Skills list
  • Verify close button returns to the Skills list

🤖 Generated with Claude Code

Add a details page for displaying skill information with three tabs:
- Summary: about section, general info, and metadata cards
- Instructions: renders SKILL.md content
- Resources: lists bundled files from the skill folder

Make skill names clickable in the list to navigate to the details view.

Fixes kortex-hub#1043

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Brian <bmahabir@bu.edu>
@bmahabirbu bmahabirbu requested a review from a team as a code owner March 24, 2026 06:34
@bmahabirbu bmahabirbu requested review from MarsKubeX and benoitf and removed request for a team March 24, 2026 06:34
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 24, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 391c6976-49a5-4670-83ad-8fb93a1cc83c

📥 Commits

Reviewing files that changed from the base of the PR and between b857e27 and da2e4d3.

📒 Files selected for processing (1)
  • packages/renderer/src/lib/skills/SkillDetails.svelte
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/renderer/src/lib/skills/SkillDetails.svelte

📝 Walkthrough

Walkthrough

Adds a Skill Details feature: new navigation target SKILL_DETAILS, typed parameters, route wiring in the renderer, a clickable skill name to navigate, and a new SkillDetails.svelte component that loads instructions and bundled resources and exposes enable/disable actions.

Changes

Cohort / File(s) Summary
Navigation API
packages/api/src/navigation-page.ts, packages/api/src/navigation-request.ts
Added NavigationPage.SKILL_DETAILS = 'skill-details' and typed its parameters as { name: string }.
Navigation Handler
packages/renderer/src/navigation.ts
Handled NavigationPage.SKILL_DETAILS to route to /skills/${encodeURIComponent(name)}/summary.
Routing & App
packages/renderer/src/App.svelte
Registered nested route /:name/* under skills that renders SkillDetails and passes name={decodeURIComponent(meta.params.name)}.
Skill Details UI
packages/renderer/src/lib/skills/SkillDetails.svelte
New component (prop name: string) that fetches getSkillContent and listSkillFolderContent on mount, shows Summary/Instructions/Resources tabs, displays metadata, and provides enable/disable action plus SkillActions integration.
Skill List Interaction
packages/renderer/src/lib/skills/columns/SkillNameColumn.svelte
Converted skill name to a clickable button that calls handleNavigation(NavigationPage.SKILL_DETAILS, { name }) to open details.

Sequence Diagram

sequenceDiagram
    actor User
    participant SkillNameColumn
    participant NavigationHandler
    participant Router/App
    participant SkillDetails
    participant WindowAPIs

    User->>SkillNameColumn: click skill name
    SkillNameColumn->>NavigationHandler: handleNavigation(SKILL_DETAILS, {name})
    NavigationHandler->>Router/App: navigate to /skills/{name}/summary
    Router/App->>SkillDetails: mount with name
    SkillDetails->>WindowAPIs: getSkillContent(name)
    SkillDetails->>WindowAPIs: listSkillFolderContent(name)
    WindowAPIs-->>SkillDetails: return content & folder list
    SkillDetails->>User: render tabs (Summary, Instructions, Resources)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(skills): add skill details view page' accurately and concisely summarizes the main change—adding a new skill details view page.
Description check ✅ Passed The description is directly related to the changeset, providing a summary of the feature, implementation approach, and test plan for the skill details view.
Linked Issues check ✅ Passed The changes comprehensively implement issue #1043 requirements: dedicated details view, skill metadata display, instructions rendering, bundled resource listing, and enable/disable toggle.
Out of Scope Changes check ✅ Passed All changes are directly related to implementing the skill details feature—no out-of-scope modifications detected in the navigation, routing, components, or UI updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/renderer/src/lib/skills/SkillDetails.svelte`:
- Around line 27-39: Promise.allSettled(...) is being used but its .catch(...)
is ineffective; change the onMount logic to await the results of
Promise.allSettled([window.getSkillContent(name),
window.listSkillFolderContent(name)]) then iterate the returned results array,
for each result with status "fulfilled" assign its value to the appropriate
variable (skillContent or folderContents) and for each result with status
"rejected" log the error (e.g., via console.error) so failures are visible, and
finally set loading = false after processing results; refer to onMount,
Promise.allSettled, window.getSkillContent, window.listSkillFolderContent,
skillContent, folderContents, and loading to locate and update the code.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 947a872b-c9d2-4eb6-ab94-a4dc6d995d21

📥 Commits

Reviewing files that changed from the base of the PR and between 5e429b2 and b857e27.

📒 Files selected for processing (6)
  • packages/api/src/navigation-page.ts
  • packages/api/src/navigation-request.ts
  • packages/renderer/src/App.svelte
  • packages/renderer/src/lib/skills/SkillDetails.svelte
  • packages/renderer/src/lib/skills/columns/SkillNameColumn.svelte
  • packages/renderer/src/navigation.ts

@codecov
Copy link
Copy Markdown

codecov bot commented Mar 24, 2026

Codecov Report

❌ Patch coverage is 4.04040% with 95 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...ckages/renderer/src/lib/skills/SkillDetails.svelte 0.00% 88 Missing ⚠️
packages/renderer/src/navigation.ts 0.00% 3 Missing ⚠️
packages/renderer/src/App.svelte 0.00% 2 Missing ⚠️
...erer/src/lib/skills/columns/SkillNameColumn.svelte 60.00% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

Copy link
Copy Markdown
Contributor

@MarsKubeX MarsKubeX left a comment

Choose a reason for hiding this comment

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

In general LGTM. I've tested in MacOS and found few things:

  • In the instructions tab, if the skill content is bigger than the window, there is no scroll.
  • Nit: the button icon to remove the skill in the details page has a different styling than the one in the skill list.

{#each folderContents as item (item)}
<div class="flex items-center gap-3 px-5 py-3 border-b border-[var(--pd-content-card-border)] last:border-b-0 hover:bg-[var(--pd-content-card-hover-bg)]">
<div class="w-8 h-8 rounded-md flex items-center justify-center bg-[var(--pd-content-bg)]">
<Fa icon={item.endsWith('/') ? faFolder : faFile} class="text-[var(--pd-content-card-text)]" />
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Can you use the Icon component instead of Fa?

- Replace ineffective Promise.allSettled().catch() with .then() that
  checks each result for rejection status, plus a trailing .catch()
  to satisfy the no-floating-promises lint rule
- Use Icon component from @podman-desktop/ui-svelte/icons instead of Fa
  from svelte-fa to match project conventions
- Change overflow-x-auto to overflow-auto on instructions content
  container to enable vertical scrolling when content exceeds viewport

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Brian <bmahabir@bu.edu>
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.

Create a view page for displaying skills details

2 participants