Structure your project for AI-driven development without losing clarity, documentation rigor, and release discipline.
- Fill out problem + requirements + use-cases first.
- Then define domain + business rules.
- Only then move to architecture + database + API.
- UI comes after backend contracts are clear.
- Build a release TODO list and transfer it to JSON to generate GitHub issues for release management.
Tools like ChatGPT, Claude, and autonomous agents work better when:
- Context is explicit.
- Rules are clear.
- The domain is modeled.
This template turns your project into something AI can understand and evolve.
/docs
├── 1-problem.md
├── 2-requirements.md
├── 3-use-cases.md
├── 4-domain.md
├── 5-business-rules.md
├── 6-architecture.md
├── 7-database.md
├── 8-api.md
├── 9-ui.md
├── 10-changelogs.md
├── todo.md
└── github-issues-data-template.json- Problem description
- Target audience
- Why this matters
- Existing solutions and gaps
Functional
- User can create an account
- User can generate a reportNon-functional
- Response time < 300ms
- Authentication required
- Privacy/security compliance5-15 use cases can already define most of the system. Simple format:
[UC-01] Create project
Actor: User
Flow:
1. User submits name
2. System creates project
Result: Project is availableSimple text or diagram. List entities and relationships:
User
- id
- email
Project
- id
- name
- user_id
User 1:N ProjectThe real business logic belongs here:
- User can only access their own projects
- Project name must be unique per user
- Invoice sums all time entriesHigh-level technical decisions:
- Tech stack
- Type: Monolith / microservices
- Layers: Controller -> Service -> Repository -> DB
- Data flow:
Frontend -> API -> Service -> DB- External integrations: payments, email, etc.
Based on domain + rules. Can include data types, indexes, and constraints:
users
- id
- email
- password
projects
- id
- name
- user_idDefine clear endpoints:
POST /projects
GET /projects
GET /projects/:id
DELETE /projects/:idWhen needed, detail request/response:
POST /projects
Request:
{
"name": "My project"
}
Response:
{
"id": 1,
"name": "My project"
}
Auth: RequiredFocus on UI behavior:
- Screen flows
- States: loading, error, empty
- Simple wireframes (optional) Example:
Screen: Project list
- List user projects
- "Create project" button
- Empty state: "No projects yet"System evolution log:
[2026-04-07]
- Added project system
- Created POST /projects endpoint
[2026-04-08]
- Added JWT authentication
Practical execution list:
- [ ] Create users table
- [ ] Implement login
- [ ] Create projects endpoint
- [ ] Create list screenMirror of TODO list to import/create GitHub issues:
- structured backlog
- prioritization
- workflow integration
/docs
1-problem.md
2-requirements.md
3-use-cases.md
4-domain.md
5-business-rules.md
6-architecture.md
8-api.md
-
Install GitHub CLI
- macOS: brew install gh
- Linux: Download from https://github.com/cli/cli/releases
- Windows: choco install gh or install from GitHub releases
-
Authenticate
gh auth login
# Follow prompts (HTTPS + browser auth recommended)- Verify auth
gh auth statusUsing Node.js
cd scripts
node create-github-issues.cjs {github_username}/{repo_name} --dry-runUsing Python
cd scripts
python3 create_github_issues.py {github_username}/{repo_name} --dry-runDry run shows exactly what will be created with no changes applied.
Remove --dry-run to perform creation:
# Node.js
node create-github-issues.cjs {github_username}/{repo_name}# Python
python3 create_github_issues.py {github_username}/{repo_name}