Skills 实验室升级与平台功能完善
为 Skills 实验室添加卡片列表、搜索筛选和管理功能,同时完善提示词库搜索、导航栏视觉效果以及新增关于我们和投稿指南页面
Skills 实验室升级与平台功能完善
开发概述
本次开发主要围绕 Skills 实验室的全面升级展开,同时对平台多个模块进行了功能完善和用户体验优化。
完成的主要功能
1. Skills 实验室升级
前端展示优化
- 卡片网格布局:将原有的列表展示改为 3 列卡片网格,视觉效果更加现代化
- 搜索功能:支持按名称、描述、标签进行实时搜索
- 分类筛选:按分类(信息获取、计算处理、文件操作、内容创作、数据管理)快速筛选
- 标签筛选:支持多标签组合筛选
- 卡片信息展示:展示标题、描述、难度等级、标签列表、GitHub 链接
管理后台 (/admin/skills)
- 仅管理员可访问,非管理员自动重定向
- 表格形式展示所有 Skills
- 完整的 CRUD 操作支持
- 标签管理功能(添加/删除)
- JSON 模板格式验证
- 预览功能
数据库更新
新建迁移文件 003_update_skills.sql:
- 添加
github_url字段存储 GitHub 链接 - 添加
tags数组字段支持标签 - 创建 GIN 索引优化标签搜索性能
- 设置管理员 CRUD 权限的 RLS 策略
2. 提示词库搜索功能
为 /vault 页面添加:
- 搜索栏,支持按标题、描述、内容和模型搜索
- 实时过滤,输入即搜索
- 搜索结果数量显示
- 清除搜索按钮
- 空结果友好提示
3. 导航栏视觉优化
- 新增
.glass-headerCSS 类 - 使用半透明深色背景
rgba(10, 10, 10, 0.85) - 增强模糊效果(blur: 20px, saturate: 180%)
- 添加底部阴影增加层次感
4. 新增页面
关于我们 (/about)
- 使命声明:降低 AI 学习门槛
- 平台数据展示:课程数量、模板数量等
- 平台特色介绍
- 价值观阐述
- 行动召唤
投稿指南 (/contribute)
- 投稿类型说明
- 投稿规范要求
- 投稿流程可视化
- 模板示例
- 联系方式
📁 新增/修改的文件
| 文件路径 | 操作 | 说明 |
|---|---|---|
supabase/migrations/003_update_skills.sql | 新增 | Skills 表升级迁移 |
src/lib/supabase/skills.ts | 重写 | 添加 CRUD 操作和筛选功能 |
src/components/icons/index.tsx | 修改 | 添加 GitHub、Search、Tag 图标 |
src/app/skills/page.tsx | 重写 | 卡片布局、搜索筛选功能 |
src/app/admin/skills/page.tsx | 新增 | Skills 管理后台 |
src/components/Header.tsx | 修改 | 添加 Skills 管理入口、优化样式 |
src/app/globals.css | 修改 | 新增 glass-header 样式 |
src/app/vault/page.tsx | 修改 | 添加搜索功能 |
src/app/about/page.tsx | 新增 | 关于我们页面 |
src/app/contribute/page.tsx | 新增 | 投稿指南页面 |
🔧 技术实现要点
Skills 搜索筛选
const filteredSkills = useMemo(() => {
return skills.filter((skill) => {
// 搜索过滤
if (searchQuery) {
const query = searchQuery.toLowerCase();
const matchesSearch =
skill.name.toLowerCase().includes(query) ||
skill.display_name.toLowerCase().includes(query) ||
skill.description.toLowerCase().includes(query) ||
skill.tags?.some((tag) => tag.toLowerCase().includes(query));
if (!matchesSearch) return false;
}
// 分类和标签过滤...
return true;
});
}, [skills, searchQuery, selectedCategory, selectedTags]);
导航栏模糊效果
.glass-header {
background: rgba(10, 10, 10, 0.85);
backdrop-filter: blur(20px) saturate(180%);
-webkit-backdrop-filter: blur(20px) saturate(180%);
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.3);
}
📊 构建状态
✅ 构建成功,所有页面正常生成:
/skills- Skills 实验室(带搜索筛选)/admin/skills- Skills 管理后台/vault- 提示词库(带搜索)/about- 关于我们/contribute- 投稿指南