This guide is for maintainers and collaborators with repository access. For general contribution instructions, see CONTRIBUTING.md. For private vulnerability handling, see SECURITY.md. For security design context, see THREAT_MODEL.md.
- Follow and help enforce the Code of Conduct.
- Keep reviews factual, respectful, and focused on project quality.
- Prefer small, focused changes over broad rewrites.
- Protect the GitHub Action runtime surface. Users execute
dist/index.js, notsrc/directly. - Do not merge red CI unless the failure is clearly unrelated and documented.
- Correct bundle-size comparison results.
- Safe path handling for configured files and reports.
- Safe handling of untrusted tarball contents.
- Minimal runtime dependency footprint.
- Clear machine-readable JSON reports.
- Committed
dist/output that matches reviewed source. - Least-privilege GitHub workflow permissions.
Before approving a PR, check that it includes:
- A clear summary of what changed and why.
- Tests for behavior changes, or a convincing explanation when tests do not apply.
- Documentation updates for changed inputs, outputs, workflows, reports, or security expectations.
- Updated OpenSpec artifacts when the change modifies scoped behavior.
- Updated
dist/index.jswhen runtime source, dependencies, action metadata, or generated output changed. - Passing
pnpm testand, when needed,pnpm run build.
Review dist/index.js with source changes. The bundled diff is large, but collaborators should still verify that it corresponds to the TypeScript changes and does not introduce unrelated runtime behavior.
Give extra scrutiny to changes involving:
src/paths.tspath normalization or containment checks.src/tarball.tsarchive download, decompression, parsing, entry type handling, or file lookup behavior.src/report.tsreport output paths and report contents.src/comment.tsMarkdown rendering and escaping used by documentation examples.action.ymlinputs, outputs, runtime version, or entrypoint.- Workflow permissions, third-party actions, or dependency updates.
Security-sensitive PRs should include focused regression tests. If a test is not practical, require a written explanation in the PR.
For issues and discussions:
- Ask for a minimal reproduction when behavior is unclear.
- Confirm the action inputs, workflow permissions, Node version, and relevant artifact paths.
- Distinguish action bugs from caller workflow build problems.
- Keep unsupported feature requests open only when they fit the project direction.
- Close issues that are duplicates, out of scope, or cannot be reproduced after reasonable follow-up.
This action compares already-built files. If a report is wrong, first verify the configured path, files, package-name, and output-file values before assuming comparison logic is faulty.
If someone reports a suspected vulnerability publicly:
- Do not discuss exploit details in the public thread.
- Point them to SECURITY.md.
- Move the discussion to a private advisory or private disclosure channel.
- Preserve enough public context for transparency without revealing exploit steps.
When coordinating a fix, keep the patch focused, add regression tests, update dist/index.js, and publish advisory details only after a mitigation is available.
- Keep runtime dependencies minimal. New runtime dependencies require clear justification.
- Review Dependabot PRs like any other code change.
- Verify lockfile changes are expected.
- Keep GitHub Actions pinned by commit SHA in workflows.
- Keep workflow permissions as narrow as possible.
For runtime dependency changes, run:
pnpm install --frozen-lockfile
pnpm test
pnpm run buildUse OpenSpec for meaningful behavior changes.
- Confirm active changes under
openspec/changes/<name>/have proposal, tasks, and spec deltas as appropriate. - Keep task lists accurate as implementation progresses.
- Ensure accepted behavior is reflected in
openspec/specs/when archiving a completed change. - Do not let stale OpenSpec changes linger without an owner or next step.
Small documentation fixes, dependency maintenance, and test-only cleanups usually do not need a new OpenSpec change.
Before merging:
- Confirm required checks pass.
- Confirm review requirements are satisfied.
- Confirm the PR title follows Conventional Commit style when possible.
- Confirm docs, tests, OpenSpec, and
dist/are updated when required. - Confirm no unrelated files, secrets, local artifacts, or generated junk are included.
Prefer squash merges or focused commits according to the repository's current GitHub settings. If the PR contains unrelated work, ask the contributor to split it before merge.
Because this repository is a GitHub Action, the runtime artifact is part of the reviewed code. A source-only fix is incomplete when it changes runtime behavior.
When preparing release or branch updates:
- Verify
action.ymlpoints to the intended bundled entrypoint. - Verify
dist/index.jswas rebuilt from the current source. - Verify README examples still match supported inputs and permissions.
- Prefer immutable
https:baseline tarball URLs in examples and workflows.
If unsure whether a change affects runtime behavior, require pnpm run build and include the resulting dist/ changes.