Open-source project
kkzzhizhou/scoop-apps avatar
kkzzhizhou/scoop-apps

scoop-apps, the daily auto-merged Scoop bucket, and the hash check risk it carries

使用Github Action每天自动合并其他scoop仓库的更新,仓库地址:https://github.com/kkzzhizhou/scoop-apps

548 stars59 forkstemplLicense varies

At a glance

What is it?
scoop-apps is a Scoop bucket that a GitHub Action merges from dozens of other buckets every day, resolving name clashes by version, renaming duplicates and deduplicating manifests by md5. The convenience is real and so is the caveat: the project states it does not security check the software it pulls, and stale manifests can point at the wrong file.
Who is it for?
scoop-apps suits a Windows user who wants one bucket to browse instead of adding a dozen upstream buckets, and who is willing to treat it as a convenience index rather than a trusted source. It does not suit anyone who needs a stable manifest for a specific app, because the manifests are regenerated daily from third-party repositories and the project says plainly that it does not verify the software sources.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly templ, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A bucket that is regenerated from other buckets every day

scoop-apps is not a hand curated collection of manifests. The project description says it uses a GitHub Action to merge updates from other Scoop repositories automatically every day. That single design decision explains the rest of the behaviour: the manifests you see are produced by a merge pipeline, so the content of the bucket changes on a schedule you do not control and cannot pin.

The documented features the pipeline delivers. Updates arrive daily. The list of merged repositories is generated dynamically from the scoop-directory project, so buckets can join and leave the merge set without a hand edit to the source list. Manifests that clash on name are handled automatically, with the newer version preferred, and a renamed duplicate keeps the form software-contributorID. Duplicates are also removed automatically based on md5, and the JSON format of each manifest is validated before it lands.

The tree layout matches the pipeline. There is a bucket directory holding the merged manifests, a scripts directory for the automation, a bin directory, a bucket.config file at the root, and a latest.update file. The root also carries app-contributor-list.csv, which maps an application back to the person or repository that contributed it. Two list files sit alongside, bucket-recommand.txt and bucket-not-recommand.txt, which the README describes as the places to submit a pull request asking for a bucket to be recommended or to be removed as unmaintained, with the reason stated in the pull request.

For the user, the promise is simple: one bucket to add, and it is as current as the network of upstream repositories behind it.

The install step, the -s escape hatch, and what a hash failure means

Adding the bucket is a single command, and the README gives it exactly as follows:

bash
scoop bucket add apps https://github.com/kkzzhizhou/scoop-apps

After that, the bucket is named apps and its manifests are available to the normal Scoop workflow. The bucket is then usable like any other, and the project wiki linked from the README holds the manual and the release notes.

The interesting part is the failure mode the README documents, because it is a direct consequence of merging manifests that other people wrote. The documentation explains that because a manifest update can point at the wrong file with some probability, an install can fail with a Hash Check Failed message, and that the workaround is the -s flag, which skips the check:

bash
scoop install xxx -s

The documentation is candid about the alternative: if you are not comfortable with that, verify the file against the official site yourself, or find the responsible contributor through app-contributor-list.csv and open an issue in their repository.

So there are three responses to a hash mismatch, and they are not equivalent. Skipping the check makes the install succeed while removing the only check that the downloaded archive matches what the manifest author expected. Verifying against the official site preserves the check in spirit. Filing an issue repairs the manifest at its source, which is the only option that helps every other user of the app.

No security check on the software that gets pulled in

The project documentation states plainly, in bold, that the software sources in the bucket are not security checked, and that users should judge for themselves or use antivirus software. That is not a minor disclaimer attached to a minor risk. It is the load bearing warning of the whole project, and it deserves to be read as the defining constraint rather than a footnote.

The reason follows from the architecture. The pipeline merges manifests authored by many different people, and it checks things it can check mechanically: that the JSON parses, that no two manifests claim the same name, that files are not byte identical duplicates. It does not and cannot establish that the URL in a manifest points at the vendor's real installer, that the hash was computed from a legitimate build, or that the upstream repository is still trustworthy. A manifest is a set of claims, and the merge process verifies the internal consistency of the claims, not the truth of them.

This is the point at which scoop-apps differs from a normal package source. A curated bucket carries the judgement of its maintainers, one manifest at a time, and a bad manifest is a bug to be fixed. An auto-merged bucket inherits the judgement of dozens of maintainers and applies none of its own, so the review happens in the upstream repository, by the person named in app-contributor-list.csv, or not at all.

For a machine you use for everyday work, that is a real difference in the risk model. For a throwaway Windows sandbox used to try out a tool, it is a reasonable trade.

Choosing a bucket from the recommendation lists

Because the merge set is large and partly automatic, the project gives contributors a way to steer it. A pull request to bucket-recommand.txt adds a bucket to the recommended set, and a pull request to bucket-not-recommand.txt removes an unmaintained bucket, with the reason given in the pull request description. The documentation is explicit that the removal path is for buckets that are no longer maintained, so a request there is a maintenance judgement rather than a complaint about a single broken manifest.

The top level entries tell you what else the repository holds. Besides the two recommendation lists there is bucket.config, which is the bucket metadata file Scoop reads, and latest.update, which by its name carries the timestamp or version marker for the most recent merge. The bucket directory contains the merged manifests themselves, and scripts and bin hold the automation that produced them.

The merged repository list in the README is long and includes well known upstream buckets such as ScoopInstaller/Extras, ScoopInstaller/Games, ScoopInstaller/Java, ScoopInstaller/Nirsoft, ScoopInstaller/Nonportable, ScoopInstaller/Versions, Scoopforge/Extras-CN and Scoopforge/Extras-Plus, alongside many individual contributor buckets. Credits go to the scoop-directory project that generates the list.

That composition is the honest characterisation of the project. It is an aggregation layer over the Scoop ecosystem, and its quality is the quality of the buckets underneath it.

Where scoop-apps is the wrong tool

The first wrong case is a reproducible environment. If your setup needs the same manifest tomorrow as today, a bucket that merges every day cannot give you that, because a manifest can change under you between two installs, and the -s flag is exactly the kind of workaround that makes an environment drift without anyone noticing.

The second wrong case is a high stakes target, whether a workstation that holds credentials or a machine whose integrity matters. The documentation says the sources are not security checked, and an auto-merged bucket widens the set of people whose manifests reach your machine in a single day. The right tool there is a bucket whose maintainers review each manifest, or an installer that verifies against a signed release.

The third wrong case is a specific application you already know the source for. If you know that one upstream bucket maintains the app well, adding that bucket directly gives you a smaller, reviewable set with fewer duplicate-name resolutions and fewer hash mismatches. The aggregation is a convenience for discovery, not a substitute for knowing where an app actually comes from.

The fourth wrong case is expecting a supported product. The repository has no GitHub releases, the licence is not stated, and the whole thing is a GitHub Action driven merge. There is no compatibility promise and no versioned stream to fall back to when a merge goes wrong.

scoop-apps against adding the upstream buckets directly

The obvious alternative is not another tool, it is a different configuration: add the buckets you actually need, one by one, and skip the aggregation layer. The difference in approach is worth spelling out.

Adding upstream buckets directly gives you manifests that one maintainer wrote for one application, with a hash they computed from the file they tested. There is no rename step, no md5 deduplication across unrelated apps and no chance that your app name resolves to a differently named manifest from a different contributor. The cost is that you have to know or find the bucket, and that the search work is on you rather than automated.

scoop-apps inverts that trade. You get one bucket, a wide catalogue, and manifests refreshed daily without you tracking anything, at the cost of a merge pipeline that applies rules rather than judgement. Its own documentation is the strongest argument for the direct route: the recommended and not-recommended lists, the contributor CSV and the advice to verify hashes against the official site are all ways of restoring the per-app accountability that the aggregation removes.

A middle path exists and it is probably the practical one. Use the aggregated bucket for discovery and for apps you are trying out, and add the specific upstream bucket directly for the applications you actually depend on, so that a stable dependency does not sit on top of a daily merge.

Editorial conclusion

scoop-apps suits a Windows user who wants one bucket to browse instead of adding a dozen upstream buckets, and who is willing to treat it as a convenience index rather than a trusted source. It does not suit anyone who needs a stable manifest for a specific app, because the manifests are regenerated daily from third-party repositories and the project says plainly that it does not verify the software sources. Before adding the bucket, read bucket.config and the recommendation lists at the repository root, check app-contributor-list.csv to find the upstream owner of the app you care about, and verify the download hash yourself rather than relying on the -s flag that skips the check.

Frequently asked questions

How do I add the scoop-apps bucket to Scoop?

The documentation gives one command: scoop bucket add apps https://github.com/kkzzhizhou/scoop-apps. After that the bucket is registered under the name apps and its manifests can be installed like any other bucket's.

What happens when a Scoop install fails with Hash Check Failed?

The documentation explains that an updated manifest can point at the wrong file, and that the -s flag skips the check, for example scoop install xxx -s. It also suggests verifying the file against the official site, or opening an issue with the responsible contributor listed in app-contributor-list.csv.

Does scoop-apps check the software it installs for malware?

No. The README states that the software sources in the bucket are not security checked and that users should judge for themselves or use antivirus software. The pipeline validates JSON format, handles name clashes and deduplicates by md5, but it does not verify that a download is legitimate.

How do I get a bucket removed from the merged list?

The documentation says a pull request to bucket-not-recommand.txt is the way to request cleanup of an unmaintained repository, and that the reason must be given in the pull request. Adding a repository to the recommended set is done by a pull request to bucket-recommand.txt.

How often does scoop-apps update, and where does the list of merged buckets come from?

The documentation states that updates run daily through a GitHub Action, and that the list of merged repositories is generated dynamically from the scoop-directory project. The repository has no GitHub releases, and the last push was on 2026-10-20.

Official sources

  1. Issues
  2. kkzzhizhou/scoop-apps on GitHub
  3. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kkzzhizhou-scoop-apps.svg)](https://hysenlabs.com/projects/kkzzhizhou-scoop-apps)

Was this useful?