Skip to main content

Multi-agent skill that automates sprint delivery from Jira / Azure DevOps to PR + deploy.

Project description

SendSprint

🇺🇸 English. Leia em português: README.pt-BR.md.

Multi-agent skill that automates end-to-end sprint delivery. Reads Jira / Azure DevOps sprints, maps architecture, installs + builds, runs tests, scans for security issues, creates PRs, reviews diffs, and delivers — all in a single 9-step flow.

🎬 Videos

Skill explainer (56s)

SendSprint explainer preview

▶️ Full MP4 (1920×1080, 56s, 20 MB)  ·  🖼️ Poster

Run loop demo (22s) — what web/RunScreen shows

SendSprint run loop

▶️ Full MP4 (1920×1080, 22s, 5.5 MB)  ·  🛠️ Source (Remotion)

🇧🇷 Versão em português dos vídeos: ver README.pt-BR.md.

Both videos are generated locally by Remotion (cd video && npm run build). The run-loop one shows exactly what happens in the browser when you open http://localhost:8081 and start a sprint delivery: round 1 fails with a visual regression, fix-loop applies patches, round 2 turns green, PR opens.

🌐 Run it in your browser (web)

# 1) backend
pip install -e ".[api]"
python -m sendsprint.api          # http://localhost:8765

# 2) web UI (separate terminal)
cd web && npm install && npm run dev   # http://localhost:8081

See web/README.md for the full walkthrough and sendsprint/api/README.md for the HTTP/SSE API.

Works across 13 AI coding tools: Claude Code, Codex CLI, GitHub Copilot, Cursor, Windsurf, Kiro, Zed, Cline, Continue, Aider, Sourcegraph Cody, Hermes, Openclaw.

Status: v0.7.0 — Chat-triggered one-command UX (sendsprint sprint). 13 IDE manifests. OS-keyring credential cache. Auto-scaffold .specs/ plus latest agentic-starter sync. Full 10-step flow. PRs target develop by default and can be configured per workspace/repo. PyPI publishing is automated on release tags.


10-Step Flow

Step Name What it does
1 Read sprint Fetch stories/tasks/bugs from Jira or Azure DevOps
2 Architecture mapping Inspect repo docs; auto-generate baseline if score < 0.6
3 Dev Detect tech stack, create worktree, install deps + build
4 Lint Static analysis per tech (eslint, ruff, clippy, etc.)
5 Tests Unit tests + Playwright E2E with screenshot evidence
6 Security review Flag-only scan (secrets, env files, npm audit)
7 Fix loop If lint/tests/security fail: re-build + re-run (max 3 rounds)
8 Commit git add -A && git commit on worktree branch
9 Create PR GitHub (gh CLI) or Azure DevOps REST API
10 PR review + Delivered Diff analysis + RunReport with JSON export

Transport priority: mcp -> api -> playwright.


Requirements

  • Python >=3.11
  • Playwright (playwright install chromium)
  • Optional: Jira API token / Azure DevOps PAT, or Atlassian / Azure DevOps MCP server

Install

git clone https://github.com/wesleysimplicio/SendSprint.git
cd SendSprint
pip install -e .
playwright install chromium
cp .env.example .env  # fill in credentials

Quick start

CLI

# Full 9-step flow against a Jira sprint
sendsprint run jira 42 --workspace workspace.yaml --scope mine -o report.json

# Full flow against Azure DevOps
sendsprint run azuredevops "Team\\Sprint 12" --repo ./repo

# Detect tech stack
sendsprint detect-tech ./repo

# Check architecture mapping (with auto-build if missing)
sendsprint check-architecture ./repo --build

# Sync latest agentic-starter scaffold files into a repo
sendsprint sync-agentic-starter ./repo --ref latest

Python

from sendsprint.flow import SprintFlow
from sendsprint.operators import JiraOperator
from sendsprint.workspace import load_workspace
from sendsprint.scope import build_scope

ws = load_workspace("workspace.yaml")
scope = build_scope(mode="mine", user_email="dev@example.com")
flow = SprintFlow(operator=JiraOperator(), workspace=ws, scope=scope)
result = flow.run(sprint_id=42)
print(result.run_report.summary)

Read a sprint only

from sendsprint.operators import JiraOperator

op = JiraOperator(
    base_url="https://your-org.atlassian.net",
    transport="auto",
)
sprint = op.read_sprint(sprint_id=42)
for item in sprint.items:
    print(f"  [{item.type}] {item.key} - {item.title} ({item.status})")

Multi-repo workspace

Define repos in workspace.yaml:

name: my-project
root_path: /home/dev/repos
new_projects_dir: Projetos/novos
pr_provider: github
default_base_branch: develop
repos:
  - name: backend-api
    path: backend-api
    role: api
    tech: dotnet
    default_branch: main
    pr_target_branch: develop
  - name: frontend-web
    path: frontend-web
    role: front
    tech: angular
  - name: mobile-app
    path: mobile-app
    role: mobile
    tech: flutter

Architecture

sendsprint/
├── operators/         JiraOperator, AzureDevopsOperator (mcp|api|playwright)
├── models/            Sprint, SprintItem, StepReport, RunReport (Pydantic v2)
├── agents/
│   ├── worktree.py    Git worktree isolation for parallel branches
│   ├── dev.py         Install + build per tech stack (16 package managers)
│   ├── lint_runner.py Static analysis per tech (19 linters)
│   ├── test_runner.py Unit + E2E with screenshot evidence
│   ├── security_reviewer.py  Secret scan, env audit, npm audit
│   ├── pr_creator.py  GitHub (gh) / Azure DevOps (REST) PR creation
│   └── pr_reviewer.py Diff static checks (TODO, debug, long lines)
├── architecture/
│   ├── mapper.py      Weighted architecture scoring
│   └── builder.py     Auto-generate baseline docs
├── tech/
│   └── detector.py    Filesystem marker detection (25+ techs)
├── workspace/
│   └── loader.py      YAML/JSON multi-repo workspace config
├── scope.py           --scope mine filtering (account_id, email, name)
├── flow/
│   └── sprint_flow.py 9-step orchestrator
├── llm/               Provider-agnostic LLM client
└── cli.py             Typer CLI

Environment variables

Variable Required for
JIRA_BASE_URL Jira API
JIRA_EMAIL Jira API
JIRA_API_TOKEN Jira API
AZURE_DEVOPS_ORG Azure DevOps API
AZURE_DEVOPS_PROJECT Azure DevOps API
AZURE_DEVOPS_PAT Azure DevOps API
PLAYWRIGHT_CDP_URL Playwright fallback (default http://127.0.0.1:9222)
LLM_PROVIDER LLM step (optional)
LLM_MODEL LLM step (optional)

Skills

Per-platform entry points under skills/:

File Platform
skills/claude/SKILL.md Claude Code
skills/codex/AGENTS.md Codex / OpenAI
skills/hermes/hermes.md Hermes Agent
skills/openclaw/openclaw.md Openclaw
skills/copilot/copilot-instructions.md GitHub Copilot

Each references the same Python core; the skill file teaches the host agent how to invoke it.


Tests

pip install -e ".[dev]"
pytest tests/ -v

103 tests covering operators, architecture mapper/builder, tech detector, scope filtering, workspace loading, and all agents (lint, security, PR review).


Roadmap

  • Step 1 - Sprint reading (Jira + Azure DevOps, MCP / API / Playwright)
  • Step 2 - Architecture mapping + auto-build baseline docs
  • Step 3 - Dev agent (tech detection, worktree isolation, install + build)
  • Step 4 - Test runner (unit + Playwright E2E with screenshot evidence)
  • Step 5 - Security reviewer (flag-only: secrets, env, npm audit)
  • Step 6 - Fix loop (re-build + re-test, max 3 rounds)
  • Step 7 - PR creation (GitHub gh CLI + Azure DevOps REST)
  • Step 8 - PR review (diff static checks)
  • Step 9 - RunReport with full evidence
  • Multi-repo workspace support (workspace.yaml)
  • --scope mine current-user filtering
  • LLM-powered code generation per sprint item
  • Deploy trigger + status callback to ticket
  • MCP server mode (expose SendSprint as an MCP tool)

License

MIT - see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sendsprint-0.7.1.tar.gz (62.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sendsprint-0.7.1-py3-none-any.whl (251.7 kB view details)

Uploaded Python 3

File details

Details for the file sendsprint-0.7.1.tar.gz.

File metadata

  • Download URL: sendsprint-0.7.1.tar.gz
  • Upload date:
  • Size: 62.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for sendsprint-0.7.1.tar.gz
Algorithm Hash digest
SHA256 14ce528bc24d6bfd8b1c6366c6c3732f1e9f71e57d794b0f43f0cfe20f3c7c11
MD5 af2efd8ae7db3504e377d720e90095fa
BLAKE2b-256 eeced520749eacdf19c83bb50762ec223748d08aa88c8b6e9e690c356fb44fcb

See more details on using hashes here.

File details

Details for the file sendsprint-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: sendsprint-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 251.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for sendsprint-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9e69087ceef59f72b8fe68d009ff31f15924fe489a5dabc37ac437e8be4588f0
MD5 eec984910f944fc6f451ea14901634f2
BLAKE2b-256 4f701cd599107982984094a5560907dd2af286ff78f34b4a4dd55bdc39c3e4e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page