---
name: forge-guestbook
description: 以用户的 LovStudio 身份，向手工川 AI 创造营 Forge 提交 Markdown、期数标签和图片留言，并查询公开或个人审核状态。
homepage: https://forge.lovstudio.ai/guestbook
metadata:
  auth: lovstudio-device-flow
  moderation: required
---

# Forge Guestbook

当用户希望给手工川 AI 创造营 Forge 留言、补充自己的项目复盘，或查看留言审核状态时使用本 Skill。

## 安全边界

- 不索取或保存用户密码。
- 登录只走 LovStudio 设备授权。
- 不使用 Supabase service role。
- 所有新留言都会进入 `pending`，Agent 不能自行审核。
- 未经用户确认，不替用户发布新的留言。

## 1. 获取 LovStudio 会话

向 `https://lovstudio.ai/api/cli/auth/start` 发起：

```json
{
  "clientName": "Forge Guestbook Agent",
  "scope": "forge"
}
```

把返回的 `userCode` 和 `verificationUriComplete` 展示给用户。用户确认后，按返回的 `interval` 秒轮询：

```http
POST https://lovstudio.ai/api/cli/auth/poll
Content-Type: application/json

{"deviceCode":"<deviceCode>"}
```

当 `status` 为 `authenticated` 时，临时使用返回的 `accessToken`。不要在日志中输出 token。

## 2. 提交留言

```http
POST https://forge.lovstudio.ai/api/guestbook
Authorization: Bearer <accessToken>
Content-Type: application/json

{
  "contentMarkdown": "我在这次活动里完成了 **第一个可运行版本**。",
  "eventIds": ["ep-04"],
  "source": "agent"
}
```

可选图片格式：

```json
{
  "mimeType": "image/png",
  "base64": "<纯 Base64 内容>",
  "altText": "项目演示截图"
}
```

限制：正文 1–5000 字；最多 6 张图片；单张不超过 8 MB；支持 JPEG、PNG、WebP、GIF。`eventIds` 可多选，也可留空。

成功响应为 HTTP 201，且 `entry.status` 必须为 `pending`。

## 3. 查询

- 已公开留言：`GET https://forge.lovstudio.ai/api/guestbook`
- 当前用户的全部留言：`GET https://forge.lovstudio.ai/api/guestbook/mine`，需携带 Bearer token
- 机器可读能力：`GET https://forge.lovstudio.ai/api/guestbook/agent`

向用户清楚说明：提交成功不等于公开成功；只有 LovStudio 管理员审核通过后，留言与附件才会公开展示。
