---
title: "Keep a generated package current"
description: "What regenerates when, how to force a run, how to read what changed, and how to handle a spec change that breaks the client."
url: https://typeship.dev/docs/workflows/keep-a-package-current
markdown: https://typeship.dev/docs/workflows/keep-a-package-current.md
section: "Get started"
---
> ## Documentation index
> Fetch the complete documentation index at https://typeship.dev/llms.txt (every page, one line each) or the full text at https://typeship.dev/llms-full.txt.
> Append .md to any docs URL, or send Accept: text/markdown, for the markdown twin of that page.

# Keep a generated package current

What regenerates when, how to force a run, how to read what changed, and how to handle a spec change that breaks the client.

## Quick reference

```bash
typeship projects get <project_id>                  # source, languages, platforms, auto_regen, destinations
typeship projects generate <project_id>             # force a run now (URL-sourced projects)
typeship projects list-generations <project_id>     # history with status, trigger, file counts
typeship generations get <generation_id>            # one run: meta, warnings, files (or files_index when large)
typeship spec-versions list <project_id>            # every distinct spec the project generated from
typeship projects update <project_id> --auto-regen false   # pause automatic regeneration
```

## Why these commands

**Regeneration is change-driven.** Auto-regen (on by default) compares the spec's hash with the last generation: a repository source regenerates on pushes that touch the spec, a URL source on a 30-minute poll. An unchanged spec is skipped. `projects generate` always runs. See [Regeneration](https://typeship.dev/docs/projects/regeneration).

**A pull request per language is the unit of change.** Its body lists the API changes (new operations, changed types, removed fields) so review is about the API, not the diff. If a pull request cannot be opened (no destination, app not installed), the generation still records and the project page says why.

**History is the audit trail.** `list-generations` and `spec-versions` tell you which spec produced which package, with warnings per run. Large generations return `files_omitted: true` and a `files_index`; fetch one file with `generations get-file <id> --path <p>`.

**When a spec change breaks the client**, fix it at the source: a [spec patch](https://typeship.dev/docs/projects/spec-patches) (rename, retype, remove at a JSON Pointer) is applied before every generation and survives, where an edit to the output does not. Preview builds on spec pull requests surface the break before the spec merges.

> **For AI agents:** To know if a package is current: 
> 
> `projects get`
> 
>  and 
> 
> `list-generations`
> 
> , compare the latest generation's spec version with 
> 
> `spec-versions list`
> 
> . Never edit generated files; propose a spec patch.

## Sitemap

[Every page of these docs](https://typeship.dev/llms.txt)
