OMF Oh My FeedSaved
English한국어

METHODOLOGY

What is sourced, what is edited, and what is not inferred.

The catalog keeps canonical GitHub facts separate from discovery evidence and editorial organization.

Canonical identity

A tool is identified by the lowercase owner/repository derived from an HTTPS GitHub repository root. A repository name by itself is not enough. URLs with credentials, custom ports, query strings, fragments, or paths such as tree, blob, and issues are rejected rather than guessed.

People and organizations are represented by their GitHub identity. The owner relationship remains a separate source-backed record instead of being inferred from similar names.

Sources and verification

Canonical repository and maker metadata comes from the official GitHub REST API. Each published snapshot records source identifiers, URLs, and a UTC collection time. GitHub stars and forks are immutable metric snapshots tied to that time.

GeekNews, Hacker News, Product Hunt, and Oh My Feed editorial discovery can provide evidence that something was noticed. A mention cannot replace official GitHub confirmation or become a popularity metric from another source. Product-family labels remain human organization. The web and CLI apply the same automatic classification to all tools using versioned rules over official GitHub topics, descriptions, and repository names. Capability signals come first; weaker signals that only name a host agent such as Claude Code or Codex, an agent-skill or agent-memory convention, or an mcp segment of the repository name apply only when no capability rule matched. Classification updates with published metadata, and filters include only categories with tools. Detail pages show the matching evidence and policy version. These are derived labels, not categories supplied by GitHub or human review; unmatched tools remain unclassified. The canonical download retains the original editorial fields.

Sorting—not a hidden recommendation score

Popular orders tools by the displayed GitHub star snapshot. Recently created orders by repository creation date. Canonical repository identity breaks ties deterministically. Oh My Feed does not currently publish a “Hot” score; the star-growth lists on Updates use the published formulas below. Product-event collection is off by default unless local analytics consent is granted; consent-gated event aggregates are not ranking input.

These controls help scan the catalog; they do not measure quality, safety, momentum, or fit. A star count can be useful context but is not a substitute for evaluating documentation, maintenance, licensing, and security.

People can be sorted by combined stars of cataloged tools or by the latest GitHub push to those tools. Recently active does not measure all activity by that person or identify who authored a commit. Unavailable dates appear last; display name and GitHub identity break ties.

Star growth on Updates

Updates shows two separate star-growth lists. Neither is a recommendation score, and the two are never combined into one.

Rising fastest compares the two latest official GitHub star snapshots of a cataloged tool: stars per day = (newer stars − older stars) ÷ days between the two snapshots. A tool is compared only when the change is positive, the snapshots are at least 1 day and at most 14 days apart, and the newer snapshot is no more than 7 days old. A shorter interval turns one burst into an inflated rate; a longer one averages the change away. Tools are ordered by that rate, highest first, and equal rates by canonical repository identity. Each row shows the rate, the change, and the interval, for example “≈383/day” beside “+2,248 stars in 5.9 days”, with both snapshot times. The rate describes the measured interval only; it is not projected beyond it.

New and fast covers repositories whose GitHub creation date is within the last 14 days, including repositories just found by recent-repository discovery that have a single snapshot: stars per day = current stars ÷ days from creation to the star snapshot, where an age under 1 day counts as 1 day. The snapshot must be no more than 7 days old. This is an average over the repository's whole life, not a recent change, so it is labeled “stars since creation” and kept as its own list.

Each list shows its top 10 and how many tools qualified. Stars are re-measured only when a collection source observes a repository again, so intervals differ from tool to tool; on 2026-10-09 the median gap between a tool's two latest snapshots was about 7 days. That is why the rate, not the raw change, is compared. Stars show interest; they do not measure quality, safety, or fit.

How the local recommendation scores a match

The local CLI compares technology names read from a project, and any task you type, against the catalog. Where a word matches changes what it is worth. A word in the name a tool publishes under, or in the tags its owner chose, is a claim about what that tool is. The same word in a description is prose, and prose is where a match is most often accidental, so name and tag matches count for more.

The same word is also worth less when the catalog is full of it. This is a catalog of AI tools, so words like llm and mcp sit on a large share of every entry and say almost nothing about which one you want. A word carried by more than a tenth of the catalog counts least; one carried by a hundredth or less counts most. Where a matched word is common, the reason line prints how many entries carry it, so the figure is visible rather than implied.

A few dependency names also say what a project is for: a repository that declares @playwright/test runs end-to-end tests. Those names are mapped to the tags the catalog files that subject under. The mapping is a curated table rather than something the project stated, so it counts for half of what a declared name does, and the reason line names the dependency that implied it so the inference can be checked.

Your local choices also affect the score: a tool marked useful gets 6 extra points, each topic shared with tools marked useful adds 2, and each topic shared with selected tools adds 1. This history stays on your computer; it is not your web account or browser saved list. With a CLI account connection, interests explicitly chosen in the web account add at most 3 points in total, below the minimum 4-point direct project match. A score is the sum of these declared matching, feedback and account-interest rules. It is not a quality, security, license or fitness judgement. The rankingSemantics field in every result states the rule that was in force when it was produced.

When a list cannot be ranked

A broad query does not produce a ranking. A score is a function of which words matched in which field, so a two-word query has at most eight possible values while the number of tools it admits can run into the hundreds. Hundreds of entries then hold one score, and the five places in a shortlist are settled by measured stars rather than by relevance.

No weighting fixes this. Weights relabel those buckets; they cannot split them. So instead of adjusting the score, the result reports that the score did not separate anything.

That is what discrimination carries: how many entries the search admitted, how many held the same score as the last one shown without making the list, and whether what you are reading is a ranking or a sample of a tied group. When the tied group is small enough to read, the candidates left out are named.

A way to narrow comes with it. refinements are the catalog’s own tags, chosen because they are frequent among the candidates competing for a place and rare across the catalog as a whole. Each carries both counts — how many of the current candidates have the tag and how many entries have it overall — so a suggestion can be checked rather than taken on trust.

Catalog exclusions

A repository is removed from the public catalog when its evident purpose is abuse: distributing malware or luring people into downloading it, attacking accounts or servers (for example raid, nuker, selfbot, or token-stealing tools), or fraud and bypassing device or account protections (for example IMEI masking, or FRP and activation-lock bypass). Security research, penetration-testing, malware-analysis, and defensive tools are not excluded because of their subject.

Each exclusion is a manual decision by an Oh My Feed administrator. Keyword signals can bring a repository to a reviewer, but they never exclude anything on their own. The record keeps the GitHub numeric repository ID, a reason category, an evidence note based on the repository's own description and topics, evidence links, and who decided and when. It applies to the numeric ID, so renaming the repository or being found again by another discovery source does not bring it back while the exclusion is active. Official GitHub evidence is kept. The listing disappears at the next hourly publication.

Exclusions are reversible. A revoked exclusion stays in the history, and the repository returns at the next publication if it still meets the normal criteria. An exclusion is a catalog listing decision, not a security verdict on the code, and a repository that is not excluded is not thereby safe. To ask for a review of an exclusion, or to report a repository for review, use Corrections with the repository link and your evidence.

Validation and limits

Before publication, the snapshot is checked for canonical IDs, required relationships, source-specific metrics, safe URLs, valid timestamps, and dangling references. An invalid snapshot fails closed instead of rendering unknown destinations.

Published repositories are rechecked against the GitHub API by numeric repository ID about once a week, separately from discovery. A renamed or transferred repository is updated to its new name. An archived repository, or one below one star, is removed. A repository GitHub reports as not found (deleted or made private) is removed only after two not-found checks at least 24 hours apart; the not-found observations are kept as evidence, and the tool returns automatically if GitHub later serves it again. GitHub errors, timeouts, and rate limits never remove a listing.

Star-growth lists depend on when snapshots were taken: a growing tool that was not re-measured in the last 7 days is not listed, and a newly discovered repository appears only in New and fast until a second snapshot 1–14 days later exists. The current catalog is selective, not comprehensive, and reflects a point in time. Descriptions from the canonical source may remain in English even when the interface is Korean. Corrections create a support case for review; they do not directly alter a source record. See Corrections to identify a record and provide evidence.