Skip to content

[Skills] Display Metadata from SKILL.md frontmatter#26101

Merged
raycastbot merged 3 commits intoraycast:mainfrom
DaleSeo:feat/skills-rich-metadata
Mar 7, 2026
Merged

[Skills] Display Metadata from SKILL.md frontmatter#26101
raycastbot merged 3 commits intoraycast:mainfrom
DaleSeo:feat/skills-rich-metadata

Conversation

@DaleSeo
Copy link
Contributor

@DaleSeo DaleSeo commented Mar 7, 2026

Description

The Skills extension was already getting SKILL.md from GitHub, but it was only using the body content and ignoring the frontmatter. This update now parses the frontmatter, so it shows the description, license, compatibility, and allowed-tools directly in the detail panel metadata without needing extra API calls. It also adds a useRepoStats hook that fetches GitHub star counts from the public repos API and displays them next to the install counts. As a small UX improvement, the list item subtitle now shows the skill's description, if available, instead of just the repository path.

Screencast

  • Before
2026-03-06 at 21 36 26
  • After
2026-03-06 at 21 36 59

Checklist

@raycastbot raycastbot added extension fix / improvement Label for PRs with extension's fix improvements extension: skills Issues related to the skills extension platform: macOS labels Mar 7, 2026
@raycastbot
Copy link
Collaborator

raycastbot commented Mar 7, 2026

Thank you for your contribution! 🎉

🔔 @keito4 you might want to have a look.

You can use this guide to learn how to check out the Pull Request locally in order to test it.

📋 Quick checkout commands
BRANCH="feat/skills-rich-metadata"
FORK_URL="https://github.com/DaleSeo/extensions.git"
EXTENSION_NAME="skills"
REPO_NAME="extensions"

git clone -n --depth=1 --filter=tree:0 -b $BRANCH $FORK_URL
cd $REPO_NAME
git sparse-checkout set --no-cone "extensions/$EXTENSION_NAME"
git checkout
cd "extensions/$EXTENSION_NAME"
npm install && npm run dev

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 10-15 business days.

@DaleSeo DaleSeo marked this pull request as ready for review March 7, 2026 02:37
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Mar 7, 2026

Greptile Summary

This PR enriches the Skills extension detail panel by parsing SKILL.md frontmatter for description, license, compatibility, and allowed-tools, adds a useRepoStats hook to display GitHub star counts alongside install counts, and surfaces the skill description as a list item subtitle when the detail panel is collapsed.

  • A custom YAML parser (parseFrontmatter) is introduced in shared.ts. It handles the common cases (simple scalars, inline arrays, block arrays) but silently drops keys whose value is empty (e.g. description:) and stores YAML block scalar prefixes (|, >) as literal strings instead of parsing the following lines — this could cause some SKILL.md descriptions to disappear or render incorrectly.
  • useRepoStats makes unauthenticated GitHub API calls, which are subject to a 60 req/hour rate limit per IP. Failures are swallowed silently; active users browsing many skills will simply stop seeing star counts with no feedback.
  • useSkillContent is called twice for the same skill in SkillListItem — once in the parent for the subtitle and once in the always-mounted InlineDetail child — resulting in two concurrent hook instances for the same cache key. Lifting the single call to the parent and passing results as props would be cleaner.

Confidence Score: 3/5

  • Safe to merge after addressing the custom YAML parser edge cases; rate-limiting and duplicate hook concerns are lower priority but worth fixing.
  • The core feature works correctly for well-formed SKILL.md files, the CHANGELOG is properly updated, and failures degrade gracefully. However, the custom YAML parser has demonstrable edge cases (empty-value keys silently dropped, block scalars mishandled) that could cause metadata to be missing for real skills, and the unauthenticated GitHub API fetch has a concrete rate-limit ceiling with no user-visible feedback.
  • extensions/skills/src/shared.ts (YAML parser edge cases) and extensions/skills/src/hooks/useRepoStats.ts (rate limiting).

Important Files Changed

Filename Overview
extensions/skills/src/shared.ts Adds SkillFrontmatter type and a custom YAML parseFrontmatter function. The parser covers simple key-value pairs, inline arrays, and block arrays, but silently drops keys with empty values and mishandles YAML block scalar prefixes (`
extensions/skills/src/hooks/useRepoStats.ts New hook that fetches GitHub star counts via the public API. Fails gracefully on errors, but unauthenticated calls are capped at 60 req/hour/IP, which active users can exhaust quickly with no visible feedback.
extensions/skills/src/components/SkillListItem.tsx Adds frontmatter metadata display and GitHub stars to the detail panel. useSkillContent is called redundantly in both SkillListItem and its child InlineDetail, creating two concurrent hook instances for the same data when a skill is selected.
extensions/skills/src/hooks/useSkillContent.ts Updated to return a SkillContentResult with both frontmatter and body, replacing the old plain-string return. Logic is correct and the fallback chain is preserved.
extensions/skills/src/components/InstalledSkillListItem.tsx Switches from removeFrontmatter to parseFrontmatter and displays description and license from the local SKILL.md in the metadata panel. Changes are straightforward and correct.

Last reviewed commit: e49eed8

@0xdhrv 0xdhrv self-assigned this Mar 7, 2026
Copy link
Contributor

@0xdhrv 0xdhrv left a comment

Choose a reason for hiding this comment

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

Looks good to me, approved ✅

@raycastbot raycastbot merged commit db67fd2 into raycast:main Mar 7, 2026
2 checks passed
@github-actions
Copy link
Contributor

github-actions bot commented Mar 7, 2026

Published to the Raycast Store:
https://raycast.com/keito4/skills

@raycastbot
Copy link
Collaborator

🎉 🎉 🎉

We've rewarded your Raycast account with some credits. You will soon be able to exchange them for some swag.

LlaziG added a commit to LlaziG/raycast-extensions that referenced this pull request Mar 7, 2026
- chore(hugeicons-ui):Update hugeicons-ui: bump @hugeicons/core-free-icons and @hugeicons/react
- [Skills] Display Metadata from SKILL.md frontmatter (raycast#26101)
- Update CODEOWNERs (c2c1e0d)
- Add timely extension (raycast#25085)
- Fix: copy prompt/answer for selected message (raycast#25438)
- Update CODEOWNERs (46ecffc)
- Update todoist extension (raycast#26087)
- Dia: update @raycast/utils to 2.2.3 (raycast#26091)
- Update CODEOWNERs (3503a64)
- Add typewhisper extension (raycast#25733)
- Update CODEOWNERs (5ea5ef7)
- Add number-research extension (raycast#26060)
- Update trustmrr extension (raycast#26085)
- Update CODEOWNERs (40aabef)
- Add desktoprenamer extension (raycast#24610)
- Update tailwindcss extension (raycast#26067)
- Update CODEOWNERs (7a13ffd)
- Update time-awareness extension (raycast#25765)
- Update CODEOWNERs (6c50032)
- Update github-status extension (raycast#26063)
- Update anna-s-archive extension (raycast#26076)
- Update CODEOWNERs (46b879a)
- Update shopify-developer-changelog extension (raycast#25711)
- Update CODEOWNERs (22aa04d)
- Update weather extension (raycast#26074)
- Update kagi-news extension (raycast#25679)
- Update (raycast#26073)
- Update teak-raycast extension (raycast#25995)
- otp-inbox: Add Windows support (raycast#25441)
- Update CODEOWNERs (36e7a5f)
- Add trustmrr extension (raycast#26069)
- Update CODEOWNERs (d7c540c)
- Add doubao-tts extension (raycast#25705)
- GitHub: Improve auto-merge support (raycast#25256)
- Update CODEOWNERs (9f556d5)
- Update microsoft-edge extension add new feat to search and launch workspaces (raycast#25335)
- Add RouteMesh MCP server to model-context-protocol-registry (raycast#25960)
- feat: Add Advanced Batch Rename command with rule-based engine (raycast#25501)
- Update media-converter extension (raycast#25836)
- Update scheduler extension (raycast#26059)
- Docs: Update the utils docs
- [pipe-commands] Add data formatting utilities (raycast#25824)
- Update CODEOWNERs (5b660b2)
- Add hdri-library extension (raycast#25701)
- Update CODEOWNERs (2ea8b9c)
- Update ente-auth extension (raycast#25773)
- Update CODEOWNERs (b9b9e2b)
- Add grpcui extension (raycast#25697)
- Update CODEOWNERs (1730346)
- Update openrouter model search extension (raycast#26045)
- System Monitor: Fix stale temperature readings in menubar (raycast#26025)
- Update CODEOWNERs (4e3ff41)
- Fix truncated row values in pass extension (raycast#25843)
- Update CODEOWNERs (489aede)
- Add quickreferences-raycast extension (raycast#23629)
- Update CODEOWNERs (84a0a58)
- Update cleanshotx extension (raycast#25985)
- [ccusage] Hide "Usage Limits" details when using non-OAuth authentication (raycast#26009)
- Browser Bookmarks: Add support for Perplexity Comet browser (raycast#25874)
- Add Windows support (raycast#25882)
- Update bmrks extension (raycast#25952)
- Update CODEOWNERs (2faa166)
- Update radarr extension (raycast#25953)
- Update CODEOWNERs (d8b0e95)
- Update google-chrome extension (raycast#25939)
- Add PrusaConnect links to Prusa extension (raycast#25955)
- Update CODEOWNERs (9f8c615)
- Claude Code Launcher: Fix Ghostty PATH by using interactive shell (raycast#25976)
- Update aave-search extension (raycast#26016)
- uuid-generator: add Pack Type Id command (raycast#25800)
- Update CODEOWNERs (39fe5d1)
- [ccusage] Fix npx path resolution for fnm installs using XDG directories (raycast#26008)
- fix(arc): prevent duplicate windows when Arc is not running (raycast#25806)
- System Monitor: Add pin-to-display for menubar stats (raycast#25821)
- Update CODEOWNERs (ec57b0b)
- Add unified Wispr Flow extension (raycast#25218)
- Update shadcn ui extension (raycast#26011)
- Update CODEOWNERs (b354d33)
- feat(gumroad): add price filter and copy actions (raycast#25703)
- Update CODEOWNERs (134d6f9)
- Add raycast-ai-custom-providers extension (raycast#25180)
- Update CODEOWNERs (4accbb2)
- Add zo-raycast extension (raycast#25464)
- Update CODEOWNERs (227732f)
- Add job-dojo extension (raycast#25677)
- Update CODEOWNERs (eace185)
- Add wallhaven extension (raycast#25656)
- Update existing somafm extension: launch flow, refresh toasts, menu fallback (raycast#25187)
- Update CODEOWNERs (d0f014f)
- Add email-finder extension (raycast#24847)
- Update cut-out extension (raycast#25990)
- Update CODEOWNERs (1ef7a10)
- Add cut-out extension (raycast#25663)
- [Pokedex] Added support for Scarlet & Violet–style sprite artwork (raycast#25986)
- Discogs extension new functions (raycast#25686)
- Update nhk-program-search extension (raycast#25967)
- Update kimi extension (raycast#25962)
- Update CODEOWNERs (de246c1)
- Update shiori-sh extension (raycast#25944)
- fix(browser-bookmarks): fix slow initial load and open-in-browser reliability (raycast#25979)
- Update CODEOWNERs (0ad09cd)
- Add spacer extension (raycast#25652)
- [zotero] Fix Zotero 7+ / Better BibTeX compatibility (raycast#25634)
- Docs: update for the new API release
- added ARM64 sdk support (raycast#25966)
- Update CODEOWNERs (3051c01)
- Add Bird extension (raycast#25481)
- Update CODEOWNERs (7c4f8af)
- Add Lock Time extension (raycast#25255)
- Update CODEOWNERs (cdc0ceb)
- Add paste-safely extension (raycast#25951)
- Update CODEOWNERs (bd032c8)
- Add polars-documentation-search extension (raycast#25589)
- Update CODEOWNERs (564b0f2)
- Add DevContainer Features extension (raycast#25603)
- Update CODEOWNERs (2cdb8f6)
- Update gift-stardew-valley extension (raycast#25552)
- Update CODEOWNERs (f728891)
- Update Inkdrop extension (raycast#25529)
- Sourcegraph: Setup improvements (raycast#25950)
- [Skills] Add support for updating skills (raycast#25887)
- Update CODEOWNERs (cb956f6)
- Add search repositories feature for Github for Enterprise (raycast#25661)
- Fix/trakt manager user agent v2 (raycast#25825)
- Update `CricketCast` extension - add menu bar for scores (raycast#25942)
- Add Windows platform support to Goodreads extension (raycast#25936)
- idonthavespotify: Add Qobuz, Bandcamp, Pandora support & fix crash on unknown adapters (raycast#25937)
- Update singularityapp extension (raycast#25943)
- Update raycast-surge extension (raycast#25883)
- Update awork extension (raycast#25844)
- Update extend-display extension (raycast#25894)
- Update git-worktrees extension (raycast#25898)
- [Image Modification] Fix QSpace / QSpace Pro selection detection (raycast#25923)
- Update zeabur extension (raycast#25924)
- Update vietnamese-calendar extension (raycast#25917)
- [AzTU LMS] Fix Color & Add New Image (raycast#25912)
- Update CODEOWNERs (c2aba2b)
- Add Hop extension (raycast#25162)
- [Music Assistant Controls]:  Big update with many features (raycast#25860)
- [MXroute] set mail hosting status + open webmail link (raycast#25895)
- Update kitty extension (raycast#25856)
- Update CODEOWNERs (b73dbee)
- Addeed SDK implementation (raycast#25820)
- Update CODEOWNERs (66857dc)
- Add notilight-controller extension (raycast#25424)
- Update raycast-store-updates extension (raycast#25865)
- Update reader-mode extension (raycast#25872)
- Update CODEOWNERs (f8eeb0d)
- Update battery-optimizer extension (raycast#25509)
- fix: show window icons on first load in window-walker extension (raycast#25871)
- Update CODEOWNERs (7e705b7)
- Update t3 chat extension (raycast#25803)
- Update CODEOWNERs (19f337b)
- Update modify-hash extension (raycast#25816)
- Update CODEOWNERs (64e21d0)
- Add `ZeroSSL` extension - list certificates, view + validate csr (raycast#25861)
- [Cron Manager] Fix tasks disappearing from UI & permission handling (raycast#25845)
- Update CODEOWNERs (abe1d59)
- Add markdown-converter extension (raycast#24129)
- Update betaseries extension (raycast#25842)
- [Skills] Inline detail Panel (raycast#25658)
- Update CODEOWNERs (f1bac6d)
- Removed two extensions (raycast#25851)
- Update CODEOWNERs (53db7b3)
- Add shiori-sh extension (raycast#25757)
- Docs: update for the new API release
- feat(everything-search): allow custom cli arguments (raycast#24607)
- Update CODEOWNERs (93ff0be)
- Delete extensions/proton-pass-client directory (raycast#25841)
- update (raycast#25840)
- Update CODEOWNERs (d85419c)
- Add kaneo-for-raycast extension (raycast#25461)
- [Apple Reminders] Prevent accidental recurring reminders from AI (raycast#25746)
- [Apple Notes] Fix AI tool note ID mismatch, timeout, and search filtering (raycast#25720)
- fix: show window icons on first load in window-walker extension (raycast#25818)
- [Namecheap] fix error when no domain dns hosts (raycast#25827)
- Update youversion-suggest extension (raycast#25797)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

extension fix / improvement Label for PRs with extension's fix improvements extension: skills Issues related to the skills extension platform: macOS platform: Windows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants