Automating PRDs to GitHub Issues: How Reasoning Models Saved Me a Ton of Time

Have you ever struggled with creating a comprehensive Product Requirements Document (PRD) and then translating it into actionable GitHub issues? Let me share how I leveraged a reasoning model like o1 or o3-mini to generate a detailed PRD that covered all possible edge cases.

Step 1: Generating the PRD

I started by asking my reasoning model clarifying questions. Through an iterative process, we developed a comprehensive PRD that addressed:

  • The purpose and background of the project
  • Key features like secure authentication, real-time streaming functionality, and history management
  • The technology stack, including a modern frontend framework and a robust backend service
  • Deployment details and potential future enhancements

Once the PRD was refined, I saved it as PRD.md. And remember, LLMs Love Markdown – or as I like to joke, LLM stands for "LLMs Love Markdown!"

Step 2: Converting the PRD into GitHub Issues

The next step was breaking down the PRD into actionable GitHub issues. I fed the PRD and the GitHub CLI schema (referenced from the gh issue create --help command) into my reasoning model. The model then generated a detailed list of GitHub issues ensuring every crucial detail—such as assignee and milestone assignments—was included.

The generated issues ranged from initial project setup to the deployment process. Here's an excerpt of what the GitHub CLI commands looked like:

gh issue create --title "Project - Initial Monorepo Setup" --body "Set up the initial monorepo structure with frontend and backend directories. Initialize the git repository, add necessary configuration files, and set up basic documentation as outlined in the PRD.

References:

- Starter template reference: [link]
- Chatbot template reference: [link]" --assignee your-username --milestone "Project Release 1.0"

And it continued with additional issues for both frontend and backend tasks.

Step 3: Bulk Creating the Issues with a Bash Script

Once the issues list was validated, I had the reasoning model generate a bash script to run all these GitHub CLI commands in bulk. Running the script automatically created 16 issues, saving me a tremendous amount of manual work.

Note: The bash script was crafted by Claude 3.5 Sonnet, my preferred coding model.

Below is the final bash script that generated these issues:

#!/bin/bash

# Ensure we're in the correct directory
cd "$(dirname "$0")"

echo "Creating issues for Project Release 1.0..."

# Setup & Infrastructure Issues
echo "Creating Setup & Infrastructure issues..."
gh issue create --title "Project - Initial Monorepo Setup" --body "Set up the initial monorepo structure with frontend and backend directories. Initialize the git repository, add necessary configuration files, and set up basic documentation as outlined in the PRD.

References:

- Starter template reference: [link]
- Chatbot template reference: [link]" --assignee your-username --milestone "Project Release 1.0"

# Frontend Issues
echo "Creating Frontend issues..."
gh issue create --title "FE - Setup React + Vite Frontend Project" --body "Set up a new React + Vite project using TypeScript. Utilize modern UI components and styling libraries, and use an efficient package manager. This project will serve as the frontend for the application.

References:

- Frontend framework guide: [link]
- Package manager documentation: [link]" --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "FE - Implement Authentication & Login Flow" --body "Integrate secure authentication to protect the frontend. Ensure that only authorized users can log in and that token handling is properly established." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "FE - Design Chat UI and Integrate Real-Time SDK" --body "Design the chat interface, including a message area for real-time streaming responses and an input box. Integrate the relevant SDK to enable real-time communication." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "FE - Implement Token Passing for Backend Requests" --body "Ensure that every request from the frontend to the backend includes a secure token. This is critical for authentication and secure backend communication." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "FE - Model Selection UI Component" --body "Develop a UI component that allows users to select from various supported models. The selected model should be integrated with the chat requests." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "FE - Deploy Frontend to Static Site Service" --body "Build the React + Vite static site and deploy it to a static site hosting service. Ensure that deployment configurations and environment variables are set correctly." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "FE - Convert Existing Chat History Component" --body "Adapt an existing chat history component to work with the new frontend setup. Update it to integrate with the backend service while preserving the current user experience.

References:

- Component reference: [link]
- Frontend framework guide: [link]" --assignee your-username --milestone "Project Release 1.0"

# Backend Issues
echo "Creating Backend issues..."
gh issue create --title "BE - Setup Python FastAPI Backend Project" --body "Set up a new FastAPI backend project using Python 3.12. Integrate a database ORM for managing history and utilize an efficient dependency management tool. This lays the foundation for the backend service.

References:

- API framework documentation: [link]
- ORM documentation: [link]" --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "BE - Implement Token Validation for Backend" --body "Develop middleware in the FastAPI backend to validate secure tokens. Return appropriate error responses if the token is invalid, expired, or missing." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "BE - Create /chat Endpoint for Real-Time Communication" --body "Develop a POST endpoint for receiving user messages and model selections. The endpoint should stream responses and update the conversation history in the database." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "BE - Implement Chat History CRUD Endpoints" --body "Develop CRUD endpoints for managing chat history:

- GET history: Return a list of previous sessions.
- GET session details: Return messages for a specific conversation.
- DELETE a session (optional): Delete a specific conversation.
Integrate these endpoints with the database as specified in the PRD." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "BE - Setup Database Integration with ORM" --body "Configure the database integration using an ORM. Set up migration tools to manage schema changes for the backend as required by the PRD." --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "BE - Integrate Model Provider API Calls" --body "Implement integrations for model providers. Based on user selections, make the appropriate API calls and stream responses as required.

References:

- SDK documentation: [link]
- Streaming API guide: [link]" --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "BE - Provide Dockerfile for Containerized Backend" --body "Create a Dockerfile for the FastAPI backend. Reference existing examples and update it to use the modern dependency management tool and Python 3.12. Ensure the container is optimized for deployment.

References:

- Dockerfile best practices: [link]" --assignee your-username --milestone "Project Release 1.0"

gh issue create --title "BE - Deploy Backend to Containerized Service" --body "Set up a service for the containerized FastAPI backend. Configure automatic rebuilds and redeployments on pushes. Ensure that environment variables such as database connection URLs and API keys are correctly set.

References:

- Deployment documentation: [link]" --assignee your-username --milestone "Project Release 1.0"

echo "All issues have been created!"

Run this script, and you'll see all 16 issues created automatically – saving you countless hours of manual work.


Using a reasoning model to guide both the PRD creation and the detailed GitHub issue generation process—and then automating everything via a bash script—can transform the way you develop and manage projects.

So next time you're overwhelmed with PRD and issue creation tasks, remember: LLMs Love Markdown, and they'll help turn chaos into a clear, actionable plan in no time!

Happy coding!

As always feel free to connect with me on LinkedIn or follow me on X @groffdev.