mcpField
F
formsmd-builder

formsmd-builder

github.com/rebyteai-template设计与 UI1758 次安装19 周前更新
代码仓库

关于 formsmd-builder

formsmd-builder 是使用 Forms.md 库创建 Typeform 风格 HTML 表单的技能,适合表单作者通过类 Markdown DSL 编写内容、条件逻辑和样式,并可选接入 Forms API 收集回复。

主要功能

  1. 01Forms.md HTML 模板
  2. 02类 Markdown 表单 DSL
  3. 03条件幻灯片与字段
  4. 04Typeform 风格 CSS 主题
  5. 05通过 Forms API 收集回复

适用场景

  1. 01将样式化问卷制作为单个 HTML 文件
  2. 02根据回答显示后续问题
  3. 03收集提交内容并查看 JSON 或 CSV 结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rebyteai-template/rebyte-skills --skill formsmd-builder

安装后在 Claude Code 中输入/formsmd-builder确认已加载。

附带文件references/syntax.mdreferences/typeform-theme.md

详细介绍

Forms.md 构建器

使用 Forms.md 库构建可用于生产环境的 Typeform 风格表单。

快速入门

  1. 创建包含 Forms.md 样板代码的 HTML 文件
  2. 使用 DSL(类似 Markdown 的语法)编写表单内容
  3. 添加 Typeform 风格的 CSS 主题以提升效果

样板模板

<!DOCTYPE html>
<html lang="en" class="fmd-root" data-fmd-color-scheme="light">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>{{TITLE}}</title>
  <link rel="stylesheet" href="https://unpkg.com/formsmd/dist/css/formsmd.min.css">
  <style>
    /* Typeform-style overrides - see references/typeform-theme.md */
    .fmd-root {
      --fmd-form-question-font-size: 28px;
      --fmd-slide-transition-duration: 400ms;
      --fmd-border-radius: 24px;
      --fmd-spacer: 24px;
      --fmd-main-container-width: 640px;
    }
    .fmd-root .fmd-form-control {
      border: none;
      border-bottom: 2px solid rgba(0,0,0,0.2);
      border-radius: 0;
      background: transparent;
      font-size: 1.25em;
      padding: 12px 0;
    }
    .fmd-root .fmd-form-control:focus {
      border-bottom-color: rgb(var(--fmd-accent-rgb));
      box-shadow: none;
    }
    .fmd-root .fmd-btn {
      padding: 16px 32px;
      font-size: 18px;
      font-weight: 600;
    }
    .fmd-root .fmd-form-check-label {
      padding: 16px 20px;
      border: 2px solid rgba(0,0,0,0.1);
      border-radius: 12px;
      margin-bottom: 12px;
    }
    .fmd-root .fmd-form-check-input:checked + .fmd-form-check-label {
      border-color: rgb(var(--fmd-accent-rgb));
      background: rgba(var(--fmd-accent-rgb), 0.08);
    }
  </style>
</head>
<body class="fmd-body">
  <script src="https://unpkg.com/formsmd/dist/js/formsmd.bundle.min.js"></script>
  <script>
    const template = `
{{FORM_CONTENT}}
`;
    const form = new Formsmd(template, document, {
      isFullPage: true
    });
    form.init();
  </script>
</body>
</html>

表单内容 DSL

设置块(顶部):

#! title = Survey Title
#! post-url = /api/submit
#! accent = #6366f1
#! rounded = pill
#! button-alignment = center

幻灯片之间用 --- 分隔:

# Welcome!
Ready to get started?

---
-> start -> Let's go!

name* = TextInput(
    | question = What's your name?
    | placeholder = Enter your name
)

---

role* = ChoiceInput(
    | question = What's your role?
    | choices = Developer, Designer, Manager, Other
)

---
-> role == "Other"

roleOther* = TextInput(
    | question = Tell us about your role
)

---

email* = EmailInput(
    | question = Your email?
    | description = We'll send you the results
)

---
-> end

关键语法

元素语法
必填字段name*(星号)
幻灯片分隔符---
逻辑跳转-> condition
起始幻灯片-> start
结束幻灯片-> end
进度|> 50%

参考资料

常见模式

条件幻灯片(根据上一个答案显示)
---
-> previousField == "specific_value"
幻灯片内的条件字段
::: [{$ triggerField $}]
{% if triggerField == "Other" %}
otherField = TextInput(| question = Please specify)
{% endif %}
:::
评分 + 后续问题
rating* = RatingInput(
    | question = How was your experience?
    | outof = 5
)

---
-> rating <= 2

feedback = TextInput(
    | question = What could we improve?
    | multiline
)

输出

生成一个 .html 文件,其中包含:

  • Forms.md CSS(CDN 或内联)
  • Forms.md JS(CDN 或内联)
  • Typeform 风格主题 CSS
  • 使用 DSL 编写的表单模板

表单仅在客户端运行——打开 HTML 文件即可使用,也可以部署到任意静态托管服务。

收集表单提交内容

要收集并存储表单回复,请使用 Forms API 设置后端。

完整工作流
  1. 创建表单后端 - 调用 Forms API 创建存储
  2. 构建 HTML 表单 - 在表单的 post-url 中使用 submitUrl
  3. 部署表单 - 将 HTML 文件托管在任意位置
  4. 查看结果 - 使用 resultsUrl 查看提交内容
步骤 1:创建表单后端
POST https://api.rebyte.ai/api/forms/create
Content-Type: application/json

{
  "taskId": "current-task-attempt-id",
  "title": "My Survey",
  "fields": ["name", "email", "rating", "feedback"]
}

响应:

{
  "formId": "abc123",
  "taskId": "current-task-attempt-id",
  "submitUrl": "https://api.rebyte.ai/api/forms/submit/TASK_ID/FORM_ID",
  "resultsUrl": "https://api.rebyte.ai/api/forms/results/TASK_ID/FORM_ID"
}
步骤 2:配置表单 HTML

在表单的设置中使用响应里的 submitUrl:

#! post-url = https://api.rebyte.ai/api/forms/submit/TASK_ID/FORM_ID
步骤 3:向用户提供 URL

创建并部署表单后,向用户提供:

  • 分发 URL:托管 HTML 表单的位置(供答题者访问)
  • 结果 URL:步骤 1 中的 resultsUrl(用于查看提交内容)
查看结果
  • JSON:GET https://api.rebyte.ai/api/forms/results/TASK_ID/FORM_ID
  • CSV:GET https://api.rebyte.ai/api/forms/results/TASK_ID/FORM_ID/csv

完整 API 文档请参见 relay/docs/data-proxy/forms-api.md。

评论

支持 Markdown