finds.dev← search

// the find

tj-actions/changed-files

★ 2,704 · TypeScript · MIT · updated Jun 2026

:octocat: Github action to retrieve all (added, copied, modified, deleted, renamed, type changed, unmerged, unknown) files and directories.

A GitHub Action that tells you which files changed between commits, branches, or PRs. It covers every event type GitHub supports and outputs per-file-type lists (added, deleted, modified, renamed, etc.) plus boolean flags, which makes conditional CI easy to wire up. The main audience is monorepo teams who want to skip expensive jobs when nothing relevant changed.

The `files_yaml` grouping input is the best feature — define named file groups in YAML, get `test_any_changed`, `src_any_changed`, etc. as separate boolean outputs, and skip whole job trees with one `if:` check. Dual-mode operation (local git diff vs GitHub REST API) means you can trade the 3000-file API cap for a real diff when your repo needs it. Matrix JSON output works well for the 'build only changed packages' pattern that most monorepo teams eventually need. Cross-platform support is genuine, not an afterthought — the Windows path separator handling actually works.

Forty-plus inputs is too many. The `fetch-depth` footgun bites constantly: forget to set it on `push` events and you get silently wrong results with no error. The `files_yaml` output naming is verbose and fragile — rename your key from `test` to `tests` and every downstream `if:` condition breaks with no static analysis to catch it. Checked-in `dist/index.js` is standard GitHub Actions practice but still means PRs include generated file diffs and any maintainer with merge access can ship arbitrary code to the compiled bundle without a separate build review.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →