Converting evalplan to tmap
Skill jek-bao-choo/productivity-plugins/sales-process/skills/converting-evalplan-to-tmap
npx -y skills add jek-bao-choo/productivity-plugins --skill converting-evalplan-to-tmapAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Convert Evaluation Plan CSV files into the official Datadog TMAP (Technical Mutual Activity Plan) XLSX format. Accepts two CSV input formats: (1) the 4-column CSV output from the creating-eval-plan skill (Depth, Title, Description, Success Criteria), or (2) the 10-column CSV exported from Homerun (Depth Value, Status, Assignee, Due Date, etc.). Produces a formatted XLSX matching the official ENT/MM Mutual Action Plan template with phases, categories, merged cells, and color-coded rows. Use when the user asks to convert an eval plan to TMAP, generate a TMAP XLSX, convert CSV to TMAP, or mentions "TMAP", "mutual action plan", or "convert eval plan to xlsx".
SKILL.md
7.7 KB, as published. Nobody here has run it
Evaluation Plan to TMAP Converter
Convert Evaluation Plan CSV files into the official Datadog TMAP XLSX format. TMAP (Technical Mutual Activity Plan) is the same as Evaluation Plan, just in the official Datadog XLSX template format.
Supported Input Formats
Format A: creating-eval-plan Output (4 columns)
Depth,Title,Description,Success Criteria
Generated by the creating-eval-plan skill. The Depth column encodes hierarchy (e.g., 1, 1.1, 1.1.1).
Format B: Homerun Export (10 columns)
Depth Value,Status,Assignee,Due Date,Status Text,Roll up children's status,Name,Description,Success Criteria,Shared
Exported from Datadog's internal Homerun system. Contains additional tracking metadata (status, assignee, due dates).
Output Format
The official Datadog ENT/MM Mutual Action Plan XLSX template with 7 columns:
| Column | Header |
|---|---|
| A | Product Category |
| B | Configuration Item |
| C | Estimated Complete Time |
| D | Responsible Party |
| E | Target Completion Date |
| F | Status |
| G | Notes |
Read references/tmap-format-spec.md for the full formatting specification (colors, fonts, merged cells, column widths).
Core Workflow
Step 1: Read the Input CSV
Read the CSV file provided by the user. The user will provide the file path.
Step 2: Detect Format
Check the CSV header row:
- If header starts with
Depth,Title,Description,Success Criteria→ Format A - If header starts with
Depth Value,Status,Assignee,Due Date→ Format B
Step 3: Parse Hierarchical Data
Parse each CSV row and classify by depth level:
- Depth level 1 (integer, e.g.,
1,2,3): Phase row - Depth level 2 (one dot, e.g.,
1.1,2.3): Category row (Product Category) - Depth level 3+ (two+ dots, e.g.,
1.1.1,2.3.4): Item row (Configuration Item)
Field mapping by format:
| Target | Format A Source | Format B Source |
|---|---|---|
| Title/Name | Title column | Name column |
| Description | Description column | Description column |
| Success Criteria | Success Criteria column | Success Criteria column |
| Status | Default: Open | Status column: Complete → Complete, anything else → Open |
| Responsible Party | (empty) | Assignee column (drop Not Assigned) |
| Target Completion Date | (empty) | Due Date column (drop No due date) |
Step 4: Read Format Spec
Read references/tmap-format-spec.md for the exact XLSX formatting specification.
Step 5: Generate Python Script
Write a Python script using openpyxl that creates the XLSX. The script must:
5a. Setup
import openpyxl
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.utils import get_column_letter
If openpyxl is not installed, run pip3 install openpyxl first.
5b. Create Workbook and Sheet
- Sheet name:
Tech Config Plan - Column widths: A=20.33, B=53.66, C=13.66, D=23.16, E=24.16, F=21.83, G=35.16
5c. Write Header Row (Row 1)
- Headers:
Product Category,Configuration Item,Estimated Complete Time,Responsible Party,Target Completion Date,Status,Notes - Font: Bold, white color (
FFFFFF) - Fill: Purple
674EA7
5d. Write Data Rows
Process the parsed CSV data in order:
For each Phase (depth level 1):
- Extract phase number: if the title contains
Phase N:, use N. Otherwise, assign phase index starting from 0. - Col A:
Phase {N} - Col B: the title after removing the
Phase N:prefix (strip leading/trailing whitespace) - Font: Bold, white color
- Fill: Phase 0 →
9900FF, Phase 1 →1E82FF, Phase 2+ →9900FF - Apply fill and font to all 7 columns in the row
For each Category (depth level 2 WITH depth-3+ children):
- Col A: the category title
- Font in A: Bold
- Fill in A: Light grey
F3F3F3 - Count the number of child items (depth 3+) under this category
- Merge Col A from this row through (this row + child count - 1), and place the first child item's data (B through G) on the same row as the category
- Alignment for merged A cells: vertical top, wrap text
For each Item (depth level 3+):
- Col B: item title
- Col D: Responsible Party (Format B only; skip "Not Assigned")
- Col E: Target Completion Date (Format B only; skip "No due date")
- Col F: Status (
OpenorComplete) - Col G: Notes, constructed as:
- Both Description and Success Criteria present →
{Description} | {Success Criteria} - Only Description →
{Description} - Only Success Criteria →
{Success Criteria} - Neither → empty
- Both Description and Success Criteria present →
Depth-2 rows with no depth-3 children (standalone items):
- These are NOT categories. They are regular items that happen to be at depth 2.
- Leave Col A blank (no text, no grey fill, no bold).
- Write the title in Col B only, with item data in C through G (Status, Notes, etc.).
5e. Save the XLSX
Save to the output path.
Step 6: Run the Script
Execute the Python script with python3.
Step 7: Report
Tell the user:
- Output file path
- Number of phases, categories, and items generated
- Any warnings (e.g., missing openpyxl, format detection issues)
Output Path
Ask the user where to save the generated XLSX file, or use the path they provide upfront.
Example
Given this Format A CSV:
Depth,Title,Description,Success Criteria
1,Phase 0: Scoping & Alignment,,
1.1,Technical Scope Validated,Validate PGW scope,All parties agree
1.2,Confirm Region,,Region confirmed
2,Phase 1: Sign Up,,
2.1,Sign Up,https://www.datadoghq.com/,Account created
3,Phase 2: Setup,,Configure monitoring
3.1,Infrastructure Monitoring,,Agents deployed
3.1.1,Deploy Agent on App Server 1,https://docs.datadoghq.com/agent/,Agent reporting
3.1.2,Deploy Agent on App Server 2,https://docs.datadoghq.com/agent/,Agent reporting
3.2,APM,,Traces visible
3.2.1,Install .NET Tracer,https://docs.datadoghq.com/tracing/,Traces in APM
Produces an XLSX where:
- Row 1: Header (purple
674EA7) - Row 2: Phase 0 | Scoping & Alignment (purple
9900FF) - Row 3: A=(blank), B=Technical Scope Validated (standalone depth-2, no children → item row)
- Row 4: A=(blank), B=Confirm Region (standalone depth-2, no children → item row)
- Row 5: Phase 1 | Sign Up (blue
1E82FF) - Row 6: A=(blank), B=Sign Up (standalone depth-2 → item row, G=https://www.datadoghq.com/ | Account created)
- Row 7: Phase 2 | Setup (purple
9900FF) - Row 8-9: A=Infrastructure Monitoring (merged 2 rows, grey fill) | B=Deploy Agent on App Server 1 (row 8) | B=Deploy Agent on App Server 2 (row 9)
- Row 10: A=APM (category with 1 child, no merge needed) | B=Install .NET Tracer
Validation
After generating the XLSX, verify:
- The file opens correctly in Excel/Google Sheets
- Phase rows have colored backgrounds and bold white text
- Category cells in Col A are merged correctly
- Status column shows "Open" or "Complete"
- Notes column contains Description and Success Criteria where available