mcpField
L
lovstudio-fill-form

lovstudio-fill-form

github.com/lovstudioDocuments7391 installsUpdated today
Repository

About lovstudio-fill-form

A skill for filling .docx form templates with data supplied by the user or available in context. It detects table-based label and value fields, scans for fillable fields, and saves a completed document.

Key features

  1. 01Scans templates for form fields
  2. 02Fills adjacent table value cells
  3. 03Supports merged-row and paragraph fields
  4. 04Uses context before asking questions
  5. 05Saves completed .docx files

Use cases

  1. 01Completing application forms
  2. 02Filling registration templates
  3. 03Populating Word forms from reference documents

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/lovstudio/skills --skill lovstudio-fill-form

After installing, type/lovstudio-fill-formin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

CHANGELOG.md
README.md
scripts/
fill_form.py

Details

From the project README

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:

python lovstudio-fill-form/scripts/fill_form.py --template <path> --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:

python lovstudio-fill-form/scripts/fill_form.py \
  --template <path> \
  --data-file /tmp/form_data.json

Output path rules:

  • Default: <template_dir>/<name>_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

ArgumentDefaultDescription
--template(required)Path to template .doc/.docx file
--output<template_dir>/<name>_filled.docxOutput .docx path
--scanfalseList all detected form fields
--data""JSON string with field→value mapping
--data-file""Path to JSON file with field→value mapping
--fontPlatform CJK serifFont name for filled text
--font-size11Font 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

python3 -m pip install python-docx

Comments

Markdown supported