Greetings, brave Scribe of the Digital Realm! You stand at the threshold of an ancient artโthe distillation of scattered signals into crystalline Product Requirements. In ages past, Product Managers toiled endlessly, their PRDs growing stale mere moments after quill touched parchment. But you shall learn the secrets of the PRD MACHINEโan autonomous oracle that writes, maintains, and evolves perfect PRDs faster than any mortal hand.
This quest will transform you from a weary documentarian into a master of living documentation, wielding automated tools that ensure your requirements never decay, your conflicts are always surfaced, and your product vision remains forever clear.
In the early days of software development, requirements lived in dusty scrollsโWord documents buried in SharePoint crypts, Confluence pages forgotten by time, and email chains lost to the void. Product teams would spend countless hours writing PRDs that became obsolete before the ink dried.
Then came the prophecy of Signal-Driven Documentation: โLet the code speak. Let the commits testify. Let the machine distill reality into requirements.โ
The PRD MACHINE was forged in this visionโa tool that transforms repository signals (commits, markdown files, feature definitions) into a living PRD that stays fresh, detects conflicts automatically, and integrates seamlessly with CI/CD pipelines.
Today, you shall master this ancient artifact.
By the time you complete this epic journey, you will have mastered:
sync, status, and conflicts with confidenceYouโll know youโve truly mastered this quest when you can:
This ๐ก Medium quest expects:
The PRD MACHINE operates through Docker containers, ensuring consistent behavior across all realms. Choose your platform path below.
# Verify Docker is installed and running
docker --version
docker info
# Navigate to your repository
cd /path/to/your/repository
# If using IT-Journey repository
cd ~/github/it-journey
# Build the PRD Machine container
docker compose build prd-machine
# Run your first PRD sync
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine sync
# Check PRD health
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine status
macOS users with Homebrew can ensure Docker Desktop is installed:
brew install --cask docker
open /Applications/Docker.app
# Verify Docker Desktop is running
docker --version
docker info
# Navigate to your repository (PowerShell)
cd C:\Users\YourName\github\it-journey
# Build the PRD Machine container
docker compose build prd-machine
# Run your first PRD sync
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine sync
# Check PRD health
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine status
Windows users should ensure WSL2 backend is enabled in Docker Desktop settings.
# Verify Docker is installed
docker --version
docker compose version
# Ensure your user is in the docker group
sudo usermod -aG docker $USER
# (Log out and back in if needed)
# Navigate to repository
cd ~/github/it-journey
# Build and run PRD Machine
docker compose build prd-machine
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine sync
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine status
# Cloud environments typically have Docker pre-installed
# Open terminal in your cloud IDE
# Navigate to repository root
cd /workspaces/it-journey # Codespaces path
# Build and run PRD Machine
docker compose build prd-machine
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine sync
Cloud environments provide zero-setup Docker access, ideal for quick experimentation.
Before wielding the PRD MACHINE, you must understand its structureโthe ten sacred sections that form the backbone of every perfect PRD.
Every PRD generated by the machine contains these sections, each serving a distinct purpose:
| Section | Name | Purpose |
|---|---|---|
| 0 | WHY | Mission statement and Key Feature Indicator (KFI) |
| 1 | MVP | Minimum Viable Promise with signal status |
| 2 | UX | User experience flow with diagrams |
| 3 | API | CLI commands and interface documentation |
| 4 | NFR | Non-functional requirements with metrics |
| 5 | EDGE | Edge cases, dependencies, gotchas |
| 6 | OOS | Out of scope - what we explicitly DONโT do |
| 7 | ROAD | Roadmap with milestones and status |
| 8 | RISK | Top risks with mitigation strategies |
| 9 | DONE | Definition of done and success criteria |
Traditional PRDs are written once and decay over time. Signal-driven PRDs are different:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SIGNAL-DRIVEN PRD โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ Git Commits โโโ โ
โ โ โ
โ ๐ Markdown โโโโโโผโโโบ PRD MACHINE โโโบ Living PRD.md โ
โ โ โ
โ โ๏ธ Features โโโโโโ โ
โ โ
โ Key Principle: The machine reads reality, not opinions โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Why Signal-Driven?
Now you shall learn the three sacred commands that control the PRD MACHINE.
sync - Generate or Update PRDThe sync command is the heart of PRD Machine. It:
# Basic sync (uses last 30 days of commits)
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine sync
# Sync with custom history window
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine sync --days 7
# Sync to custom output path
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine sync --output /tmp/custom-prd.md
Expected Output:
[HH:MM:SS] [HEADER] โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[HH:MM:SS] [HEADER] PRD MACHINE - Generating PRD.md
[HH:MM:SS] [HEADER] โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[HH:MM:SS] [INFO] Ingesting git commits from last 30 days...
[HH:MM:SS] [SUCCESS] Ingested 60 commits
[HH:MM:SS] [INFO] Ingesting markdown files...
[HH:MM:SS] [SUCCESS] Ingested 81 markdown files
[HH:MM:SS] [INFO] Ingesting feature definitions...
[HH:MM:SS] [SUCCESS] Ingested 1 features
[HH:MM:SS] [INFO] Detecting conflicts in requirements...
[HH:MM:SS] [WARNING] Detected 4 potential conflicts
[HH:MM:SS] [SUCCESS] PRD generated successfully: /app/PRD.md
[HH:MM:SS] [INFO] Total signals processed: 146
status - Check PRD HealthThe status command monitors PRD freshness:
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine status
Expected Output:
[HH:MM:SS] [HEADER] โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[HH:MM:SS] [HEADER] PRD MACHINE - Status
[HH:MM:SS] [HEADER] โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
[HH:MM:SS] [INFO] PRD Path: /app/PRD.md
[HH:MM:SS] [INFO] Last Modified: 2025-11-29T06:40:21.138097+00:00
[HH:MM:SS] [INFO] Age: 0.0 hours
[HH:MM:SS] [SUCCESS] Health: HEALTHY
Health Status Levels:
| Status | Age | Indicator | Action |
|---|---|---|---|
| HEALTHY | < 6 hours | โ | None needed |
| STALE | 6-24 hours | โ ๏ธ | Run sync soon |
| OUTDATED | > 24 hours | โ | Run sync immediately |
conflicts - Detect Requirement ConflictsThe conflicts command analyzes signals for contradictions:
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine conflicts
Expected Output:
[HH:MM:SS] [INFO] Ingesting git commits from last 30 days...
[HH:MM:SS] [SUCCESS] Ingested 60 commits
[HH:MM:SS] [INFO] Detecting conflicts in requirements...
[HH:MM:SS] [WARNING] Detected 4 potential conflicts
[HH:MM:SS] [WARNING] Found 4 conflicts:
- [fix] Bug fix suggests incomplete requirement: fix(quest): correct invalid...
Resolution: Consider if original requirement needs clarification
- [fix] Bug fix suggests incomplete requirement: fix: replace invalid...
Resolution: Consider if original requirement needs clarification
Conflict Types:
| Type | Description | Resolution Strategy |
|---|---|---|
revert |
A change was undone | Review original intent |
fix |
Bug fix indicates gaps | Update requirements |
contradiction |
Conflicting signals | Human arbitration needed |
--days 7 do in the sync command?fix conflict type indicate?Run all three commands in sequence and verify outputs:
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine sync
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine status
docker compose run --rm prd-machine ./scripts/prd-machine/prd-machine conflicts
Understanding where signals come from unlocks the true power of automated documentation.
flowchart TD
subgraph "Signal Sources"
GIT[๐ Git Commits]
MD[๐ Markdown Files]
FEAT[โ๏ธ features.yml]
end
subgraph "PRD Machine Processing"
INGEST[Signal Ingestion]
PARSE[Frontmatter Parsing]
CONFLICT[Conflict Detection]
GEN[PRD Generation]
end
subgraph "Output"
PRD[๐ PRD.md]
end
GIT --> INGEST
MD --> INGEST
FEAT --> INGEST
INGEST --> PARSE
PARSE --> CONFLICT
CONFLICT --> GEN
GEN --> PRD
The machine analyzes commit messages for:
feat:, fix:, docs:, etc.Best Practices for Commit Signals:
# Good - provides clear signal
feat(auth): add two-factor authentication
Implements TOTP-based 2FA with SMS fallback for enhanced security.
Closes #123
# Also good - indicates potential requirement gap
fix(login): prevent crash on empty input
Fixed null pointer exception when email field is empty.
Added input validation before API call.
Closes #456
The machine scans for:
_quests/, _posts/, docs/)Signal-Rich Frontmatter Example:
---
title: "Docker Mastery Quest"
description: "Complete guide to containerization"
tags:
- docker
- devops
- containers
categories:
- Quests
- Infrastructure
difficulty: "๐ก Medium"
---
Located at features/features.yml:
features:
- name: "PRD Machine"
status: "implemented"
description: "Autonomous PRD generation"
category: "automation"
Apply your knowledge through these hands-on challenges.
Objective: Generate your first complete PRD
Requirements:
prd-machine sync successfullySuccess Criteria:
Bonus Points:
--days 7 vs default 30 daysObjective: Understand PRD freshness monitoring
Requirements:
prd-machine status immediately after syncSuccess Criteria:
Objective: Interpret and act on detected conflicts
Requirements:
prd-machine conflictsSuccess Criteria:
Bonus Points:
Objective: Set up automated PRD freshness
Requirements:
.github/workflows/prd-sync.ymlSuccess Criteria:
See where this quest fits in your learning journey.
flowchart LR
subgraph "Prerequisites"
A[lvl-0001<br>Docs in a Row]
B[lvl-0010<br>Jekyll Mermaid]
end
subgraph "Current Quest"
C[lvl-0011<br>PRD Codex]
end
subgraph "Unlocks"
D[lvl-0100<br>Advanced Automation]
E[lvl-0101<br>CI/CD Mastery]
end
A --> C
B --> C
C --> D
C --> E
style C fill:#gold,stroke:#333,stroke-width:3px
The complete PRD Machine processing pipeline.
sequenceDiagram
participant User
participant CLI as PRD Machine CLI
participant Git as Git Repository
participant MD as Markdown Files
participant Feat as features.yml
participant PRD as PRD.md
User->>CLI: prd-machine sync
CLI->>Git: git log --since=30 days
Git-->>CLI: 60 commits
CLI->>MD: glob pages/**/*.md
MD-->>CLI: 81 markdown files
CLI->>Feat: read features/features.yml
Feat-->>CLI: 1 feature
CLI->>CLI: detect_conflicts()
CLI->>PRD: write PRD.md
PRD-->>User: โ
PRD generated successfully
Before claiming victory, verify:
PRD.md exists with all 10 sectionsAnswer these questions to confirm mastery:
fix: commit indicate as a signal?
| Issue | Cause | Solution |
|---|---|---|
| โPermission deniedโ | Script not executable | chmod +x scripts/prd-machine/prd-machine |
| โNo commits foundโ | Empty git history | Ensure repo has commits in date range |
| โPRD not foundโ | First run | Run sync before status |
| Docker errors | Container not built | Run docker compose build prd-machine |
Upon completing this quest, youโve earned:
| Reward | Description |
|---|---|
| ๐ PRD Codex Master | Mastered the 10-section PRD architecture |
| โก Signal Distiller | Can transform repo signals into documentation |
| ๐ Requirements Architect | Understands living documentation principles |
| ๐ Conflict Detective | Can identify and resolve requirement conflicts |
Based on your new skills, consider:
| Resource | Link | Purpose |
|---|---|---|
| PRD Machine README | scripts/prd-machine/README.md |
Quick reference |
| PRD Machine Docs | docs/scripts/PRD_MACHINE.md |
Full documentation |
| IT-Journey PRD | PRD.md |
Live example |
| Resource | Type | Value |
|---|---|---|
| Conventional Commits | Spec | Signal-rich commit messages |
| Living Documentation | Book | Philosophy reference |
| GitHub Actions | Docs | CI/CD integration |
| Resource | Type | Purpose |
|---|---|---|
| IT-Journey Discord | Community | Get help and share progress |
| GitHub Discussions | Forum | Technical questions |
| r/ProductManagement | Industry perspectives |
This quest was developed with AI assistance. Hereโs how:
After completing this quest, remember to:
pages/_quests/README.md with this quest entryBefore marking this quest complete:
| Metric | Target | Purpose |
|---|---|---|
| Quest completion rate | >70% | Measure accessibility |
| Average completion time | 45-60 min | Validate estimate |
| Conflict resolution rate | >50% | Track actionable learning |
| Follow-up quest starts | >30% | Measure engagement |
Congratulations, brave Scribe! You have mastered the PRD Codex and unlocked the power of living documentation. Your PRDs shall never again grow stale, your conflicts shall always surface, and your product vision shall remain forever clear.
Reality fully armed. The distillery now distills distilleries. ๐
Quest Complete? Mark your progress and share your PRD generation story in the IT-Journey community!