Skip to main content

Shared Claude Code workflow for Quber projects (Jira + GitHub automation)

Project description

Quber Workflow

Shared Claude Code workflow for Quber projects with Jira and GitHub automation.

PyPI Python License

What is Quber Workflow?

quber-workflow provides a standardized Claude Code workflow system for managing development workflows across Quber projects. It integrates Jira issue tracking with GitHub's pull request workflow through Claude Code agents and skills, with built-in LangSmith tracing for cost accountability.

Key Features

  • Jinja2 Template System - All managed files rendered from templates with project-specific config
  • Automated Jira Management - Agents handle issue creation, updates, and transitions
  • GitHub PR Automation - Streamlined pull request creation and management
  • LangSmith Tracing - Full token usage tracking for main agents and subagents
  • Agent Teams Support - Experimental multi-agent coordination with subagent tracing
  • Deny-by-Default Security - Enforces proper agent delegation and permissions
  • Quality Standards - Built-in PR evidence requirements and workflow specs
  • Lightweight - 95%+ reduction in context usage vs MCP servers

Installation

pip install quber-workflow

Or using uv:

uv pip install quber-workflow

Quick Start

1. Initialize a New Project

Navigate to your project directory and run:

quber-workflow init \
  --project my-project \
  --repo username/my-project \
  --jira-prefix PROJ \
  --jira-label my-project \
  --jira-url https://yoursite.atlassian.net

Or use interactive mode (prompts for missing values):

quber-workflow init

Or use a YAML config file:

quber-workflow init --config workflow.yaml

This creates:

.claude/
├── agents/
│   ├── jira-workflow.md       # Jira operations agent
│   ├── github-workflow.md     # GitHub operations agent
│   └── epic-manager.md       # Epic governance agent
├── hooks/
│   ├── stop_hook.sh           # LangSmith tracing (main session)
│   └── subagent_stop_hook.sh  # LangSmith tracing (subagents)
├── skills/
│   ├── github-operations/     # GitHub CLI scripts + SKILL.md
│   └── jira-operations/       # Jira REST API scripts + SKILL.md
├── settings.json              # Permissions, hooks, agent teams
└── .quber-workflow.yaml       # Saved config for updates
.github/workflows/
└── jira-transition.yml        # Automated Jira status updates
docs/
├── GITHUB_WORKFLOW_SPEC.md
├── ISSUES_SPEC.md
├── PR_EVIDENCE_GUIDELINES.md
└── PR_EVIDENCE_CHECKLIST.md
CLAUDE.md                      # Agent delegation rules
.env.example                   # Environment variable template

2. Configure Environment Variables

Copy .env.example to .env and fill in your credentials:

# GitHub CLI authentication
GH_TOKEN=ghp_...

# Jira REST API authentication
ATLASSIAN_USER_EMAIL=you@example.com
ATLASSIAN_API_TOKEN=your-api-token
ATLASSIAN_SITE_NAME=https://yoursite.atlassian.net

# LangSmith tracing (enabled by default)
TRACE_TO_LANGSMITH=true
LANGSMITH_API_KEY=lsv2_pt_...
CC_LANGSMITH_PROJECT=my-project
CC_LANGSMITH_RUN_NAME=my-project

3. Configure GitHub Secrets

For the Jira transition workflow, add these repository secrets:

  • JIRA_BASE_URL - Your Jira instance URL (e.g., https://yoursite.atlassian.net)
  • JIRA_USER_EMAIL - Your Jira account email
  • JIRA_API_TOKEN - Jira API token

Init Options

Flag Default Description
--project Current directory name Project name
--repo (required) GitHub repo (owner/repo)
--jira-prefix QUE Jira project prefix for issue keys
--jira-label Same as project Label auto-applied to Jira issues
--jira-url (required) Jira instance URL
--no-epic-manager Enabled Disable epic-manager agent
--no-langsmith Enabled Disable LangSmith tracing hooks
--no-agent-teams Enabled Disable experimental agent teams
--enable-logfire Disabled Enable Pydantic Logfire observability
--config YAML config file (overrides all flags)

Usage

Update Workflow Files

Update to the latest workflow templates:

quber-workflow update

This re-renders templates from saved config while preserving your customizations.

Migrate from Manual Setup

If you previously set up workflows manually, migrate to the managed version:

quber-workflow migrate

This creates backups before migrating your existing setup.

Clean Git Exclusions

Remove workflow entries from .git/info/exclude:

quber-workflow clean

How It Works

Architecture

┌─────────────────────────────────────┐
│   Main Claude Agent (Your Project)  │
└────────────┬────────────────────────┘
             │
     ┌───────┴────────┐
     │                │
┌────▼─────┐   ┌─────▼────────┐
│  Jira    │   │   GitHub     │
│ Workflow │   │  Workflow    │
│  Agent   │   │   Agent      │
└────┬─────┘   └─────┬────────┘
     │               │
┌────▼─────┐   ┌─────▼────────┐
│  Jira    │   │   GitHub     │
│Operations│   │ Operations   │
│  Skill   │   │    Skill     │
└────┬─────┘   └─────┬────────┘
     │               │
┌────▼─────┐   ┌─────▼────────┐
│   Jira   │   │   GitHub     │
│ REST API │   │   gh CLI     │
└──────────┘   └──────────────┘

LangSmith Tracing

When enabled (default), every Claude Code response and subagent invocation is traced to LangSmith with full token usage data:

  • Main session tracesStop hook processes the session transcript
  • Subagent tracesSubagentStop hook processes each subagent's transcript independently
  • Run naming — Main session: {project}, Subagents: {project}({agent_type}) (e.g., quber-analyst(Explore))
  • Parent linking — Subagent traces include parent_session_id in metadata

Why This Approach?

Minimal Context Usage

  • Skills: ~100 tokens when loaded on-demand
  • MCP Servers: ~46,000 tokens loaded upfront
  • Result: 99%+ reduction in context overhead

Full Control

  • All scripts visible in your repository
  • Easy to audit, modify, and test
  • No black-box dependencies

Cost Accountability

  • Every LLM call (main + subagent) traced with token counts
  • Per-project visibility in LangSmith dashboard
  • Cache usage tracking (read + creation)

Requirements

Runtime

  • Python 3.9+
  • Claude Code CLI
  • gh CLI (GitHub operations)
  • jq (JSON parsing in hook and skill scripts)
  • curl (Jira REST API, LangSmith API)
  • uuidgen (LangSmith trace ID generation)

Development

See CONTRIBUTING.md for development setup.

Commands Reference

Command Description
quber-workflow init Initialize workflow in a new project
quber-workflow update Update workflow files to latest version
quber-workflow migrate Migrate from manual setup (creates backups)
quber-workflow clean Remove workflow entries from git exclude

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for:

  • Development environment setup
  • Running tests and code quality checks
  • Publishing releases
  • Project structure

License

MIT License - see LICENSE file for details.

Related Projects

Links

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

quber_workflow-0.2.0.tar.gz (68.8 kB view details)

Uploaded Source

Built Distribution

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

quber_workflow-0.2.0-py3-none-any.whl (95.5 kB view details)

Uploaded Python 3

File details

Details for the file quber_workflow-0.2.0.tar.gz.

File metadata

  • Download URL: quber_workflow-0.2.0.tar.gz
  • Upload date:
  • Size: 68.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for quber_workflow-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f815f2513e95a638916e98e0fbaf8af6750dfac8e5bea061b2921a24f5383f2f
MD5 5fa17caaeb51a1b647c270ee5a62e76e
BLAKE2b-256 f6a6b39c38510464fc9ab86cd14022e303cdddbf4edbe541e050c208f99de230

See more details on using hashes here.

File details

Details for the file quber_workflow-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: quber_workflow-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 95.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.6

File hashes

Hashes for quber_workflow-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0dcbeec78e9a5a1a4afcc81f22b95e1dec43f4aa3a1e664521a3cca03adb4473
MD5 8c0b8763fffb74f2048526d470ad1447
BLAKE2b-256 8e17ae438d2fa5bdb9852dd2dfda88b401132ee1489993b0d16bf3f5f5cf7cf3

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