diff --git a/ui/src/pages/CompanySkills.tsx b/ui/src/pages/CompanySkills.tsx
index 1f5b3ea3ab5..1c6f6b1fdcd 100644
--- a/ui/src/pages/CompanySkills.tsx
+++ b/ui/src/pages/CompanySkills.tsx
@@ -530,6 +530,16 @@ function formatBytes(bytes: number) {
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
}
+// Some bundled skills ship with a frontmatter-only SKILL.md whose extracted
+// description is just punctuation (e.g. ">"). Strip leading markdown syntax and
+// fall back to a neutral placeholder so cards don't render bare glyphs.
+function cardDescriptionText(raw: string | null | undefined): string {
+ const cleaned = (raw ?? "")
+ .replace(/^[\s>#*_\-`>]+/, "")
+ .trim();
+ return cleaned.length >= 3 ? cleaned : "No description yet.";
+}
+
// ---------------------------------------------------------------------------
// Skills Store discovery grid (PAP-10879)
// ---------------------------------------------------------------------------
@@ -835,7 +845,7 @@ function SkillCard({ card, onOpen }: { card: DiscoveryCard; onOpen: (card: Disco
) : null}
- {card.description || "No description yet."}
+ {cardDescriptionText(card.description)}
@@ -2936,15 +2946,19 @@ function SkillDetailPage({
-
-
{detail.categories.slice(0, 4).map((category) => (
))}
{detail.sourceType === "github" ? (
-
- {currentPin ? `Source ${currentPin}` : "Untracked source"}
-
+
+
+
+
+ {currentPin ?? "untracked"}
+
+
+ {currentPin ? `Source pin ${currentPin}` : "No source pin tracked"}
+
) : null}
@@ -2954,6 +2968,16 @@ function SkillDetailPage({
{detail.starredByCurrentActor ? "Starred" : "Star"}
{detail.starCount}
+
+
+
+
+ {detail.installCount}
+ {detail.installCount === 1 ? "install" : "installs"}
+
+
+ Times this skill has been installed or forked.
+