Actions are pieces of code that you or someone else has written to run some task. Actions need to be written in JavaScript.
To use an action we specify it with the uses key. Actions can be included in the same repository as the workflow is by passing the path to it as a value, or they can be published in public GitHub repositories. To use an action that has been published in a public GitHub repository the value of the uses key needs to be user_name/repo_name@branch_name. We can also target a released version with user_name/repo_name@tag_name. We can reference a commit with user_name/repo_name@commit_sha. The preferred method it to use the tag name, since the tip of a branch might change in the future and introduce breaking changes. If the version references only a mayor, then the latest minor of that mayor will be used. Same logic with patches.
Actions might require/allow inputs. The inputs need to be passed by name (key) as child elements of the with key.