Inferensys

Prompt

Multi-Repo Aggregated Changelog Prompt Template

A practical prompt playbook for platform teams coordinating releases across multiple repositories. Produces a unified changelog with cross-repo dependency ordering, shared breaking change impact, and coordinated version bump recommendations.
Wide-angle shot of a modern WeWork open floor plan with creative walls covered in AI system architecture diagrams, product team collaborating in standing desk area with industrial lighting.
PROMPT PLAYBOOK

When to Use This Prompt

Determine if the multi-repo aggregated changelog prompt is the right tool for your release coordination workflow.

This prompt is designed for platform teams and release managers who must coordinate a single, coherent release across three or more interdependent repositories. The core job-to-be-done is transforming a collection of per-repo change summaries, a dependency map, and version constraints into a unified changelog. The ideal user is an engineering lead or release manager who already has the raw data from each team but needs to resolve cross-repo ordering, shared breaking change impact, and coordinated version bump recommendations without manual aggregation errors.

You should use this prompt when your repositories have runtime or build-time dependencies on each other, meaning a change in one repo can break or alter the behavior of another. The prompt requires structured inputs: a list of per-repo change summaries, a dependency graph showing which repos depend on which, and any version constraints or release policies. Do not use this for single-repo changelogs, which are better served by a simpler diff-to-release-note prompt. It is also inappropriate when repositories are fully independent and share no release cadence, as the coordination logic adds unnecessary complexity and may introduce false dependency relationships.

Before using this prompt, ensure you have a clear dependency map and that each per-repo summary is accurate and complete. The prompt's value comes from its ability to order entries by dependency chain, highlight breaking changes that propagate across repos, and recommend a single set of version bumps that respects semver across the entire ecosystem. If your inputs are incomplete or the dependency map is stale, the output will be unreliable. Pair this prompt with a validation step that checks the generated changelog against the source summaries and dependency graph to catch ordering errors or missing cross-repo impacts before publication.

PRACTICAL GUARDRAILS

Use Case Fit

This prompt is designed for platform teams coordinating releases across multiple repositories. It excels at producing a unified changelog with cross-repo dependency ordering and shared breaking change impact. It is not a replacement for individual repo changelogs or detailed API diff documentation.

01

Good Fit: Coordinated Platform Releases

Use when: A platform release spans 3+ repositories that must ship together. The prompt synthesizes a single narrative from disparate commit logs, ordering changes by dependency graph rather than by repo. Guardrail: Provide a dependency map as structured input to prevent the model from guessing cross-repo relationships.

02

Bad Fit: Single-Repo Patch Releases

Avoid when: You are cutting a simple patch release from a single repository. The multi-repo aggregation overhead adds complexity without benefit. Guardrail: Route single-repo tasks to a conventional commit changelog prompt instead. Use this prompt only when the input contains commit data from multiple sources.

03

Required Inputs: Dependency Graph and Commit Data

What to watch: The prompt cannot infer cross-repo dependency order from isolated commit logs. Without explicit dependency input, it may list changes in an order that breaks the reader's understanding of the release sequence. Guardrail: Always supply a structured dependency map alongside per-repo commit lists. Validate the output ordering against your known dependency graph.

04

Operational Risk: Hallucinated Cross-Repo Impact

What to watch: The model may invent breaking change impacts in repositories it has not seen evidence for, especially when commit messages are sparse. Guardrail: Run a factuality check prompt against the aggregated output. Require every claimed cross-repo impact to cite a specific commit SHA or PR reference from the input data.

05

Operational Risk: Inconsistent Version Bump Recommendations

What to watch: The model may recommend version bumps that are inconsistent across repos, suggesting a major bump in one repo but only a patch bump in a tightly coupled downstream repo. Guardrail: Add a post-generation consistency validation step that checks all version recommendations against the shared dependency graph and flags mismatches for human review.

06

Process Fit: Release Manager Review Required

What to watch: The aggregated changelog will be customer-facing or used by downstream teams. Errors in cross-repo impact statements can cause integration failures. Guardrail: Never auto-publish the output. Route every aggregated changelog through a release manager approval step. The prompt output is a draft, not a final artifact.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A copy-ready prompt that aggregates structured per-repo inputs into a unified, dependency-aware changelog.

The following prompt template is designed to be pasted directly into your AI system. It expects a structured list of repository change summaries as input and produces a single, unified changelog. The prompt instructs the model to order entries by cross-repo dependency, highlight shared breaking changes, and recommend coordinated version bumps. Before execution, you must replace every square-bracket placeholder with real data from your release pipeline.

text
You are a release automation engineer. Your task is to generate a unified, multi-repository changelog from a structured list of per-repo change summaries.

[INPUT]
The input is a JSON array of repository change objects. Each object has the following schema:
{
  "repo_name": "string",
  "current_version": "string (semver)",
  "changes": [
    {
      "category": "feat | fix | breaking | deprecation | security | docs | chore",
      "description": "string (one sentence)",
      "commits": ["string (short SHA)"],
      "related_issues": ["string (issue ID)"],
      "dependency_of": ["string (repo_name)"] // repos that depend on this change
    }
  ]
}

[INPUT_DATA]
```json
[INSERT_PER_REPO_CHANGE_ARRAY_HERE]

[CONSTRAINTS]

  1. Group entries under the following sections: Breaking Changes, Features, Security Fixes, Bug Fixes, Deprecations, Documentation, and Dependencies.
  2. Within each section, order entries by cross-repo impact. A change that is listed as a dependency_of another repo must appear before the dependent change.
  3. For each breaking change, add a **Migration Required** note that lists all affected repositories.
  4. Generate a **Coordinated Version Bump Recommendation** table at the top. The table must have columns for Repository, Current Version, Recommended Version, and Bump Reason. The bump reason must reference specific breaking changes or feature additions.
  5. If a change has no related_issues, omit the issue reference. If a change has no dependency_of entries, treat it as a standalone change.
  6. Do not invent or summarize changes not present in the input data. If a repository has no changes, omit it from the changelog.

[OUTPUT_SCHEMA] Return a single JSON object with this exact structure: { "release_title": "string (generated from the most significant feature or breaking change)", "version_bump_table": [ { "repository": "string", "current_version": "string", "recommended_version": "string", "bump_reason": "string" } ], "sections": [ { "section_name": "Breaking Changes | Features | Security Fixes | Bug Fixes | Deprecations | Documentation | Dependencies", "entries": [ { "description": "string (user-facing changelog line)", "affected_repos": ["string"], "commits": ["string"], "issues": ["string"], "migration_note": "string | null" } ] } ] }

[EXAMPLES] Input: [ { "repo_name": "auth-service", "current_version": "2.1.0", "changes": [ { "category": "breaking", "description": "Deprecated legacy token endpoint POST /v1/token", "commits": ["a1b2c3d"], "related_issues": ["AUTH-421"], "dependency_of": ["api-gateway", "user-dashboard"] } ] }, { "repo_name": "api-gateway", "current_version": "3.0.1", "changes": [ { "category": "feat", "description": "Added support for new auth token format", "commits": ["e4f5g6h"], "related_issues": ["GW-112"], "dependency_of": [] } ] } ]

Output: { "release_title": "Auth Service Legacy Token Deprecation and Gateway Token Format Update", "version_bump_table": [ { "repository": "auth-service", "current_version": "2.1.0", "recommended_version": "3.0.0", "bump_reason": "Breaking change: deprecated legacy token endpoint" }, { "repository": "api-gateway", "current_version": "3.0.1", "recommended_version": "3.1.0", "bump_reason": "Feature: support for new auth token format" } ], "sections": [ { "section_name": "Breaking Changes", "entries": [ { "description": "Deprecated legacy token endpoint POST /v1/token in auth-service", "affected_repos": ["auth-service", "api-gateway", "user-dashboard"], "commits": ["a1b2c3d"], "issues": ["AUTH-421"], "migration_note": "Migration Required: api-gateway and user-dashboard must update to use the new token endpoint before upgrading auth-service." } ] }, { "section_name": "Features", "entries": [ { "description": "Added support for new auth token format in api-gateway", "affected_repos": ["api-gateway"], "commits": ["e4f5g6h"], "issues": ["GW-112"], "migration_note": null } ] } ] }

[RISK_LEVEL] This is a documentation-generation task. The primary risk is hallucinating changes or misrepresenting breaking change impact. Always validate the output against the input data before publishing.

To adapt this template for your pipeline, replace [INSERT_PER_REPO_CHANGE_ARRAY_HERE] with the aggregated output of your per-repo diff analysis. The dependency_of field is the linchpin for correct ordering; ensure your upstream tooling populates it by parsing import graphs, API client configurations, or service dependency manifests. If you cannot determine dependencies automatically, run the prompt without ordering constraints and flag the output for manual reordering by a release manager. The OUTPUT_SCHEMA is designed to be machine-readable so you can pipe the result directly into documentation sites or Slack release announcements after validation.

Before integrating this prompt into a CI pipeline, build a validation step that diffs the generated commits list against the input commits. Any commit SHA in the output that does not appear in the input is a hallucination and must block the release note artifact. For high-risk releases, route the generated JSON through a human approval queue where a release manager can verify the version_bump_table recommendations and migration_note accuracy before the changelog is published to users.

IMPLEMENTATION TABLE

Prompt Variables

Every placeholder required by the Multi-Repo Aggregated Changelog prompt, with concrete examples and actionable validation rules to wire into your CI pipeline.

PlaceholderPurposeExampleValidation Notes

[REPO_LIST]

Ordered list of repositories to aggregate, including branch or tag refs

repo-alpha@main, repo-beta@v2.1.0, shared-lib@release/2025-03

Parse as JSON array of {name, ref} objects. Reject if fewer than 2 repos. Validate each ref exists via git ls-remote before prompt assembly.

[CHANGE_WINDOW]

Time range or commit range bounding the changelog scope

2025-03-01..2025-03-14 OR abc1234..def5678

Accept ISO 8601 date range or double-dot commit SHA range. Reject mixed formats. If date range, resolve to commits via git log --since/--until per repo.

[OUTPUT_SCHEMA]

Strict JSON schema defining the aggregated changelog structure

See output-contract table for full schema definition

Validate against JSON Schema draft-07 before prompt injection. Must include required fields: aggregated_changelog, cross_repo_dependencies, breaking_changes, version_recommendations. Reject schema with missing required arrays.

[DEPENDENCY_MAP]

Declared inter-repo dependency relationships for ordering and impact analysis

repo-alpha depends on shared-lib@>=2.0.0; repo-beta depends on shared-lib@^1.5.0

Parse as directed graph. Detect cycles and reject. Validate version constraints against actual tags in each repo. Flag missing dependency declarations as warning, not error.

[CONVENTION_PROFILE]

Commit message convention used across repos for parsing and categorization

conventional-commits OR custom:{pattern:'^(feat|fix|docs|chore|refactor|perf|test)((.+))?: .+', breaking:'BREAKING CHANGE:'}

Accept preset keys (conventional-commits, angular, eslint) or custom regex object. Validate custom regex compiles without error. Apply per-repo override if repos use different conventions.

[BREAKING_CHANGE_POLICY]

Threshold and rules for what constitutes a breaking change requiring cross-repo coordination

api-signature-change, schema-field-removal, minimum-dependency-version-bump

Accept array of policy keys from allowed enum. Map each key to detection logic (AST diff for api-signature-change, schema diff for schema-field-removal). Reject unknown policy keys.

[VERSION_STRATEGY]

Semver bump strategy for coordinated version recommendations

independent OR synchronized-major OR synchronized-minor

Accept one of three enum values. If synchronized, validate that all repos share a version prefix. If independent, require per-repo current version input. Reject unknown strategy values.

[AUDIENCE_TARGET]

Primary audience for the aggregated changelog, controlling tone and technical depth

platform-engineers OR devrel OR product-managers OR all

Accept single value or array from allowed enum. Map to tone and depth parameters: platform-engineers gets full API diffs, product-managers gets benefit-oriented summaries. Reject unknown audience values.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the multi-repo changelog prompt into a release pipeline with validation, retries, and human approval gates.

The multi-repo aggregated changelog prompt is designed to run as a batch job triggered by a release coordinator, not as a real-time user-facing feature. It consumes structured inputs from multiple repository CI pipelines—commit logs, diff summaries, and dependency manifests—and produces a unified changelog artifact. The implementation harness must enforce input freshness, validate cross-repo consistency, and gate the output behind human review before publication. Treat this prompt as a composable step in a larger release workflow, not a standalone generator.

Input assembly is the first critical integration point. Build a pre-processing script that collects the latest tagged release commit SHA from each repository, fetches the commit range since the last aggregated release, and extracts conventional commit messages, breaking change annotations, and dependency graph updates. Feed these into the prompt's [REPO_CHANGE_MANIFESTS] placeholder as a structured JSON array, with one object per repository containing repo_name, version_bump, commits, breaking_changes, and dependency_updates fields. Validate input completeness before invoking the model: if any repository manifest is missing or stale (older than the last aggregated release timestamp), abort and alert the release coordinator. Use a model with a large context window (200K+ tokens) and strong structured output capabilities, such as claude-sonnet-4-20250514 or gpt-4o, to handle the combined manifest size. Set response_format to json_schema with the expected changelog schema to enforce output structure.

Post-generation validation is mandatory. Implement a multi-pass verification harness: (1) Schema check—validate the JSON output against the expected changelog schema, rejecting missing required fields or malformed entries. (2) Cross-repo consistency check—verify that dependency ordering in the changelog matches the submitted dependency graph; flag any entry that references a change from a repository not included in the input manifests. (3) Breaking change impact audit—for every breaking change listed, confirm that the affected consumer repositories are explicitly mentioned in the impact section. (4) Hallucination detection—diff the generated changelog entries against the source commit messages; flag any feature description or bug fix that cannot be traced to at least one commit SHA. If validation fails, retry once with the validation errors appended to the [CONSTRAINTS] section as explicit correction instructions. If the retry also fails, route the partial output and error report to a human release manager for manual completion.

Human approval and publication complete the harness. After validation passes, post the aggregated changelog draft to a review channel (Slack, email, or internal release dashboard) with a structured summary: number of repositories included, breaking change count, dependency upgrade count, and a link to the full draft. Require explicit approval from at least one repository maintainer per affected repo before the changelog is published to external-facing channels. Store the final approved changelog as a versioned artifact in your release registry, tagged with the aggregated release version and the commit SHA range it covers. Log every step—input assembly timestamps, model invocation parameters, validation results, retry attempts, and approver identity—to maintain an audit trail for compliance and debugging. Avoid running this prompt on every commit; trigger it only on coordinated release events to prevent noise and reviewer fatigue.

IMPLEMENTATION TABLE

Expected Output Contract

Fields, types, and validation rules for the unified multi-repo changelog output. Use this contract to build a post-processing validator or schema check before publishing.

Field or ElementType or FormatRequiredValidation Rule

unified_changelog.version

string (semver)

Must match a valid semver pattern. Reject if version is not incremented from prior release or if format is non-standard.

unified_changelog.release_date

string (ISO 8601)

Must be a valid ISO 8601 date. Reject if date is in the future or older than the last release date.

unified_changelog.repositories

array of objects

Must contain at least one repository entry. Reject if any repository name does not match a known repo in [REPO_LIST].

unified_changelog.repositories[].name

string

Must exactly match a repository name provided in [REPO_LIST]. Case-sensitive check required.

unified_changelog.repositories[].changes

array of objects

Must contain at least one change entry. Reject if empty or if any entry lacks a commit reference.

unified_changelog.repositories[].changes[].category

enum string

Must be one of: breaking, feature, fix, deprecation, security, dependency, docs. Reject unknown categories.

unified_changelog.repositories[].changes[].description

string

Must be non-empty and grounded in a source commit. Flag for human review if description contains unsupported claims or hallucinated details.

unified_changelog.cross_repo_breaking_changes

array of objects

If present, each entry must reference at least two repositories. Reject if a breaking change is claimed without cross-repo impact evidence.

PRACTICAL GUARDRAILS

Common Failure Modes

Multi-repo changelog aggregation fails in predictable ways. These are the most common production failure modes and the guardrails that catch them before they reach users.

01

Cross-Repo Ordering Collapse

What to watch: The model lists changes from multiple repositories in arbitrary order, losing dependency sequencing. A breaking change in repo A that repo B depends on appears after repo B's migration note, making the changelog misleading. Guardrail: Require a dependency graph as a structured input and instruct the model to sort entries by topological order. Validate output ordering with a script that checks declared dependencies against entry sequence.

02

Hallucinated Cross-Repo Impacts

What to watch: The model invents breaking change impacts in repositories it never analyzed, assuming transitive breakage without evidence. A change in a shared library gets incorrectly flagged as breaking for consumers three layers up. Guardrail: Require explicit evidence grounding for every cross-repo impact claim. Run a factuality check that maps each claimed impact to a specific diff or commit in the affected repository. Flag unsupported claims for human review.

03

Duplicate Entry Proliferation

What to watch: The same logical change appears multiple times under different repository sections or categories, bloating the changelog and confusing readers. A single feature spanning three repos generates three near-identical entries. Guardrail: Add a deduplication pass that clusters entries by change ID, commit SHA set, or semantic similarity. Instruct the model to merge related entries into a single cross-repo entry with per-repo detail sub-bullets.

04

Version Bump Inconsistency

What to watch: The model recommends version bumps that conflict across repositories—repo A gets a minor bump while its dependent repo B gets a patch bump despite the same breaking change. Guardrail: Enforce a global version coordination rule in the prompt. After generating per-repo recommendations, run a consistency check that verifies all dependents of a breaking change receive at least the same bump severity. Flag mismatches for correction.

05

Missing Repository Silences

What to watch: One or more repositories in the input set produce no changelog entries, either because the model skipped them or because their changes were lost in aggregation. Silent omissions are worse than bad entries because they look correct. Guardrail: Require the model to produce an explicit coverage report listing every input repository and whether entries were generated. Run a post-generation audit that compares input repo count to output repo coverage. Alert on any repository with zero entries.

06

Breaking Change Severity Drift

What to watch: The model downplays or exaggerates breaking change severity inconsistently across repositories. The same API removal is marked critical in one repo's section and minor in another's. Guardrail: Define a shared severity rubric in the prompt with concrete criteria per level. After generation, run a cross-repo severity calibration check that flags entries with the same change type but different severity labels for human alignment.

IMPLEMENTATION TABLE

Evaluation Rubric

Criteria for testing the aggregated changelog output before it reaches stakeholders. Each row targets a specific failure mode common in multi-repo generation, such as cross-repo inconsistency, hallucinated entries, or incorrect version ordering.

CriterionPass StandardFailure SignalTest Method

Cross-Repo Consistency

Every entry references the correct repository from [REPO_LIST] and no change is attributed to the wrong repo.

A commit from repo-A appears under repo-B's changelog section.

Parse output sections; assert each commit SHA prefix maps to exactly one declared repository in the input manifest.

Dependency Ordering

Entries are grouped so that shared dependency changes precede the features that consume them.

A breaking change in a shared library is listed after a feature in a downstream service that requires the fix.

Extract dependency graph from [DEPENDENCY_MAP]; verify topological sort of sections matches declared dependency edges.

Breaking Change Impact Propagation

Every breaking change in a shared component includes a cross-reference in every downstream consumer's section.

A breaking API change in a core library is noted only in the library's section, with no mention in affected service sections.

Scan output for breaking change markers; cross-reference with [DEPENDENCY_MAP] to confirm each consumer lists the impact.

Version Bump Coordination

Recommended version bumps respect semver rules and are consistent across repos that share a breaking change.

A library with a breaking change is bumped to a minor version, or two services sharing the same breaking change get different major version recommendations.

Apply semver rules to each repo's change type; assert all repos consuming the same breaking change receive the same major bump signal.

Hallucination Detection

No changelog entry describes a feature, fix, or change not present in the provided [COMMIT_DIFFS] or [PR_SUMMARIES].

Output describes a new authentication module that has no corresponding commit or PR in any input.

Extract all factual claims from output; for each claim, require at least one source commit SHA or PR number as grounding evidence.

Deduplication

No single change is listed more than once across the aggregated changelog.

The same bug fix appears in both the 'Bug Fixes' section and duplicated under a service-specific subsection.

Hash each entry's normalized description; flag any pair with similarity above 0.9 and matching commit references.

Stakeholder Tone Calibration

Technical sections use precise API and schema language; user-facing summaries avoid internal jargon.

A customer-facing summary contains raw stack traces or internal class names.

Classify each section by declared audience; run a jargon density check against a team-specific allowlist for user-facing sections.

Schema Validation

Output strictly conforms to the declared [OUTPUT_SCHEMA] with all required fields present and correctly typed.

The 'breaking_changes' array is missing or contains objects without the required 'affected_consumers' field.

Validate the full output against the JSON Schema provided in [OUTPUT_SCHEMA]; reject on any schema violation.

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Start with the base prompt and a single source of truth: a list of repos, their release tags, and the target output format. Use a simple markdown template for the unified changelog. Skip cross-repo dependency ordering and consistency validation initially. Focus on getting a readable aggregate per repo.

code
Repos: [REPO_LIST]
Tags: [TAG_LIST]
Output: [MARKDOWN_TEMPLATE]

Watch for

  • Duplicate entries when the same commit appears in multiple repos
  • Missing context when a change spans repos but is only described from one
  • Overly verbose output when commit messages are not summarized
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.