Skip to content

lttb/gh-actions-language-server

Repository files navigation

gh-actions-language-server

GitHub Actions Language Server

A lightweight wrapper around @actions/languageserver to simplify installation and usage in CLI tools and LSP (Language Server Protocol) clients.

Important

January 2026

The official @actions/languageserver standalone executable is available as of v0.3.30 - actions/languageservices#56 (comment).

The Mason Registry (gh-actions-language-server) has been updated to reflect it too - mason-org/mason-registry#13000.

Please follow the official README.md and guidelines to configure GitHub Actions in Neovim.

Why?

The @actions/languageserver module is published without an executable binary (see issue #56), which makes it less convenient to use directly. This package bridges that gap by providing an easy-to-install binary.

Initially, the plan was to contribute a pull request to @actions/languageserver to add a bin field. However, it seems that configuring package exports for this purpose requires some adjustments, so creating this standalone package was a quicker solution.

Note: This package may be archived and deprecated once native support for a bin executable is added to @actions/languageserver.

Installation

To install globally via npm, run:

npm install --global gh-actions-language-server

Configuration for Neovim

Add yaml.github filetype detection

Create a a file at ftdetect/github-actions.lua with:

vim.filetype.add({
  pattern = {
    ['.*/%.github[%w/]+workflows[%w/]+.*%.ya?ml'] = 'yaml.github',
  },
})

Configure Language Server

Note

Once these PRs get merged, mason and nvim-lspconfig should support gh-actions-language-server out of the box:

If you're using nvim-lspconfig, you can configure the gh-actions-language-server as follows:

Define the Language Server Configuration

Create a new configuration file at lua/lspconfig/configs/gh_actions_ls.lua with the following content:

local util = require('lspconfig.util')

return {
  default_config = {
    cmd = { 'gh-actions-language-server', '--stdio' },
    filetypes = { 'yaml.github' },
    root_dir = util.root_pattern('.github'),
    single_file_support = true,
    capabilities = {
      workspace = {
        didChangeWorkspaceFolders = {
          dynamicRegistration = true,
        },
      },
    },
  },
  docs = {
    description = [[
https://github.com/lttb/gh-actions-language-server
Language server for GitHub Actions.
`gh-actions-language-server` can be installed via `npm`:
```sh
npm install -g gh-actions-language-server
```
]],
  },
}

Initialise the Language Server

Add the following code to initialise the language server:

require('lspconfig').gh_actions_ls.setup({})

Credits

About

Github Actions Language Server

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors