generate-resource-plan
"Generates a resource allocation plan (resource-plan.md) for Phase 2 —
Skill: generate-resource-plan
Generates a resource allocation plan for an IT project during the planning phase (Phase 2).
Reads the project plan (phase durations) and team list (roles, FTE, rates), builds a
role-by-phase FTE matrix with person-month totals and cost estimates (when rates are
available). Output: resource-plan.md — the primary input for generate-budget. Mode B:
agent prepares draft, PM reviews.
Triggers
Russian: «составь ресурсный план», «распредели ресурсы по проекту», «кто и когда работает», «ресурсный план проекта», «загрузка команды по фазам», «ресурсы на проект» English: "generate resource plan", "resource allocation plan", "create resource plan", "team allocation by phase", "staffing plan", "who works when", "resource plan"
Language Detection
Determine the language of the user's request:
- If the request is in Russian → use templates with the
-rusuffix, respond in Russian - Otherwise → use templates with the
-ensuffix, respond in English
Input
| Data | Required | Source |
|---|---|---|
| Project plan | yes | 02-planning/project-plan.md |
| Team list | yes | input/team-list.md |
| Project charter | no | 01-initiation/project-charter.md — project name, PM, GTM scope |
| Preliminary estimate | no | 01-initiation/preliminary-estimate.xlsx — aggregated team costs by phase (fallback) |
| Constraints | no | input/constraints.md — resource or headcount constraints |
Output
| File | Project path | Format |
|---|---|---|
resource-plan.md | 02-planning/ | .md |
File structure — 4 sections (Internal Team, Allocation Matrix, External Resources, Summary)
— defined in templates/resource-plan-{lang}.md.
Instructions
Step 1 — Check Dependencies
Guard-rail — check request type. If the request contains language related to budget calculation, cost totals, contingency reserves, financial planning, or total project cost — even alongside a resource plan request — respond: "generate-resource-plan creates a role-by-phase allocation matrix, not a budget. For the project budget use generate-budget (task #9) — it reads resource-plan.md and produces project-budget.xlsx. Run generate-resource-plan first, then generate-budget." Do not start the workflow.
If the request is about task decomposition, sprint planning, or WBS → respond: "generate-resource-plan shows who is allocated at what FTE per phase, not a task breakdown. For task-level planning use generate-project-plan." Do not start the workflow.
Check for required files:
02-planning/project-plan.mdinput/team-list.md
If project-plan.md is not found: Stop. Respond: "A project plan is required to generate the resource plan. Run generate-project-plan (task #7) first — it defines phases, durations, and key activities that drive resource allocation."
If team-list.md is not found: Stop. Respond: "A team list is required to generate the resource plan. Create input/team-list.md with roles, team members, and FTE allocation per phase, then run this skill again."
If both files are found: proceed to Step 2.
Step 2 — Extract Phase Data from project-plan.md
Read 02-planning/project-plan.md and extract:
- List of phases (Phase 1 through Phase 6, or as defined in the plan)
- Duration of each phase (in weeks; convert to months: weeks / 4.3, round to 1 decimal)
- Key activities per phase — used to infer which roles are active
- Project name and PM (if present) — also check project-charter.md
Record the phase list and durations. This is the column structure for the allocation matrix.
Step 3 — Extract Team Data from team-list.md
Read input/team-list.md and extract:
Internal team (штатные / permanent):
- Role, name, grade
- FTE allocation: use the percentage from team-list.md as the base allocation
- If allocation is given as a single number for the whole project (e.g., "80%") → apply it uniformly across all phases where the role is active
- If allocation varies by phase or period → record phase-specific values
- Rates:
- If rates are given ($/month or ₽/month) → record for cost calculation
- If rates are "—" or marked as штат/operational budget → record as "—", add note in assumptions: "Internal team salaries are included in the company's operational budget and are not reflected in the project budget."
External resources (contractors, outsource):
- Role, vendor/name, engagement period, budget (fixed sum), scope of work
- Map the engagement period to phases from Step 2
From constraints.md (if available):
- Any headcount limits, FTE caps, or team availability constraints → record in Assumptions.
Step 4 — Build the Allocation Matrix
Construct the FTE allocation matrix: rows = roles, columns = phases.
For each role × phase combination:
- Is the role active in this phase?
- If project-plan.md or team-list.md explicitly states the phase → use it
- If not explicitly stated: use the general project FTE from team-list.md, assume the role is active in phases where the key activities match the role's competency
- PM / Project Manager is active across all phases at their stated FTE
- Record FTE % per phase (e.g., 0.5 = 50%, 1.0 = 100%, 0 = not active)
- Calculate person-months:
p-m = FTE × phase_duration_months- Round to 1 decimal place
- If rate is available: calculate
phase_cost = p-m × rate
Row totals: sum of person-months across all phases for each role. Column totals: sum of person-months across all roles for each phase.
Step 5 — Compile Assumptions and Risk Notes
Write the Assumptions section (minimum 3 items):
- Data source for phase durations (project-plan.md, which phase structure was used)
- FTE allocation logic (uniform vs phase-specific; basis for inference if used)
- Rate handling: "Rates taken from team-list.md" OR "Internal team on operational budget — cost columns left blank. External resources: contract amounts as stated in team-list.md"
- Any phase-allocation assumptions made by the agent (e.g., "QA assumed active in phases 3–5 based on testing activities in project-plan.md")
- If preliminary-estimate.xlsx was used as a fallback for aggregated team cost → state it
Resource risks (if detected):
- Any role allocated at 100% across multiple overlapping phases → flag as overallocation risk
- Any role that is the only resource in a critical competency area (e.g., sole developer, sole designer) and is heavily loaded (≥80% FTE) across all phases → flag as single-point-of-failure risk
- Critical path roles (e.g., sole developer) allocated below 50% on key phases → flag
- External resource engagement not aligned with phase dates → flag
Step 6 — Create resource-plan.md and Save
Follow the schema in templates/resource-plan-{lang}.md:
- Create
resource-plan.mdin{project}/02-planning/. - Show in chat:
- Confirmation: "resource-plan.md saved to 02-planning/."
- Allocation matrix as a markdown table (Section 2 summary).
- List of assumptions.
- Resource risk flags (if any).
- Next step: "Resource plan is ready. Review FTE allocations and correct if needed. Once approved, use generate-budget (task #9) — it reads this file to calculate the project budget."
- Write to
logs/log.md: date, skill, file created, total person-months, rate coverage (e.g., "rates available for 2/5 roles"). - Update
project-state.md: artifactresource-plan.mdstatus → "draft".
Templates
| File | Purpose |
|---|---|
templates/resource-plan-ru.md | Artifact schema (RU) |
templates/resource-plan-en.md | Artifact schema (EN) |
Dependencies
Reads:
02-planning/project-plan.md— phases, durations, key activitiesinput/team-list.md— roles, FTE allocation, rates, external resources01-initiation/project-charter.md— project name, PM, GTM scope01-initiation/preliminary-estimate.xlsx— aggregated team costs (optional fallback)input/constraints.md— resource constraints (optional)
Passes data to:
generate-budget(#9) — FTE, rates, person-months per phase → cost calculation
Constraints
- Mode B: resource plan is a draft for PM review, not a final document
- Does not build a task schedule or WBS — use generate-project-plan
- Does not calculate the project budget — use generate-budget
- FTE values are taken from team-list.md; the skill does not validate them against calendar capacity or workday availability
- Internal team rates marked "—" are left blank in cost columns — this is intentional
- Operates on one project per invocation
- If project-plan.md is unavailable — skill does not run; no fallback