允许用户通过 Claude Code 直接发布技能到 SkillCode.cc 平台。
1. 用户登录 skillcode.cc
↓
2. 进入个人中心,生成 API Token
↓
3. 保存 Token 到本地配置(~/.skillcode/config.json)
↓
4. 在 Claude Code 中:告诉 Claude "发布技能到 skillcode.cc"
↓
5. Claude 读取本地技能文件和配置
↓
6. Claude 调用 API 上传技能(使用 Bearer Token 认证)
↓
7. 返回技能链接:skillcode.cc/[code]
CREATE TABLE public.api_tokens (
id UUID PRIMARY KEY,
user_id UUID REFERENCES profiles(id),
token TEXT UNIQUE NOT NULL, -- 格式: sk_xxxxx
name TEXT NOT NULL, -- Token 名称
last_used_at TIMESTAMP, -- 最后使用时间
expires_at TIMESTAMP, -- 过期时间(可选)
created_at TIMESTAMP,
updated_at TIMESTAMP
);verify_api_token(token_string)- 验证 Token 并返回用户 IDgenerate_api_token()- 生成格式为sk_xxxxx的随机 Token
双重认证支持:
export async function verifyAuth(request: Request) {
// 方式 1: Bearer Token(API 调用)
if (request.headers.get('Authorization').startsWith('Bearer ')) {
// 验证 API Token
}
// 方式 2: Session Cookie(浏览器登录)
// 验证 Supabase Session
}POST /api/skills - 创建技能
- ✅ 已支持 Bearer Token 认证
- ✅ 已支持 Session Cookie 认证
GET /api/tokens - 获取用户的所有 Tokens
curl https://skillcode.cc/api/tokens \
-H "Cookie: supabase-auth-token=xxx"POST /api/tokens - 创建新 Token
curl -X POST https://skillcode.cc/api/tokens \
-H "Cookie: supabase-auth-token=xxx" \
-H "Content-Type: application/json" \
-d '{"name": "My MacBook", "expiresInDays": 90}'DELETE /api/tokens/[id] - 删除 Token
curl -X DELETE https://skillcode.cc/api/tokens/[token-id] \
-H "Cookie: supabase-auth-token=xxx"publish-to-skillcode-skill/
├── SKILL.md # Skill 定义和说明
└── README.md # 使用文档
- 用户说:"发布我的技能到 skillcode.cc"
- Claude 执行:
# 读取配置 cat ~/.skillcode/config.json # 读取技能文件 cat SKILL.md cat README.md # ... 其他文件 # 打包并上传 curl -X POST https://skillcode.cc/api/skills \ -H "Authorization: Bearer sk_xxxxx" \ -H "Content-Type: application/json" \ -d '{...}'
- 返回结果:
技能已发布!链接:skillcode.cc/abc123
- ✅
skillcode/supabase/add-api-tokens.sql- 创建 Token 表和函数
- ✅
skillcode/lib/auth/verify-token.ts- Token 验证工具 - ✅
skillcode/app/api/tokens/route.ts- Token CRUD API - ✅
skillcode/app/api/tokens/[id]/route.ts- 删除 Token API - ✅
skillcode/app/api/skills/route.ts- 已修改支持 Token
- ✅
publish-to-skillcode-skill/SKILL.md- Skill 定义 - ✅
publish-to-skillcode-skill/README.md- 使用说明
在 Supabase SQL Editor 中执行:
skillcode/supabase/add-api-tokens.sqlcd /Users/xllin/小异空间/coding/skillshare
git add .
git commit -m "feat: 添加 API Token 认证功能
- 创建 api_tokens 表
- 实现 Bearer Token 认证
- 添加 Token 管理 API
- 创建 publish-to-skillcode skill
用户现在可以通过 Claude Code 直接发布技能!"
git pushVercel 会自动部署。
# 1. 手动创建一个测试 Token(临时,直接在数据库)
INSERT INTO api_tokens (user_id, token, name)
VALUES (
'00000000-0000-0000-0000-000000000001',
'sk_test123456789',
'Test Token'
);
# 2. 测试 API
curl -X POST https://skillcode.cc/api/skills \
-H "Authorization: Bearer sk_test123456789" \
-H "Content-Type: application/json" \
-d '{
"name": "Test Skill",
"description": "Testing API Token auth",
"files": [{"path": "test.md", "content": "test", "type": "file"}]
}'- Token 格式:
sk_前缀 + 32 位随机字符 - 存储: Token 明文存储(因为需要验证)
- 传输: 只通过 HTTPS
- 过期: 支持设置过期时间
- 撤销: 用户可随时删除 Token
- 审计: 记录最后使用时间
Claude Code (本地)
↓
POST /api/skills
Authorization: Bearer sk_xxxxx
↓
Vercel (Next.js API)
↓
verifyAuth(request)
↓
Supabase.rpc('verify_api_token')
↓
返回 user_id
↓
创建技能 (author_id = user_id)
↓
返回技能链接
- 访问 skillcode.cc
- 登录(暂时需要手动创建账号,后续会添加 OAuth)
- 个人中心 → 生成 API Token
- 保存到
~/.skillcode/config.json - 使用 Claude Code 发布技能
- 在社交媒体看到技能链接
- 访问 skillcode.cc/[code]
- 复制安装链接
- 告诉 Claude: "安装 skillcode.cc/[code]"
- Claude 自动下载并安装
- ✅ API Token 表和函数已创建
- ✅ 认证逻辑已实现
- ✅ Token 管理 API 已完成
- ✅ Skill 文件已创建
- ⏳ 需要执行 SQL 创建表
- ⏳ 需要部署代码到 Vercel
- ⏳ 需要实现用户登录(OAuth)
- ⏳ 需要创建个人中心页面
-
立即做:
- 执行 SQL 创建 Token 表
- 提交并部署代码
-
短期:
- 实现 Google/GitHub OAuth 登录
- 创建个人中心页面(显示和管理 Token)
-
中期:
- 完善 publish-to-skillcode skill
- 添加更详细的错误处理
- 创建使用教程视频
- Token 生成后只显示一次,用户需要立即复制保存
- Token 删除后立即失效,无法恢复
- 用户可以创建多个 Token(用于不同设备)
- 管理员可以查看所有 Token 使用情况(用于监控)
实现完成度: 90%(核心功能完成,需要部署和测试)