Kickoff deck
Generate a Project+ style project kickoff deck as a .pptx — title, vision, objectives, scope, team, milestones, risks, ways of working, and asks. Use whenever a user needs to run or prepare for a project kickoff meeting — triggers include "kickoff deck", "kickoff slides", "kickoff presentation", "kickoff meeting", "project kickoff", "launch deck", or any context where a PM is formally introducing a new project to stakeholders and team. Enforces Project+ kickoff structure and prevents fabrication of metrics, dates, names, or commitments the user never stated.From its SKILL.md
npx -y skills add kenmulford/PMSkills --skill kickoff-deckAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 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.
SKILL.md
4.5 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Kickoff Deck
Generate a Project+ kickoff deck .pptx. Draft-first: parse what the user gave, fill the schema with facts + TBDs, run the script. Only interview if the user explicitly asks.
Hard rules
-
Never invent. No made-up metrics, dates, names, risks, or commitments. Unknown →
[TBD — reason]. A kickoff deck shown to stakeholders with invented content damages PM credibility on day one. -
Preserve exact time/date/quantity wording — by table. Never convert imprecision into precision to make a milestone or SLA look concrete.
User said NEVER write Write October October 31, end of October, 10/31 October Q2 June 30, Q2 2026-06-30, end of June Q2 end of April April 30, late April 2026 end of April $150k $150,000, $150K USD $150k ~6 months 180 days, 6.0 months ~6 months zero downtime 99.9% uptime, 99.99% SLA zero downtime -
Verbatim-grep check (mandatory pre-render step). Before emitting JSON, for every number, percentage, date, dollar figure, or SLA in your draft, search the user's original message for that exact token. If the token is not present literally, replace it with
[TBD]. This converts "don't invent" from a principle into a mechanical check."99.9% uptime"in the draft when Ken said only"zero downtime"fails this check — strip it. -
Reporting-line managers are NOT team slide entries. "Marcus reports to Raj" → Raj does NOT appear on the team slide. Build a ban list from any name appearing only inside
"X reports to Y","under Y","Y's report","rolls up to Y", or"Y is X's manager"phrases. That ban list cannot appear on the team slide. The sponsor is the exception (and only if named separately from the reporting-line phrase). -
Don't invent stakeholders from project keywords. "Finance dashboard" does NOT create a "Finance Team" bullet. Only list people/groups the user explicitly named.
-
Keep slides tight. Max 5 bullets per slide, ≤12 words per bullet. Kickoff decks are read aloud — cramped slides fail.
Run it
python3 scripts/create_kickoff.py --output "<dir>/<ProjectName>_Kickoff_v1.pptx" --source /tmp/source.txt <<'JSON'
{ ...schema... }
JSON
Pass --source <path> with the user's raw message text. The script will lint every \d+%, $\d+[kKmM]?, and calendar date in the draft against the source and add any unverified figures to the Draft Gaps slide with a ⚠ unverified marker. If you omit --source, linting is skipped (acceptable for testing, not acceptable for user deliverables).
Script handles all layout, TBD highlighting, Draft Gaps summary slide, figure linting, and open_questions.md when TBDs ≥ 5.
JSON schema
{
"header": {
"project_name": "string",
"project_manager": "string or [TBD]",
"sponsor": "string or [TBD]",
"date": "YYYY-MM-DD",
"version": "v1"
},
"vision": "1–2 sentences on why this project exists (from user's words)",
"objectives": [
"SMART-ish objective bullet or [TBD]"
],
"scope": {
"in_scope": ["bullet"],
"out_of_scope": ["bullet"]
},
"team": [
{"name": "string or [TBD]", "role": "string or [TBD]"}
],
"milestones": [
{"name": "string", "target": "date or phase wording or [TBD]"}
],
"risks": [
{"risk": "string", "mitigation": "string or [TBD]"}
],
"ways_of_working": {
"cadence": "e.g. weekly standup / biweekly steering / [TBD]",
"tools": "e.g. Slack #channel, Jira, email / [TBD]",
"decision_forum": "where decisions get made / [TBD]"
},
"asks": [
"what the PM needs from stakeholders today or [TBD]"
]
}
Arrays may be empty. Any string may be [TBD — reason]. Keep each bullet ≤12 words.
Before running the script, do a fidelity pass: for every name, date, metric, or risk, point to a verbatim phrase in the user's message. If you can't, replace with [TBD].
What ships with it: 2 files
19.1 KB alongside SKILL.md, 1 of them executable
evals/
- evals.json3.9 KB
scripts/
- create_kickoff.pyruns15.2 KB
Gives 0 of the 12 instructions most slides presentations skills give in ~1.1k tokens
Counted across 547 of the 547 authors here whose files we hold, read 2026-09-06
- Ensure every slide fits inside one viewportin 31 of 547, across 18 files
- Keep one idea per slidein 27 of 547, across 24 files
- Default to one self-contained HTML filein 24 of 547, across 16 files
- Check for product marketing context firstin 21 of 547, across 7 files
- Read STYLE_PRESETS.md before generatingin 21 of 547, across 12 files
- Involve reps in creationin 20 of 547, across 6 files
- Tailor to persona and deal stagein 20 of 547, across 6 files
- Generate three single-slide preview filesin 17 of 547, across 11 files
- Delete temporary preview files at handoffin 16 of 547, across 8 files
- Support keyboard and touch navigationin 16 of 547, across 7 files
- Keep one-pagers to a single pagein 15 of 547, across 5 files
- Use bold headers and short bulletsin 14 of 547, across 4 files
Said here and by no other author read
- Never invent metrics or dates
- Preserve exact user time wording
- Perform verbatim grep check
- Exclude reporting managers from team
- Keep slides tight with short bullets
- Pass source path to script
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.