Back to Skills

xlsform

verified

Authoring data collection forms in Excel for mobile surveys. XLSForm converts Excel files to XForms for ODK, KoBoToolbox, and similar platforms. Use for field surveys, data collection, conditional forms, GPS tracking, and offline data gathering.

View on GitHub

Marketplace

claude-skills

mberg/claude-skills

Plugin

cortex

Repository

mberg/claude-skills

skills/xlsform/SKILL.md

Last Verified

January 20, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/mberg/claude-skills/blob/main/skills/xlsform/SKILL.md -a claude-code --skill xlsform

Installation paths:

Claude
.claude/skills/xlsform/
Powered by add-skill CLI

Instructions

# XLSForm Skill

## What is XLSForm?

XLSForm is a simple, human-friendly form standard that lets you design data collection forms in Excel. Your forms convert to XForm (XML) and work with mobile platforms like ODK Collect, KoBoToolbox, SurveyCTO, and Enketo. Perfect for surveys, GPS tracking, offline data gathering, and complex conditional logic.

## Five Key Concepts

1. **Survey Sheet** - Lists your questions (type, name, label). One row per question.
2. **Choices Sheet** - Defines answer options for select_one and select_multiple questions.
3. **Question Types** - 20+ types: text, integer, select_one, geopoint, image, date, calculate, and more.
4. **Skip Logic** - The `relevant` column shows/hides questions based on previous answers.
5. **Calculations** - The `calculate` question type and `calculation` column compute derived values.

## Minimal Working Example

**Survey Sheet:**
| type | name | label |
|------|------|-------|
| text | respondent_name | What is your name? |
| integer | age | How old are you? |
| select_one yes_no | consent | Do you agree? |
| calculate | timestamp | now() |

**Choices Sheet:**
| list_name | name | label |
|-----------|------|-------|
| yes_no | yes | Yes |
| yes_no | no | No |

This creates a 3-question form with a hidden timestamp calculation.

## Essential Constraints

| Aspect | Limit | Note |
|--------|-------|------|
| Question name | 255 chars | Alphanumeric + underscore only |
| Label/hint | No hard limit | Practical: keep under 500 chars |
| Choices per list | No hard limit | ~100+ works well |
| Calculation expression | ~2000 chars | Complex expressions may slow form |
| Form size | No hard limit | Very large forms (500+ questions) may be slow |
| Languages | Unlimited | Use label::language, hint::language syntax |

## Core Reference Files

Detailed documentation organized by topic:

**Form Structure:**
- [survey-sheet.md](reference/survey-sheet.md) - Survey worksheet columns and structure
- [choices-sheet.md](reference/

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
9064 chars