generate-project-plan
Skill6 starsChanged 7 months agoMITView on GitHub
Generates a project plan from the approved charter, scope, and optional duration/resource estimates. The plan is the first artifact of the Planning phase. Once approved, it unlocks: generate-risk-register (mode: detailed) and generate-comm-plan (can run in parallel). Accepts both structured estimates and free-form descriptions. Triggers RU: «сформируй план проекта», «подготовь план», «составь project plan», «нужен план проекта». Triggers EN: 'generate project plan', 'create project plan', 'build plan', 'prepare project plan'.
In this repository20 other files it gives its agents.
- coordinate-executorsSkill
- coordinate-meetingSkill
- generate-approval-letterSkill
- generate-budgetSkill
- generate-change-impactSkill
- generate-charterSkill
- generate-checklistSkill
- generate-closure-reportSkill
- generate-comm-planSkill
- generate-comparison-tableSkill
- generate-estimateSkill
- generate-meeting-protocolSkill
- generate-plan-fact-reportSkill
- generate-questionnaireSkill
- generate-resource-planSkill
- generate-response-planSkill
- generate-risk-registerSkill
- generate-stakeholder-mapSkill
- monitor-progressSkill
- send-emailSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. About 0 are common, 15 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈15
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 11
If the request is in Russian → use templates with -ru suffix
- Distinctive: line 14
All output (headings, labels, comments, instructions) must match the detected language.
- Distinctive: line 32
If no charter is available — request it (system-prompt-draft.md §3 p.2):
- Distinctive: line 45
Validate inputs: Check for an approved charter.
- Distinctive: line 47
Check data for conflicts: If charter dates conflict with user-provided duration estimates — do NOT resolve independently.
- Distinctive: line 50
Use user-provided estimates if available.
- Distinctive: line 51
If no estimates — assess based on: scope volume, resource count, comparable projects, charter constraints.
- Distinctive: line 57
Use availability data if provided.
- Distinctive: line 58
If not — take team from charter (section 5), distribute across WPs by role, treat load as uniform.
- Distinctive: line 68
Do not include system paths.
- Distinctive: line 131
Verify: no circular dependencies (A→B→C→A).
- Distinctive: line 132
Every dependency from the WP table must appear here.
- Distinctive: line 135
Assumptions: all agent assumptions (duration estimates, resource allocation, priorities).
- Distinctive: line 147
Use provided load data if available.
- Distinctive: line 148
If not — distribute evenly across WPs, mark as assumption.
- Distinctive: line 191
Before presenting the output to the user — verify:
- Very specific: line 226
After the plan is approved, the user must upload project-plan.md to project knowledge so dependent skills can access it.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
generate-project-plan
Language Detection
Determine the language of the user's request:
- If the request is in Russian → use templates with
-rusuffix - Otherwise → use templates with
-ensuffix
All output (headings, labels, comments, instructions) must match the detected language.
Triggers
Russian: «сформируй план проекта», «подготовь план», «составь project plan», «нужен план проекта» English: "generate project plan", "create project plan", "build plan", "prepare project plan"
1. Inputs
| Data | Required | Source | Notes |
| Project charter (project-charter.md) | yes | knowledge or chat | Approved charter. Extract: goal, scope, dates, budget (if present), team, constraints, top-3 risks |
| Duration estimates | no | chat or knowledge | Work package estimates from the user. If absent — agent estimates and marks as assumption |
| Team availability data | no | chat or knowledge | Load by period, constraints (vacations, part-time). If absent — agent distributes evenly, marks as assumption |
| Additional inputs | no | chat | Priorities, external dependencies, technical constraints not included in the charter |
If no charter is available — request it (system-prompt-draft.md §3 p.2):
A project plan requires an approved charter (project-charter.md).
Available data: [list what is available].
Charter status: [not started / draft / approved].
If the charter has not been created yet — start with generate-charter.2. Execution Algorithm
- Validate inputs. Check for an approved charter. Not found → request per §1 template. Do NOT generate a plan without a charter — this breaks the dependency chain. Found → step 2.
- Extract data from the charter. Break down by category: goal, scope (included/excluded), dates (start/end), budget (if specified), team, constraints, risks. Record gaps.
- Check data for conflicts. If charter dates conflict with user-provided duration estimates — do NOT resolve independently. List discrepancies, ask which takes precedence. Exception: if the user explicitly clarifies in chat — use the clarification.
- Decompose scope into work packages (WP). Each deliverable from the charter's "Included" section → one or more WPs. Granularity: a WP is a group of related tasks with a single output. Do NOT decompose to individual tasks — that is Jira level. Assign each WP an ID (WP-001, WP-002, etc.). Group WPs by project phase. After decomposition, count total WPs: if >20 — consolidate adjacent packages within the same phase. WP count must be ≤ 20 for MVP. If consolidation would lose meaning — record as assumption and proceed to step 5.
- Set duration for each WP.
- Use user-provided estimates if available.
- If no estimates — assess based on: scope volume, resource count, comparable projects, charter constraints. Mark each such estimate as assumption.
- Unit: project ≤ 3 months → working days (wd); project > 3 months → weeks (wk). Unit must be consistent within one plan. 1 wk = 5 wd.
- Verify: sum of critical path durations (accounting for maximum parallelism) ≤ total project duration from charter. If it doesn't fit — record as issue, propose options (parallel execution / scope reduction / resource increase / date shift). Do NOT generate WP dates beyond the charter end_date. If unavoidable — mark affected WPs with
[⚠ exceeds deadline]and require a decision from the user before finalizing.
- Identify dependencies between WPs. For each related WP pair: dependency type (FS / SS / FF). FS is the default if the relationship is not explicit. Verify no circular dependencies.
- Define milestones. A milestone is a checkpoint marking the achievement of a significant result. A milestone is NOT a task — it has zero duration. It answers "what must be done by this point", not "what needs to be done". What counts as a milestone: phase completion (all WPs in phase closed); delivery of a key deliverable to the customer; external event the project depends on (approval, procurement, integration); go/no-go decision point. What does NOT count as a milestone: completion of a routine WP that is not a deliverable; internal intermediate results without external review; recurring events (weekly status, sprint reviews). Milestones from the charter (section 3) — must be included. ID: M1, M2, etc. Minimum: 3 milestones (start, mid, finish). Maximum: one per phase + key deliverables.
- Fill the resource map.
- Use availability data if provided.
- If not — take team from charter (section 5), distribute across WPs by role, treat load as uniform. Mark as assumption.
- Period columns — actual project months (not fixed).
- Read the template
project-plan-ru.md(orproject-plan-en.md) from project knowledge. - Fill the template per the rules in section 3.
- Validate the output using the checklist (section 5).
- Present the output in chat. Format (system-prompt-draft.md §3 p.4):
- What was done: "Project plan generated based on [list sources]."
- Assumptions: list all (duration estimates, resource allocation, etc.).
- Issues: if found (schedule overrun, insufficient resources).
- What is required: "Approve, provide comments, or reject."
- Do not include system paths. Use file name only: "Plan saved as project-plan.md."
- Wait for user response (system-prompt-draft.md §3 p.5).
- Approval → generate final version.
- Comments → revise, show updated version. After 3rd iteration — ask: "Continue revising or finalize the current version?"
- After approval:
- Propose text for the user to insert into log.md and project-state.md (system-prompt-draft.md §11).
- Notify: "Project plan approved. The following tasks are now available (can run in parallel): generate-risk-register (detailed risk register) and generate-comm-plan (communications plan). Which one to start?" (system-prompt-draft.md §7).
3. Section Fill Rules
Header Metadata
Version: 1.0Date: current generation date.File:project-plan.mdDocument status:draft(on generation). After approval —approved.Source: list documents used to generate the plan.
"Project Summary" Section
- Fill from the charter. Fields
Project goal,Dates,Team,Customer,PM— required. Project goal— from charter section 1 (verbatim or condensed).Dates— start_date and end_date from charter; duration — calculate.Budget— from charter section 4 (total amount). If not specified — enter: "not defined". The plan is generated without budget data. This does not block generation.Team— headcount from charter section 5.CustomerandPM— from charter sections 5/8.
"Phases and Work Packages" Section
Table is the core of the plan.
| Column | Rule |
| ID | Unique code: WP-001, WP-002, etc. Sequential numbering |
| Phase | Phase name (Initiation, Planning, Development, etc.). Group WPs by phase |
| Work package | Group of related tasks with a single output. NOT an individual task — task-level detail belongs in Jira |
| Owner | Role or name from charter team |
| Duration | Unit selected by project duration: ≤ 3 months → working days (wd); > 3 months → weeks (wk). Consistent unit throughout the plan. Use suffix: "5 wd" or "2 wk". Calculation: 1 wk = 5 wd |
| Start / End | YYYY-MM-DD. Calculate from dependencies and duration. First WP start ≥ charter start_date. Last WP end ≤ charter end_date |
| Dependencies | IDs of predecessor work packages. "—" if none |
- Minimum WPs: one per deliverable from the charter.
- Maximum WPs: no more than 20 for MVP. Consolidate if exceeded.
"Milestones" Section
| Column | Rule |
| ID | M1, M2, etc. |
| Milestone | Checkpoint — event marking the achievement of a significant result. Zero duration |
| Date | YYYY-MM-DD. Matches the end date of the corresponding WP or phase |
| Completion criterion | Specific, verifiable condition. Format: "[artifact/result] [action] [by whom]". Example: "Prototype accepted by customer", "API deployed to staging and passed smoke tests" |
| Status | On generation: not achieved. Allowed values: not achieved / achieved / overdue |
"Dependencies" Section
Table details the relationships from the WP table's Dependencies column.
| Column | Rule |
| Source block | ID of WP that must finish/start |
| Target block | ID of WP that depends on the source |
| Type | FS (Finish-to-Start) — default; SS (Start-to-Start); FF (Finish-to-Finish) |
| Comment | Explanation of the relationship. Required for SS and FF types |
- Verify: no circular dependencies (A→B→C→A).
- Every dependency from the WP table must appear here.
"Assumptions and Constraints" Section
- Assumptions: all agent assumptions (duration estimates, resource allocation, priorities). One item per line.
- Constraints: from charter (section 6) + identified during planning.
"Resource Map" Section
| Column | Rule |
| Team member | Name from team roster |
| Role | Role from charter |
| Period columns | Project months (adapt to actual dates). Load in % of full working time |
| Constraints / Notes | Vacations, part-time, outsourcing, dual roles |
- Use provided load data if available.
- If not — distribute evenly across WPs, mark as assumption.
- Total load per person per period must not exceed 100% (record as issue if exceeded).
4. Placeholder Table
Placeholders
{{}}in the template are fill-in guides, not auto-substitution variables. Replace each with the corresponding value from the inputs.
| Placeholder | Required | Source | Allowed values |
{{project_name}} | yes | charter | text |
{{version}} | yes | agent | "1.0" on creation |
{{date}} | yes | system | YYYY-MM-DD |
{{doc_status}} | yes | agent | draft / pending approval / approved / revision |
{{source_docs}} | yes | agent | list of input documents |
{{project_goal}} | yes | charter, section 1 | text |
{{start_date}} | yes | charter, section 3 | YYYY-MM-DD |
{{end_date}} | yes | charter, section 3 | YYYY-MM-DD |
{{duration}} | yes | agent (calculate) | "N weeks" or "N months" |
{{budget}} | no | charter, section 4 | number + currency or "not defined" |
{{team_size}} | yes | charter, section 5 | number |
{{customer}} | yes | charter, sections 5/8 | name |
{{pm}} | yes | charter, sections 5/8 | name |
{{phase_name}} | yes (≥1) | agent | project phase name |
{{work_package}} | yes (≥1) | agent / scope | work package description |
{{owner}} | yes | charter / team | role or name |
{{wp_duration}} | yes | user / assumption | number + "wd" or "wk" |
{{wp_start}} | yes | agent (calculate) | YYYY-MM-DD |
{{wp_end}} | yes | agent (calculate) | YYYY-MM-DD |
{{wp_dependency}} | no | agent | WP ID or "—" |
{{milestone_name}} | yes (≥3) | charter + agent | milestone name |
{{done_criteria}} | yes | agent | completion condition: "[result] [action] [by whom]" |
{{assumption_N}} | no | agent | assumption text |
{{constraint_N}} | yes (≥1) | charter | constraint text |
{{name_N}} | no | charter / team | team member name |
{{role_N}} | no | charter / team | role |
{{load_period}} | no | data / assumption | number (% load) |
5. Validation Checklist
Before presenting the output to the user — verify:
- Charter used as primary source (no fabricated data)
- All required placeholders replaced with values
- No
{{}}placeholders remain in the text - Every deliverable from the charter is covered by at least one WP
- Dates are consistent: start_date ≤ WP dates ≤ end_date
- No circular dependencies between WPs
- Charter milestones included; milestone dates match the end of corresponding WPs/phases
- Each milestone meets the criteria from §2 p.7: marks phase completion, deliverable handoff, external event, or go/no-go. No "false milestones" (routine WP completion, recurring events)
- Completion criterion for each milestone is specific and verifiable (contains artifact/result + action + by whom)
- Sum of durations (accounting for parallelism) ≤ total project duration. If not — recorded as issue
- Duration unit is consistent throughout the plan (wd or wk) and follows the rule: ≤ 3 months → wd, > 3 months → wk
- Each resource load ≤ 100% per period (or issue is recorded)
- All agent assumptions listed in the Assumptions section
- Document status =
draft - File:
project-plan.mdlisted in the header
6. Dependencies
Consumes (input):
project-charter.md(approved) — from skillgenerate-charter- Optional: duration estimates and team availability data from the user
Produces (output): project plan → consumed by skills (system-prompt-draft.md §7):
generate-risk-register(mode: detailed) — phase 2, Planning (parallel with comm-plan)generate-comm-plan— phase 2, Planning (parallel with risk-register)generate-resource-plan— phase 2 (Product 1, not MVP)monitor-progress— phases 4–5 (Product 1)generate-plan-fact-report— phase 6coordinate-executors— phases 3, 5 (Product 1)generate-checklist— phases 5, 6 (Product 1)
After the plan is approved, the user must upload project-plan.md to project knowledge so dependent skills can access it.
7. Example Invocation
User command:
Generate a project plan. The charter is approved and uploaded to knowledge. I don't have duration estimates for work packages — assess based on scope.
Agent response (after generation):
Project plan "[name]" generated based on: project charter (project-charter.md).
Assumptions:
- Duration of all work packages estimated by the agent based on scope volume and team composition.
- Team load distributed evenly (no availability data provided).
- Phase priority: Development → Testing → Launch (standard order for IT projects).
Issues:
- [Name]'s load exceeds 100% in May (WP-005 + WP-007 in parallel). Options: shift WP-007 to June or add a resource.
Required: approve, provide comments, or reject.
[plan text]
Changelog
| Date | Version | Change |
| 2026-03-25 | 1.0 | Skill created. Algorithm: 14 steps. Hybrid duration estimation model. Resource map with fallback to charter data. Milestone definition criteria. Budget is optional |
| 2026-03-26 | 1.1 | §2 p.4: added explicit WP counter — verify ≤20 after decomposition, consolidate adjacent packages if exceeded. §2 p.5: clarified behavior on date conflict — do NOT generate dates beyond end_date; mark affected WPs with ⚠ and require user decision |
| 2026-03-29 | 1.2 | Translated to English. Added Language Detection block and bilingual triggers |
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
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.

