Agent skill

Streamlit Rebase

by whitphx in whitphx/stlite

Rebase our custom fork of the Streamlit repository onto new upstream Streamlit release

Apache-2.0Auto-check passedDevelopment

Install Streamlit Rebase

skills CLI
$ npx skills add whitphx/stlite --skill streamlit-rebase -a claude-code

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

GitHub CLI
$ gh skill install whitphx/stlite streamlit-rebase --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/whitphx/stlite.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/rebase-streamlit .claude/skills/streamlit-rebase && 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
streamlit-rebase
GitHub stars
1.7k
Token cost
~2.3k tokens
SKILL.md length
1,051 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

Rebase our custom fork of the Streamlit repository onto new upstream Streamlit release

  • Works in 12 steps: Navigate to the /streamlit submodule… → Fetch the latest tags from upstream → Infer the current base branch such as… → …
  • Tasks that involve Git workflow
  • Calls git, make and yarn

What it does

Streamlit Rebase is an agent skill from whitphx/stlite. Rebase our custom fork of the Streamlit repository onto new upstream Streamlit release

Its SKILL.md is about 2.3k 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 Git workflow. It works with Streamlit, WebAssembly and Git. The repository describes itself as: Streamlit-Lite; In-browser Streamlit 🎈🚀. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Git workflow

Example prompts

  • “/streamlit-rebase”

Workflow steps

12 steps, taken from the first numbered list in SKILL.md.

  1. Navigate to the /streamlit submodule directory
  2. Fetch the latest tags from upstream
  3. Infer the current base branch such as stlite-1.44.0-4.
  4. Assume NEW_BASE_STREAMLIT_VERSION_TAG is the tag name of the new upstream release, e.g., 1.45.0.
  5. Determine the new stlite customized branch name, e.g., stlite-1.45.0.
  6. Create the new stlite customization branch from the current one
  7. Rebase onto the new upstream tag
  8. If conflicts occur
  9. Repeat until rebase completes
  10. Verify with git log --oneline that customization commits are on top of the new tag
  11. Self double-check the rebase with two diff comparisons. Both should match except for trivially explainable differences (e.g., files the…
  12. After the rebase, update shared dependency versions in packages/*/package.json to match streamlit/frontend/*/package.json.

What it can do on your machine

Read from SKILL.md and the folder at commit 9a44ae8. 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:

    • git
    • make
    • yarn
    • tsc

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

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    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

Streamlit Rebase loads about 2.3k tokens when it runs. Until then it costs about 26 tokens; SKILL.md has 1,051 words of instructions outside code blocks.

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

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 whitphx/stlite at commit 9a44ae8, republished under its Apache-2.0 licence (© whitphx). 1,051 words, ~2,276 tokens.

Download SKILL.mdSave it as .claude/skills/streamlit-rebase/SKILL.md (or your agent's skills folder).
name
streamlit-rebase
description
Rebase our custom fork of the Streamlit repository onto new upstream Streamlit release
disable-model-invocation
true
argument-hint
new-version

Rebase the stlite customization branch onto a new upstream Streamlit release.

  1. Navigate to the /streamlit submodule directory

  2. Fetch the latest tags from upstream:

    shell
    git fetch upstream --tags
  3. Infer the current base branch such as stlite-1.44.0-4. Our project naming convention is stlite-[upstream-version](-[customization-version])?. Use this to determine the previous upstream version tag, and ask me to confirm it before proceeding. The base Streamlit version tag can be inferred from the current branch name as well.

    shell
    CURRENT_STLITE_BRANCH="INFERRED_BRANCH_NAME_HERE"
    CURRENT_BASE_STREAMLIT_VERSION_TAG="INFERRED_TAG_NAME_HERE"
  4. Assume NEW_BASE_STREAMLIT_VERSION_TAG is the tag name of the new upstream release, e.g., 1.45.0.

    shell
    NEW_BASE_STREAMLIT_VERSION_TAG=$ARGUMENTS
  5. Determine the new stlite customized branch name, e.g., stlite-1.45.0.

    shell
    NEW_STLITE_BRANCH=stlite-$ARGUMENTS
  6. Create the new stlite customization branch from the current one:

    shell
    git checkout -b $NEW_STLITE_BRANCH $CURRENT_STLITE_BRANCH
  7. Rebase onto the new upstream tag:

    shell
    git rebase --onto $NEW_BASE_STREAMLIT_VERSION_TAG $CURRENT_BASE_STREAMLIT_VERSION_TAG $NEW_STLITE_BRANCH
  8. If conflicts occur:

    • Run git status to identify conflicting files
    • Read each conflicting file to understand both versions
    • Resolve conflicts by preserving stlite customizations while incorporating upstream changes
      • If the conflict is so large, ask the developer for review and help
    • Run git add on resolved files
    • Continue with git rebase --continue
  9. Repeat until rebase completes

  10. Verify with git log --oneline that customization commits are on top of the new tag

  11. Self double-check the rebase with two diff comparisons. Both should match except for trivially explainable differences (e.g., files the stlite customization deletes, conflict-resolution overhead in files you manually merged):

    a. The diff between $CURRENT_STLITE_BRANCH and $NEW_STLITE_BRANCH should match the diff between $CURRENT_BASE_STREAMLIT_VERSION_TAG and $NEW_BASE_STREAMLIT_VERSION_TAG (upstream delta preserved):

    shell
    git diff $CURRENT_STLITE_BRANCH..$NEW_STLITE_BRANCH --stat > /tmp/stlite-delta.txt
    git diff $CURRENT_BASE_STREAMLIT_VERSION_TAG..$NEW_BASE_STREAMLIT_VERSION_TAG --stat > /tmp/upstream-delta.txt
    diff /tmp/stlite-delta.txt /tmp/upstream-delta.txt

    b. The diff between $NEW_BASE_STREAMLIT_VERSION_TAG and $NEW_STLITE_BRANCH should match the diff between $CURRENT_BASE_STREAMLIT_VERSION_TAG and $CURRENT_STLITE_BRANCH (customization delta preserved). In particular, the set of customized files should be identical:

    shell
    git diff $NEW_BASE_STREAMLIT_VERSION_TAG..$NEW_STLITE_BRANCH --name-only | sort > /tmp/files-new.txt
    git diff $CURRENT_BASE_STREAMLIT_VERSION_TAG..$CURRENT_STLITE_BRANCH --name-only | sort > /tmp/files-old.txt
    diff /tmp/files-old.txt /tmp/files-new.txt  # should be empty

    Summarize any differences (what file, how many lines, and why it's expected) and show the summary to the user so they can confirm the rebase is clean.

  12. After the rebase, update shared dependency versions in packages/*/package.json to match streamlit/frontend/*/package.json. For each dependency that appears in both a packages/*/package.json and a streamlit/frontend/*/package.json, if the version in streamlit/frontend/*/package.json is newer, update the version in packages/*/package.json to match. Note: @vitejs/plugin-react in packages/* and @vitejs/plugin-react-swc in streamlit/frontend/* are different packages — do not align them. After updating, run yarn install to regenerate the lockfile.

    Alignment policy: follow upstream as long as it works. The dep alignment is best-effort, not strict. Most of stlite's packages have their own build pipelines and don't share a module graph with upstream, so build-tool bumps in particular are landing into different blast radii than upstream's CI saw. Past rebases hit three regressions because of blanket alignment:

    • TypeScript 5→6: stricter narrowing surfaces type errors in upstream frontend code that upstream's CI doesn't catch (their build is vite-only, no tsc gate). Symptom: make kernel exits non-zero from packages/react's tsc --noEmit && vite build.
    • Yarn 4.5.3→4.13.0: streamlit's .yarnrc.yml introduces newer settings (e.g. npmMinimalAgeGate) that older Yarn rejects. Symptom: make kernel fails before any TS compiles, on workspace install.
    • Vite 7→8: Rolldown handles CJS deps differently from Rollup + @rollup/plugin-commonjs, breaking @stlite/react's bundle in the browser even though make browser exits clean. Symptom: page-load Calling \require` for "react" in an environment that doesn't expose the `require` function`. Only surfaces in a real browser, not in CI.

    A second, separate failure mode comes from stlite deleting streamlit/frontend/yarn.lock so the fork joins the parent workspace: every dependency of streamlit/frontend/* is then resolved fresh, landing on newer patch releases than the ones upstream's own lockfile pins and tests. Nothing in packages/* has to change for this to bite. Symptom: a build or typecheck failure inside streamlit/frontend that does not reproduce on the upstream tag. Which repair applies depends on what the newer release broke:

    • The fork's own source no longer satisfies it. A newer TypeScript rejected two @ts-expect-error directives that a newer @microlink/react-json-view had made unused. Fix these in the fork, as a patch on the stlite-<version> branch; a pin would only defer the same edit to the next rebase.
    • A prebuilt artifact no longer loads under it. A newer Vite carried a rolldown whose swc_core refused the @swc/plugin-emotion wasm plugin upstream declares. There is nothing to edit here, so pin the package with a resolutions entry in the root package.json and record the reason under the "//resolutions" key. Run yarn install before retrying the build; the entry does not reach the dependency graph until the lockfile is regenerated.

    Rule of thumb: build-tool deps (vite, vitest, typescript, the various vite-plugin-*, and the packageManager Yarn pin) should match upstream only if the build chain stays green and a manual yarn start in packages/browser (loaded in a real browser) shows no console errors. Otherwise, leave them at their current versions in packages/* and leave a top-level "//" comment in the affected package.json noting the pin and the follow-up condition for retrying the bump (see packages/react/package.json for an example).

    Runtime/type-shared deps still align unconditionally — anything imported across the package boundary (e.g. protobufjs because we consume @streamlit/protobuf, @types/react, @emotion/*).

  13. Verify the rebase produces a working browser bundle, not just clean builds. CI's make browser only compiles — it doesn't execute. After the dep alignment in step 12 (especially after any vite, plugin-react, or @emotion bump), run:

    shell
    yarn workspace @stlite/browser start

    Then load http://localhost:3001/demos/basic-mount/ in a real browser (or via Playwright MCP) and confirm:

    • Zero console errors after the demo finishes loading
    • The Streamlit script actually renders (e.g. st.write("Hello") shows)

    If errors surface, narrow the dep bump that caused it and either pin that one dep back or update the alignment skip-list above.

  14. When opening the stlite PR, link the submodule diff from the description, so a reviewer can read the fork's customizations against the new upstream release without cloning the submodule. Compare across forks, with the upstream release tag as the base: that tag lives in streamlit/streamlit and is not pushed to whitphx/streamlit, so a same-repo compare cannot name it.

    text
    https://github.com/streamlit/streamlit/compare/$NEW_BASE_STREAMLIT_VERSION_TAG...whitphx:streamlit:$NEW_STLITE_BRANCH

    Open the link before submitting and confirm it shows only the customization commits. The head side names a branch, and stlite-<version> stays force-pushable until its release, so re-check the link after any force-push: the branch tip has to keep matching the SHA the submodule is pinned to (git ls-tree HEAD streamlit) or the reviewer is reading a diff this PR does not merge.

© whitphx, 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/rebase-streamlit of whitphx/stlite.

Open the folder on GitHubat commit 9a44ae8

Compare with similar skills

Streamlit Rebase 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.

Streamlit Rebase compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Streamlit Rebase this skillwhitphx/stlite1.7k—~2.3kAutomated safety check: PassApache-2.0
Git Upstream Syncwado-lang/wado117—~855Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
Code Design Rationale Investigatorcursor/plugins10k9 repos~2.6kAutomated safety check: PassNone
Contributor-First PR MergeHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Migrate Internal Package into GhostTryGhost/Ghost55k—~3.8kAutomated safety check: PassMIT

Similar skills

  • Git Upstream Sync

    wado-lang/wado

    The only way to merge origin/main into a branch, conflicts or not.

    117 GitHub stars~855 tokensUpdated today
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Official

    Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.

    10k GitHub starsUsed in 9 repos~2.6k tokens
    DevelopmentAuto-check passed
  • Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

    16k GitHub starsUsed in 1 repo~847 tokens
    DevelopmentAuto-check passed
  • Moves a package from another TryGhost repository into Ghost as an internal workspace package while keeping its Git history, with checkpoints for the steps that need an administrator.

    55k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.

    70k GitHub starsUsed in 1 repo~1.6k tokens
    DevelopmentAuto-check passed

More from whitphx/stlite

  • Changeset

    whitphx/stlite

    Create or update a changeset fragment (.changeset/.md) reflecting the changes made in the current session or branch.

    1.7k GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Scan Dependencies

    whitphx/stlite

    CRITICAL: The scan-dependencies skill flags any dependencies that are unsafe to use.

    1.7k GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Copy Samples

    whitphx/stlite

    Update sharing-editor sample apps from the streamlit/docs repository

    1.7k GitHub stars~393 tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Streamlit Rebase

What does Streamlit Rebase do?

Rebase our custom fork of the Streamlit repository onto new upstream Streamlit release. Streamlit Rebase is an agent skill from whitphx/stlite.

When should I use Streamlit Rebase?

Streamlit Rebase fits situations like: tasks that involve Git workflow.

How do I install Streamlit Rebase in Claude Code?

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

How do I install Streamlit Rebase in Codex?

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

Can I use Streamlit Rebase 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 whitphx/stlite --skill streamlit-rebase -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/streamlit-rebase, .gemini/skills/streamlit-rebase, .github/skills/streamlit-rebase and .opencode/skills/streamlit-rebase in your project.

What does Streamlit Rebase need to run?

Going by SKILL.md and its folder, Streamlit Rebase needs the command-line tools its instructions call (git, make, yarn and tsc).

Does Streamlit Rebase access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Streamlit Rebase 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 Streamlit Rebase use?

Streamlit Rebase 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 Streamlit Rebase use?

About 2.3k tokens (SKILL.md is roughly 9.1k 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 Streamlit Rebase?

Skills that share tags, products or a category with Streamlit Rebase: Git Upstream Sync (wado-lang/wado, 117 stars), Finishing a Development Branch (obra/superpowers, 296k stars), Code Design Rationale Investigator (cursor/plugins, 10k stars) and Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Streamlit Rebase?

whitphx (a GitHub user) maintains it in whitphx/stlite, which has 1,669 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 7, 2026.

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