# Lovstudio Fill Form

> >

- **Type:** Skill
- **Install:** `agentstack add skill-lovstudio-skills-fill-form`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [lovstudio](https://agentstack.voostack.com/s/lovstudio)
- **Installs:** 0
- **Category:** [Content & Media](https://agentstack.voostack.com/c/content-and-media)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [lovstudio](https://github.com/lovstudio)
- **Source:** https://github.com/lovstudio/skills/tree/main/skills/fill-form
- **Website:** https://lovstudio.ai/skills

## Install

```sh
agentstack add skill-lovstudio-skills-fill-form
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# fill-form — Fill Word Form Templates

This skill fills in Word document form templates (.docx) with user-provided data.
It detects table-based form fields (label in one cell, value in the adjacent cell)
and populates them automatically.

## When to Use

- User has a `.docx` form template with blank fields to fill
- User wants to fill in an application form, registration form, etc.
- Document uses Word tables for form layout (label | value cell pairs)
- User mentions 填表, 申请表, 登记表, or wants to automate form filling

## Workflow (MANDATORY)

**You MUST follow these steps in order:**

### Step 1: Scan the template

Discover all fillable fields:

```bash
python lovstudio-fill-form/scripts/fill_form.py --template  --scan
```

### Step 2: Pre-fill from known context

Before asking the user, try to fill as many fields as possible from:
1. **User memory** — name, title, organization, etc.
2. **Context files** — if the user provides reference documents (e.g. STARTER-PROMPT.md,
   project docs), extract relevant info to fill content-heavy fields
3. **Conversation context** — anything already mentioned

For content-heavy fields (e.g. "主要内容/简介/摘要"), actively compose the content
by synthesizing from context files, user's known expertise, and the topic/title.

### Step 3: Ask only what you don't know

**Use `AskUserQuestion` to collect ONLY the fields you cannot fill from context.**

- Group fields into a single question
- If ALL fields are unknown, list them all
- If the user says some fields can be left blank (e.g. "其他朋友会帮我填"),
  respect that and leave those empty
- Do NOT force the user to provide every field

### Step 4: Fill and save

Write a JSON data file (avoids shell escaping issues with long text), then run:

```bash
python lovstudio-fill-form/scripts/fill_form.py \
  --template  \
  --data-file /tmp/form_data.json
```

**Output path rules:**
- Default: `/_filled.docx` (same directory as the template)
- If the template is in a temp directory or system path, save to user's document
  directory or ask the user where to save
- Use `--output` to override explicitly

## CLI Reference

| Argument | Default | Description |
|----------|---------|-------------|
| `--template` | (required) | Path to template .doc/.docx file |
| `--output` | `/_filled.docx` | Output .docx path |
| `--scan` | false | List all detected form fields |
| `--data` | `""` | JSON string with field→value mapping |
| `--data-file` | `""` | Path to JSON file with field→value mapping |
| `--font` | Platform CJK serif | Font name for filled text |
| `--font-size` | `11` | Font size in points |

## How Field Detection Works

1. **Table-based** (primary): Scans all tables for rows with label→value cell pairs.
   A label cell contains short text (CJK or Latin); the adjacent cell is the value field.
2. **Merged rows**: Detects full-width merged cells with "Label：" pattern as large text areas.
3. **Paragraph fallback**: If no tables found, detects "Label：value" patterns in paragraphs.

## Limitations

- `.doc` files are auto-converted to `.docx` via macOS `textutil`, which **loses table structure**.
  For best results, use `.docx` templates directly. If you only have `.doc`, convert with
  LibreOffice first: `libreoffice --headless --convert-to docx file.doc`
- Fields are matched by normalized label text (whitespace removed). If a label contains
  unusual formatting, the match may fail — use `--scan` to verify detection.

## Dependencies

```bash
python3 -m pip install python-docx
```

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [lovstudio](https://github.com/lovstudio)
- **Source:** [lovstudio/skills](https://github.com/lovstudio/skills)
- **License:** MIT
- **Homepage:** https://lovstudio.ai/skills

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-lovstudio-skills-fill-form
- Seller: https://agentstack.voostack.com/s/lovstudio
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
