npx skills add ...
npx skills add github/gh-aw --skill messages
Add new safe-output message types and wire validation/rendering.
npx skills add github/gh-aw --skill messages
Use this guide to add a new safe-output message type so it works in the current gh-aw pipeline: frontmatter → schema → Go compiler → JavaScript modules → action/workflow build output.
The messages system lets workflow authors customize safe-output messages. The current architecture does not rely on the old pkg/workflow/js.go embedding registry for runtime shipping.
Current flow:
pkg/workflow/js/ or actions/setup/js/make actions-build or the relevant workflow build pathAdd the new message field to pkg/parser/schemas/main_workflow_schema.json in the messages object:
Key points:
kebab-case for the YAML field name (for example my-new-message)Add the field to SafeOutputMessagesConfig in pkg/workflow/compiler.go:
Key points:
CamelCase for Go field nameskebab-case for YAML tagscamelCase for JSON tagsomitempty to both tagsIf the message needs custom parsing logic, update the workflow parser in pkg/workflow/safe_outputs.go or the relevant config block. Most simple string fields will be wired automatically by the existing reflection-based parser.
Create the new module in the current shared JS location, typically pkg/workflow/js/:
Key points:
messages_<category>.cjs./messages_core.cjs for shared helpersCreate a matching test file, for example pkg/workflow/js/messages_my_new.test.cjs:
Run the relevant tests with make test-js or the targeted Vitest file.
Update the SafeOutputMessages typedef and the return object in pkg/workflow/js/messages_core.cjs, and re-export the message helper from pkg/workflow/js/messages.cjs.
Do not add any new //go:embed entries to pkg/workflow/js.go for a normal message module. The current system packages JavaScript through the action-generation/build path.
Instead:
pkg/workflow/js/ or the relevant action folder,make actions-build.Document the new message in the repo’s relevant safe-output docs, and keep the examples aligned with the current action-based JavaScript build flow.
Before committing a message change:
messages_core.cjs and messages.cjs updated if relevantactions/README.md - current action-generation/build workflowpkg/workflow/js/messages_core.cjs - shared safe-output message helperspkg/workflow/js/messages.cjs - message exportspkg/parser/schemas/main_workflow_schema.json - schema source of truthUpdate the Message Module Architecture table:
For current gh-aw work, keep message modules aligned with the action-generation flow instead of the historical Go-embed pattern. If you need an example, review the existing safe-output modules under pkg/workflow/js/ and the generated action files under actions/.