Skill: generate-approval-letter
Generates a project plan approval request for Phase 2 — Planning. Reads the project
plan, budget, and resource plan; extracts Approver-level stakeholders from the
stakeholder map; and produces two artifacts: the approval letter email body
(approval-letter.md) and the send-email template (email-tpl-approval.md).
Mode B: agent prepares draft, PM reviews and confirms before sending (level 3).
Triggers
Russian: «отправь план на согласование», «письмо на согласование плана», «согласуй план с заказчиком», «запроси утверждение плана», «составь письмо на согласование», «нужно согласовать план»
English: "send plan for approval", "approval letter for project plan", "request plan approval", "generate approval letter", "plan sign-off email", "get plan approved"
Language Detection
- Request in Russian → templates with
-ru suffix, responses in Russian
- Otherwise → templates with
-en suffix, responses in English
Input
| Data |
Required |
Source |
| Stakeholder map |
yes |
01-initiation/stakeholder-map.md |
| Project plan |
yes |
02-planning/project-plan.md |
| Project budget |
no |
02-planning/project-budget.xlsx |
| Resource plan |
no |
02-planning/resource-plan.md |
| Project charter |
no |
01-initiation/project-charter.md — name, PM, sponsor |
Output
| File |
Project path |
Format |
Description |
approval-letter.md |
02-planning/ |
.md |
Email body — formal approval request |
email-tpl-approval.md |
02-planning/ |
.md |
send-email template: To, Subject, Body, Attachments |
Instructions
Step 1 — Check Dependencies
Guard-rail — check request type.
If the request is about updating the plan, replanning, or modifying artifacts →
respond: "generate-approval-letter composes an approval request for the ready plan,
not the plan itself. Use generate-project-plan to update the plan first, then run
generate-approval-letter again."
Do not start workflow.
Check for required files:
01-initiation/stakeholder-map.md
02-planning/project-plan.md
If stakeholder-map.md not found:
Stop. Report: "To identify recipients, the stakeholder map is required.
Run generate-stakeholder-map (task #3) first, then run generate-approval-letter."
If project-plan.md not found:
Stop. Report: "To compose the letter, the project plan is required.
Run generate-project-plan (task #7) first, then run generate-approval-letter."
If both files found: proceed to Step 2.
Step 2 — Extract Data from Input Files
From stakeholder-map.md:
- All stakeholders with status
Approver (or equivalent: Утверждающий, Sign-off authority, Decision maker)
- For each: name, role/title, email (if available)
- If no Approver found: ask PM — "No Approvers found in stakeholder map. Please specify
who should receive the letter." Record PM's answer as the recipient list. In Steps 3–4,
use this data instead of stakeholder-map.md.
From project-plan.md:
- Project name, PM
- Number of phases, overall duration (start date → end date)
- 3–5 key milestones with dates
- Current phase and status
From project-charter.md (if available):
- Project name (if not found in project-plan.md)
- Project sponsor — add to CC
From project-budget.xlsx (if available):
- Total budget amount
- Risk reserve (if present)
From resource-plan.md (if available):
- Total person-months or FTE summary — one line
Step 3 — Compose Email Body (approval-letter.md)
Follow the schema from templates/approval-letter-{lang}.md.
Letter structure:
- Greeting — to addressees (by name if single recipient; formal greeting if multiple)
- Context — 2–3 sentences: project name, Phase 2 complete, package ready for review
- Document package — list with brief description of each document
- Key project parameters — compact summary: start, end, milestones, budget (if available)
- Call to action — clear request: what to do, response deadline (default: 3 business days)
Response options: "Approved" / "Requires revision" (with comments)
- Signature — PM name, title, contact
Tone: formal, concise. Length: 200–350 words.
Step 4 — Compose send-email Template (email-tpl-approval.md)
Follow the schema from templates/email-tpl-approval-{lang}.md.
email-tpl-approval.md structure:
To: [Approver list from stakeholder-map]
CC: [Sponsor if found]
Subject: [Project Name] — Request for Plan Approval
Attachments:
- project-plan.docx (convert from project-plan.md)
- project-budget.xlsx (if available)
- resource-plan.docx (convert from resource-plan.md, if available)
Body: [content of the letter composed in Step 3]
Autonomy level: 3 — send only after PM confirmation
Step 5 — Show Draft and Save
- Create
approval-letter.md in {project}/02-planning/.
- Create
email-tpl-approval.md in {project}/02-planning/.
- Show in chat:
- Confirmation: "Files saved to 02-planning/."
- Full content of
approval-letter.md for PM review.
- Recipient list (To) and attachments for review.
- Question: "Letter ready. Confirm to send via Gmail, or provide edits."
- Do not trigger send-email without explicit PM confirmation — autonomy level 3.
- On PM confirmation: hand off to
send-email skill with 02-planning/email-tpl-approval.md.
On Gmail unavailable: save draft, notify PM with manual send instructions.
- Write to
logs/log.md: date, skill, files created, recipients, status.
- Update
project-state.md: approval-letter.md → "pending approval".
Templates
| File |
Purpose |
templates/approval-letter-ru.md |
Email body schema (RU) |
templates/approval-letter-en.md |
Email body schema (EN) |
templates/email-tpl-approval-ru.md |
send-email template schema (RU) |
templates/email-tpl-approval-en.md |
send-email template schema (EN) |
Dependencies
Reads:
01-initiation/stakeholder-map.md — Approver stakeholders (required)
02-planning/project-plan.md — phases, milestones, timeline (required)
01-initiation/project-charter.md — project name, PM, sponsor (optional)
02-planning/project-budget.xlsx — total budget (optional)
02-planning/resource-plan.md — FTE summary (optional)
Passes data to:
send-email — email-tpl-approval.md → Gmail (level 3)
Constraints
- Mode B: letter is a draft for PM review; sending requires PM confirmation (level 3)
- Does not modify project-plan.md or any other source files
- If no Approver in stakeholder-map: asks PM for clarification, does not stop
- Default response deadline: 3 business days; PM may adjust before confirmation
- Without project-budget.xlsx and resource-plan.md: letter is generated without those data points
- Gmail MCP unavailable fallback: save to file, PM sends manually
- Single project per invocation
1---2name: generate-approval-letter3description: Generates an approval-letter.md email body and an email-tpl-approval.md template for Phase 2 — Planning. Reads project-plan.md, project-budget.xlsx, and resource-plan.md to compose a formal approval request addressed to all Approver-level stakeholders from stakeholder-map.md. Produces two artifacts: the letter email body (approval-letter.md) and the send-email template (email-tpl-approval.md). Covers task #12 of the project management agent. Mode B: agent prepares draft, PM reviews and confirms before sending. Email level 3 — requires PM confirmation. Triggers RU: «отправь план на согласование», «письмо на согласование плана», «согласуй план с заказчиком», «запроси утверждение плана», «generate-approval-letter», «составь письмо на согласование». Triggers EN: 'send plan for approval', 'approval letter for project plan', 'request plan approval', 'generate approval letter', 'plan sign-off email', 'get plan approved'.4---56# Skill: generate-approval-letter78Generates a project plan approval request for Phase 2 — Planning. Reads the project9plan, budget, and resource plan; extracts Approver-level stakeholders from the10stakeholder map; and produces two artifacts: the approval letter email body11(approval-letter.md) and the send-email template (email-tpl-approval.md).12Mode B: agent prepares draft, PM reviews and confirms before sending (level 3).1314---1516## Triggers1718**Russian:** «отправь план на согласование», «письмо на согласование плана», «согласуй план с заказчиком», «запроси утверждение плана», «составь письмо на согласование», «нужно согласовать план»19**English:** "send plan for approval", "approval letter for project plan", "request plan approval", "generate approval letter", "plan sign-off email", "get plan approved"2021---2223## Language Detection2425- Request in Russian → templates with `-ru` suffix, responses in Russian26- Otherwise → templates with `-en` suffix, responses in English2728---2930## Input3132| Data | Required | Source |33|------|:--------:|--------|34| Stakeholder map | yes | `01-initiation/stakeholder-map.md` |35| Project plan | yes | `02-planning/project-plan.md` |36| Project budget | no | `02-planning/project-budget.xlsx` |37| Resource plan | no | `02-planning/resource-plan.md` |38| Project charter | no | `01-initiation/project-charter.md` — name, PM, sponsor |3940## Output4142| File | Project path | Format | Description |43|------|-------------|--------|-------------|44| `approval-letter.md` | `02-planning/` | .md | Email body — formal approval request |45| `email-tpl-approval.md` | `02-planning/` | .md | send-email template: To, Subject, Body, Attachments |4647---4849## Instructions5051### Step 1 — Check Dependencies5253**Guard-rail — check request type.**54If the request is about updating the plan, replanning, or modifying artifacts →55respond: "generate-approval-letter composes an approval request for the ready plan,56not the plan itself. Use generate-project-plan to update the plan first, then run57generate-approval-letter again."58Do not start workflow.5960Check for required files:611. `01-initiation/stakeholder-map.md`622. `02-planning/project-plan.md`6364**If stakeholder-map.md not found:**65Stop. Report: "To identify recipients, the stakeholder map is required.66Run generate-stakeholder-map (task #3) first, then run generate-approval-letter."6768**If project-plan.md not found:**69Stop. Report: "To compose the letter, the project plan is required.70Run generate-project-plan (task #7) first, then run generate-approval-letter."7172**If both files found:** proceed to Step 2.7374---7576### Step 2 — Extract Data from Input Files7778**From stakeholder-map.md:**79- All stakeholders with status `Approver` (or equivalent: Утверждающий, Sign-off authority, Decision maker)80- For each: name, role/title, email (if available)81- If no Approver found: ask PM — "No Approvers found in stakeholder map. Please specify82 who should receive the letter." Record PM's answer as the recipient list. In Steps 3–4,83 use this data instead of stakeholder-map.md.8485**From project-plan.md:**86- Project name, PM87- Number of phases, overall duration (start date → end date)88- 3–5 key milestones with dates89- Current phase and status9091**From project-charter.md (if available):**92- Project name (if not found in project-plan.md)93- Project sponsor — add to CC9495**From project-budget.xlsx (if available):**96- Total budget amount97- Risk reserve (if present)9899**From resource-plan.md (if available):**100- Total person-months or FTE summary — one line101102---103104### Step 3 — Compose Email Body (approval-letter.md)105106Follow the schema from `templates/approval-letter-{lang}.md`.107108**Letter structure:**1091. **Greeting** — to addressees (by name if single recipient; formal greeting if multiple)1102. **Context** — 2–3 sentences: project name, Phase 2 complete, package ready for review1113. **Document package** — list with brief description of each document1124. **Key project parameters** — compact summary: start, end, milestones, budget (if available)1135. **Call to action** — clear request: what to do, response deadline (default: 3 business days)114 Response options: "Approved" / "Requires revision" (with comments)1156. **Signature** — PM name, title, contact116117**Tone:** formal, concise. Length: 200–350 words.118119---120121### Step 4 — Compose send-email Template (email-tpl-approval.md)122123Follow the schema from `templates/email-tpl-approval-{lang}.md`.124125**email-tpl-approval.md structure:**126```127To: [Approver list from stakeholder-map]128CC: [Sponsor if found]129Subject: [Project Name] — Request for Plan Approval130Attachments:131 - project-plan.docx (convert from project-plan.md)132 - project-budget.xlsx (if available)133 - resource-plan.docx (convert from resource-plan.md, if available)134Body: [content of the letter composed in Step 3]135Autonomy level: 3 — send only after PM confirmation136```137138---139140### Step 5 — Show Draft and Save1411421. Create `approval-letter.md` in `{project}/02-planning/`.1432. Create `email-tpl-approval.md` in `{project}/02-planning/`.1443. Show in chat:145 - Confirmation: "Files saved to 02-planning/."146 - Full content of `approval-letter.md` for PM review.147 - Recipient list (To) and attachments for review.148 - Question: "Letter ready. Confirm to send via Gmail, or provide edits."1494. **Do not trigger send-email without explicit PM confirmation** — autonomy level 3.1505. On PM confirmation: hand off to `send-email` skill with `02-planning/email-tpl-approval.md`.151 On Gmail unavailable: save draft, notify PM with manual send instructions.1526. Write to `logs/log.md`: date, skill, files created, recipients, status.1537. Update `project-state.md`: `approval-letter.md` → "pending approval".154155---156157## Templates158159| File | Purpose |160|------|---------|161| `templates/approval-letter-ru.md` | Email body schema (RU) |162| `templates/approval-letter-en.md` | Email body schema (EN) |163| `templates/email-tpl-approval-ru.md` | send-email template schema (RU) |164| `templates/email-tpl-approval-en.md` | send-email template schema (EN) |165166---167168## Dependencies169170**Reads:**171- `01-initiation/stakeholder-map.md` — Approver stakeholders (required)172- `02-planning/project-plan.md` — phases, milestones, timeline (required)173- `01-initiation/project-charter.md` — project name, PM, sponsor (optional)174- `02-planning/project-budget.xlsx` — total budget (optional)175- `02-planning/resource-plan.md` — FTE summary (optional)176177**Passes data to:**178- `send-email` — email-tpl-approval.md → Gmail (level 3)179180---181182## Constraints183184- Mode B: letter is a draft for PM review; sending requires PM confirmation (level 3)185- Does not modify project-plan.md or any other source files186- If no Approver in stakeholder-map: asks PM for clarification, does not stop187- Default response deadline: 3 business days; PM may adjust before confirmation188- Without project-budget.xlsx and resource-plan.md: letter is generated without those data points189- Gmail MCP unavailable fallback: save to file, PM sends manually190- Single project per invocation