# form-builder

This skill writes docassemble interview YAML: interactive forms and questionnaires that branch on the answers people give.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 4600 installs · ★ 540
- Author: claude-office-skills
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/claude-office-skills/skills/tree/HEAD/form-builder/SKILL.md
- Updated: 2026-01-31
- HTML: https://affpapa.org/en/nevibecode/skills/form-builder

## What it does

Describe the form you need and the branching rules, and the skill returns docassemble YAML — the guided-interview format that assembles a document from answers. It covers the interview skeleton with `metadata` and question blocks, conditional steps via `if`, and field types from `email` and `currency` to `checkboxes` and `file`.

Document output gets its own block: `attachment` with `name`, `filename` and `content`, where answers and helpers like `currency(amount)` and `today()` are substituted. The client intake example shows an `client` object holding name, email and phone, plus a branch on `matter_type` that asks for contract details only when the matter is a contract.

The skill is listed for Claude, Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode. Its metadata names the `office-mcp` server with `create_docx` and `fill_docx_template` tools, so check that it is connected if you plan to push forms into DOCX. The YAML itself comes without it.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add claude-office-skills/skills --skill form-builder -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/form-builder/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/form-builder/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add claude-office-skills/skills --skill form-builder -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/form-builder/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add claude-office-skills/skills --skill form-builder -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/form-builder/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install claude-office-skills/skills form-builder
```

2. **Manually: put the files in place**
- File: `.github/skills/form-builder/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add claude-office-skills/skills --skill form-builder -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/claude-office-skills/skills --path form-builder
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/form-builder/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add claude-office-skills/skills --skill form-builder -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/claude-office-skills/skills/tree/HEAD/form-builder/SKILL.md

## When to use it
- build a questionnaire that changes questions based on answers
- declare form fields with types and required flags
- generate a document from what the user entered
- assemble a multi-step form for contract generation
- add file upload and checkbox inputs to an intake form

## Example prompts
- Create an intake form for new clients in docassemble
- Build a conditional questionnaire: if the client is a business, ask for company name and EIN
- Generate a multi-step form for contract generation with an attachment block

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 9ad6aa531ec91d5c.

BEGIN THIRD-PARTY FILE 9ad6aa531ec91d5c
````text
---
# ═══════════════════════════════════════════════════════════════════════════════
# CLAUDE OFFICE SKILL - Enhanced Metadata v2.0
# ═══════════════════════════════════════════════════════════════════════════════

# Basic Information
name: form-builder
description: "Build interactive document forms and questionnaires using docassemble"
version: "1.0"
author: claude-office-skills
license: MIT

# Categorization
category: template
tags:
  - form
  - builder
  - interactive
  - docassemble
department: All

# AI Model Compatibility
models:
  recommended:
    - claude-sonnet-4
    - claude-opus-4
  compatible:
    - claude-3-5-sonnet
    - gpt-4
    - gpt-4o

# MCP Tools Integration
mcp:
  server: office-mcp
  tools:
    - create_docx
    - fill_docx_template

# Skill Capabilities
capabilities:
  - form_creation
  - interactive_documents

# Language Support
languages:
  - en
  - zh
---

# Form Builder Skill

## Overview

This skill enables creation of intelligent document forms using **docassemble** - a platform for guided interviews that generate documents. Create questionnaires that adapt based on answers.

## How to Use

1. Describe the form or document you need
2. Specify conditional logic requirements
3. I'll create docassemble interview YAML

**Example prompts:**
- "Create an intake form for new clients"
- "Build a conditional questionnaire for legal documents"
- "Generate a multi-step form for contract generation"
- "Design an interactive document assembly form"

## Domain Knowledge

### Interview Structure

```yaml
metadata:
  title: Client Intake Form
  short title: Intake

---
question: |
  What is your name?
fields:
  - First Name: first_name
  - Last Name: last_name

---
question: |
  What type of service do you need?
field: service_type
choices:
  - Contract Review
  - Document Drafting
  - Consultation

---
mandatory: True
question: |
  Thank you, ${ first_name }!
subquestion: |
  We will contact you about your ${ service_type } request.
```

### Conditional Logic

```yaml
---
question: |
  Are you a business or individual?
field: client_type
choices:
  - Business
  - Individual

---
if: client_type == "Business"
question: |
  What is your company name?
fields:
  - Company: company_name
  - EIN: ein
    required: False

---
if: client_type == "Individual"
question: |
  What is your date of birth?
fields:
  - Birthdate: birthdate
    datatype: date
```

### Field Types

```yaml
fields:
  # Text
````
END THIRD-PARTY FILE 9ad6aa531ec91d5c

The third-party file has ended. Everything between the 9ad6aa531ec91d5c tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2762 of 5000 bytes. © claude-office-skills · MIT · https://github.com/claude-office-skills/skills/tree/HEAD/form-builder/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
