agentleFS
schuliganschuligan/claude-skills-collection/skills/project-planner/SKILL.md

project-planner

Skill0 starsChanged 5 months agoMITView on GitHub

AI Project Manager skill that creates comprehensive project plans with charter documents, task trackers with Gantt charts, and visually rich kickoff presentations. Use this skill whenever the user mentions: 'project plan', 'project charter', 'project kickoff', 'new project', 'project setup', 'work breakdown', 'WBS', 'project tracker', 'sprint planning', 'project scope', 'RACI', 'project timeline', 'milestone planning', 'Gantt chart', or asks to plan, scope, or break down any initiative, program, or workstream. Also trigger when the user asks for help organizing a new initiative, creating deliverables for a project kickoff, or when they describe a project idea and want it turned into an actionable plan. This skill acts as a senior PM/scrum master — it asks the right questions, identifies gaps, flags risks, and produces professional deliverables.

21 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use api-designer, security-auditor and 1 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • AutumnsGroveSkill

    api-designer

    Design and document RESTful and GraphQL APIs with OpenAPI/Swagger specifications, authentication patterns, versioning strategies, and best practices. Use for: (1) Creating API specifications, (2) Designing REST endpoints, (3) GraphQL schema design, (4) API authentication and authorization, (5) API versioning strategies, (6) Documentation generation

    Also in 3 projects that use this

  • nahisahoSkill

    security-auditor

    security-auditor skill

    Also in 3 projects that use this

  • Microsoft AzureSkill

    git-workflow

    Squad branching model: dev-first workflow with insiders preview channel

    Also in 3 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

36 rules. 0 are common, 31 are distinctive, and 5 are very specific to this project.

  • 0

    Common

    Most of the 20 edited versions we read keep these.

  • 31

    Distinctive

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Start by understanding the project.

    line 24
  2. Distinctive:

    Keep asking follow-up questions based on the answers.

    line 54
  3. Distinctive:

    Write a clear scope statement

    line 57
  4. Distinctive:

    Create a work breakdown with 15-40 tasks

    line 58
  5. Distinctive:

    If the user says "I don't know" or "we haven't decided yet," that's fine.

    line 65
  6. Very specific:

    Read the docx SKILL.md for the charter document

    line 77
  7. Very specific:

    Read the xlsx SKILL.md for the tracker spreadsheet

    line 78
  8. Very specific:

    Read the pptx SKILL.md for the kickoff deck

    line 79
  9. Distinctive:

    Run the forward pass and backward pass algorithmically

    line 242
  10. Distinctive:

    Write the COMPUTED values (ES, EF, LS, LF, Float) as formulas or values into cells

    line 243
  11. Distinctive:

    Add formulas for cells that CAN be formula-driven (End Date, Critical Path flag, etc.)

    line 244
  12. Distinctive:

    Use conditional formatting throughout:

    line 370
  13. Distinctive:

    Create a proper Gantt chart using cell-based formatting with the following structure:

    line 377
  14. Distinctive:

    Dependency arrows: Add small arrow indicators (→) or notes in cells showing predecessor links

    line 397
  15. Distinctive:

    Phase grouping: Use merged cells or bold section headers to visually separate phases

    line 398
  16. Very specific:

    Use numeric scoring (1-5) instead of H/M/L for better analytics:

    line 409
  17. Distinctive:

    Create a comprehensive dashboard with formulas that auto-update:

    line 429
  18. Very specific:

    Before creating the deck, read the pptx SKILL.md and pptxgenjs.md carefully.

    line 448
  19. Distinctive:

    If no quantitative data, use icon+text cards (3-4 business drivers) but ALWAYS prefer charts when numbers exist.

    line 488
  20. Distinctive:

    Add milestone markers below the chart as text callouts with dates.

    line 517
  21. Distinctive:

    Add a large callout number (e.g., "47 Total Tasks") in the top-right corner.

    line 526
  22. Distinctive:

    Add a text box below listing the top 3 risks by name with their mitigation strategy (brief, 1-line each).

    line 544
  23. Distinctive:

    If budget is PENDING, replace budget doughnut with a large "TBD" callout and show only the resource chart.

    line 575
  24. Distinctive:

    Before building slides, define a consistent design system:

    line 595
  25. Distinctive:

    When building charts, COMPUTE the data from the project information gathered during discovery:

    line 626
  26. Distinctive:

    NEVER use placeholder data: Every chart must reflect the actual project.

    line 633
  27. Distinctive:

    After creating all three files:

    line 649
  28. Distinctive:

    If the user wants changes, make them.

    line 659
  29. Distinctive:

    Always use imperative language for task names ("Finalize email body" not "Email body finalization")

    line 673
  30. Distinctive:

    Every task needs a single owner — shared ownership means no ownership

    line 678
  31. Distinctive:

    When in doubt, ask another question rather than making assumptions

    line 683
  32. Distinctive:

    Run these checks programmatically after generating all deliverables:

    line 688
  33. Distinctive:

    No two consecutive dark backgrounds or 3+ consecutive light

    line 728
  34. Distinctive:

    All processing is LOCAL: No project data is sent to external APIs, cloud services, or third-party tools unless the user explicitly …

    line 733
  35. Distinctive:

    When the skill reads existing files (e.g., importing from a prior tracker), it should validate the file format before processing — don't …

    line 742
  36. Distinctive:

    All three output files should be openable in LibreOffice without security warnings

    line 748

“Common” is measured: kept by at least 6 in 10 of the 20 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

AI Project Manager — Project Planning Skill

You are acting as a senior Project Manager / Program Director's right hand. Your job is to take a project idea — however rough or detailed — and turn it into a professional, actionable project plan with three deliverables: a Project Charter (.docx), a Project Tracker with Gantt Chart (.xlsx), and a visually rich Kickoff Deck (.pptx).

Core Philosophy

A good PM doesn't just document what they're told — they probe, challenge, and fill gaps. Your job is to:

  1. Ask until you truly understand — Don't stop at surface-level answers. If the user says "we need to send emails to clients," dig into who, how many, what system, what timeline, who approves, what happens if clients don't respond, etc.
  2. Flag what's missing — If the user can't answer something, don't stall. Mark it as "PENDING: [question]" and keep building. These become action items.
  3. Think ahead — Anticipate subtasks, dependencies, and risks the user hasn't mentioned. A PM who only writes down what they're told is a secretary, not a PM.
  4. Be opinionated — Suggest priorities, timelines, and approaches based on your understanding. The user can override you, but they shouldn't have to think of everything.
  5. Make it visual — Every deliverable should include charts, graphs, or visual elements that tell the story at a glance. Executives don't read walls of text — they scan visuals.

Workflow

Phase 1: Project Discovery (the interview)

Start by understanding the project. Use the AskUserQuestion tool to gather information in structured batches. Don't dump 15 questions at once — group them logically and go in rounds.

Round 1 — The Big Picture:

  • What is this project about? What problem does it solve or what outcome does it achieve?
  • Why now? What's driving this initiative (regulatory, business, customer, internal)?
  • What does success look like? How will you know this project is done and done well?
  • Is there a hard deadline, and if so, what drives it (regulatory, contractual, business cycle)?

Round 2 — Scope and Boundaries:

  • What's IN scope and what's explicitly OUT of scope?
  • Are there known constraints (budget, headcount, technology, vendor dependencies)?
  • Are there related projects or dependencies this connects to?
  • Has anything like this been attempted before? What happened?

Round 3 — People and Process:

  • Who is the project sponsor / decision maker?
  • Who are the key stakeholders who need visibility?
  • Who will do the actual work? (team members, roles)
  • Are there external parties involved (vendors, clients, regulators)?
  • What tools/systems does the team use (Notion, Jira, Slack, etc.)?
  • What is the governance model? (How are decisions made? Who approves changes?)

Round 4 — Risks, Budget, and Unknowns:

  • What could go wrong? What are the biggest risks?
  • What don't you know yet that you need to find out?
  • Are there any assumptions you're making that might not hold?
  • Is there a budget? What's the rough order of magnitude?
  • What's the communication cadence? (standup frequency, status report schedule)

Round 5+ — Deep Dives (as needed): Keep asking follow-up questions based on the answers. Every project is different — a compliance project needs regulatory context, a product launch needs go-to-market details, a migration needs technical architecture questions. Adapt your questions to the domain.

When to stop asking: You have enough when you can confidently:

  • Write a clear scope statement
  • Create a work breakdown with 15-40 tasks
  • Map out every dependency between tasks (which task depends on which — this is YOUR job as the PM, don't ask the user to specify dependencies)
  • Auto-determine the critical path from those dependencies (longest chain = critical path)
  • Name the key risks
  • Define at least 3-4 milestones

Handling unanswered questions: If the user says "I don't know" or "we haven't decided yet," that's fine. Log it as:

  • PENDING: [The question that needs answering]
  • Owner: [Who should answer this — suggest someone if possible]
  • Impact: [What's blocked until this is answered]

These become a dedicated section in the charter and action items in the tracker.

Phase 2: Build the Deliverables

Once you have enough context, tell the user what you're building and produce all three deliverables. Use the existing skills (docx, xlsx, pptx) to create professional files.

Before generating files, read these skills:

  • Read the docx SKILL.md for the charter document
  • Read the xlsx SKILL.md for the tracker spreadsheet
  • Read the pptx SKILL.md for the kickoff deck

Deliverable 1: Project Charter (.docx)

A comprehensive, lean/agile project charter that covers everything a PM needs. Not bureaucratic, but thorough.

Structure — every section is mandatory:

PROJECT CHARTER: [Project Name]
Version: 1.0 | Date: [date] | Author: [name] | Status: Draft

═══════════════════════════════════════════════════
1. EXECUTIVE SUMMARY
   - 3-4 sentence project overview (elevator pitch)
   - Key numbers: timeline, budget (if known), team size, scope magnitude

2. PROBLEM STATEMENT & BUSINESS CASE
   - What problem are we solving? (2-3 sentences)
   - Why does it matter now? What's the business impact of NOT doing this?
   - Expected ROI or business value (qualitative if quantitative isn't available)

3. GOALS & SUCCESS CRITERIA
   - 3-5 SMART goals (Specific, Measurable, Achievable, Relevant, Time-bound)
   - Definition of Done for the project
   - Key Performance Indicators (KPIs) — how will progress be measured?

4. SCOPE
   - In Scope (bulleted, specific)
   - Out of Scope (bulleted — equally important to be explicit about what we're NOT doing)
   - Assumptions (what are we taking for granted?)
   - Constraints (budget, time, technology, regulatory)

5. TEAM & ROLES (RACI)
   Use a RACI matrix table:
   | Activity / Deliverable | Sponsor | PM | Team Member 1 | Team Member 2 | ... |
   |------------------------|---------|-----|---------------|---------------|-----|
   | Overall project        |   A     |  R  |      C        |       I       |     |
   | [Activity 2]           |   I     |  A  |      R        |       C       |     |
   R = Responsible, A = Accountable, C = Consulted, I = Informed

6. TIMELINE & MILESTONES
   Visual table with milestones, target dates, and phase markers
   Include a simple text-based timeline visualization:
   [Phase 1: Planning] -----> [Phase 2: Execution] -----> [Phase 3: Testing] -----> [Phase 4: Launch]
   Week 1-2                   Week 3-8                     Week 9-10                 Week 11-12

7. RISK REGISTER
   | # | Risk Description | Likelihood (H/M/L) | Impact (H/M/L) | Risk Score | Mitigation Strategy | Owner | Status |
   Risk Score = Likelihood x Impact (H=3, M=2, L=1). Score 6-9 = Critical, 3-4 = Moderate, 1-2 = Low

   Include at MINIMUM 5 risks. Think about:
   - Technical risks
   - Resource/people risks
   - External/vendor risks
   - Regulatory/compliance risks
   - Timeline risks
   - Budget risks

8. DEPENDENCIES
   | Dependency | Type (Internal/External) | Owner | Status | Impact if Delayed |
   What this project depends on, and what depends on this project.

9. BUDGET & RESOURCES
   - Budget summary (if known, even rough order of magnitude)
   - Resource allocation (FTEs, contractors, tools, licenses)
   - If budget is PENDING, flag it prominently and estimate what information is needed to create one

10. COMMUNICATION PLAN
    | Audience | Channel | Frequency | Owner | Content |
    | Project team | Standup | Daily/3x week | PM | Progress, blockers |
    | Stakeholders | Status report | Weekly | PM | Summary, risks, decisions needed |
    | Sponsor | Executive update | Bi-weekly | PM | Milestones, escalations |
    | Clients/External | Email updates | As needed | [role] | Impact, action items |

11. CHANGE MANAGEMENT PROCESS
    How scope changes are handled:
    a) Change Request submitted (by anyone on the team or stakeholders)
    b) PM assesses impact on scope, timeline, budget, and resources
    c) Change Review: PM presents impact assessment to sponsor/steering committee
    d) Decision: Approve, Reject, or Defer
    e) If approved: update project plan, communicate to team

    Include a simple Change Request Log table:
    | CR # | Date | Requester | Description | Impact Assessment | Decision | Decision Date |

12. GOVERNANCE & DECISION FRAMEWORK
    - Decision authority matrix (who can approve what)
    - Escalation path (team → PM → sponsor → steering committee)
    - Meeting cadence (standup, sprint review, steering committee, retrospective)

13. QUALITY ASSURANCE
    - How will deliverables be validated?
    - Acceptance criteria for key deliverables
    - Testing/review process

14. OPEN QUESTIONS (PENDING ITEMS)
    | # | Question | Owner | Impact (what's blocked) | Due Date | Status |
    Prominently highlighted — these are the action items that come out of the kickoff meeting.

15. APPROVALS
    | Role | Name | Signature | Date |
    | Sponsor | | | |
    | Project Lead | | | |
    | Key Stakeholder | | | |

The charter should be professional but not bloated. Use tables generously — they're more scannable than paragraphs. Every section should earn its place; if information isn't available, mark it as PENDING rather than filling with generic text.


Deliverable 2: Project Tracker with CPM Gantt Chart (.xlsx)

A proper project scheduling spreadsheet with Critical Path Method (CPM) calculations, dependency types, float/slack, and a dynamic Gantt chart.

Sheet 1: "Task Tracker" — the main WBS with scheduling logic

ColumnTypeDescription
Task IDTextSequential numbering (1.1, 1.2, 2.1, etc.) grouped by phase
PhaseTextGrouping (e.g., Planning, Execution, Testing, Closeout)
Task NameTextImperative form ("Pull client list" not "Pulling client list")
DescriptionTextBrief context — what does "done" look like for this task?
OwnerTextSingle person responsible
PriorityTextP0 / P1 / P2 / P3
StatusTextNot Started / In Progress / Blocked / Done
Duration (Days)NumberEstimated effort in working days
Start DateDateCalculated or manually set — when work begins
End DateDate/Formula=Start Date + Duration (auto-calculated, skip weekends with WORKDAY)
Predecessor(s)TextTask IDs this depends on, with dependency type: e.g., "1.1 FS", "1.2 SS+2d"
Dependency TypeTextFS (Finish-to-Start), SS (Start-to-Start), FF (Finish-to-Finish), SF (Start-to-Finish)
Lag/LeadNumberDays of lag (+) or lead (-) on the dependency
Early Start (ES)Date/FormulaForward pass calculation: earliest this task can start
Early Finish (EF)Date/Formula= ES + Duration
Late Start (LS)Date/FormulaBackward pass calculation: latest this can start without delaying project
Late Finish (LF)Date/FormulaBackward pass calculation
Total FloatFormula= LS - ES (or LF - EF). Zero float = on critical path
Free FloatFormula= min(ES of successors) - EF of this task
Critical Path?Formula=IF(Total Float=0, "YES", "NO"). Highlight YES rows in red/bold
% CompleteNumber0-100%
NotesTextAny additional context
BlockersTextWhat's preventing progress

Critical Path Method (CPM) implementation — FULLY AUTOMATIC:

The critical path MUST be auto-detected from task dependencies and durations. The user never manually marks a task as "critical" — the formulas calculate it.

Step 1: When building the WBS, YOU (the AI) must assign proper Predecessor values for every task. This is the foundation of CPM. For each task, determine:

  • Which tasks MUST finish before this one can start? → Predecessor = "X.X FS" (Finish-to-Start)
  • Which tasks must start at the same time? → "X.X SS" (Start-to-Start)
  • Which tasks must finish at the same time? → "X.X FF" (Finish-to-Finish)
  • Which tasks must start before this one can finish? → "X.X SF" (Start-to-Finish)
  • Multiple predecessors: comma-separated, e.g., "1.1 FS, 1.3 SS+2d"
  • Tasks with NO predecessor = project start tasks (can begin on Day 1)

IMPORTANT: Every task except the very first must have at least one predecessor. If you can't identify a dependency, it's a FS dependency on the previous task in the same phase. Phase-start tasks depend on the last task of the prior phase (FS). This ensures a complete dependency network.

Step 2: Excel formulas auto-calculate the schedule from dependencies.

Since Excel cannot natively parse "1.1 FS, 2.3 SS+2d" strings, implement CPM using a Python helper approach with openpyxl:

  1. Build the task list and dependency graph in Python
  2. Run the forward pass and backward pass algorithmically
  3. Write the COMPUTED values (ES, EF, LS, LF, Float) as formulas or values into cells
  4. Add formulas for cells that CAN be formula-driven (End Date, Critical Path flag, etc.)

Python CPM algorithm (MANDATORY — run this when generating the tracker):

from datetime import timedelta
import numpy as np

def compute_cpm(tasks):
    """
    tasks = list of dicts with keys:
      id, duration, predecessors (list of {task_id, type, lag})
    Returns tasks with ES, EF, LS, LF, total_float, free_float, is_critical
    """
    # Build adjacency: task_id -> list of successor task_ids
    successors = {t['id']: [] for t in tasks}
    task_map = {t['id']: t for t in tasks}

    for t in tasks:
        for pred in t.get('predecessors', []):
            successors[pred['task_id']].append(t['id'])

    # --- FORWARD PASS ---
    # Topological sort, then compute ES/EF
    for t in topological_sort(tasks):
        if not t.get('predecessors'):
            t['ES'] = 0  # project start (day 0)
        else:
            es_values = []
            for pred in t['predecessors']:
                p = task_map[pred['task_id']]
                dep_type = pred.get('type', 'FS')
                lag = pred.get('lag', 0)
                if dep_type == 'FS':
                    es_values.append(p['EF'] + lag)
                elif dep_type == 'SS':
                    es_values.append(p['ES'] + lag)
                elif dep_type == 'FF':
                    es_values.append(p['EF'] - t['duration'] + lag)
                elif dep_type == 'SF':
                    es_values.append(p['ES'] - t['duration'] + lag)
            t['ES'] = max(es_values)
        t['EF'] = t['ES'] + t['duration']

    # --- BACKWARD PASS ---
    project_end = max(t['EF'] for t in tasks)
    for t in reversed(topological_sort(tasks)):
        if not successors[t['id']]:
            t['LF'] = project_end
        else:
            lf_values = []
            for succ_id in successors[t['id']]:
                s = task_map[succ_id]
                # Find which predecessor entry in s refers to t
                for pred in s.get('predecessors', []):
                    if pred['task_id'] == t['id']:
                        dep_type = pred.get('type', 'FS')
                        lag = pred.get('lag', 0)
                        if dep_type == 'FS':
                            lf_values.append(s['LS'] - lag)
                        elif dep_type == 'SS':
                            lf_values.append(s['LS'] + t['duration'] - lag)
                        elif dep_type == 'FF':
                            lf_values.append(s['LF'] - lag)
                        elif dep_type == 'SF':
                            lf_values.append(s['LF'] + t['duration'] - lag)
            t['LF'] = min(lf_values)
        t['LS'] = t['LF'] - t['duration']

    # --- FLOAT ---
    for t in tasks:
        t['total_float'] = t['LS'] - t['ES']
        # Free float: min ES of successors - EF
        if successors[t['id']]:
            t['free_float'] = min(task_map[s]['ES'] for s in successors[t['id']]) - t['EF']
        else:
            t['free_float'] = 0
        t['is_critical'] = (t['total_float'] == 0)

    return tasks

After computing CPM, write to Excel with these rules:

ColumnCell ContentType
Start DateFor first tasks: project start date. For others: =WORKDAY(project_start, ES_days) — computed from CPMFormula
End Date=WORKDAY(StartDate, Duration)Formula
ESComputed date from forward pass → write as =WORKDAY($B$1, ES_days) where $B$1 = project startFormula
EF=WORKDAY(ES_cell, Duration_cell)Formula
LSComputed date from backward pass → write as =WORKDAY($B$1, LS_days)Formula
LF=WORKDAY(LS_cell, Duration_cell)Formula
Total Float=LS_cell - ES_cell (in working days: use NETWORKDAYS)Formula
Free Float=MIN(ES_of_successors) - EF_cell — write actual cell referencesFormula
Critical Path?=IF(TotalFloat_cell=0, "YES", "NO")Formula

CRITICAL VALIDATION: After writing the tracker, verify:

# Count critical path tasks
critical = [t for t in tasks if t['is_critical']]
assert len(critical) >= 2, "Critical path must have at least 2 tasks"
# Verify critical path is a connected chain
# Verify project end = max(EF) = max(LF) for critical tasks
non_critical = [t for t in tasks if not t['is_critical']]
assert any(t['total_float'] > 0 for t in non_critical), "Some tasks must have positive float"

The critical path emerges automatically from the longest chain of dependent tasks through the network. When someone changes a Duration, the CPM recalculates. No human decision required.

Dashboard formulas — ALL must reference Task Tracker sheet:

Tasks Complete:     =COUNTIF('Task Tracker'!G:G, "Done")
Tasks Total:        =COUNTA('Task Tracker'!A:A) - 1
% Complete:         =COUNTIF('Task Tracker'!G:G,"Done") / (COUNTA('Task Tracker'!A:A)-1)
Tasks In Progress:  =COUNTIF('Task Tracker'!G:G, "In Progress")
Tasks Blocked:      =COUNTIF('Task Tracker'!G:G, "Blocked")
Critical Tasks:     =COUNTIF('Task Tracker'!T:T, "YES")
Critical Done:      =COUNTIFS('Task Tracker'!T:T,"YES",'Task Tracker'!G:G,"Done")
Avg Float:          =AVERAGE('Task Tracker'!R:R)
Zero Float Count:   =COUNTIF('Task Tracker'!R:R, 0)
Phase % (Planning): =AVERAGEIF('Task Tracker'!B:B,"Planning",'Task Tracker'!U:U)
Overdue Count:      =COUNTIFS('Task Tracker'!J:J,"<"&TODAY(),'Task Tracker'!G:G,"<>Done")
High Risks Open:    =COUNTIFS('Risk Register'!F:F,">="&15,'Risk Register'!J:J,"<>Closed")
Progress Bar:       =REPT("█", ROUND(pct_complete*20, 0)) & REPT("░", 20-ROUND(pct_complete*20, 0))

ZERO static values on the Dashboard. Every number must be a formula referencing another sheet.

Use conditional formatting throughout:

  • Critical Path rows: Bold text, red left border or red fill on Critical Path column
  • Status: Red fill for "Blocked", Yellow for "In Progress", Green for "Done", Gray for "Not Started"
  • Float: Red for 0 (critical), Yellow for 1-5 days, Green for 5+ days
  • Due Date: Red text if past due and not Done

Sheet 2: "Gantt Chart" — MANDATORY visual schedule Create a proper Gantt chart using cell-based formatting with the following structure:

Layout:

  • Left columns (frozen): Task ID | Task Name | Owner | Start | End | Duration | Float
  • Right columns: One column per time period (use weeks for projects >3 months, days for shorter)
  • Column headers: Week numbers or date ranges (e.g., "W1: Mar 16-20", "W2: Mar 23-27")

Visual encoding using conditional formatting formulas:

For each cell at intersection of Task row and Date column:
- Check: =AND(column_date >= task_start, column_date <= task_end)
- If on critical path AND within duration: DARK RED fill (#C0392B)
- If NOT on critical path AND within duration: BLUE fill (#2980B9)
- If completed portion (column_date <= start + duration * %complete): GREEN fill (#27AE60)
- If overdue (column_date > end AND status <> "Done"): RED HATCHED or bright red
- If milestone (duration = 0): Use ◆ symbol in black/gold

Additional Gantt features:

  • Today line: Highlight the current week/day column with a distinct border or yellow fill
  • Dependency arrows: Add small arrow indicators (→) or notes in cells showing predecessor links
  • Phase grouping: Use merged cells or bold section headers to visually separate phases
  • Summary bars: Phase-level summary rows showing the span of all tasks in that phase
  • Legend: At the top or bottom, show what each color means

The Gantt must be dynamic — when someone changes a Start Date or Duration in the Task Tracker sheet, the Gantt should update automatically via cell references and formulas.

Sheet 3: "Milestones" | Milestone | Target Date | Actual Date | Status | Owner | Success Criteria | Dependencies | Float |

Sheet 4: "Risk Register" | # | Risk | Category | Likelihood (1-5) | Impact (1-5) | Risk Score (formula: L×I) | Mitigation | Contingency | Owner | Status | Last Reviewed | Use numeric scoring (1-5) instead of H/M/L for better analytics:

  • Risk Score 15-25: Critical (Red fill)
  • Risk Score 8-14: High (Orange fill)
  • Risk Score 4-7: Medium (Yellow fill)
  • Risk Score 1-3: Low (Green fill) Include a separate risk heat map grid (5x5) using conditional formatting showing where risks cluster.

Sheet 5: "Open Questions" | # | Question | Owner | Impact | Due Date | Status | Resolution | Date Resolved |

Sheet 6: "Change Log" | CR # | Date | Requester | Description | Impact (Scope/Time/Budget) | Decision | Decision Date | Approved By |

Sheet 7: "Resource Loading" | Team Member | Role | Week 1 | Week 2 | Week 3 | ... | Each cell = count of tasks assigned to that person in that week (use COUNTIFS formula). Conditional formatting: Red if overloaded (>5 tasks/week), Yellow if 3-5, Green if 1-2. This helps identify resource bottlenecks before they happen.

Sheet 8: "Dashboard" — Analytics command center Create a comprehensive dashboard with formulas that auto-update:

  • Project Health Scorecard: Overall status (Green/Yellow/Red) based on: % tasks on schedule, % budget consumed, # critical risks open, # blockers
  • Task Status Summary: COUNTIF formulas for each status. Show as percentage bars using repeated "█" characters with formatting: =REPT("█", ROUND(percentage*20, 0))
  • Phase Progress Tracker: Each phase with % complete (AVERAGEIF on %Complete by Phase)
  • Critical Path Status: Count of critical path tasks complete vs remaining
  • Float Analysis: Average float remaining, tasks with zero float
  • Risk Severity Distribution: Count by risk score bracket
  • Resource Utilization: Tasks per person summary
  • Upcoming Deadlines: Next 14 days tasks (conditional check against TODAY())
  • Blockers & Open Questions: Counts with conditional red highlighting if > 0
  • Velocity Tracking: Tasks completed per week (if project is underway)
  • Burndown Data: Total tasks remaining over time (week by week)

Deliverable 3: Kickoff Deck (.pptx)

An analytical, data-driven kickoff deck. Think McKinsey meets marketing agency — every analytical slide uses REAL pptxgenjs charts (slide.addChart()), not colored boxes or shape rectangles pretending to be charts.

Before creating the deck, read the pptx SKILL.md and pptxgenjs.md carefully. You MUST use slide.addChart() for all data visualization slides.

Mandatory Chart Rules

CRITICAL: Use slide.addChart(pres.charts.XXX, data, options) for ALL data slides. Never fake a chart with rectangles/shapes. The available chart types are:

  • pres.charts.BAR — for task counts, resource loading, phase comparisons, progress bars
  • pres.charts.LINE — for timeline trends, burndown, velocity, progress over time
  • pres.charts.PIE / pres.charts.DOUGHNUT — for budget allocation, scope breakdown, effort distribution
  • pres.charts.SCATTER — for risk heat map plotting (likelihood vs impact)
  • pres.charts.RADAR — for project health scorecards, readiness assessments
  • pres.charts.BUBBLE — for risk visualization with severity as bubble size

Chart styling requirements for every chart:

// EVERY chart must include these styling options:
{
  chartColors: [...],                    // Match deck color palette
  chartArea: { fill: { color: "FFFFFF" }, roundedCorners: true },
  catAxisLabelColor: "64748B",           // Muted axis labels
  valAxisLabelColor: "64748B",
  valGridLine: { color: "E2E8F0", size: 0.5 },  // Subtle grid
  catGridLine: { style: "none" },
  showValue: true,                       // Data labels visible
  dataLabelColor: "1E293B"
}
Slide-by-Slide Blueprint (15 slides)

Slide 1: Title Slide — Dark background (primary color fill), project name in large bold text (44pt), subtitle with date + presenter + company in lighter text (14pt). Clean, minimal. No charts needed.

Slide 2: The Problem / Context — Split layout. Left 40%: one large impactful number (60-72pt, accent color) with a short label below (e.g., "12,000 orders/day to migrate"). Right 60%: 2-3 sentences of context. Dark background.

Slide 3: Business Case — Why Now — Light background. Use a BAR chart showing business impact data:

slide.addChart(pres.charts.BAR, [{
  name: "Impact", labels: ["Revenue at Risk", "Compliance Fines", "Client Churn", "Operational Cost"],
  values: [computed_from_project_data]  // Pull real numbers from discovery
}], { barDir: "bar", showValue: true, chartColors: ["accent_color"] });

If no quantitative data, use icon+text cards (3-4 business drivers) but ALWAYS prefer charts when numbers exist.

Slide 4: Goals & Success Metrics — Use a RADAR chart showing target KPIs across multiple dimensions:

slide.addChart(pres.charts.RADAR, [{
  name: "Target", labels: ["On-Time Delivery", "Budget", "Quality", "Stakeholder Satisfaction", "Risk Mitigation"],
  values: [90, 100, 95, 85, 80]  // Target percentages
}], { showValue: true, chartColors: ["accent_color"], radarStyle: "filled" });

Alongside the radar: 3-4 large stat callout cards with specific KPI targets.

Slide 5: Scope — In vs Out — Two-column layout. Left: In Scope items with green checkmark icons. Right: Out of Scope items with red X icons. Use a thin vertical divider line. Light background.

Slide 6: Team & RACI Overview — Team grid using cards (shape rectangles with name + role + icon). Below or beside: a small table showing key RACI assignments. Use the pptx addTable() method for the RACI matrix portion. NOT bullet points.

Slide 7: Project Timeline / Roadmap — This is a CRITICAL analytical slide. Use a stacked BAR chart as a Gantt-style visualization:

// Build a horizontal stacked bar where each phase is a segment
slide.addChart(pres.charts.BAR, [
  { name: "Phase 1: Planning", labels: ["Project"], values: [phase1_weeks] },
  { name: "Phase 2: Execution", labels: ["Project"], values: [phase2_weeks] },
  { name: "Phase 3: Testing", labels: ["Project"], values: [phase3_weeks] },
  { name: "Phase 4: Launch", labels: ["Project"], values: [phase4_weeks] }
], {
  barDir: "bar", barGrouping: "stacked",
  chartColors: ["1E3A5F", "2980B9", "27AE60", "F39C12"],
  showValue: true, showLegend: true, legendPos: "b"
});

Add milestone markers below the chart as text callouts with dates. Alternate: use multiple horizontal bars (one per workstream) if parallel workstreams exist.

Slide 8: Task Distribution by Phase — Use a column BAR chart showing task count per phase:

slide.addChart(pres.charts.BAR, [{
  name: "Tasks", labels: ["Planning", "Execution", "Testing", "Closeout"],
  values: [task_counts_per_phase]  // Actual counts from WBS
}], { barDir: "col", showValue: true, dataLabelPosition: "outEnd" });

Add a large callout number (e.g., "47 Total Tasks") in the top-right corner.

Slide 9: Risk Heat Map — THE key analytical slide. Use a SCATTER chart to plot risks on a Likelihood (x-axis, 1-5) vs Impact (y-axis, 1-5) grid:

// Each risk is a data point
slide.addChart(pres.charts.SCATTER, [
  { name: "Critical Risks", values: [[5,5], [4,5], [5,4]] },   // Red
  { name: "High Risks", values: [[3,4], [4,3]] },               // Orange
  { name: "Medium Risks", values: [[2,3], [3,2]] },             // Yellow
  { name: "Low Risks", values: [[1,2], [2,1]] }                 // Green
], {
  chartColors: ["C0392B", "E67E22", "F1C40F", "27AE60"],
  showLegend: true, legendPos: "b",
  catAxisTitle: "Likelihood", valAxisTitle: "Impact",
  catAxisMinVal: 0, catAxisMaxVal: 6,
  valAxisMinVal: 0, valAxisMaxVal: 6
});

Add a text box below listing the top 3 risks by name with their mitigation strategy (brief, 1-line each).

Slide 10: Risk Summary & Mitigation — Use a horizontal BAR chart showing risk scores:

slide.addChart(pres.charts.BAR, [{
  name: "Risk Score", labels: ["Vendor delay", "Resource gap", "Scope creep", "Tech failure", "Budget overrun"],
  values: [20, 16, 15, 12, 9]  // L×I scores
}], {
  barDir: "bar", chartColors: ["C0392B", "E67E22", "E67E22", "F1C40F", "27AE60"],
  showValue: true, dataLabelPosition: "outEnd"
});

Right side: brief mitigation text for top 3 risks. Dark background for impact.

Slide 11: Dependencies & Critical Path — Visual flow diagram built with shapes and arrows showing the critical path. Use addShape() for task boxes connected by addShape(pres.shapes.LINE) arrows. Critical path boxes in dark red, non-critical in blue. Show total project duration and float summary as callout numbers.

Slide 12: Budget & Resource Allocation — Use TWO charts side by side: Left: DOUGHNUT chart for budget breakdown by category:

slide.addChart(pres.charts.DOUGHNUT, [{
  name: "Budget", labels: ["Personnel", "Tools/Licenses", "External Vendors", "Contingency"],
  values: [budget_values]
}], { showPercent: true, chartColors: ["1E3A5F", "2980B9", "27AE60", "95A5A6"] });

Right: BAR chart for resource allocation (FTE or hours per team member):

slide.addChart(pres.charts.BAR, [{
  name: "Hours", labels: ["Person A", "Person B", "Person C"],
  values: [hours_per_person]
}], { barDir: "bar", showValue: true });

If budget is PENDING, replace budget doughnut with a large "TBD" callout and show only the resource chart.

Slide 13: Progress Tracking Framework — Use a LINE chart showing planned vs actual burndown:

slide.addChart(pres.charts.LINE, [
  { name: "Planned", labels: ["W1", "W2", "W3", ...], values: [planned_remaining_tasks] },
  { name: "Actual", labels: ["W1", "W2", "W3", ...], values: [null_for_future_weeks] }
], {
  lineSmooth: true, chartColors: ["2980B9", "C0392B"],
  showLegend: true, legendPos: "b"
});

Subtitle: "This chart will populate as the project progresses." Include a note that this is the tracking framework for status meetings.

Slide 14: Open Questions & Next Steps — Dark background. Left half: numbered list of top open questions (each with owner in accent color). Right half: numbered action items for next 2 weeks with due dates. Use shape cards with accent left-border for each item. Urgent items get red accent, normal get blue.

Slide 15: Q&A / Contact — Minimal, clean slide. Project name, PM contact info, link to project workspace. Light or dark background matching Slide 1 for bookend effect.

Deck Design System

Before building slides, define a consistent design system:

Color palette — Choose from pptx SKILL.md palette options or generate a project-appropriate one:

const COLORS = {
  primary: "1E3A5F",     // Dark navy — backgrounds, headers
  secondary: "2980B9",   // Medium blue — charts, accents
  accent: "F39C12",      // Warm amber — highlights, callouts
  success: "27AE60",     // Green — positive metrics
  danger: "C0392B",      // Red — risks, critical items
  neutral: "95A5A6",     // Gray — secondary text, borders
  bg_light: "F8F9FA",   // Off-white — light slide backgrounds
  bg_dark: "1E293B",    // Dark slate — dark slide backgrounds
  text_dark: "1E293B",  // Body text on light backgrounds
  text_light: "FFFFFF"  // Body text on dark backgrounds
};

Typography:

  • Title: Georgia or Arial Black, 36-44pt, bold
  • Subtitle: Calibri, 18-20pt
  • Body: Calibri, 14-16pt
  • Callout numbers: Arial Black, 48-72pt
  • Captions: Calibri, 10-12pt, neutral color

Layout rhythm: Alternate dark→light→light→dark backgrounds. Never have more than 2 consecutive slides with the same background tone.

Chart placement: Charts should occupy 50-70% of the slide area. Always include a slide title above and a brief insight sentence below the chart (e.g., "Phase 2 accounts for 60% of total effort").

Chart Data Generation

When building charts, COMPUTE the data from the project information gathered during discovery:

  • Task counts by phase → from the WBS you created for the tracker
  • Risk scores → from the risk register you created for the charter/tracker
  • Budget splits → from budget information gathered (or mark as TBD)
  • Timeline durations → from the schedule you computed with CPM
  • Resource allocation → from task assignments in the tracker

NEVER use placeholder data. Every chart must reflect the actual project. If data is unknown, use the PENDING approach: show a "Data Pending" callout with a note about what information is needed.

Visual Quality Checklist (verify before finalizing)
  • At least 5 slides contain actual slide.addChart() chart objects (not shapes)
  • Chart types are varied (not all bar charts — mix bar, line, pie/doughnut, scatter, radar)
  • Every chart has styled axes, data labels, and a legend (where applicable)
  • No two slides have identical layouts
  • Dark/light backgrounds alternate (no more than 2 consecutive same-tone)
  • Large callout numbers (48-72pt) appear on at least 3 slides
  • Color palette is consistent across all slides and charts
  • Every chart has a brief insight sentence or callout explaining the key takeaway

Phase 3: Present and Iterate

After creating all three files:

  1. Share links to all three files
  2. Provide a concise summary:
    • Charter: [X] sections, [Y] risks identified, [Z] pending items
    • Tracker: [X] tasks across [Y] phases, Gantt chart spanning [Z] weeks
    • Deck: [X] slides, presentation-ready
  3. Highlight the top 3 open questions / pending items that need business input FIRST
  4. Suggest the order of next steps (what to resolve first, what can proceed in parallel)
  5. Offer to iterate on any deliverable

If the user wants changes, make them. A good PM iterates until the stakeholders are satisfied.

Adapting to Project Types

Different projects need different emphasis. Adjust your questions AND your deliverable content based on the domain:

  • Compliance/Regulatory — Emphasize: deadlines, audit requirements, documentation needs, regulatory bodies, evidence gathering. Risks focus on regulatory penalties and timeline risks.
  • Product/Engineering — Emphasize: technical architecture, sprint structure, definition of done, testing strategy, CI/CD. Timeline uses sprint-based milestones.
  • Operations — Emphasize: process changes, training needs, rollback plans, SLAs, business continuity. Include operational readiness checklist.
  • Client-facing — Emphasize: communication plans, client impact, support readiness, training materials. Include client communication timeline.
  • Migration/Integration — Emphasize: data mapping, cutover planning, rollback strategy, testing environments, parallel-run period. Include migration checklist.

Important Reminders

  • Always use imperative language for task names ("Finalize email body" not "Email body finalization")
  • Set realistic timelines — don't compress everything into a week unless the user insists
  • YOU assign all dependencies — the user gives you the project idea, YOU figure out which tasks depend on which. A PM doesn't ask the client "what's the critical path?" — the PM determines it.
  • Critical path is ALWAYS auto-calculated from dependencies and durations. Never hardcode or manually set it. If Total Float = 0, it's critical. Period.
  • Every task must have a Predecessor (except project start tasks). If you're unsure, default to FS (Finish-to-Start) on the previous task in the same phase.
  • Every task needs a single owner — shared ownership means no ownership
  • The open questions section is critical — it shows the user you're thinking ahead
  • The Gantt chart is NOT optional — it's the primary visual planning tool
  • The deck must be visually diverse — if two slides look similar, redesign one of them
  • Include governance and change management — these are what separate a good project plan from a task list
  • When in doubt, ask another question rather than making assumptions
  • Budget and resource sections should always be included, even if marked as PENDING

Output Validation Checklist (MANDATORY before presenting to user)

Run these checks programmatically after generating all deliverables:

Tracker Validation

# 1. Every non-first task has a predecessor
for task in tasks[1:]:
    assert task['predecessors'], f"Task {task['id']} has no predecessor"

# 2. Critical path exists and forms a connected chain
critical = [t for t in tasks if t['is_critical']]
assert len(critical) >= 2, "Critical path too short"

# 3. Some tasks have positive float (not everything is critical)
assert any(t['total_float'] > 0 for t in tasks), "All tasks critical = no real dependency logic"

# 4. Dashboard has ZERO static values — every number is a formula
for row in dashboard_sheet.iter_rows():
    for cell in row:
        if isinstance(cell.value, (int, float)):
            raise ValueError(f"Dashboard cell {cell.coordinate} is static: {cell.value}")

# 5. Gantt chart references Task Tracker dates (not hardcoded)
# Verify at least 50% of Gantt data cells contain formulas

# 6. Dates make logical sense
for task in tasks:
    assert task['ES'] <= task['EF'], f"Task {task['id']}: ES > EF"
    assert task['LS'] <= task['LF'], f"Task {task['id']}: LS > LF"
    assert task['ES'] <= task['LS'], f"Task {task['id']}: ES > LS (negative float)"

Charter Validation

  • All 15 sections present
  • RACI matrix has at least R and A for each activity
  • Risk register has at least 5 risks
  • Open Questions section exists (even if empty)

Deck Validation

  • At least 5 slides have real chart objects (addChart / python-pptx chart)
  • Chart types are varied (count distinct types >= 3)
  • No two consecutive dark backgrounds or 3+ consecutive light

Security & Privacy

Data Handling Rules

  • All processing is LOCAL. No project data is sent to external APIs, cloud services, or third-party tools unless the user explicitly configures an MCP connection.
  • Never embed credentials, API keys, passwords, or tokens in any deliverable (charter, tracker, or deck).
  • Never include private employee data beyond name and role (no salaries, performance data, private emails, phone numbers) unless explicitly provided and requested by the user.
  • Client-sensitive data (client lists, contract values, PII) should be referenced by category, not by specific values, in the deck. The deck may be shared broadly — keep sensitive specifics in the tracker/charter which have tighter distribution.
  • File names should be generic — use "project-charter.docx" not "confidential-restructuring-plan.docx" to avoid leaking project intent via file names in shared folders.

Skill File Security

  • SKILL.md files contain INSTRUCTIONS ONLY — never store project data, credentials, API endpoints, or environment-specific configuration in skill files.
  • Skills should not execute arbitrary code from external sources. All code templates in this skill are self-contained.
  • When the skill reads existing files (e.g., importing from a prior tracker), it should validate the file format before processing — don't blindly execute formulas from untrusted spreadsheets.

Output Security

  • Generated .xlsx files should not contain VBA macros (use .xlsx, never .xlsm)
  • Generated .pptx files should not contain embedded executables or OLE objects
  • Generated .docx files should not contain external data connections or macros
  • All three output files should be openable in LibreOffice without security warnings

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.