Web Application Testing
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
Refresh a named Marin external fork pin onto a newer upstream base using its configured descriptor and required end-to-end test.
$ npx skills add marin-community/marin --skill refresh-fork -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install marin-community/marin refresh-fork --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/refresh-fork .claude/skills/refresh-fork && rm -rf skills-srcUse ~/.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/
Install the "refresh-fork" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/refresh-fork into .claude/skills/refresh-fork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "refresh-fork", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/marin-community/marin/tree/main/.agents/skills/refresh-forkType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add marin-community/marin --skill refresh-fork -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install marin-community/marin refresh-fork --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/refresh-fork .agents/skills/refresh-fork && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "refresh-fork" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/refresh-fork into .agents/skills/refresh-fork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "refresh-fork", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marin-community/marin --skill refresh-fork -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install marin-community/marin refresh-fork --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/refresh-fork .cursor/skills/refresh-fork && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "refresh-fork" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/refresh-fork into .cursor/skills/refresh-fork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "refresh-fork", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/marin-community/marin.git --path .agents/skills/refresh-fork--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add marin-community/marin --skill refresh-fork -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install marin-community/marin refresh-fork --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/refresh-fork .gemini/skills/refresh-fork && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "refresh-fork" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/refresh-fork into .gemini/skills/refresh-fork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "refresh-fork", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install marin-community/marin refresh-forkInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add marin-community/marin --skill refresh-fork -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/refresh-fork .github/skills/refresh-fork && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "refresh-fork" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/refresh-fork into .github/skills/refresh-fork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "refresh-fork", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marin-community/marin --skill refresh-fork -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install marin-community/marin refresh-fork --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marin-community/marin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/refresh-fork .opencode/skills/refresh-fork && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "refresh-fork" agent skill from https://github.com/marin-community/marin/tree/main/.agents/skills/refresh-fork into .opencode/skills/refresh-fork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "refresh-fork", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
refresh-forkRefresh a named Marin external fork pin onto a newer upstream base using its configured descriptor and required end-to-end test.
Refresh Fork is an agent skill from marin-community/marin. Refresh a named Marin external fork pin onto a newer upstream base using its configured descriptor and required end-to-end test.
Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files (for example `docs/overlay-only-pr.md`, `docs/promotion-protocol.md` and `docs/vllm.md`).
It sits in Testing & QA. The repository describes itself as: Open-source framework for the research and development of foundation models. The licence is Apache-2.0.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit be1f5f1. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gituvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Refresh Fork loads about 4.1k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 2,228 words of instructions outside code blocks.
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.
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.
The full file from marin-community/marin at commit be1f5f1, republished under its Apache-2.0 licence (© marin-community). 2,228 words, ~4,105 tokens.
.claude/skills/refresh-fork/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Read AGENTS.md. Rebase refreshable fork overlays onto main-next, validate
the selected sources, re-pin Marin, and prepare any protected-branch promotion.
An unattended run opens a draft Marin PR and names the required admin
promotion; it never force-moves a stable branch. A fork_main source selector
reuses an existing stable lineage and does not create a staging branch.
Refresh a group as one unit and one PR. Per-fork guidance lives beside this
file: docs/vllm.md covers the vllm/tpu-inference group and the GPU release
pipeline, and docs/xla.md covers the XLA PJRT fork, which is pinned outside
migration.toml entirely.
In local mode, ask before pushing fork branches, opening the PR, or filing an issue. The required end-to-end test needs no extra confirmation.
Read the target fork's section in config/external/migration.toml. It gives:
upstream — the repo we rebase onto. Every fork has one.group — if present, refresh every section in the group together in one PR
(read them all now); if absent, this pin refreshes alone.base_select — how to choose the new upstream base or existing fork source.pin — where the resolved pin is recorded (isolated_project uv.lock,
descriptor:<path>#<section> SHA, or release:<path> prebuilt wheel); drives the
re-pin step.branch — the maintained fork branch this pin tracks. All current forks use
main. Rebase refreshes stage on main-next; fork_main selectors do not.e2e — the Marin end-to-end that validates the refresh.blocker_assignee — who owns the "can't migrate" issue.nuances — constraints a human must respect (torch pins, known-good ceilings).The descriptor records how to migrate; the pin source it names holds the actual revision.
docs/promotion-protocol.md for each rebased fork, then open exactly one draft PR in
marin-community/marin for the fork or group after the e2e passes. A grouped
refresh re-pins every group section at its staged tip in that single PR. State the
exact main-next to main admin promotion still required, request the
descriptor's blocker_assignee as reviewer, and monitor the PR per
.agents/skills/commit/SKILL.md.marin-community/marin issue assigned to blocker_assignee, titled
Fork refresh blocked: <fork> — <short reason>, with current pins, the selected
base, branch names/SHAs if created, attempted fixes, the remaining failure, and
artifacts./tmp/marin-fork-refresh/<run-id> (run id:
${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT} in Actions, else a UTC timestamp plus a
short label).upstream remote. The fork URL is repository in the
pin source (vllm/tpu.toml for descriptor pins, the [tool.uv.sources] git
entry for isolated projects, the release-asset host in vllm/gpu.toml for the
vllm-gpu release pin — the same marin-community/vllm repo); <upstream> is this
section's upstream.git clone <repository> <fork>
git -C <fork> remote add upstream <upstream>
git -C <fork> fetch --tags --multiple origin upstream # --multiple fetches both remotes; without it "upstream" is read as a refspec
git -C <fork> remote set-head upstream -a # so upstream/HEAD resolvesbase_select = upstream_main (evalchemy, harbor, MarinSkyRL, vllm-gpu): the base is the
tip of the upstream default branch. These pins rebase onto upstream main; there is no
release to gate on. vllm-gpu is the only unit that rebases the shared vLLM main source.base_select = latest_release (tpu-inference): use GitHub Releases of the
fork's upstream; do not use raw tags or branches. Select the newest release
where draft == false, prerelease == false, and the tag is exactly
vMAJOR.MINOR.PATCH. Resolve it to a commit SHA.base_select = fork_main (vllm): select a full SHA already reachable from
the fork's protected main, or a package-equivalent immutable release source
documented by the vLLM guide. Do not rebase vLLM or consult
tpu-inference's upstream LKG for this selector.If the selected base matches the current one and no pin metadata needs repair, exit no-op. Do not walk back to older releases when the latest eligible one fails; fix the refresh or file a blocker issue.
For an isolated fork whose upstream base has not moved, there is nothing to rebase
and the refresh is a no-op — even if Marin's pin lags the fork's own main. Adopting
patches pushed to the fork since Marin last locked belongs to the daily
external-dependency bump (ops-external-dependencies); refresh-fork runs only when
there is a newer upstream base to rebase onto.
Skip this section for base_select = fork_main: that selector reuses an exact
source on the protected fork lineage.
For every rebase, branch from the selected base as main-next. This staging
branch is disposable, and is distinct from protected main, which the
unattended refresh leaves unchanged.
Find the base our commits currently sit on: old_base is the descriptor's
upstream_base (descriptor pins) or git merge-base <fork>/main upstream/HEAD
(isolated and release pins, where it is not recorded). old_tip is the head of our
patches: the fork's main for isolated pins (Marin's recorded pin may lag main, so
rebase from main to cover the full patch set), or the pin's stable main tip for
descriptor and release pins (the descriptor's commit, or gpu.toml's
source_commit). Then, onto new_base:
git log --reverse --no-merges old_base..old_tip.
Merge commits (especially merges of upstream into a feature branch) are not
replayed — their content comes from the new base; drop them.carry (still needed, not upstreamed), drop
(upstream absorbed it, obsolete, or temporary), fix (intent needed,
implementation must change — re-author against the current layout when upstream
moved or refactored the files it touches). Before carrying anything, check whether
the new base already did it: grep the base for the symbols, APIs, or dependency
pins the patch introduces. Drop an absorbed backport or stale version ceiling;
do not re-add duplicate or obsolete code.carry and fix onto new_base in the old logical order: clean
cherry-picks for carries; rewrite fixes as new commits referencing the original
SHA(s). Separate genuine conflicts from cascade artifacts: a file the overlay
created (absent from the new base) conflicts only because an earlier commit that
added it was skipped. Classify each touched path as upstream-shared (exists at both
bases) or fork-new, resolve fork-new cascades mechanically, and count conflicts only
on shared files — a single abort-on-conflict pass badly overcounts and can read a
tractable rebase as intractable.git range-diff old_base..old_tip new_base..<new_tip> as the replay audit
and explain every dropped or rewritten delta in the notes and PR.new_base before a multi-hour build. A prior vLLM refresh caught
FusedMoE becoming FusedMoEFactory and removal of is_interleaved this way.drop. Collapse fork-infra churn
(CI, workflow, or prose commits that adopt then revise then disable) to its final
state rather than replaying each hop.Stop and file a blocker when the overlay is non-linear, upstream refactored
touched files that need substantial re-authoring, or many core files conflict.
A fork hundreds of commits behind also needs a one-time manual catch-up outside
this workflow. That catch-up replays the real commits; never reconstruct the
overlay from a net diff. Diff each hand-ported fix against the fork's stable
branch. Put the inventory, conflict map, and distance behind upstream in the
blocker issue.
Point Marin at main-next so the e2e runs against the replayed code, then run
uv run config/update-external.py to regenerate
lib/marin/src/marin/external_dependencies.py; confirm only the intended pins change.
The stable main remains at the old tip until an admin hard-swaps it after reviewing
the draft PR. Because main-next and the eventual main are the same commit,
the pin set here needs no change after that promotion.
pin = descriptor:<path>#<section> (vllm, tpu-inference): for a rebased
fork, push main-next and record its tip and selected base. For fork_main,
record the exact existing main-line source and its upstream base without
creating or promoting another branch. The section-by-section mechanics are
in docs/vllm.md.pin = release:<path> (vllm-gpu): the pin is a prebuilt wheel, so the refresh builds
and promotes one through the fork's own release pipeline, then re-pins from the promoted
manifest. The candidate/promote/re-pin commands and the CUDA/torch ABI-boundary caveat
are in docs/vllm.md.pin = isolated_project (evalchemy, harbor, MarinSkyRL): the uv source follows
the fork's main, so main is the stable branch. Stage the rebase on main-next,
review it from a compare link (upstream_base..main-next) on the Marin PR, and point
the uv source at main-next to validate. After the e2e passes, run
uv run config/update-external.py <fork> to lock config/external/<fork>/uv.lock
against that exact tip. Keep the source on main-next in the draft PR while main
still points at the old tip; the date tag keeps the staged SHA reachable. After an
admin advances main, restore the source to main, rerun
uv run config/update-external.py <fork>, and verify the lock still records the
validated SHA. Push that follow-up to the same PR before marking it ready or merging
it. Coordinate with the daily external-dependency bump, which also follows main.Respect the section's nuances. Manual fixed-base overlay changes are a separate
workflow; see docs/overlay-only-pr.md.
Run the fork's suite before the Marin end-to-end test, locally when supported or through fork CI.
Derive the command from the fork's CI config verbatim; do not invent a marker
subset. A narrow marker such as -m unit can silently skip the thousands of unmarked
tests the CI's real expression (-m "not runtime") collects, so the narrow run reads
green while most of the suite never ran. CI steps run in order under an implicit
if: success(): a later gated step (a -m runtime docker leg) does not run until an
earlier one is green, so its regressions stay hidden behind the first failure. Run
every step's marker in order.
On this VM, Docker bind mounts do not propagate into containers, so Harbor's
DOCKER-env golden tests must run in fork CI. Confirm the workflow supports
workflow_dispatch on the staged ref; otherwise it may silently skip a
non-main review branch.
For a version-sensitive golden, inspect the deciding code path and distinguish a
new dependency floor from a port defect. An upstream litellm>=1.92 floor, for
example, can stale a golden without a fork-source change. Never downgrade below
the floor. Prefer a dependency-independent fixture that patches every seam the
trigger reads, such as both sync and async token counters. Otherwise regenerate
and verify it in one CI run with logs as artifacts.
Run the descriptor's e2e before opening the PR:
The vLLM-family e2es — the TPU lane of
marin-community/vllm:.github/workflows/marin-gpu-release.yaml (vllm,
tpu-inference) and tests/cluster/vllm/test_snowball_backend_parity.py
(vllm-gpu) — are documented with their exact commands in docs/vllm.md.
experiments/evaluation/configs/evalchemy/gsm8k-smoke.yaml (evalchemy) and
experiments/evaluation/configs/harbor/aime-smoke.yaml (harbor) — one eval
runner drives both; only the config source differs. Submit a bounded run and
confirm it completes with metrics and no fork import/build/runtime traceback:
uv run python -m experiments.evaluation.cli launch --model qwen3-0.6b --limit 8 \
--evalchemy-config experiments/evaluation/configs/evalchemy/gsm8k-smoke.yaml # evalchemy
uv run python -m experiments.evaluation.cli launch --model qwen3-0.6b --limit 8 \
--harbor-config experiments/evaluation/configs/harbor/aime-smoke.yaml # harbor --dry-run resolves the model, backend, and task plan — a wiring pre-check, not
fork validation. Depending on the eval it may not import the fork at all, or import
it without exercising it, so a green dry-run says nothing about whether the new pin
runs. Only the live run above validates the refreshed fork.
experiments/post_training/iceball_micro.py (MarinSkyRL) — the micro
post-training e2e. --version is required and --run builds the handles
(without it the command only prints the plan); confirm the terminal stage
completes:uv run python -m experiments.post_training.iceball_micro --stage evaluation --version dev --runWhen an e2e fails, rerun the same workload against Marin's current pins on the old fork stack, same target and priority. Fix only failures that pass on the old stack and fail on the refreshed one. If the old stack is already broken, the fork's e2e cannot gate this refresh: do not open a PR on an unvalidated pin — file or link a blocker for the broken e2e and hold the refresh until it is fixed.
Once the e2e passes on main-next, create the rollback tag for the current stable
tip and the date tag for the validated staged tip per docs/promotion-protocol.md.
Push and verify those tags, then leave protected main unchanged. The
draft Marin PR must identify each main-next to main hard swap that an admin
must complete before merge.
A fork_main selector has no protected-branch promotion. Record the immutable
source tag or ancestry proof in the PR instead.
Keep the Marin PR draft until every required admin promotion is complete. After an
isolated_project promotion, restore its uv source from main-next to main, relock,
and confirm the resolved SHA did not change before marking the PR ready.
Do a PR-review pass over the fork commits and Marin diff using
.agents/skills/review-pr/SKILL.md, then run ./infra/pre-commit.py --review and
fix or answer every finding. Check that each retained patch has a reason and a drop
condition, each dropped patch is truly obsolete, Marin edits are scoped to the
refresh, and no text overclaims validation evidence.
Open one draft marin-community/marin PR via .agents/skills/commit/SKILL.md,
request the descriptor's blocker_assignee as reviewer, and follow the commit
skill's monitoring loop to an exit condition. PR body: above the fold, the fork,
selected base, the staged tip SHA, its rollback and date tags, the pending admin
promotion (and the wheel release tag for vllm-gpu), e2e outcome, and unresolved
risks; in <details>, the base-selection evidence and the carry/drop/fix table with
dropped-patch reasons.
© marin-community, 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
SKILL.md and 4 other files in .agents/skills/refresh-fork of marin-community/marin.
Open the folder on GitHubat commit be1f5f1
Refresh Fork 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Refresh Fork this skillmarin-community/marin | 3.9k | — | ~4.1k | Automated safety check: Pass | Apache-2.0 | |
| Web Application Testinganthropics/skills | 180k | 51 repos | ~966 | Automated safety check: Pass | Apache-2.0 | |
| Diagnosing Bugsfossasia/eventyay-interpretation | 1.6k | 32 repos | ~2.1k | Automated safety check: Pass | Apache-2.0 | |
| TDDpietheinstrengholt/rssmonster | 564 | 30 repos | ~906 | Automated safety check: Pass | MIT | |
| TDD WorkflowhellangleZ/burn-in-cceverywhere-ralph | 112 | 11 repos | ~2.4k | Automated safety check: Pass | None | |
| TDDsanity-io/sanity | 6.4k | 20 repos | ~1k | Automated safety check: Pass | MIT |
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
fossasia/eventyay-interpretation
Diagnosis loop for hard bugs and performance regressions. An agent skill from fossasia/eventyay-interpretation.
pietheinstrengholt/rssmonster
Test-driven development. An agent skill from pietheinstrengholt/rssmonster.
hellangleZ/burn-in-cceverywhere-ralph
A skill your agent uses when writing new features, fixing bugs, or refactoring code.
sanity-io/sanity
Test-driven development with red-green-refactor loop. An agent skill from sanity-io/sanity.
Ibrahim-3d/orchestrator-supaconductor
A skill your agent uses when working with Conductor's context-driven development methodology, managing project context artifacts, or understanding the relationship between product.md, tech-stack.md…
marin-community/marin
Deslop, simplify, or review low-value tests and prose only when explicitly requested for a branch or diff.
marin-community/marin
Use Iris to submit, inspect, debug, monitor, or recover jobs and tasks; diagnose scheduling and federation; deploy controllers; or reserve dev GPUs and TPUs.
marin-community/marin
Define, validate, submit, or restart a Marin SkyRL experiment through its artifact main.
marin-community/marin
Build, validate, publish, update, inspect, query, roll back, or archive a dynamic Marina applet.
marin-community/marin
Query Finelog logs and telemetry for Iris tasks, workers, profiles, training, vLLM, and cross-cluster forwarding.
marin-community/marin
Run a read-only preview for a specified Marin infra/pulumi stack and trace each pending resource change to merged pull requests since its latest successful update when that update records a clean…
Categories
Refresh a named Marin external fork pin onto a newer upstream base using its configured descriptor and required end-to-end test. Refresh Fork is an agent skill from marin-community/marin. Refresh a named Marin external fork pin onto a newer upstream base using its configured descriptor and required end-to-end test.
Refresh Fork fits situations like: testing & QA work in your project.
Run `npx skills add marin-community/marin --skill refresh-fork -a claude-code`. Or copy the skill folder (.agents/skills/refresh-fork in marin-community/marin) into .claude/skills/refresh-fork in your project. Claude Code loads it when a task matches its description.
Run `npx skills add marin-community/marin --skill refresh-fork -a codex`. Or copy the skill folder (.agents/skills/refresh-fork in marin-community/marin) into .agents/skills/refresh-fork in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add marin-community/marin --skill refresh-fork -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/refresh-fork, .gemini/skills/refresh-fork, .github/skills/refresh-fork and .opencode/skills/refresh-fork in your project.
Going by SKILL.md and its folder, Refresh Fork needs the command-line tools its instructions call (git and uv). Our summary lists: Docker.
SKILL.md contains no URLs. Its commands use git and uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Refresh Fork 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.
About 4.1k 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.
Skills that share tags, products or a category with Refresh Fork: Web Application Testing (anthropics/skills, 180k stars), Diagnosing Bugs (fossasia/eventyay-interpretation, 1.6k stars), TDD (pietheinstrengholt/rssmonster, 564 stars) and TDD Workflow (hellangleZ/burn-in-cceverywhere-ralph, 112 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
marin-community (a GitHub organization) maintains it in marin-community/marin, which has 3,902 GitHub stars. The repository holds 41 skills in this directory. The repository was last updated on October 8, 2026.
Source: marin-community/marin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.