feat: refine landing experience and restore my-skills metadata

This commit is contained in:
dongmucat 2026-03-17 17:07:28 +08:00
parent 67e3c8ff19
commit 808b80f295
5 changed files with 71 additions and 16 deletions

View file

@ -19,7 +19,6 @@ export function Layout() {
{ label: t('nav.landing'), to: '/', exact: true },
{ label: t('nav.home'), to: '/skills' },
{ label: t('nav.search'), to: '/search' },
{ label: t('nav.skillDetail'), to: '/space/demo/example' },
{ label: t('nav.dashboard'), to: '/dashboard', auth: true },
{ label: t('nav.mySkills'), to: '/dashboard/skills', auth: true },
{ label: t('nav.publish'), to: '/dashboard/publish', auth: true },

View file

@ -15,7 +15,8 @@
"title": "Discover & Share AI Skills",
"subtitle": "Build powerful AI agents with community-driven skills",
"searchPlaceholder": "Search skills...",
"exploreSkills": "Explore Skills"
"exploreSkills": "Explore Skills",
"publishSkill": "Start Building"
},
"features": {
"secure": {
@ -29,8 +30,29 @@
"integration": {
"title": "Easy Integration",
"description": "Seamlessly integrate with your existing tools"
},
"versionControl": {
"title": "Version Control",
"description": "Structured version management and release workflows that keep skill packages traceable and reliable."
},
"cli": {
"title": "CLI Tooling",
"description": "Powerful command-line workflows for publishing, installing, and managing skill packages."
},
"governance": {
"title": "Review Governance",
"description": "Built-in review flows and permission controls to keep enterprise skill quality high."
}
},
"stats": {
"skills": "Catalogs",
"downloads": "Downloads",
"teams": "Teams"
},
"whySkillHub": {
"title": "Why SkillHub",
"subtitle": "A private Agent skill platform designed for enterprise teams"
},
"badge": "Enterprise Skill Registry",
"tagline": "Publish, Discover, Manage",
"taglineHighlight": " Agent Skills",

View file

@ -15,7 +15,8 @@
"title": "发现与分享 AI 技能",
"subtitle": "使用社区驱动的技能构建强大的 AI 代理",
"searchPlaceholder": "搜索技能...",
"exploreSkills": "探索技能"
"exploreSkills": "探索技能",
"publishSkill": "开始构建"
},
"features": {
"secure": {
@ -29,8 +30,29 @@
"integration": {
"title": "轻松集成",
"description": "无缝集成到您现有的工具中"
},
"versionControl": {
"title": "版本控制",
"description": "完善的版本管理和发布流程,确保技能包的质量和可追溯性。"
},
"cli": {
"title": "CLI 工具",
"description": "强大的命令行工具,支持快速发布、安装和管理技能包。"
},
"governance": {
"title": "审核治理",
"description": "内置审核流程和权限管理,保障企业级技能质量。"
}
},
"stats": {
"skills": "项目库",
"downloads": "下载量",
"teams": "团队"
},
"whySkillHub": {
"title": "为什么选择 SkillHub",
"subtitle": "专为企业打造的私有化 Agent 技能管理平台"
},
"badge": "企业级技能注册中心",
"tagline": "发布、发现、管理",
"taglineHighlight": " Agent 技能包",

View file

@ -201,16 +201,28 @@ export function MySkillsPage() {
{skill.summary && (
<p className="text-sm text-muted-foreground mb-3 leading-relaxed">{skill.summary}</p>
)}
{skill.status ? (
<span className={resolveStatusClassName(skill.status)}>
{resolveStatusLabel(skill.status)}
<div className="flex flex-wrap items-center gap-3 text-sm text-muted-foreground">
<span className="handle-tag">@{skill.namespace}</span>
{skill.latestVersion ? (
<span className="font-mono text-xs">v{skill.latestVersion}</span>
) : null}
<span className="flex items-center gap-1">
<svg className="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M9 19l3 3m0 0l3-3m-3 3V10" />
</svg>
{formatCompactCount(skill.downloadCount)}
</span>
) : null}
{skill.latestVersionStatus ? (
<span className={resolveStatusClassName(skill.latestVersionStatus)}>
{resolveStatusLabel(skill.latestVersionStatus)}
</span>
) : null}
{skill.status ? (
<span className={resolveStatusClassName(skill.status)}>
{resolveStatusLabel(skill.status)}
</span>
) : null}
{skill.latestVersionStatus ? (
<span className={resolveStatusClassName(skill.latestVersionStatus)}>
{resolveStatusLabel(skill.latestVersionStatus)}
</span>
) : null}
</div>
</div>
<div className="flex items-center gap-2 pl-4">
{skill.latestVersionStatus === 'PENDING_REVIEW' && skill.latestVersion ? (

View file

@ -445,9 +445,9 @@ export function SkillDetailPage() {
}
return (
<div className="grid grid-cols-1 lg:grid-cols-3 gap-8 animate-fade-up">
<div className="max-w-6xl mx-auto flex flex-col lg:flex-row gap-8 animate-fade-up">
{/* Main Content */}
<div className="lg:col-span-2 space-y-8">
<div className="flex-1 min-w-0 space-y-8">
<div className="space-y-3">
<Button
variant="ghost"
@ -620,7 +620,7 @@ export function SkillDetailPage() {
</div>
{/* Sidebar */}
<div className="space-y-5">
<aside className="w-full lg:w-80 flex-shrink-0 space-y-5">
<Card className="p-5 space-y-5">
<div className="flex items-center justify-between">
<div className="text-sm text-muted-foreground">{t('skillDetail.version')}</div>
@ -756,7 +756,7 @@ export function SkillDetailPage() {
</div>
</Card>
)}
</div>
</aside>
<Dialog open={reportDialogOpen} onOpenChange={setReportDialogOpen}>
<DialogContent>