feat(skills): validation and shadowing signals#2607
Merged
Conversation
This was referenced Jun 11, 2026
Contributor
Author
This was referenced Jun 11, 2026
|
React Doctor could not complete this scan.
Reviewed by React Doctor for commit |
Contributor
Prompt To Fix All With AIFix the following 1 code review issue. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 1
packages/ui/src/features/skills/SkillCard.tsx:78-80
When a skill has multiple issues the tooltip messages are joined with `
`, but HTML collapses whitespace in text nodes, so all messages run together without any visible separator. Radix UI Tooltip renders `content` as a `ReactNode`, so newlines in a plain string don't produce line breaks.
```suggestion
<Tooltip
content={
<Flex direction="column" gap="1">
{issues.map((issue) => (
<Text key={issue.type} size="1">
{issue.message}
</Text>
))}
</Flex>
}
>
<Warning size={14} className="shrink-0 text-amber-11" />
</Tooltip>
```
Reviews (1): Last reviewed commit: "feat(skills): validation and shadowing s..." | Re-trigger Greptile |
jonathanlab
approved these changes
Jun 11, 2026
jonathanlab
approved these changes
Jun 11, 2026
a0b806d to
1e80286
Compare
41afe29 to
0bdd245
Compare
1e80286 to
5df364a
Compare
0bdd245 to
17f53b7
Compare
Contributor
Author
Merge activity
|
17f53b7 to
17c16d7
Compare
5df364a to
017c36e
Compare
- analyzeSkills in @posthog/core: pure, no-I/O health analysis over the
discovered skills. Rules: missing/empty description, frontmatter name
vs directory name mismatch, oversized SKILL.md (context-cost warning,
32 kB threshold), and cross-source name collisions with explicit
precedence (repo > user > marketplace > bundled) — losers are marked
shadowed by the winner.
- SkillInfo gains skillMdBytes (computed during discovery) to feed the
size rule.
- UI: amber health badge with tooltip on SkillCard; per-issue callouts
in the detail panel ("Shadowed by the repository skill named ...").
- Unit tests cover every rule, the precedence matrix, the boundary
size, and multi-issue accumulation.
Generated-By: PostHog Code
Task-Id: f4e84f1a-19c9-490c-9b98-47787a7dddcf
… when shadowed Review feedback on #2607: newline-joined tooltip text collapses in HTML, so issues render as separate lines now; shadow messages include the winning repo's name so same-name skills across two open repos are distinguishable. Generated-By: PostHog Code Task-Id: f4e84f1a-19c9-490c-9b98-47787a7dddcf
17c16d7 to
108c18e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Problem
Skill configurations can have subtle issues — missing descriptions, frontmatter names that don't match their directory, oversized
SKILL.mdfiles, or skills being silently shadowed by higher-priority sources — with no feedback to the user. This adds health analysis so these problems are surfaced directly in the Skills UI.Changes
analyzeSkills, a pure function that inspects a list ofSkillInfoobjects and returns a map of issues keyed by skill path. It detects four issue types:missing-description— agents use the description to decide when to invoke a skillname-mismatch— frontmatternamediffers from the directory nameoversized-manifest—SKILL.mdexceeds 32 kB, adding context cost on every useshadowed— a higher-precedence source (repo > user > marketplace > bundled) provides a skill with the same nameskillMdBytestoSkillInfo(and its Zod schema) so the file size is available without additional I/O; the discovery layer populates it from the raw file content.SkillsViewrunsanalyzeSkillsover the loaded skills list and passes the resultingSkillAnalysisdown toSkillSectionandSkillDetailPanel.SkillCardshows a warning icon with a tooltip listing all issue messages when a skill has issues.SkillDetailPanelrenders each issue as an amberCalloutbelow the skill header.How did you test this?
analyzeSkillscovering: healthy skills, missing/whitespace descriptions, name mismatches, oversized manifests, all shadowing precedence pairs, three-way collisions, and multiple issues accumulating on a single skill.readSkillMetadataFromDirtest to include the newskillMdBytesfield in the expected output.Automatic notifications