---
name: schedule-gantt
description: "Produce a Mermaid-Gantt schedule diagram and narrative schedule from a WBS and effort estimates. Invoke when the user needs a time-phased plan with task dependencies and critical path identification."
---

> Originally authored for Agentic PM Kit (MIT).

## When to use

Use this skill after the Work Breakdown Structure and task-level effort estimates are available and the team needs a time-phased schedule baseline. Typical triggers include:

- The WBS is complete and the project sponsor or steering committee needs a Gantt-format schedule for approval.
- The team is entering the execution phase and needs a published schedule baseline to track against.
- A scope change or re-estimation cycle requires rebuilding the schedule from updated effort figures.
- A stakeholder requests a visual timeline showing task dependencies and milestones.

Do not invoke before estimates exist or as a substitute for the WBS skill — this skill consumes the WBS output, it does not produce it.

## Summon the SME

Before drafting, load the canonical schedule-management reference to ground the diagram and narrative in established practice.

**Reading the config.** Check `.pm-kit.config.json` for the `sourcesMode` field:

- If `sourcesMode` is `"online"` (opt-in): fetch the URL stored at the key `sources.scheduleGantt` in `vendor/pm-kit/sources-index.json` using your available web-fetch capability. Do not name a specific tool — use whatever your runtime provides. Ground the facilitation in what you read. Do not fabricate quotations or page numbers from any version of that page.
- If `sourcesMode` is `"offline"` or the field is absent (the default): rely on your general knowledge of Gantt chart conventions and schedule-management principles as described by the Project Management Institute. Cite the canonical URL from `vendor/pm-kit/sources-index.json` at key `sources.scheduleGantt` in the output. Do not fabricate quotations or page numbers.

In both cases, the URL to cite is `https://en.wikipedia.org/wiki/Gantt_chart`.

## Facilitation script

Walk the user through these steps in sequence. Do not skip steps or combine them.

**Step 1 — Gather inputs.** Ask the user to provide the WBS (or equivalent task list) with effort estimates per task, any known dependencies between tasks, and the planned start date. Confirm all three are available before proceeding.

**Step 2 — Assign task IDs.** Working with the user, assign a short alphanumeric ID to each task (e.g., `t1`, `t2`, `a1`). Group tasks by phase or WBS level-2 node — each group becomes a Gantt section.

**Step 3 — Map dependencies.** For each task, confirm its predecessor tasks. Record the dependency map explicitly. Identify any tasks with no predecessors (start tasks) and any tasks with no successors (end tasks or potential float sinks).

**Step 4 — Calculate the critical path.** Trace the longest path from project start to project end using early-start / late-start logic. Ask the user to confirm the critical path tasks. Note total project duration and any significant float on non-critical tasks.

**Step 5 — Identify milestones.** Ask the user which dates or deliverables must appear as milestones (e.g., phase-gate reviews, sponsor sign-offs, external deadlines). Milestones are recorded in the narrative schedule summary; they are not rendered as Mermaid milestone lines unless the user confirms the syntax is supported by their renderer.

**Step 6 — Build the Mermaid diagram.** Produce a `gantt` block using the task IDs, durations, and dependencies captured above. Use section labels that match the WBS phases. Keep ID names short and ASCII-safe.

**Step 7 — Write the narrative.** Produce the schedule summary, task-detail table, critical-path narrative, and assumptions/risks sections using the structure in `TEMPLATE.md` (sibling file). Fill every slot. Leave no placeholder unfilled.

**Step 8 — Review with the user.** Present the draft schedule. Ask the user to confirm: (a) the Gantt diagram renders correctly in their environment, (b) the critical path matches their expectations, (c) all key milestones appear in the summary. Adjust as needed.

**Step 9 — Save the artifact.** Save the filled artifact to `docs/pm-kit/outputs/schedule-gantt/<short-slug>.md`. `<short-slug>` is a kebab-case ASCII slug (max 40 chars) derived from the project name or schedule baseline date (e.g., `bookswap-campus-schedule`). Confirm the final path with the user before writing. If the file exists, ask: overwrite, append a date suffix (e.g., `-2026-04-20`), or pick a new slug. The artifact begins with the three-line provenance header below (HTML comments, do not render):

```
<!-- Generated by agentic-pm-kit:schedule-gantt on YYYY-MM-DD -->
<!-- Languages: communication=<value>, output=<value> -->
<!-- Source mode: offline | online -->
```

## Languages

The kit separates the language used for live agent–user dialogue from the language used in the saved artifact. Both values live in `.pm-kit.config.json` and are free-form strings — read each value verbatim, never infer a language from the conversation, and never select from a hardcoded list.

**Facilitation dialogue.** Speak to the user during facilitation in the language at `language.communication`. Use the string verbatim.

**Filled artifact (saved TEMPLATE.md output).** Produce the written artifact in the language at `language.output`. If `language.output` is absent or empty, fall back to `language.communication`.

Example values either field might contain: `"en-US"`, `"es-MX"`, `"Português brasileiro"`, `"Mandarin Chinese"`. Accept any string as given. This bifurcation is the normative pattern for every skill in the kit.

## Acceptance gate

When the schedule is complete, point the user to `CHECKLIST.md` (sibling file) and ask them to verify each item. Remind them that the output must be marked **PASS** or **FAIL**. On **FAIL**, invite the user to return with specific notes so the facilitation can be resumed or corrected.
