Install
$ agentstack add skill-lovstudio-skills-fill-form ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →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
.docxform 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 --scan
Step 2: Pre-fill from known context
Before asking the user, try to fill as many fields as possible from:
- User memory — name, title, organization, etc.
- Context files — if the user provides reference documents (e.g. STARTER-PROMPT.md,
project docs), extract relevant info to fill content-heavy fields
- 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 \
--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
--outputto 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
- 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.
- Merged rows: Detects full-width merged cells with "Label:" pattern as large text areas.
- Paragraph fallback: If no tables found, detects "Label:value" patterns in paragraphs.
Limitations
.docfiles are auto-converted to.docxvia macOStextutil, 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
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: lovstudio
- Source: lovstudio/skills
- License: MIT
- Homepage: https://lovstudio.ai/skills
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.