csv-exporter

Generate properly formatted Teamwork CSV files from Functional Requirements Documents. Converts FRD requirements into CSV backlog with task hierarchy, priorities, story points, and estimated hours. Automatically populates estimated time from story point conversion. Invoke when user asks to "export to CSV", "create Teamwork backlog", or needs project backlog file.

CSV Exporter Skill

Philosophy

Transform planning into actionable work. FRDs identify requirements; this skill converts them into structured, importable task backlogs that teams can immediately start executing.

When to Use This Skill

This skill activates when:

  • User says "export to CSV", "create Teamwork backlog"
  • FRD is complete and ready for task creation
  • User asks "how do I get this into Teamwork?"
  • Project needs backlog CSV for sprint planning

Do NOT activate for:

  • Single task creation (use teamwork-task-creator instead)
  • Updating existing Teamwork tasks (escalate to teamwork-specialist)
  • Status checks or queries (use teamwork-integrator instead)

Core Responsibilities

1. Parse FRD Requirements

Extract structured data from FRD:

Requirements Sections:

  • Functional Requirements (FR-XXX)
  • Technical Requirements (TR-XXX)
  • User Interface Requirements (UI-XXX)
  • Data Requirements (DR-XXX)

Extract for each requirement:

  • Requirement ID and title
  • Priority level (MUST/SHOULD/NICE TO HAVE)
  • Story point estimate
  • User story format
  • Acceptance criteria
  • Technical details
  • Dependencies

2. Convert to CSV Structure

Transform requirements into Teamwork CSV format with 10 required columns (see Teamwork Format for complete specification):

ColumnPurposeExample
TasklistPhase grouping"Phase 1: Setup"
TaskTask name with hierarchy"[EPIC] Provider Directory [21 points]"
DescriptionComplete ticket templateFull markdown template
Assign toAssignee email"" (blank initially)
Start datePlanned start"" (blank initially)
Due dateTarget completion"" (blank initially)
PriorityTask priority"high", "medium", "low"
Estimated timeHours estimate"40" (from story points)
TagsCategorization"SP-21,Phase-1,MVP"
StatusTask status"Active"

3. Establish Task Hierarchy

Create three-level hierarchy using prefix conventions (see Hierarchy Examples for complete patterns):

Level 1 - Epic (no prefix):

[EPIC] User Authentication System [13 points]

Level 2 - Story (single dash):

- [STORY] User Registration Flow [5 points]

Level 3 - Task (double dash):

-- [TASK] Create registration form component [3 points]

Level 4 - Sub-task (triple dash, if needed):

--- [TASK] Validate email format [1 point]

4. Map Priorities

Convert FRD priority levels to Teamwork priorities:

FRD PriorityTeamwork PriorityUse For
MUST HAVEhighMVP features, critical path, blockers, foundation
SHOULD HAVEmediumCore features, important but not MVP-blocking
NICE TO HAVElowEnhancements, polish, post-MVP features

Priority Guidelines:

  • High: Foundation setup, must-have for MVP, blocking dependencies
  • Medium: Important features, standard functionality, should-have items
  • Low: Enhancements, nice-to-have, documentation, polish

5. Populate Estimated Time

CRITICAL FEATURE: Automatically populate the "Estimated time" column from story points using conversion table:

Story PointsEstimated HoursTypical Work
1 point2 hoursSimple changes, small fixes
2 points4 hoursSmall features, standard tasks
3 points8 hoursStandard features (1 day)
5 points16 hoursComplex features (2 days)
8 points32 hoursMajor features (4 days)
13 points80 hoursLarge epics (2 weeks)
21 points120 hoursVery large epics (3 weeks)
34+ pointsSplit taskMust be decomposed

Format: Enter as integer hours: 2, 4, 8, 16, 32, 80, 120

Note: Teamwork also accepts formats like 01:30, 1h 15m, 2 hours, but integer hours is simplest.

6. Generate Task Descriptions

Use standardized ticket template for Description field:

## Description

> As a [user type], I need to [action] so that [benefit].

_Brief context about current vs. expected behavior._

## Story Points
**X points** - Justification for estimate

## Acceptance Criteria
* Specific testable criteria
* e.g. Feature works as described
* e.g. No console errors

## Steps to Validate
1. Explicit validation steps
1. Include URLs or specific test scenarios

## Technical Details
Implementation specifics, patterns to follow, architecture decisions.

## Deployment Notes
_New dependencies, configuration changes, post-launch tasks._

For Epics, add:

## Working With this Epic

- This Epic task will have a single integration branch/pull-request/multidev
- All internal QA will happen on Epic multidev
- Client UAT happens once entire epic is delivered and internally validated
- Epic branch merged to main once QA and UAT complete

7. Apply Consistent Tagging

Required tags for all tasks (comma-separated, no spaces):

Mandatory:

  • SP-X - Story points (e.g., SP-3, SP-8, SP-13)
  • Phase-X - Phase number (e.g., Phase-1, Phase-2)

Optional but recommended:

  • MVP - Must-have for minimum viable product
  • Frontend - Frontend development work
  • Backend - Backend development work
  • Design - Design work required
  • Content - Content creation/migration
  • Recipe - Drupal recipe development
  • Block - WordPress block development

Example: SP-8,Phase-1,MVP,Backend,Recipe

Workflow

1. Receive FRD document
   └─ Parse Implementation Plan sections
   └─ Extract all requirements with story points

2. Organize by phase and epic
   └─ Group requirements by Implementation Plan phases
   └─ Identify epics (13+ points or related features)
   └─ Establish parent-child relationships

3. Build task hierarchy
   └─ Create epic rows (no prefix)
   └─ Create story rows (- prefix)
   └─ Create task rows (-- prefix)
   └─ Add sub-task rows if needed (--- prefix)

4. Populate CSV columns
   └─ Tasklist: Phase name
   └─ Task: Name with hierarchy prefix and [X points]
   └─ Description: Complete ticket template
   └─ Priority: Map from MUST/SHOULD/NICE
   └─ Estimated time: Convert story points to hours
   └─ Tags: SP-X, Phase-X, and feature tags
   └─ Status: "Active" for all

5. Validate CSV structure
   └─ Verify story points sum correctly
   └─ Check epic points = sum of story points
   └─ Ensure all required columns present
   └─ Validate CSV formatting (UTF-8, proper quotes)

6. Export CSV file
   └─ Name: backlog-[project-name].csv
   └─ Provide import instructions
   └─ Summarize task counts and story points

CSV Format Requirements

File Encoding: UTF-8

Column Delimiter: Comma (,)

Text Qualifier: Double quotes (")

Escape Quotes: Double the quote character ("")

Header Row (exact column names):

Tasklist,Task,Description,Assign to,Start date,Due date,Priority,Estimated time,Tags,Status

Example Row:

"Phase 1: Setup","[EPIC] Provider Directory [21 points]","## Description

> As a site visitor, I need to search healthcare providers so that I can find the right provider.

## Story Points
**21 points** - Large epic including multiple content types and complex views

## Acceptance Criteria
* Provider search works with filters
* Provider profiles display correctly","","","",high,120,"SP-21,Phase-1,MVP,Backend",Active

Validation Checklist

Before exporting CSV, verify:

  • Header row present with exact column names
  • All required columns populated (Tasklist, Task, Description, Priority, Estimated time, Tags, Status)
  • Hierarchy prefixes correct (-, --, ---)
  • Story points in task names match Description section
  • Estimated time populated from story points for ALL tasks
  • Epic story points = sum of child story points
  • Total story points match FRD total
  • All descriptions follow ticket template
  • User stories present in all descriptions
  • Tags include SP-X and Phase-X for all tasks
  • Priorities align with FRD (MUST→high, SHOULD→medium, NICE→low)
  • Status set to "Active" for all tasks
  • UTF-8 encoding
  • Proper CSV escaping for quotes and newlines

Output Format

After generating CSV, provide summary:

## CSV Export Complete

**File:** backlog-project-name.csv
**Total Tasks:** 47 (8 epics + 23 stories + 16 tasks)
**Total Story Points:** 144 points
**Estimated Hours:** 672 hours (calculated from story points)

### Breakdown by Phase

**Phase 1: Setup and Foundation**
- Tasks: 12 (2 epics, 5 stories, 5 tasks)
- Story Points: 34 points
- Estimated Hours: 152 hours

**Phase 2: Core Features**
- Tasks: 20 (4 epics, 10 stories, 6 tasks)
- Story Points: 68 points
- Estimated Hours: 320 hours

**Phase 3: Enhanced Features**
- Tasks: 15 (2 epics, 8 stories, 5 tasks)
- Story Points: 42 points
- Estimated Hours: 200 hours

### Priority Distribution
- High: 22 tasks (47%)
- Medium: 18 tasks (38%)
- Low: 7 tasks (15%)

### Import Instructions

1. Go to your Teamwork project
2. Navigate to Settings → Import/Export
3. Select "Import Tasks from CSV"
4. Upload backlog-project-name.csv
5. Verify column mapping
6. Choose to create new tasklists or map to existing
7. Click Import
8. Review imported tasks for hierarchy and formatting

### Next Steps
- Assign tasks to team members during sprint planning
- Set start/due dates based on sprint schedule
- Review and refine task estimates based on team velocity
- Create sprint milestones in Teamwork

Best Practices

DO:

  • ✅ Populate estimated hours from story points for all tasks
  • ✅ Group related requirements into logical epics
  • ✅ Use consistent task naming with [TYPE] prefix
  • ✅ Include complete context in descriptions
  • ✅ Provide specific, testable acceptance criteria
  • ✅ Sum story points accurately (epic = sum of stories)
  • ✅ Apply consistent tagging strategy
  • ✅ Validate CSV before export

DON'T:

  • ❌ Leave estimated time column blank (defeats purpose of skill)
  • ❌ Create flat task lists (use hierarchy)
  • ❌ Skip user stories in descriptions
  • ❌ Use inconsistent priority mapping
  • ❌ Forget to include SP-X and Phase-X tags
  • ❌ Create tasks without acceptance criteria
  • ❌ Export without validating story point totals

References

Complete reference materials available in the templates directory:

Use these references to understand CSV structure and implementation details.