feat(skills): add skill details view page#1159
feat(skills): add skill details view page#1159bmahabirbu wants to merge 2 commits intokortex-hub:mainfrom
Conversation
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>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughAdds a Skill Details feature: new navigation target Changes
Sequence DiagramsequenceDiagram
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)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ 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. Comment |
There was a problem hiding this comment.
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
📒 Files selected for processing (6)
packages/api/src/navigation-page.tspackages/api/src/navigation-request.tspackages/renderer/src/App.sveltepackages/renderer/src/lib/skills/SkillDetails.sveltepackages/renderer/src/lib/skills/columns/SkillNameColumn.sveltepackages/renderer/src/navigation.ts
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
MarsKubeX
left a comment
There was a problem hiding this comment.
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)]" /> |
There was a problem hiding this comment.
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>
Summary
SKILL_DETAILSenum inNavigationPageand routing inApp.svelteFixes #1043
Test plan
🤖 Generated with Claude Code