Thanks for your interest in contributing! PM Coach is an open-source project and we welcome contributions of all kinds.
Found a bug in a script? Dashboard not generating correctly? Open an issue with:
- What you expected to happen
- What actually happened
- Your environment (OS, shell version, jq version)
- Steps to reproduce
Have a framework that's missing from data/frameworks/? Submit a PR with:
- A new
.mdfile following the existing format - Title, purpose, and "Best for" section
- Core concepts with clear explanations
- A worked example
- "How to Use in Interviews" section
- "When NOT to Use" section
- Target length: 80-150 lines
Ideas for better teaching approaches? New techniques? Submit PRs to:
learning/pedagogy/approaches.md— New techniques or approach improvementslearning/pedagogy/expert-personas.md— New expert personas
All scripts should:
- Work with just
bashandjq(no additional dependencies for pure-computation scripts) - Use
set -euo pipefailat the top - Detect the workspace via
BASH_SOURCE - Handle missing files gracefully
- Include a usage comment at the top
Improvements to docs, README, examples, and guides are always welcome.
git clone https://github.com/your-username/pm-coach.git
cd pm-coachgit checkout -b feature/my-improvement- Follow the existing code and documentation style
- Test scripts on both macOS and Linux if possible
- Don't include personal data, API keys, or proprietary content
# For script changes: run the script
./scripts/update-dashboard.sh
# For track changes: verify JSON is valid
jq . learning/tracks/*/track.json > /dev/null
# For documentation: check links aren't brokenPush your branch and open a PR with:
- A clear description of what you changed and why
- Any testing you did
- Screenshots of dashboard/output if relevant
#!/bin/bashshebangset -euo pipefail- Workspace detection:
WORKSPACE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" - Comments for non-obvious logic
- Echo progress with emoji prefixes (
📊,✅,❌, etc.) - Handle BSD (macOS) and GNU (Linux) differences in
date,stat, etc.
- 2-space indentation
- Consistent field ordering (follow existing track.json files)
- All dates in
YYYY-MM-DDformat - Scores as integers (0-100)
- ATX headers (
#,##,###) - Tables for structured comparisons
- Code blocks with language hints
- Horizontal rules (
---) between major sections - "How to Use in Interviews" section in every framework doc
- Contribute original content or properly attributed public-domain knowledge
- Include practical examples and worked scenarios
- Write for an audience of practicing or aspiring PMs
- Keep framework docs actionable (not just theoretical)
- Include content from paid courses, books, or proprietary materials
- Add personal data (names, emails, phone numbers)
- Include API keys, credentials, or secrets
- Submit content generated entirely by AI without review and editing
Open an issue tagged question and we'll get back to you.