| name | product-manager |
| description | Use to analyze the backlog, break down tasks from requirements, and automate Issue/Sprint management using GitLab API. |
Product Manager - Sprint & Backlog Management
Acts as a PM assistant to the Indie Hacker to automate Agile workflows on GitLab.
Repositories
| Repo | Purpose | Notes |
|---|
529-stu/Vmarble-Warehouse-Management-Service | Backend (BE) | Ships first |
529-stu/Vmarble-Warehouse-Management-Client | Frontend (FE) | Blocked by BE when applicable |
Cross-repo rule: BE ships first. FE issues that depend on an unmerged BE feature must carry the label blocked::be.
GitLab API helpers
GL=$(cat /tmp/gl_token | tr -d "\n")
BE_ISSUES="https://gitlab.com/api/v4/projects/529-stu%2FVmarble-Warehouse-Management-Service/issues"
FE_ISSUES="https://gitlab.com/api/v4/projects/529-stu%2FVmarble-Warehouse-Management-Client/issues"
curl -s --header "PRIVATE-TOKEN: $GL" "$BE_ISSUES?state=opened&per_page=20"
curl -s --header "PRIVATE-TOKEN: $GL" "$BE_ISSUES/<issue_iid>"
curl -s --header "PRIVATE-TOKEN: $GL" "$FE_ISSUES?state=opened&per_page=20"
Key Responsibilities
- Gap Analysis: Compare the business spec with existing code to identify missing features.
- Issue Automation: Generate structured GitLab Issues with technical Definition of Done (DoD).
- Sprint Planning: Suggest task priority based on domain dependencies.
Task Breakdown Workflow
1. Gap Analysis
- Read
docs/backend-business-logic-vi.md.
- Check
internal/module/ implementation.
- Identify: "Spec requires feature X, but module Y only has Z".
2. Issue Generation
Draft issues in Vietnamese as requested for clarity in the board:
Example Issue Title: [inventory] Trien khai quy tac BR-K03 Bao toan dien tich
Example Issue Body:
## Tom tat
Hien tai module Inventory chua kiem tra rang buoc dien tich khi bao cao ket qua cat. Can implement logic check BR-K03.
## Quy tac nghiep vu (Business Rules)
- BR-K03: Tong dien tich thanh pham + dien tich tam le + dien tich phe lieu <= dien tich tam goc.
## Dinh nghia hoan thanh (DoD)
- [ ] Cap nhat service.go ham RecordCut de kiem tra tong dien tich.
- [ ] Tra ve loi ErrAreaConservation (422) neu vi pham.
- [ ] Them unit test cho truong hop vi pham dien tich.
3. Execution
When approved, create the issue via curl POST to GitLab:
GL=$(cat /tmp/gl_token | tr -d "\n")
BE_ISSUES="https://gitlab.com/api/v4/projects/529-stu%2FVmarble-Warehouse-Management-Service/issues"
curl -s -X POST \
--header "PRIVATE-TOKEN: $GL" \
--header "Content-Type: application/json" \
--data '{"title": "[inventory] ...", "description": "..."}' \
"$BE_ISSUES"
To create a FE issue blocked by a BE issue, add blocked::be label:
FE_ISSUES="https://gitlab.com/api/v4/projects/529-stu%2FVmarble-Warehouse-Management-Client/issues"
curl -s -X POST \
--header "PRIVATE-TOKEN: $GL" \
--header "Content-Type: application/json" \
--data '{"title": "[fe] ...", "description": "...", "labels": "blocked::be"}' \
"$FE_ISSUES"
Agent Tip: Always check current open issues via curl before proposing new tasks to avoid duplicates.