# A curated list of GH actions that improve the quality of your package

**URL:** https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466
**Category:** General Usage
**Tags:** testing, ci, github-actions
**Created:** [December 10, 2025, 10:16am UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466 "2025-12-10T10:16:08Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)
#### Post date: [December 10, 2025, 10:16am UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/1 "2025-12-10T10:16:09Z")

</div>

I recently looked at the new SolarPosition.jl package and was impressed by the GH Actions that helped improve its quality. This got me wondering if there’s a maintained, opinionated, and complete list of quality-improvement tools and practices for Julia packages.

By “tools and practices” I mean things like:

- Documentation (e.g. Documenter.jl)
- Testing (e.g. Supposition.jl)
- Coverage reporting
- ExplicitImports.jl, Aqua.jl, JET.jl, Runic.jl, etc.
- Linting and formatting
- AI agent checks
- Julia Security Working Group certification
- Thread safety verification
- Memory leak detection
- Benchmarking (e.g. BenchmarkTools.jl)
- Auto-merge eligibility for General registry
- Style guide conformance

These quality standards are a moving target with new tools and practices emerging regularly.

It would be valuable to consolidate these into PkgTemplates.jl and/or Aqua.jl (with opt-in/opt-out configuration), but I’m curious: Do people have opinions on this? What other quality-improvement steps should be included?

---

<div class="post-metadata">

### Author: ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)
#### Post date: [December 10, 2025, 11:11am UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/2 "2025-12-10T11:11:52Z")

</div>

I was wondering about best practices with GitHub Actions lately.

A couple of questions:

1. dependabot.yml and CompatHelper.yml overlap? What is the way forward?
2. FormatPR.yml with .JuliaFormatter.toml is still the “best” approach to enforce formatting?
3. What is the recommended action to check test coverage? Is CodeCov the recommended tool?

---

<div class="post-metadata">

### Author: ![ericphanson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ericphanson/32/215186_2.png) [@ericphanson](https://discourse.julialang.org/u/ericphanson)
#### Post date: [December 10, 2025, 11:48am UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/3 "2025-12-10T11:48:06Z")

</div>

[https://modernjuliaworkflows.org/sharing/](https://modernjuliaworkflows.org/sharing/) has some nice docs along these lines

> Julia Security Working Group certification

what is this?

> dependabot.yml and CompatHelper.yml overlap? What is the way forward?

dependabot is newer and integrated into GitHub; I don’t think it can be used from gitlab for example. However if you’re on github it seems more configurable & ergonomic than CompatHelper. It is also quite new so there may be bugs to shake out.

---

<div class="post-metadata">

### Author: ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)
#### Post date: [December 10, 2025, 11:51am UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/4 "2025-12-10T11:51:56Z")

</div>

> [@ericphanson](#):
>
> > Julia Security Working Group certification
> 
> what is this?

Nothing that exists yet, but I’m referring to [Launching the Julia Security Working Group](https://julialang.org/blog/2025/11/launching-security-wg/) and maybe some future tooling that could help us quantify how secure a certain package is.

---

<div class="post-metadata">

### Author: ![langestefan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/langestefan/32/207923_2.png) [@langestefan](https://discourse.julialang.org/u/langestefan)
#### Post date: [December 10, 2025, 11:54am UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/5 "2025-12-10T11:54:05Z")

</div>

Most of the actions used in SolarPosition.jl come from BestieTemplate.jl, which I used to generate the project. If you find / create other useful actions, perhaps they can be added to BestieTemplate. The advantage of that is that the actions are part of a real project so they are tested and kept up to date.

---

<div class="post-metadata">

### Author: ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)
#### Post date: [December 10, 2025, 11:57am UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/6 "2025-12-10T11:57:22Z")

</div>

Love the BestieTemplate.jl features!

The fact that we can reapply the template to “update” to the latest best practices is amazing!

```julia-auto
How is BestieTemplate different from PkgTemplates?

it can be applied to existing packages
it invites to follow some (opinionated) best practices
it can be reapplied to acquire updates made to the template
it is automatically reapplied through Pull Requests made by the Copier.yml workflow (Work in progress)

```

It is really hard to keep up with these GitHub Actions updates, and a tool that facilitates these updates is super welcome ❤

---

<div class="post-metadata">

### Author: ![liuyxpp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/liuyxpp/32/9870_2.png) [@liuyxpp](https://discourse.julialang.org/u/liuyxpp)
#### Post date: [December 10, 2025, 12:38pm UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/7 "2025-12-10T12:38:48Z")

</div>

Wow, that is awesome and truly amazing! It is a headache to check whether an action is outdated and update it.

---

<div class="post-metadata">

### Author: ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)
#### Post date: [December 10, 2025, 1:19pm UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/8 "2025-12-10T13:19:39Z")

</div>

> [@ericphanson](#):
>
> [Sharing your code](https://modernjuliaworkflows.org/sharing/) has some nice docs along these lines

They would definitely need some updating given the evolutions of the ecosystem and the rise of BestieTemplate.jl. @langestefan and others are more than welcome to pitch in!

---

<div class="post-metadata">

### Author: ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)
#### Post date: [December 10, 2025, 1:20pm UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/9 "2025-12-10T13:20:42Z")

</div>

See also the discussion in PkgTemplates.jl on transitioning to BestieTemplate.jl:

> <https://github.com/JuliaCI/PkgTemplates.jl/issues/478>
>
> As discussed at JuliaCon with @oxinabox and @abelsiqueira, we would like \[Bestie…Template.jl\](https://github.com/abelsiqueira/BestieTemplate.jl) to become the new PkgTemplates.jl, mainly because of its update functionality (you don't have to re-create a package from scratch to get the latest features).
> 
> Should we put a big warning on the README here and redirect? That way development efforts will be focused in one place. Abel can you handle the load? Frames would that be okay with you?

---

<div class="post-metadata">

### Author: ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)
#### Post date: [December 10, 2025, 1:35pm UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/10 "2025-12-10T13:35:08Z")

</div>

Wow, Beastie seems to be the very thing I was looking for. With the list in [Complete features from PkgTemplates · Issue #353 · JuliaBesties/BestieTemplate.jl · GitHub](https://github.com/JuliaBesties/BestieTemplate.jl/issues/353) it feels like things are under control. Very cool.

---

<div class="post-metadata">

### Author: ![icweaver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/icweaver/32/45764_2.png) [@icweaver](https://discourse.julialang.org/u/icweaver)
#### Post date: [December 10, 2025, 8:43pm UTC](https://discourse.julialang.org/t/a-curated-list-of-gh-actions-that-improve-the-quality-of-your-package/134466/11 "2025-12-10T20:43:52Z")

</div>

I’m gonna start calling it Beastie now. This is seriously cool work, thanks all for these awesome tools!
