Skip to main content

Generate Universal Context Packages (UCP) from real systems: GitHub issues and Jira tickets, with optional LLM enhancement.

Project description

ucp-gen

Generate Universal Context Packages from real systems. Two sources are supported — GitHub issues and Jira tickets — and one command turns an issue with its comments, history and links into a validated, provenance-backed .ucp.json. By default no LLM is involved: the structure alone already carries the facts, decisions and timeline.

pip install ucp-gen

# GitHub (GITHUB_TOKEN optional, raises the API rate limit)
ucp-gen github vercel/next.js#12345 -o task.ucp.json

# Jira (Cloud: email + API token; Server/DC: personal access token)
export JIRA_BASE_URL=https://yourco.atlassian.net
export JIRA_EMAIL=you@yourco.com
export JIRA_API_TOKEN=...
ucp-gen jira PROJ-123 -o task.ucp.json

# canonical LLM rendering, capped at 1500 tokens
ucp-gen github owner/repo#42 --markdown --token-budget 1500

# include a "what changed since" diff (adds the ucp-temporal profile)
ucp-gen github owner/repo#42 --since 2026-06-01T00:00:00Z

Optional LLM enhancement (--llm)

Structure tells you what happened; it cannot tell you which of 200 comments contains the key insight. --llm adds that layer with a single call to any OpenAI-compatible endpoint (OpenAI, kie.ai, OpenRouter, a LiteLLM proxy, local Ollama):

export UCP_LLM_BASE_URL=https://api.kie.ai/v1   # any OpenAI-compatible URL
export UCP_LLM_API_KEY=...
export UCP_LLM_MODEL=gpt-4o-mini

ucp-gen github owner/repo#42 --llm -o task.ucp.json

What it changes: summary becomes a real synthesis of the whole thread (marked with confidence), comments the model flags as important get a salience boost, and decisions/conflicts stated in prose are extracted. Provenance survives: the model may only cite the source keys it was given — hallucinated citations are dropped, and every added claim still points at a real, hashed source. If the call fails, you get the structure-only package and a warning, never a broken one.

What the mapping does

GitHub Jira UCP
title / state / assignee summary / status / assignee entity
first meaningful paragraph first meaningful paragraph summary
state, milestone, labels, PR states, comment gists status+resolution, priority, due date, fix versions, links, comment gists must_know claims with salience
merged linked PRs resolution decisions (accepted)
"we decided" comments "we decided" comments decisions (proposed)
issue timeline changelog history, and context_diff with --since
"is blocked by" links dependencies
linked PRs links, parent, subtasks related_objects
every cited issue / comment / PR every cited ticket / comment sources with URL + content hash

Every claim cites its sources; every source carries a sha256 content hash. The output always validates against the UCP schema before it is written — the generator will fail rather than emit an invalid package.

Feed the result to any UCP consumer, e.g. the reference MCP server:

pip install ucp-mcp
ucp-gen github owner/repo#42 -o ./contexts/task.ucp.json
ucp-mcp --dir ./contexts   # Cursor / Claude Code now sees the context

Development

pip install -e ".[dev]"
pytest

Part of the UCP reference toolchain (Apache 2.0).

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

ucp_gen-0.2.0.tar.gz (19.2 kB view details)

Uploaded Source

Built Distribution

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

ucp_gen-0.2.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ucp_gen-0.2.0.tar.gz
  • Upload date:
  • Size: 19.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ucp_gen-0.2.0.tar.gz
Algorithm Hash digest
SHA256 751bf49aa3e738fd8682faa5d2714d67dbc281b3ccdf466f641adafc49bb6b45
MD5 511fd0ddcdb5141fa1ba8938282be182
BLAKE2b-256 9fe730b4591f9c64aa231e783f5e37f66a6965dae4215f6d7107eddb2cbbdd4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ucp_gen-0.2.0.tar.gz:

Publisher: release.yml on ucpcore/ucp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: ucp_gen-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ucp_gen-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a3b727052008855b3b6303b3e1bdbd1252a2e494fd9dd4004d1c3a202b29066
MD5 e10bfdf268c13e9ad9c402f845de048c
BLAKE2b-256 d48eb6cf95dc582bf31994fb9c9a75054965cd05978e39524980e3cb74ec793d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ucp_gen-0.2.0-py3-none-any.whl:

Publisher: release.yml on ucpcore/ucp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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