Inspiration

Every engineering team I've worked with shares the same frustration: sprint planning is still a 2-4 hour meeting where someone manually reads through a backlog, asks who has capacity, debates story points, and tries to remember which issues are blocked.

AI has supercharged how fast engineers write code — but planning overhead has only grown as backlogs get larger. This is the AI Paradox: the faster teams ship, the bigger the backlog grows, and the more planning debt they accumulate. The bottleneck didn't move — it just became more painful.

I wanted to build something that attacks that bottleneck directly, using the same platform where the work already lives: GitLab.

What it does

SprintMind is a GitLab Duo Agent Platform agent that turns sprint planning from a meeting into a 30-second async workflow.

Mention @sprintmind in any GitLab issue or just open chat window and select SprintMind agent and the agent:

  1. 📥 Gathers context — fetches all open backlog issues, each team member's open MR load (a real-time capacity signal), and the last 30 closed issues (velocity baseline) — all via the GitLab API, automatically
  2. 🧠 Reasons with Claude — estimates missing story points, balances workload across team members, prioritizes by label urgency (P1/P2 first), and flags stale or blocked issues before they derail the sprint
  3. 📋 Posts a Sprint Brief — a structured markdown comment directly on the GitLab issue, including a capacity table, prioritized issue list, risk flags, and a "Why these decisions?" section showing Claude's reasoning transparently
  4. Executes the plan — assigns the selected issues to the right team members in GitLab, with zero manual steps

No meeting. No spreadsheet. No guessing.

How I built it

The entire agent lives in a single YAML file at agents/agent.yaml. No external servers, no databases, no webhooks to maintain.

The flow:

Mention @sprintmind in a GitLab issue or just casually chat with it in chat window.
            ↓
GitLab Duo Flow Trigger fires a CI/CD job
            ↓
  glab fetches:
    • Open backlog issues (labels, weights, staleness)
    • Team open MR count → capacity estimate per member
    • Last 30 closed issues → velocity baseline
            ↓
  Claude (claude-sonnet-4) reasons over all data:
    • Estimates story points for unweighted issues
    • Balances workload across team members by capacity
    • Prioritizes P1/P2 bugs → features → improvements
    • Writes a transparent rationale for every decision
            ↓
  Agent posts the Sprint Brief comment on the issue
  Agent assigns team members via glab

The prompt is carefully engineered with a strict output template and a constraint block — making Claude's behavior deterministic and auditable, not just generative.

Challenges I ran into

**I was not able to create iterations/cadences with the current tools, or maybe I missed it. **Integrating labels for work items

Accomplishments that I am proud of

One file, full workflow. The entire agent — data gathering, AI reasoning, comment posting, and issue assignment — runs from a single YAML config. Any team can adopt SprintMind by copying one file and setting two CI/CD variables.

Transparent AI reasoning. Every Sprint Brief includes a plain-English "Why These Decisions?" paragraph from Claude. Most AI tools give you output. SprintMind gives you output and explains why, making it auditable and trustworthy enough for real teams to rely on.

Zero new infrastructure. SprintMind runs entirely inside GitLab's own CI/CD runners. No external server, no hosted backend, no maintenance burden. It's a true platform-native agent.

What I learned

Building on the GitLab Duo Agent Platform taught us how powerful the combination of CI/CD primitives + LLM reasoning can be for SDLC automation. The glab CLI is remarkably capable for orchestrating GitLab API calls inside an agentic loop.

The biggest lesson: prompt structure matters as much as model capability. A vague prompt produces vague plans. A structured prompt — with sequenced steps, a strict output template, and explicit constraints — transforms Claude from a helpful chatbot into a reliable autonomous planning engine that teams can actually trust with their sprint.

What's next for SprintMind

Possibilities for improvements are limitless.

  • 📁 Auto weight analysis and assignment
  • 🗂️ Split EPICS into work items — Create work items (user stories) based of epics.
  • 📁 In-repo sprint history — store past sprint outcomes as a JSON file in the repository to continuously improve velocity estimates
  • 💬 Slack integration — post the Sprint Brief to a team Slack channel immediately after planning completes
  • 🗂️ Multi-project planning — support sprints that span multiple GitLab repositories for larger mono-repo or multi-team organizations
  • Integrate iterations/cadences/milestones
  • Remove dependencies on labels.

Built With

  • agent
  • anthropic
  • ci/cd
  • claude
  • claude-sonnet-4
  • gitlabapi
  • ide
  • triggers
  • yaml
Share this project:

Updates