Claude-skill-registry gantt-chart-creator
Create project timeline Gantt charts with dependencies, milestones, and progress tracking. Supports static (PNG/SVG) and interactive (HTML) output.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gantt-chart-creator" ~/.claude/skills/majiayu000-claude-skill-registry-gantt-chart-creator && rm -rf "$T"
manifest:
skills/data/gantt-chart-creator/SKILL.mdsource content
Gantt Chart Creator
Create professional project timeline Gantt charts with task dependencies, milestones, progress tracking, and customizable styling. Perfect for project management, sprint planning, and timeline visualization.
Quick Start
from scripts.gantt_creator import GanttChartCreator # Simple task list gantt = GanttChartCreator() gantt.add_task("Research", "2024-01-01", "2024-01-07") gantt.add_task("Design", "2024-01-08", "2024-01-14") gantt.add_task("Development", "2024-01-15", "2024-01-28") gantt.add_task("Testing", "2024-01-29", "2024-02-04") gantt.generate().save("project.png") # From CSV with progress gantt = GanttChartCreator() gantt.from_csv("tasks.csv", task="name", start="start_date", end="end_date", progress="pct") gantt.title("Q1 Roadmap").show_today().generate().save("roadmap.png")
Features
- Multiple Input Sources: CSV, JSON, dict, or programmatic
- Task Properties: Name, dates, progress, assignee, category
- Dependencies: Finish-to-start and other dependency types
- Milestones: Diamond markers for key dates
- Progress Tracking: Visual progress bars within tasks
- Today Marker: Vertical line showing current date
- Color Coding: By category, assignee, or status
- Output Formats: PNG, SVG, PDF (matplotlib) or HTML (interactive)
API Reference
Initialization
gantt = GanttChartCreator()
Data Input Methods
# From CSV file gantt.from_csv( filepath="tasks.csv", task="task_name", # Task name column start="start_date", # Start date column end="end_date", # End date column progress="completion", # Optional: progress % column category="category", # Optional: for color coding assignee="owner" # Optional: for color coding ) # From list of task dictionaries gantt.from_tasks([ {'name': 'Task 1', 'start': '2024-01-01', 'end': '2024-01-07'}, {'name': 'Task 2', 'start': '2024-01-08', 'end': '2024-01-14', 'progress': 50}, {'name': 'Task 3', 'start': '2024-01-15', 'end': '2024-01-21', 'category': 'Dev'} ]) # Add individual tasks gantt.add_task( name="Research Phase", start="2024-01-01", end="2024-01-14", progress=100, # Optional: 0-100% category="Planning", # Optional: for coloring assignee="Alice" # Optional: for coloring ) # Add milestones gantt.add_milestone("Project Kickoff", "2024-01-01") gantt.add_milestone("Beta Release", "2024-02-15", color="#e74c3c")
Dependencies
# Add task dependencies (finish-to-start by default) gantt.add_dependency("Design", "Development") # Development starts after Design gantt.add_dependency("Development", "Testing") # Dependency types gantt.add_dependency("Task A", "Task B", type="FS") # Finish-to-Start (default) gantt.add_dependency("Task A", "Task B", type="SS") # Start-to-Start gantt.add_dependency("Task A", "Task B", type="FF") # Finish-to-Finish gantt.add_dependency("Task A", "Task B", type="SF") # Start-to-Finish
Styling
# Title gantt.title("Project Timeline") gantt.title("Q1 2024 Roadmap", font_size=16) # Color by category gantt.color_by("category") gantt.color_by("category", colors={ 'Planning': '#3498db', 'Development': '#2ecc71', 'Testing': '#e74c3c' }) # Color by assignee gantt.color_by("assignee") # Show progress bars gantt.show_progress(True) # Show today marker gantt.show_today(True) gantt.show_today(True, color='red', label='Today') # Date range (auto-calculated by default) gantt.date_range("2024-01-01", "2024-03-31") # Grid lines gantt.grid(show=True, style='weekly') # daily, weekly, monthly
Generation and Export
# Generate static chart (matplotlib) gantt.generate() # Generate interactive chart (plotly) gantt.generate(interactive=True) # Save static image gantt.save("chart.png") gantt.save("chart.svg") gantt.save("chart.pdf") # Save interactive HTML gantt.save("chart.html") # Get figure object for customization fig = gantt.get_figure() # Show in window/notebook gantt.show()
Data Formats
CSV Format
task,start_date,end_date,progress,category,assignee Research,2024-01-01,2024-01-07,100,Planning,Alice Design,2024-01-08,2024-01-14,100,Planning,Bob Backend Dev,2024-01-15,2024-01-28,75,Development,Alice Frontend Dev,2024-01-15,2024-01-21,50,Development,Carol Testing,2024-01-29,2024-02-04,0,QA,Dave
Task Dictionary Format
tasks = [ { 'name': 'Research', 'start': '2024-01-01', 'end': '2024-01-07', 'progress': 100, 'category': 'Planning', 'assignee': 'Alice' }, { 'name': 'Design', 'start': '2024-01-08', 'end': '2024-01-14', 'progress': 75, 'category': 'Planning' } ]
Date Formats
Supported date formats (auto-detected):
(ISO format, recommended)YYYY-MM-DDMM/DD/YYYYDD/MM/YYYYYYYY/MM/DD
CLI Usage
# Basic usage python gantt_creator.py --input tasks.csv \ --task name --start start_date --end end_date \ --output gantt.png # With progress and categories python gantt_creator.py --input project.csv \ --task task --start begin --end finish \ --progress pct --category type \ --title "Project Timeline" \ --output timeline.png # Interactive HTML python gantt_creator.py --input tasks.csv \ --task name --start start --end end \ --interactive \ --output gantt.html # With today marker python gantt_creator.py --input tasks.csv \ --task name --start start --end end \ --show-today \ --output current_status.png
CLI Arguments
| Argument | Description | Default |
|---|---|---|
| Input CSV file | Required |
| Task name column | Required |
| Start date column | Required |
| End date column | Required |
| Progress % column | - |
| Category column (for coloring) | - |
| Assignee column (for coloring) | - |
| Output file path | |
| Chart title | - |
| Generate interactive HTML | False |
| Show today marker | False |
| Show progress bars | False |
| Chart width | 12 |
| Chart height | 6 |
Examples
Simple Project Timeline
gantt = GanttChartCreator() gantt.add_task("Planning", "2024-01-01", "2024-01-14") gantt.add_task("Development", "2024-01-15", "2024-02-15") gantt.add_task("Testing", "2024-02-16", "2024-02-28") gantt.add_task("Deployment", "2024-03-01", "2024-03-07") gantt.title("Project Alpha") gantt.generate().save("project_alpha.png")
With Dependencies and Milestones
gantt = GanttChartCreator() # Add tasks gantt.add_task("Requirements", "2024-01-01", "2024-01-07") gantt.add_task("Design", "2024-01-08", "2024-01-14") gantt.add_task("Backend", "2024-01-15", "2024-01-28") gantt.add_task("Frontend", "2024-01-15", "2024-01-21") gantt.add_task("Integration", "2024-01-29", "2024-02-04") gantt.add_task("Testing", "2024-02-05", "2024-02-11") # Add milestones gantt.add_milestone("Kickoff", "2024-01-01") gantt.add_milestone("Code Freeze", "2024-02-04") gantt.add_milestone("Launch", "2024-02-12") # Add dependencies gantt.add_dependency("Requirements", "Design") gantt.add_dependency("Design", "Backend") gantt.add_dependency("Design", "Frontend") gantt.add_dependency("Backend", "Integration") gantt.add_dependency("Frontend", "Integration") gantt.add_dependency("Integration", "Testing") gantt.title("Development Timeline") gantt.generate().save("dev_timeline.png")
Color-Coded by Category
gantt = GanttChartCreator() gantt.from_csv("tasks.csv", task="name", start="start", end="end", category="type") gantt.color_by("category", colors={ 'Backend': '#3498db', 'Frontend': '#2ecc71', 'DevOps': '#9b59b6', 'QA': '#e74c3c' }) gantt.title("Sprint 5 Tasks") gantt.show_today() gantt.generate().save("sprint5.png")
Progress Tracking
gantt = GanttChartCreator() gantt.add_task("Research", "2024-01-01", "2024-01-07", progress=100) gantt.add_task("Design", "2024-01-08", "2024-01-14", progress=100) gantt.add_task("Development", "2024-01-15", "2024-01-28", progress=60) gantt.add_task("Testing", "2024-01-29", "2024-02-04", progress=0) gantt.show_progress(True) gantt.show_today(True) gantt.title("Project Status") gantt.generate().save("status.png")
Interactive HTML Chart
gantt = GanttChartCreator() gantt.from_csv("project.csv", task="task", start="start", end="end", progress="pct", category="team") gantt.color_by("team") gantt.show_progress(True) gantt.title("Interactive Project View") gantt.generate(interactive=True) gantt.save("project.html")
Team Workload
gantt = GanttChartCreator() # Alice's tasks gantt.add_task("Alice: Research", "2024-01-01", "2024-01-07", assignee="Alice") gantt.add_task("Alice: Backend", "2024-01-08", "2024-01-21", assignee="Alice") # Bob's tasks gantt.add_task("Bob: Design", "2024-01-01", "2024-01-14", assignee="Bob") gantt.add_task("Bob: Frontend", "2024-01-15", "2024-01-28", assignee="Bob") # Carol's tasks gantt.add_task("Carol: Testing", "2024-01-22", "2024-02-04", assignee="Carol") gantt.color_by("assignee", colors={ 'Alice': '#3498db', 'Bob': '#2ecc71', 'Carol': '#e74c3c' }) gantt.title("Team Workload - January") gantt.generate().save("team_workload.png")
Dependencies
matplotlib>=3.7.0 plotly>=5.15.0 pandas>=2.0.0 kaleido>=0.2.0
Limitations
- Static charts (matplotlib) have limited interactivity
- Complex dependency networks may be hard to visualize
- Date granularity is daily (no hour-level precision)
- Maximum ~50 tasks for readable charts