upstream-contrib

Moves a local change from a consumer repository into its upstream dependency and rewires the consumer onto the released version.

Updated Nov 2, 2025
One-click install
npx skills add https://github.com/fx/skills --skill upstream-contrib-fx
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: upstream-contrib
Source: https://github.com/fx/skills/tree/main/skills/upstream-contrib
Command: npx skills add https://github.com/fx/skills --skill upstream-contrib-fx

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? A fix or feature implemented in a consumer repository often really belongs in one of its dependencies. This Skill handles the two-repository case: it clones the upstream project, reimplements the change under that project's conventions, verifies the consumer against a local build, opens the upstream PR, and re-points the consumer at the published release — while preventing private-project details from leaking into public upstream artifacts. ## Core Features & Use Cases - Ecosystem-neutral upstream resolution: Discovers the upstream repository from package manifests across npm, PyPI, crates.io, Go modules, and RubyGems, then detects each project's own build, test, and lint commands. - Consumer confidentiality enforcement: Blocks consumer names, URLs, brand values, and internal identifiers from appearing in any upstream commit, PR, comment, or fixture when the upstream is public and the consumer is private. - Local-build verification and rewiring: Links the consumer to the local upstream build (npm link, pip -e, Cargo patch, Go replace, Gem path), confirms it works, removes the local implementation, and unlinks before committing. - Use Case: Your app carries a patched Badge component that belongs in the public design-system library. The skill clones the library, implements the change following its CONTRIBUTING.md, opens the upstream PR, and after merge and release bumps your dependency to the published version. ## Quick Start Ask the agent to upstream the local Badge component changes into the design-system dependency and rewire this repo onto the released version.

Frequently Asked Questions about upstream-contrib

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I contribute a local fix upstream to a dependency?▼

Identify the upstream repository from your package manifest, clone it, implement the change under that project's conventions, and open a PR there. This skill automates that flow, then verifies your consumer repo against a local build and updates the dependency after release.

How do I test my app against a local build of a dependency?▼

Use your ecosystem's link mechanism: npm/pnpm link, pip install -e, a Cargo [patch.crates-io] entry, a Go replace directive, or a Gemfile path entry. Verify the consumer's build and tests, then remove the link before committing so the PR never points at a local directory.

Does this work with private consumer repos and public upstreams?▼

Yes, and it enforces confidentiality in that case. The skill blocks the consumer's name, org, URLs, brand colors, hostnames, and internal IDs from appearing in any upstream commit message, PR body, comment, test, or fixture.

What happens if the upstream project requires a CLA or is archived?▼

The skill checks CONTRIBUTING.md, license, and archive status before writing any code. If a CLA is required, the repo is archived, or discussion is required before PRs, it stops and asks the user rather than submitting.

When should I not use this skill?▼

Do not use it for a PR on the repository you are already working in — that is the normal dev lifecycle. It exists only for the two-repository case where a change must cross a dependency boundary and the consumer must be re-pointed afterward.

Why can't I merge the consumer PR right after the upstream PR merges?▼

The consumer depends on a published version containing the change, which may require a prerelease publish, a release-PR merge, or manual tagging. The skill waits for a usable version and never merges release PRs, which are the maintainer's responsibility.