Claudeagent and ClaudeagentA JavaScript action's pre runs as on GitHub's runner: before the job's first step, a step of its own named Pre and the step's name, in step order and when its pre-if holds, and what it saves with GITHUB_STATE or ::save-state:: reaches the step's main and post as STATE_<name>; an action in the repository warns that its pre is not run, as GitHub does, and a step that gives an input its action does not declare is warned of with GitHub's words. Problem matchers work: ::add-matcher:: reads GitHub's JSON format, with patterns over several lines and loop, and ::remove-matcher:: takes one away, so the matchers actions/setup-node, setup-go and setup-python add turn compiler and linter output into annotations in place of the line. Annotations carry their column, end line and end column, ::echo::on and ::echo::off show workflow commands in the log, shell: python runs python where there is one and python3 otherwise, PowerShell scripts stop at the first error and exit with the last program's code, each script gets GitHub's extension for its shell, and an action declaring node20 runs on Node 20 where the machine has one. Steps get RUNNER_WORKSPACE, GITHUB_REPOSITORY_OWNER_ID when the event names the owner's id, and a GITHUB_ACTION of __run, __run_2 and on for run steps. The actions guide says so.4810c20History