Skip to content

feat(hooks): expose installed tool backend and path - #13421

Merged
jdx merged 9 commits into
jdx:mainfrom
garysassano:feat/hook-install-metadata
Sep 21, 2026
Merged

jdx merged 9 commits into
jdx:mainfrom
garysassano:feat/hook-install-metadata

Conversation

@garysassano

@garysassano garysassano commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Installation hooks currently report the configured request and installed version, but cannot identify the backend or exact installation directory that completed. This adds backend and install_path to each MISE_INSTALLED_TOOLS entry, deriving both from the installation result so successful entries remain useful during partial failures and do not depend on a second configuration lookup.

The existing fields and hook timing remain unchanged. URL credentials are removed from backend identifiers while meaningful SSH usernames are preserved, and non-Unicode path behavior is documented. Documentation distinguishes installation completion from configuration selection, floating-link updates, and adoption by a running application, including no-op and failure behavior.

Verification:

  • mise run test:e2e -- test_hooks_installed_tools
  • mise run lint
  • Native CI validates the current head, including the focused unit and E2E coverage added after review

AI-assisted — Tool: OpenAI Codex; model: OpenAI/GPT-6; version: unavailable.

Summary by CodeRabbit

  • New Features

    • Postinstall tool data now includes the installation backend and exact installation path, alongside tool name and version details.
    • Hook payloads now accurately report tools successfully installed during batch operations, including when another installation fails.
  • Documentation

    • Updated hook documentation with the expanded payload format, field descriptions, examples, and clarification of when installation information is reported.
    • Clarified when service refreshes should occur in relation to explicit upgrade workflows.

@coderabbitai

coderabbitai Bot commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

Understand this PR’s impact

Explore downstream dependencies and potential security impact with Blast Radius.

View blast radius →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)

Review profile: CHILL

Plan: Advanced

Run ID: b414db75-c707-4b3c-a266-30c01a2372f2

📥 Commits

Reviewing files that changed from the base of the PR and between 429630f and fd58dac.

📒 Files selected for processing (1)
  • e2e-win/dotfiles_watch.Tests.ps1

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.


📝 Walkthrough

Walkthrough

The postinstall payload now includes each tool's backend and exact installation path. Installation records are captured immediately after installation, preserved during partial failures, serialized with opaque versions, and documented with updated semantics.

Changes

Installed tools payload

Layer / File(s) Summary
Payload contract and serialization
src/hooks.rs, docs/hooks.md
InstalledToolInfo now includes backend and install_path fields. Tests cover opaque versions, URL sanitization, and platform paths. Documentation describes the five-field payload and its installation-completion semantics.
Installation capture and hook output
src/toolset/toolset_install.rs, e2e/config/test_hooks_installed_tools, e2e-win/dotfiles_watch.Tests.ps1
Successful installation records are captured before later configuration changes and reused by the postinstall hook. End-to-end tests verify metadata fields, isolated install directories, no-op behavior, partial failures, and watcher cleanup.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant InstallCommand
  participant install_with_deps
  participant InstalledToolInfo
  participant PostinstallHook
  InstallCommand->>install_with_deps: Install requested tool versions
  install_with_deps-->>InstallCommand: Return successful installations
  InstallCommand->>InstalledToolInfo: Build backend and install_path records
  InstallCommand->>PostinstallHook: Pass installed tool records
Loading

Suggested reviewers: jdx

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 71.43% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 2 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: exposing the installed tool backend and installation path in hooks.
Full details: Docstring Coverage

Explanation

Docstring coverage is 71.43% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 2 files. (1 skipped: 1 unsupported.)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

The PR appears safe to merge; no actionable new issue or outstanding previous finding remains.

Summary

This PR expands each MISE_INSTALLED_TOOLS postinstall-hook entry with the backend that performed the installation and the concrete installation directory.

  • Captures metadata directly from successful installation results, including successes retained during partial batch failures.
  • Sanitizes URL-based backend identifiers while preserving meaningful SSH usernames.
  • Documents payload timing, no-op and partial-failure behavior, activation boundaries, and lossy representation of non-Unicode paths.
  • Adds focused serialization and end-to-end coverage and strengthens Windows watcher cleanup.

Reviews (14) · Last reviewed commit: "Merge branch 'main' into feat/hook-insta..."

Comment thread src/hooks.rs Resolved
Comment thread src/hooks.rs Resolved
Comment thread e2e/config/test_hooks_installed_tools Resolved
@garysassano
garysassano force-pushed the feat/hook-install-metadata branch from 11fe005 to 493ca81 Compare September 20, 2026 16:08
Comment thread src/hooks.rs Resolved
@garysassano
garysassano force-pushed the feat/hook-install-metadata branch from 493ca81 to c85f58c Compare September 20, 2026 16:12
Comment thread e2e/config/test_hooks_installed_tools Resolved
@garysassano
garysassano force-pushed the feat/hook-install-metadata branch from c85f58c to 302b2e2 Compare September 20, 2026 16:32
Comment thread src/hooks.rs Resolved
@greptile-apps

greptile-apps Bot commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

Want your agent to iterate on Greptile's feedback? Try greploops.

@garysassano
garysassano force-pushed the feat/hook-install-metadata branch from 302b2e2 to e26cfda Compare September 20, 2026 17:01
@garysassano
garysassano force-pushed the feat/hook-install-metadata branch from e26cfda to c35c6da Compare September 20, 2026 17:35
@garysassano
garysassano marked this pull request as ready for review September 20, 2026 18:57
@github-actions

Copy link
Copy Markdown
Contributor

This PR currently has failing checks. If this continues for 7 days, it will be closed automatically.

This is warning day 1 of 7.

Please update the PR when you have a chance. Feel free to reopen or create a new PR if it is closed and you'd like to continue working on it.

This comment was generated by an automated workflow.

@jdx
jdx marked this pull request as draft September 21, 2026 01:02
@garysassano

Copy link
Copy Markdown
Contributor Author

The failing Windows E2E job reported 286 passed tests and 0 failed tests, then failed Pester container cleanup because the new upstream dotfiles_watch service still held the test directory open after task removal. The failure repeated across all three workflow attempts.

Commit fd58dac6c adds a bounded Wait-Watcher $false after service and scheduled-task removal so Pester only deletes the test directory after the watcher releases it. This is a separate follow-up commit; the hook implementation and the merge from main remain unchanged.

PowerShell parser validation passes locally. The pushed head will provide native Windows E2E evidence.

Comment thread e2e-win/dotfiles_watch.Tests.ps1 Resolved
Comment thread e2e-win/dotfiles_watch.Tests.ps1 Resolved
@garysassano

Copy link
Copy Markdown
Contributor Author

Exact-head Windows evidence is now green on 53744a1d2:

  • Windows build: passed
  • Windows unit: passed
  • Windows E2E: passed in 10m14s, including dotfiles_watch.Tests.ps1
  • Linux build, E2E, lint, docs, bootstrap, CodeRabbit, and Greptile: passed

The previous Pester test-directory cleanup failure is resolved. The macOS unit job is still completing; no exact-head check is failing.

@garysassano
garysassano marked this pull request as ready for review September 21, 2026 02:37
@jdx
jdx merged commit 515379f into jdx:main Sep 21, 2026
44 checks passed
jdx pushed a commit that referenced this pull request Sep 24, 2026
<!-- entire-trail-link-start -->
https://entire.io/gh/jdx/mise/trails/68
<!-- entire-trail-link-end -->

### 🚀 Features

- **(bootstrap)** remove module resources with unapply by @jdx in
[#13441](#13441)
- **(bootstrap)** support PartOf, BindsTo, Before, Conflicts and
ExecStartPre/Post in systemd units by @jdx in
[#13526](#13526)
- **(bootstrap)** remove a templated file when it renders empty by @jdx
in [#13510](#13510)
- **(bootstrap)** manage a file's permissions without its contents by
@jdx in [#13511](#13511)
- **(cli)** colour the help page mise prints, and give it a logo by @jdx
in [#13449](#13449)
- **(config)** add .miserc.local.toml overrides by @jdx in
[#13440](#13440)
- **(config)** complete keys for `mise config get` and `mise config set`
by @jdx in [#13551](#13551)
- **(daemons)** add user-owned shared server providers by @jdx in
[#13534](#13534)
- **(daemons)** share SQL servers with isolated checkout databases by
@jdx in [#13536](#13536)
- **(daemons)** isolate shared NATS consumers with accounts by @jdx in
[#13537](#13537)
- **(dotfiles)** preview file counts and size before tracking by @jdx in
[#13417](#13417)
- **(dotfiles)** support exclusions on tracked directories by @jdx in
[#13418](#13418)
- **(dotfiles)** select tracked files with include lists by @jdx in
[#13432](#13432)
- **(dotfiles)** deliver warnings from background captures by @jdx in
[#13483](#13483)
- **(dotfiles)** set target file permissions with a permissions key by
@jdx in [#13514](#13514)
- **(dotfiles)** remove targets with mode = "absent" by @jdx in
[#13513](#13513)
- **(dotfiles)** remove a template's target when it renders empty by
@jdx in [#13515](#13515)
- **(dotfiles)** remove directories mise created once they are empty by
@jdx in [#13518](#13518)
- **(hooks)** expose installed tool backend and path by @garysassano in
[#13421](#13421)
- **(install)** explain checksum mismatches caused by re-uploaded GitHub
assets by @jdx in [#13512](#13512)
- **(lock)** keep locked backends when the registry moves a tool, and
add `mise backends switch` by @jdx in
[#13543](#13543)
- **(ls)** filter and group tools by backend by @jdx in
[#13530](#13530)
- **(registry)** add a url field for a tool's project homepage by @jdx
in [#13533](#13533)
- **(search)** search package registries by backend prefix or with --all
by @jdx in [#13550](#13550)
- **(tool-stub)** lock stubs in their project's mise.lock by @jdx in
[#13502](#13502)
- **(vfox)** add BackendUninstall hook for backend plugins by @jdx in
[#13522](#13522)
- override node bundled pnpm by specified version of pnpm by @EMcCormack
in [#13498](#13498)

### 🐛 Bug Fixes

- **(activate)** make bash `mise` function work without $__MISE_EXE by
@jdx in [#13491](#13491)
- **(aqua)** create .mise-bins for registry files listed by name only by
@jdx in [#13525](#13525)
- **(aqua)** report only the provenance and signature checks mise
performs by @jdx in [#13549](#13549)
- **(backend)** keep .exe when bin renames a raw Windows download by
@jdx in [#13529](#13529)
- **(bootstrap)** stop running Windows user services through cmd.exe by
@jdx in [#13429](#13429)
- **(bootstrap)** run history reload commands for dotfiles bootstrap
writes by @jdx in [#13509](#13509)
- **(brew-cask)** percent-decode artifact filenames from cask URLs by
@jdx in [#13431](#13431)
- **(cache)** stop prune from destroying installed tool files by @jdx in
[#13424](#13424)
- **(completion)** exit quietly when the completion reader closes stdout
by @jdx in [#13527](#13527)
- **(daemons)** fail early when a postgres daemon would start as root by
@jdx in [#13567](#13567)
- **(github)** don't abort when a forge token has an invalid header
character by @jdx in [#13488](#13488)
- **(history)** run the Windows watcher without a console window by @jdx
in [#13428](#13428)
- **(history)** report files omitted by credential filtering by @jdx in
[#13415](#13415)
- **(history)** skip nested repositories unless tracked directly by @jdx
in [#13416](#13416)
- **(history)** apply global exclusions consistently to tracked paths by
@jdx in [#13427](#13427)
- **(install)** align per-tool progress bars in interactive installs by
@jdx in [#13494](#13494)
- **(install)** extract .tar.zst archives compressed with a long window
by @jdx in [#13566](#13566)
- **(lock)** lock the npm version, not the aube install directory name
by @jdx in [#13542](#13542)
- **(lock)** lock global requests shadowed by the project config by @jdx
in [#13547](#13547)
- **(lock)** make --bump check remote versions and fail when it can't by
@jdx in [#13544](#13544)
- **(lock)** refuse to lock a version that a failed listing never
confirmed by @jdx in [#13552](#13552)
- **(npm)** run npm_execpath scripts through aube, not the task runner
by @jdx in [#13484](#13484)
- **(release)** build Windows with panic=unwind so vfox Lua errors don't
abort by @jdx in [#13503](#13503)
- **(self-update)** fail before downloading when the install dir is not
writable by @jdx in [#13453](#13453)
- **(shim)** install a wrapper command's missing provider before
dispatching by @jdx in [#13532](#13532)
- **(task)** preserve script execution and dependencies in metadata
overlays by @jdx in [#13448](#13448)
- **(task)** allow TOML commands to replace file tasks by @jdx in
[#13458](#13458)
- **(task)** only report the task that failed as an error by @jdx in
[#13556](#13556)
- **(upgrade)** persist explicit selectors when bumping versions by
@zeitlinger in [#13179](#13179)

### 🚜 Refactor

- move platform and version primitives out of cli::version by @jdx in
[#13457](#13457)
- move shared history helpers out of the CLI layer by @jdx in
[#13480](#13480)
- move global-config editing helpers into config::edit by @jdx in
[#13481](#13481)

### 📚 Documentation

- **(agents)** move task procedures into skills and fix stale guidance
by @jdx in [#13528](#13528)
- **(bootstrap)** explain optional setup modules with config
environments by @jdx in [#13439](#13439)
- **(bootstrap)** remove files in the home directory with state =
"absent" by @jdx in [#13507](#13507)
- **(registry)** show verification badges and link each tool to
mise-versions by @jdx in
[#13548](#13548)
- fix zsh completion steps rendering as duplicate "sh" tabs by @jdx in
[#13423](#13423)
- accept bug reports in GitHub Issues by @jdx in
[#13524](#13524)
- describe development tools and project configuration plainly by @jdx
in [#13517](#13517)

### 🧪 Testing

- **(bootstrap)** cover the bootstrap task on adoption and later updates
by @jdx in [#13508](#13508)
- **(daemons)** make the port-slot test deterministic by @jdx in
[#13447](#13447)
- **(e2e)** share one HTTP test server via start_http_server by @jdx in
[#13553](#13553)
- **(e2e)** serve npm metadata from a local fake registry by @jdx in
[#13554](#13554)
- **(e2e)** skip the postgres daemon provider test as root by @jdx in
[#13565](#13565)
- **(lockfile)** make the python provenance-skip test use its locked
tarball by @jdx in [#13545](#13545)
- don't reset the shared fixture tree in --list invocations by @betaboon
in [#13455](#13455)

### 📦️ Dependency Updates

- update rust crate usage-cli to v6.11.0 by @renovate[bot] in
[#13450](#13450)
- update rust crate console to v0.16.6 by @renovate[bot] in
[#13468](#13468)
- update ghcr.io/jdx/mise:alpine docker digest to f443aaf by
@renovate[bot] in [#13462](#13462)
- update ghcr.io/jdx/mise:rpm docker digest to 6277132 by @renovate[bot]
in [#13464](#13464)
- update docker/build-push-action digest to c3c9e26 by @renovate[bot] in
[#13474](#13474)
- update rust crate cc to v1.4.6 by @renovate[bot] in
[#13467](#13467)
- update rust crate jiff to v0.2.37 by @renovate[bot] in
[#13469](#13469)
- update rust crate aws-sdk-s3 to v1.146.1 by @renovate[bot] in
[#13466](#13466)
- bump locked dev tools and fix communique 1.4.1 lock entry by @jdx in
[#13490](#13490)
- update rattler to rattler_conda_types 0.53 by @jdx in
[#13489](#13489)
- update ubuntu docker tag to resolute-20260901 by @renovate[bot] in
[#13476](#13476)
- update zizmorcore/zizmor-action action to v0.6.4 by @renovate[bot] in
[#13486](#13486)
- update jdx/packslip action to v1.2.0 by @renovate[bot] in
[#13492](#13492)
- refresh Cargo.lock and handle build metadata from versions 8.0.1 by
@jdx in [#13506](#13506)
- update ghcr.io/jdx/mise:deb and nscloud-cache-action digests by @jdx
in [#13504](#13504)
- group all usage crates in one Renovate update by @jdx in
[#13519](#13519)
- update rust crate usage-lib to v6.11.1 by @renovate[bot] in
[#13516](#13516)
- update communique to 1.4.2 in mise.lock by @jdx in
[680c305](680c305)
- upgrade locked mise tools by @jdx in
[dadb677](dadb677)

### 📦 Registry

- add mole by @casparbreloh in
[#13363](#13363)
- point aube at aubepkg/aube by @jdx in
[#13541](#13541)
- add reviewdog by @takumin in
[#13562](#13562)
- add nim by @elijahr in
[#13461](#13461)

### Chore

- **(backend)** **breaking** remove the experimental pkgx backend by
@jdx in [#13555](#13555)
- **(ci)** comment on a discussion when the PR implementing it merges by
@jdx in [#13452](#13452)
- **(ci)** skip debuginfo in release-plz builds by @jdx in
[a486c41](a486c41)
- remove Entire trail runners by @jdx in
[#13535](#13535)
- float jdx tools and aube on latest without a release-age delay by @jdx
in [#13540](#13540)

### Security

- **(bootstrap)** refuse untrusted parent symlinks when writing or
removing files as root by @jdx in
[#13539](#13539)
- **(bootstrap)** don't follow untrusted parent symlinks when changing
directories as root by @jdx in
[#13546](#13546)

### New Contributors

- @elijahr made their first contribution in
[#13461](#13461)
- @takumin made their first contribution in
[#13562](#13562)
- @EMcCormack made their first contribution in
[#13498](#13498)

## 📦 Aqua Registry Updates

### New Packages (3)

-
[`UsefulSoftwareCo/executor`](https://github.com/UsefulSoftwareCo/executor)
- [`aquaproj/ar2`](https://github.com/aquaproj/ar2)
- [`revive-lint/revive`](https://github.com/revive-lint/revive)

### Updated Packages (124)

- [`TomWright/dasel`](https://github.com/TomWright/dasel)
- [`UpCloudLtd/upcloud-cli`](https://github.com/UpCloudLtd/upcloud-cli)
- [`XcodesOrg/xcodes`](https://github.com/XcodesOrg/xcodes)
- [`YS-L/csvlens`](https://github.com/YS-L/csvlens)
- [`abemedia/stagelint`](https://github.com/abemedia/stagelint)
- [`abhimanyu003/sttr`](https://github.com/abhimanyu003/sttr)
- [`abhinav/git-spice`](https://github.com/abhinav/git-spice)
- [`anchore/grype`](https://github.com/anchore/grype)
- [`anchore/syft`](https://github.com/anchore/syft)
-
[`aquaproj/aqua-registry-updater`](https://github.com/aquaproj/aqua-registry-updater)
-
[`aquaproj/example-go-slsa-provenance`](https://github.com/aquaproj/example-go-slsa-provenance)
- [`aquaproj/registry-tool`](https://github.com/aquaproj/registry-tool)
- [`aquasecurity/trivy`](https://github.com/aquasecurity/trivy)
- [`arch-go/arch-go`](https://github.com/arch-go/arch-go)
-
[`betterleaks/betterleaks`](https://github.com/betterleaks/betterleaks)
- [`bomctl/bomctl`](https://github.com/bomctl/bomctl)
- [`boostsecurityio/bagel`](https://github.com/boostsecurityio/bagel)
- [`caarlos0/fork-cleaner`](https://github.com/caarlos0/fork-cleaner)
- [`caarlos0/svu`](https://github.com/caarlos0/svu)
- [`caddyserver/caddy`](https://github.com/caddyserver/caddy)
- [`carvel-dev/imgpkg`](https://github.com/carvel-dev/imgpkg)
- [`carvel-dev/kapp`](https://github.com/carvel-dev/kapp)
- [`carvel-dev/kbld`](https://github.com/carvel-dev/kbld)
- [`carvel-dev/vendir`](https://github.com/carvel-dev/vendir)
- [`carvel-dev/ytt`](https://github.com/carvel-dev/ytt)
- [`cert-manager/cmctl`](https://github.com/cert-manager/cmctl)
- [`chainguard-dev/apko`](https://github.com/chainguard-dev/apko)
- [`chainguard-dev/melange`](https://github.com/chainguard-dev/melange)
- [`charmbracelet/crush`](https://github.com/charmbracelet/crush)
- [`charmbracelet/freeze`](https://github.com/charmbracelet/freeze)
- [`charmbracelet/glow`](https://github.com/charmbracelet/glow)
- [`charmbracelet/gum`](https://github.com/charmbracelet/gum)
- [`charmbracelet/vhs`](https://github.com/charmbracelet/vhs)
- [`daveshanley/vacuum`](https://github.com/daveshanley/vacuum)
- [`docker/buildx`](https://github.com/docker/buildx)
- [`docker/compose`](https://github.com/docker/compose)
- [`ekristen/aws-nuke`](https://github.com/ekristen/aws-nuke)
- [`fission/fission`](https://github.com/fission/fission)
- [`fluxcd/flux2`](https://github.com/fluxcd/flux2)
- [`foundry-rs/foundry`](https://github.com/foundry-rs/foundry)
- [`getsops/sops`](https://github.com/getsops/sops)
- [`gittuf/gittuf`](https://github.com/gittuf/gittuf)
- [`gleam-lang/gleam`](https://github.com/gleam-lang/gleam)
- [`go-delve/delve`](https://github.com/go-delve/delve)
- [`google/yamlfmt`](https://github.com/google/yamlfmt)
- [`gopasspw/gopass`](https://github.com/gopasspw/gopass)
- [`goreleaser/nfpm`](https://github.com/goreleaser/nfpm)
- [`helm/chart-releaser`](https://github.com/helm/chart-releaser)
- [`helm/chart-testing`](https://github.com/helm/chart-testing)
- [`interlynk-io/sbomqs`](https://github.com/interlynk-io/sbomqs)
- [`jenkins-x/jx`](https://github.com/jenkins-x/jx)
- [`kubepug/kubepug`](https://github.com/kubepug/kubepug)
- [`kubermatic/kubeone`](https://github.com/kubermatic/kubeone)
-
[`kubernetes-sigs/zeitgeist`](https://github.com/kubernetes-sigs/zeitgeist)
- [`kyverno/chainsaw`](https://github.com/kyverno/chainsaw)
- [`kyverno/kyverno`](https://github.com/kyverno/kyverno)
- [`lintnet/lintnet`](https://github.com/lintnet/lintnet)
- [`loft-sh/vcluster`](https://github.com/loft-sh/vcluster)
- [`masasuzu/clrnd`](https://github.com/masasuzu/clrnd)
- [`mikefarah/yq`](https://github.com/mikefarah/yq)
- [`moby/buildkit`](https://github.com/moby/buildkit)
- [`nao1215/atago`](https://github.com/nao1215/atago)
- [`nao1215/gup`](https://github.com/nao1215/gup)
- [`nao1215/sqly`](https://github.com/nao1215/sqly)
- [`nodejs/node`](https://github.com/nodejs/node)
-
[`open-policy-agent/conftest`](https://github.com/open-policy-agent/conftest)
- [`openbao/openbao/bao`](https://github.com/openbao/openbao)
- [`openfga/cli`](https://github.com/openfga/cli)
- [`opengrep/opengrep`](https://github.com/opengrep/opengrep)
- [`openvex/vexctl`](https://github.com/openvex/vexctl)
- [`orlangure/gocovsh`](https://github.com/orlangure/gocovsh)
- [`purpleclay/dns53`](https://github.com/purpleclay/dns53)
- [`rafaelespinoza/godfish`](https://github.com/rafaelespinoza/godfish)
- [`rs/curlie`](https://github.com/rs/curlie)
- [`santosr2/TerraTidy`](https://github.com/santosr2/TerraTidy)
-
[`sholdee/crd-schema-publisher`](https://github.com/sholdee/crd-schema-publisher)
- [`siderolabs/talos`](https://github.com/siderolabs/talos)
- [`sigstore/gitsign`](https://github.com/sigstore/gitsign)
- [`smallstep/certificates`](https://github.com/smallstep/certificates)
- [`smallstep/cli`](https://github.com/smallstep/cli)
- [`stacklok/frizbee`](https://github.com/stacklok/frizbee)
-
[`suzuki-shunsuke/ci-info`](https://github.com/suzuki-shunsuke/ci-info)
-
[`suzuki-shunsuke/circleci-config-merge`](https://github.com/suzuki-shunsuke/circleci-config-merge)
- [`suzuki-shunsuke/cmdx`](https://github.com/suzuki-shunsuke/cmdx)
-
[`suzuki-shunsuke/deny-self-approve`](https://github.com/suzuki-shunsuke/deny-self-approve)
-
[`suzuki-shunsuke/disable-checkout-persist-credentials`](https://github.com/suzuki-shunsuke/disable-checkout-persist-credentials)
-
[`suzuki-shunsuke/docfresh`](https://github.com/suzuki-shunsuke/docfresh)
-
[`suzuki-shunsuke/ghalint`](https://github.com/suzuki-shunsuke/ghalint)
-
[`suzuki-shunsuke/ghaperf`](https://github.com/suzuki-shunsuke/ghaperf)
- [`suzuki-shunsuke/ghatm`](https://github.com/suzuki-shunsuke/ghatm)
- [`suzuki-shunsuke/ghcp`](https://github.com/suzuki-shunsuke/ghcp)
- [`suzuki-shunsuke/ghd2i`](https://github.com/suzuki-shunsuke/ghd2i)
- [`suzuki-shunsuke/ghir`](https://github.com/suzuki-shunsuke/ghir)
- [`suzuki-shunsuke/ghomfc`](https://github.com/suzuki-shunsuke/ghomfc)
- [`suzuki-shunsuke/ghproj`](https://github.com/suzuki-shunsuke/ghproj)
- [`suzuki-shunsuke/ghtkn`](https://github.com/suzuki-shunsuke/ghtkn)
-
[`suzuki-shunsuke/github-comment`](https://github.com/suzuki-shunsuke/github-comment)
-
[`suzuki-shunsuke/langcheck`](https://github.com/suzuki-shunsuke/langcheck)
-
[`suzuki-shunsuke/migrate-urfave-cli-v3`](https://github.com/suzuki-shunsuke/migrate-urfave-cli-v3)
-
[`suzuki-shunsuke/mkghtag`](https://github.com/suzuki-shunsuke/mkghtag)
- [`suzuki-shunsuke/nllint`](https://github.com/suzuki-shunsuke/nllint)
- [`suzuki-shunsuke/pinact`](https://github.com/suzuki-shunsuke/pinact)
-
[`suzuki-shunsuke/renovate-issue-action`](https://github.com/suzuki-shunsuke/renovate-issue-action)
- [`suzuki-shunsuke/rgo`](https://github.com/suzuki-shunsuke/rgo)
-
[`suzuki-shunsuke/sort-issue-template`](https://github.com/suzuki-shunsuke/sort-issue-template)
-
[`suzuki-shunsuke/tfaction-go`](https://github.com/suzuki-shunsuke/tfaction-go)
- [`suzuki-shunsuke/tfcmt`](https://github.com/suzuki-shunsuke/tfcmt)
- [`suzuki-shunsuke/tfmv`](https://github.com/suzuki-shunsuke/tfmv)
-
[`suzuki-shunsuke/tfprovidercheck`](https://github.com/suzuki-shunsuke/tfprovidercheck)
-
[`suzuki-shunsuke/tfrstate`](https://github.com/suzuki-shunsuke/tfrstate)
- [`suzuki-shunsuke/yodoc`](https://github.com/suzuki-shunsuke/yodoc)
- [`takumin/zizmor-bin`](https://github.com/takumin/zizmor-bin)
-
[`technicalpickles/envsense`](https://github.com/technicalpickles/envsense)
-
[`terraform-linters/tflint`](https://github.com/terraform-linters/tflint)
-
[`terraprovider/statebridge`](https://github.com/terraprovider/statebridge)
- [`tfmigrator/cli`](https://github.com/tfmigrator/cli)
- [`tmknom/actdocs`](https://github.com/tmknom/actdocs)
- [`tofuutils/tenv`](https://github.com/tofuutils/tenv)
-
[`trufflesecurity/trufflehog`](https://github.com/trufflesecurity/trufflehog)
- [`txn2/kubefwd`](https://github.com/txn2/kubefwd)
- [`ubugeeei-prod/vize`](https://github.com/ubugeeei-prod/vize)
- [`updatecli/updatecli`](https://github.com/updatecli/updatecli)
- [`version-fox/vfox`](https://github.com/version-fox/vfox)
- [`yuyaban/gitlab-comment`](https://github.com/yuyaban/gitlab-comment)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants