Agent skill

Updating Docs For Release

by streamlit in streamlit/docs

Update the streamlit/docs repo for a new Streamlit release. An agent skill from streamlit/docs.

Apache-2.0Auto-check passedDevelopment

Install Updating Docs For Release

skills CLI
$ npx skills add streamlit/docs --skill updating-docs-for-release -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install streamlit/docs updating-docs-for-release --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/streamlit/docs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/updating-docs-for-release .claude/skills/updating-docs-for-release && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
updating-docs-for-release
GitHub stars
178
Token cost
~4k tokens
SKILL.md length
1,467 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

Update the streamlit/docs repo for a new Streamlit release. An agent skill from streamlit/docs.

  • Works in 9 steps: Branch setup → Release notes → Docstring generation → …
  • The user asks to update docs for a new Streamlit release
  • SKILL.md covers Inputs, 1. Branch setup, 2. Release notes and 3. Docstring generation, plus 6 more sections
  • Calls python, git and streamlit; reaches figma.com

What it does

Updating Docs For Release is an agent skill from streamlit/docs. Update the streamlit/docs repo for a new Streamlit release. Covers branch setup, release notes, API docstring generation, config.toml, API tiles/pages, deprecations, and a changelog sweep of concepts, tutorials, and knowledge articles. Use when the user asks to update docs for a new Streamlit release, add release notes, generate docstrings, or add API tiles for new commands.

Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Changelog and release notes, Technical documentation and Technical writing. It works with Streamlit and Python. The repository describes itself as: Source code for the Streamlit Python library documentation. The licence is Apache-2.0.

When your agent uses it

  • The user asks to update docs for a new Streamlit release
  • Add release notes
  • Generate docstrings
  • Add API tiles for new commands

Example prompts

  • “/updating-docs-for-release”

Requirements

  • Python 3
  • Node.js

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Branch setup
  2. Release notes
  3. Docstring generation
  4. API tiles and pages
  5. Configuration options
  6. Removed and deprecated APIs
  7. Changelog sweep of existing docs
  8. What's New overview
  9. Commit and push

What it can do on your machine

Read from SKILL.md and the folder at commit 07950cb. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python
    • git
    • streamlit
    • python3
    • pip
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • figma.com

    Also links to:

    • share.streamlit.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Updating Docs For Release loads about 4k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 1,467 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~101
When it runs · the whole SKILL.md, loaded when a task matches
~4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from streamlit/docs at commit 07950cb, republished under its Apache-2.0 licence (© streamlit). 1,467 words, ~3,961 tokens.

Download SKILL.mdSave it as .claude/skills/updating-docs-for-release/SKILL.md (or your agent's skills folder).
name
updating-docs-for-release
description
Update the streamlit/docs repo for a new Streamlit release. Covers branch setup, release notes, API docstring generation, config.toml, API tiles/pages, deprecations, and a changelog sweep of concepts, tutorials, and knowledge articles. Use when the user asks to update docs for a new Streamlit release, add release notes, generate docstrings, or add API tiles for new commands.

Streamlit release docs update

Follow these steps in order for each new Streamlit release (x.y.0).

Inputs

Require the target release version in major.minor.0 format (for example, 1.63.0). If the user did not provide it, ask before starting.

Derive the previous version from python/streamlit.json as the highest semantic version below the target version. Do not calculate it by subtracting one from the minor version. If the user explicitly provides a previous version, use it as an override after confirming that its key exists in python/streamlit.json.

State the target and previous versions before making changes.

1. Branch setup

Pull the latest main and create a release branch:

bash
git checkout main && git pull origin main
git checkout -b docs/streamlit-x.y-release

2. Release notes

You need the release notes text. If the user hasn't provided them, ask them to run the generating-changelog skill in the streamlit/streamlit repo and paste the output here.

Two files to update:

content/develop/quick-references/release-notes/_index.md

  • Replace the current ## **Version x.x.0 (latest)** section with the new release
  • Keep the "Older versions" links section at the bottom unchanged

content/develop/quick-references/release-notes/<year>.md

  • Prepend the new version section above the previous latest release

Format each section as:

markdown
## **Version x.y.0**

_Release date: Month D, YYYY_

**Highlights**
...

**Notable Changes**
...

**Other Changes**
...

Remove any duplicate bullets from the provided notes before adding them.

3. Docstring generation

Run python/generate.py in a clean virtualenv with the correct Streamlit version.

bash
cd python
python3 -m venv .venv-generate
.venv-generate/bin/pip install -q streamlit docstring-parser docutils numpydoc
.venv-generate/bin/python -c "import streamlit; print(streamlit.__version__)"
.venv-generate/bin/python generate.py

Important:

  • Always target the x.y.0 release key in streamlit.json, not patch releases (e.g. 1.59.0 not 1.59.2). After running, rename the key if pip installed a patch release: sed -i '' 's/"x.y.z":/"x.y.0":/' python/streamlit.json and do the same for GitHub source URLs in the blob links.
  • If the script errors on a removed API (e.g. a deleted connection type), remove that entry from the obj_key dict in generate.py and re-run.
  • Format streamlit.json with Prettier after generating: npx prettier --write python/streamlit.json
  • Verify the diff: only a new "x.y.0" top-level key should appear — no existing version keys should be modified or removed. Check with: git diff python/streamlit.json | grep "^@@"— there should be exactly one hunk at the end of the file.

4. API tiles and pages

For each new command introduced in the release (not new parameters on existing commands), add a tile and detail page.

Detail page — create content/develop/api-reference/<section>/st.<command>.md:

markdown
---
title: st.<command>
slug: /develop/api-reference/<section>/st.<command>
description: <one-line description>
keywords: st.<command>, ...
---

<Autofunction function="streamlit.<command>" />

For column config types, use content/develop/api-reference/data/column_config/<name>.md with:

markdown
<Autofunction function="streamlit.column_config.<TypeName>" />

Tile — add to both:

  1. The section's _index.md (e.g. content/develop/api-reference/status/_index.md)
  2. The main content/develop/api-reference/_index.md

Tile format:

markdown
<RefCard href="/develop/api-reference/<section>/st.<command>">

<Image pure alt="screenshot" src="/images/api/<command>.jpg" />

<h4>Title</h4>

One-line description.

```python
st.<command>(...)
```
</RefCard>
```

Menu — add an entry in content/menu.md in the correct position.

Images — do not generate images. Ask the user to provide one, and point them to the Figma template file for reference: https://www.figma.com/design/MOGYWhaoD7OON4HsnbAT1z/API-illustrations?node-id=0-1&t=bs0XekxOUD8pO0to-1

Tell them the required format:

  • Format: JPG
  • Size: 862×862px for data/widget elements, 862×816px for status/layout elements (match the dimensions of a similar existing image in public/images/api/)
  • They can also provide a PNG and you will convert it with: sips -s format jpeg input.png --out public/images/api/<name>.jpg

Place images at public/images/api/<name>.jpg.

5. Example apps

New demo apps can be added both for brand-new commands and for existing commands that gained a parameter (a new example is often added to demonstrate it). So check for newly added <Cloud name="..."> embeds across all commands, not just new ones.

The reliable way to find them is to diff the embedded Cloud names between the previous and new version keys in python/streamlit.json. For example:

bash
cd python
.venv-generate/bin/python -c "
import json, re
d = json.load(open('streamlit.json'))
def cloud_names(ver):
    out = {}
    for k, v in d[ver].items():
        for field in ('example', 'examples'):
            for m in re.findall(r'<Cloud[^>]*name=\"([^\"]+)\"', v.get(field, '') or ''):
                out.setdefault(k, set()).add(m)
    return out
prev, new = cloud_names('x.y-1.0'), cloud_names('x.y.0')
for k, names in new.items():
    added = names - prev.get(k, set())
    if added:
        print(k, sorted(added))
"

Every embed printed is a new interactive app that needs to be deployed to Community Cloud.

For each new Cloud embed found:

  1. Extract the name attribute (e.g. doc-mermaid-chart) — this is the required subdomain.
  2. Extract the code from the adjacent <pre> block (strip HTML tags and unescape HTML entities).
  3. Save the code to python/api-examples-source/<section>.<command_or_variant>.py following the existing naming convention (e.g. charts.mermaid_chart.py, status.skeleton_standalone.py).

After adding all files, present a table to the user:

AppDeploy linkGitHub fileSubdomain
<description>Deploy<filename>.py<cloud-name>

The user will handle deploying the apps to Community Cloud.

6. Configuration options

After generating docstrings, compare Streamlit's live config with the docs. The source of truth is streamlit config show from the same virtualenv used in step 3:

bash
cd python
.venv-generate/bin/python -c "import streamlit; print(streamlit.__version__)"
.venv-generate/bin/python -m streamlit config show

Primary file: content/develop/api-reference/configuration/config-toml.md

Diff the option keys and comments from streamlit config show against that page:

  • Added options — copy the CLI description into the matching [section] TOML block, using the same comment style as neighboring options.
  • Changed descriptions or defaults — update the existing comments (for example allowed values, inheritance rules, or default numbers).
  • Removed options — delete them from config-toml.md. If other pages still mention the option (FAQs, theming guides, tutorials), update or remove those references too.

Do not paste every theme.light.* / theme.dark.* key as its own table. Document those as inheriting from [theme] (and [theme.sidebar] where applicable), and only list exceptions that cannot be set per light/dark/sidebar.

Related pages — if theme or server options changed, check whether these still match the CLI:

  • content/develop/concepts/configuration/theming.md
  • content/develop/concepts/configuration/theming-fonts.md
  • content/develop/concepts/configuration/theming-colors-and-borders.md

Release-note bullets about client.*, server.*, runner.*, or theme.* are a useful hint for what moved, but streamlit config show is authoritative.

7. Removed and deprecated APIs

If this version removes or deprecates commands or parameters, update the current docs to match. Start from the release notes (removal and deprecation bullets) and confirm against the new python/streamlit.json key:

bash
cd python
.venv-generate/bin/python -c "
import json
d = json.load(open('streamlit.json'))
prev, new = d['x.y-1.0'], d['x.y.0']
print('removed commands:', sorted(set(prev) - set(new)))
for k in sorted(set(prev) & set(new)):
    old_args = {a['name'] for a in (prev[k].get('args') or [])}
    new_args = {a['name'] for a in (new[k].get('args') or [])}
    gone = sorted(old_args - new_args)
    if gone:
        print(f'removed params on {k}:', gone)
"

Do not edit historical yearly release-note pages. Search content/ (skip content/develop/quick-references/release-notes/ except the current version) plus python/api-examples-source/, python/generate.py, content/menu.md, and content/develop/quick-references/api-cheat-sheet.md.

Deprecated (still in Streamlit)

Keep the API page. Mark it so readers see the replacement:

  • On the detail page Autofunction: deprecated={true} and a deprecatedText that names the version and the replacement, for example:
markdown
<Autofunction function="streamlit.<command>" deprecated={true} deprecatedText="<code>st.<command></code> was deprecated in version x.y.0 and will be removed in a later version. Use <a href='/develop/api-reference/<section>/st.<replacement>'><code>st.<replacement></code></a> instead."/>
  • Add deprecated to the page keywords.
  • On the section _index.md RefCard: deprecated={true}. If the section already groups deprecated APIs (for example Deprecated classes), put the tile there.
  • Parameter deprecations usually flow from docstrings (.. deprecated:: is parsed into streamlit.json). Still rewrite tutorials, cheat-sheet snippets, and extra examples that recommend the old parameter as current.
Show full SKILL.md (685 more words)Show less
Removed

Clear the command or parameter from anything that presents it as current API:

  • Parameters — they drop from the new Autofunction after docstring generation. Remove them from extra examples, tutorials, concept pages, cheat-sheet snippets, and python/api-examples-source/ files. Rewrite those examples to the replacement API.
  • Commands with a dedicated page — keep the slug so old links work. Strip the live Autofunction body down to a deprecation stub whose deprecatedText says the command was deprecated in version A and removed in this version, and points to the replacement (see content/develop/api-reference/charts/bokeh_chart.md). Keep the content/menu.md entry.
  • Commands or methods without a dedicated page (for example a DeltaGenerator method) — delete Autofunctions, tiles, and cheat-sheet lines, and rewrite tutorials or demo apps that still call them.
  • If generate.py errors because an object no longer exists, remove that entry from obj_key (or related dicts) and re-run, as in step 3.

8. Changelog sweep of existing docs

After the API, config, and deprecation steps, walk the new release notes (step 2) against the rest of the docs. New command pages, config.toml, and removal/deprecation stubs are already covered in steps 4, 6, and 7. This step is everything else that can go stale.

Treat Highlights and Notable Changes as a checklist. For Other Changes, only follow up when a bullet changes documented behavior, defaults, limitations, or recommended usage — skip routine bug fixes.

For each relevant bullet, search for the command, parameter, config key, old workaround, or limitation it touches in:

  • content/develop/concepts/
  • content/develop/tutorials/
  • content/get-started/
  • content/deploy/
  • content/kb/ (knowledge base / FAQs)
  • Extra prose and examples on existing API pages (anything around <Autofunction>, not the generated docstring itself)
  • content/develop/quick-references/api-cheat-sheet.md
  • content/develop/concepts/app-testing/cheat-sheet.md when the change affects AppTest or widget testing

Do not edit historical yearly release-note pages.

The generated Autofunction and python/streamlit.json already document new parameters. Do not add new examples, extra API-page demos, or cheat-sheet lines just to showcase a new parameter. Leave Highlights that are fully covered by the Autofunction, a new API page (step 4), or config docs (step 6) alone unless existing prose contradicts them.

It is useful to update an existing example when a new parameter is a natural fit, instead of inventing a new snippet. For example, change st.text_input("Email") to st.text_input("Email", type="email") on a form that already collects an email. Do not add a separate "email input" example only because type shipped.

Update a narrative page only when the changelog makes that page wrong or misleading, or when a highlighted capability belongs on a page that already teaches that topic:

  • The page recommends a parameter, command, or workaround this version replaced or removed
  • The page documents a limitation, default, or return type that no longer holds
  • The page already explains the behavior that changed (for example a layouts guide that describes wrapping/stacking) and would be incomplete without the new option
  • An overview page such as content/get-started/fundamentals/additional-features.md needs a short mention of a genuinely new capability (not a new kwarg on an existing command)

Rewrite in place to match current Streamlit. Do not add a new knowledge-base article unless the user asks, or an existing FAQ is now wrong and cannot be fixed with an edit.

When the sweep is done, list the pages you changed (and any changelog bullets you checked but left alone) so the user can review.

9. What's New overview

Update the homepage's What's new section in pages/index.js with one or two broadly useful, user-facing features from the new release's Highlights. Replace the same number of older feature cards so the section stays at six cards.

For each new card:

  • Link directly to the feature's current concept or API page and append ?utm_source=streamlit (place any anchor after the query string).
  • Use a concise title, one-sentence description, and an appropriate Material icon in the existing RefCard pattern.
  • Prefer highlights with stable documentation and broad appeal. Do not feature bug fixes, deprecations, removals, or internal changes.

Keep the newest cards first and remove the oldest or least relevant cards.

10. Commit and push

Make focused commits per logical unit of work (release notes, docstrings, config, API tiles, deprecations/removals, changelog sweep, images, example apps). Push to the branch and open a PR against main.

© streamlit, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/updating-docs-for-release of streamlit/docs.

Open the folder on GitHubat commit 07950cb

Compare with similar skills

Updating Docs For Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Updating Docs For Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Updating Docs For Release this skillstreamlit/docs178—~4kAutomated safety check: PassApache-2.0
Diataxis Docs Writercalf-ai/calfkit-sdk1491 repos~3kAutomated safety check: PassApache-2.0
Docsbrickbots/PiFinder250—~6.2kAutomated safety check: PassGPL-3.0
Docs Changelogopen-edge-platform/anomalib6.2k—~660Automated safety check: PassApache-2.0
Documentcodewhale-hq/Codewhale41k—~170Automated safety check: PassMIT
Project Docsjjmartres/opencode133—~1.3kAutomated safety check: PassMIT

Similar skills

  • Diataxis Docs Writer

    calf-ai/calfkit-sdk

    Write or improve software documentation using the Diátaxis framework — four documentation types (tutorials, how-to guides, reference, explanation), each serving a different user need.

    149 GitHub starsUsed in 1 repo~3k tokens
    DevelopmentAuto-check passed
  • Docs

    brickbots/PiFinder

    Author and edit PiFinder's user-facing documentation in the project's house style.

    250 GitHub stars~6.2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Docs Changelog

    open-edge-platform/anomalib

    Reviews anomalib docstrings, documentation updates, and changelog expectations

    6.2k GitHub stars~660 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Document

    codewhale-hq/Codewhale

    Write or update repository/product documentation: README, user guides, API docs, architecture, migration notes, and changelog material.

    41k GitHub stars~170 tokensUpdated today
    DevelopmentAuto-check passed
  • Project Docs

    jjmartres/opencode

    Generate comprehensive, professional project documentation structures including README, ARCHITECTURE, USERGUIDE, DEVELOPERGUIDE, and CONTRIBUTING files.

    133 GitHub stars~1.3k tokensUpdated 5 mo ago
    DevelopmentAuto-check passed
  • Technical Writing

    frappe/skills

    Write prose in "Simplified Technical English". An agent skill from frappe/skills.

    146 GitHub stars~1.1k tokensUpdated 8 days ago
    DevelopmentAuto-check passed

Works with

Categories

Questions about Updating Docs For Release

What does Updating Docs For Release do?

Update the streamlit/docs repo for a new Streamlit release. An agent skill from streamlit/docs. Updating Docs For Release is an agent skill from streamlit/docs. Update the streamlit/docs repo for a new Streamlit release.

When should I use Updating Docs For Release?

Updating Docs For Release fits situations like: the user asks to update docs for a new Streamlit release; add release notes; generate docstrings; add API tiles for new commands.

How do I install Updating Docs For Release in Claude Code?

Run `npx skills add streamlit/docs --skill updating-docs-for-release -a claude-code`. Or copy the skill folder (.claude/skills/updating-docs-for-release in streamlit/docs) into .claude/skills/updating-docs-for-release in your project. Claude Code loads it when a task matches its description.

How do I install Updating Docs For Release in Codex?

Run `npx skills add streamlit/docs --skill updating-docs-for-release -a codex`. Or copy the skill folder (.claude/skills/updating-docs-for-release in streamlit/docs) into .agents/skills/updating-docs-for-release in your project. Codex loads it when a task matches its description.

Can I use Updating Docs For Release in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add streamlit/docs --skill updating-docs-for-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/updating-docs-for-release, .gemini/skills/updating-docs-for-release, .github/skills/updating-docs-for-release and .opencode/skills/updating-docs-for-release in your project.

What does Updating Docs For Release need to run?

Going by SKILL.md and its folder, Updating Docs For Release needs the command-line tools its instructions call (python, git, streamlit, python3, pip and npx). Our summary lists: Python 3; Node.js.

Does Updating Docs For Release access the network?

SKILL.md names 2 domains. In commands or code: figma.com; the agent is likely to contact it when it follows the instructions. As links in the text: share.streamlit.io. This is read from the text; nothing was executed.

Is Updating Docs For Release safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Updating Docs For Release use?

Updating Docs For Release is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Updating Docs For Release use?

About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Updating Docs For Release?

Skills that share tags, products or a category with Updating Docs For Release: Diataxis Docs Writer (calf-ai/calfkit-sdk, 149 stars), Docs (brickbots/PiFinder, 250 stars), Docs Changelog (open-edge-platform/anomalib, 6.2k stars) and Document (codewhale-hq/Codewhale, 41k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Updating Docs For Release?

streamlit (a GitHub organization) maintains it in streamlit/docs, which has 178 GitHub stars. The repository was last updated on October 7, 2026.

Source: streamlit/docs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.