Release Round
ethereumjs/ethereumjs-monorepo
Runs a coordinated EthereumJS npm release round in six human-gated phases — intent and readiness, CHANGELOG, version bump, publish (human executes), post-publish verification, and announcements.
Split large JavaScript files into maintainable modules safely.
$ npx skills add github/gh-aw --skill javascript-refactoring -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install github/gh-aw javascript-refactoring --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/github/gh-aw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/javascript-refactoring .claude/skills/javascript-refactoring && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "javascript-refactoring" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/javascript-refactoring into .claude/skills/javascript-refactoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "javascript-refactoring", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/github/gh-aw/tree/main/.github/skills/javascript-refactoringType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add github/gh-aw --skill javascript-refactoring -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install github/gh-aw javascript-refactoring --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/github/gh-aw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/javascript-refactoring .agents/skills/javascript-refactoring && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "javascript-refactoring" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/javascript-refactoring into .agents/skills/javascript-refactoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "javascript-refactoring", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add github/gh-aw --skill javascript-refactoring -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install github/gh-aw javascript-refactoring --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/github/gh-aw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/javascript-refactoring .cursor/skills/javascript-refactoring && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "javascript-refactoring" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/javascript-refactoring into .cursor/skills/javascript-refactoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "javascript-refactoring", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/github/gh-aw.git --path .github/skills/javascript-refactoring--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add github/gh-aw --skill javascript-refactoring -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install github/gh-aw javascript-refactoring --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/github/gh-aw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/javascript-refactoring .gemini/skills/javascript-refactoring && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "javascript-refactoring" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/javascript-refactoring into .gemini/skills/javascript-refactoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "javascript-refactoring", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install github/gh-aw javascript-refactoringInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add github/gh-aw --skill javascript-refactoring -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/github/gh-aw.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/javascript-refactoring .github/skills/javascript-refactoring && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "javascript-refactoring" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/javascript-refactoring into .github/skills/javascript-refactoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "javascript-refactoring", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add github/gh-aw --skill javascript-refactoring -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install github/gh-aw javascript-refactoring --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/github/gh-aw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/javascript-refactoring .opencode/skills/javascript-refactoring && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "javascript-refactoring" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/javascript-refactoring into .opencode/skills/javascript-refactoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "javascript-refactoring", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
javascript-refactoringSplit large JavaScript files into maintainable modules safely.
Javascript Refactoring is an agent skill from github/gh-aw, published by the product's own GitHub organization. Split large JavaScript files into maintainable modules safely.
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Refactoring. It works with JavaScript and GitHub. The repository describes itself as: GitHub Agentic Workflows. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit eb63040. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
makeghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Javascript Refactoring loads about 2k tokens when it runs. Until then it costs about 21 tokens; SKILL.md has 783 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from github/gh-aw at commit eb63040, republished under its MIT licence (© github). 783 words, ~2,025 tokens.
.claude/skills/javascript-refactoring/SKILL.md (or your agent's skills folder).Use this guide to split JavaScript into maintainable CommonJS modules in gh-aw without drifting into dead embedding patterns.
The current gh-aw architecture is action-centric:
pkg/workflow/js/*.cjs and actions/setup/js/*.cjsactions/<action-name>/src/actions/<action-name>/index.jsmake actions-build, gh aw actions-build) and dependency maps such as pkg/cli/actions_build_command.gopkg/workflow/js.go is a stub; it no longer owns the runtime JavaScript shipping path for the main workflowsIf you are refactoring a workflow utility, prefer the current action/module architecture over any older //go:embed pattern.
Top-level .cjs scripts executed directly in workflows follow this pattern:
✅ Correct Pattern - Export main, but don't call it:
async function main() {
// Script logic here
core.info("Running the script");
}
module.exports = { main };❌ Incorrect Pattern - Don't call main in the file:
async function main() {
// Script logic here
core.info("Running the script");
}
await main(); // ❌ Don't do this!
module.exports = { main };Why this pattern?
await main() at execution timeChoose the correct location for the module before writing code:
pkg/workflow/js/actions/<action-name>/src/ or actions/setup/js/actions/<action-name>/index.jsFile naming convention:
sanitize_content.cjs, load_agent_output.cjs).cjs for CommonJS modulesExample file structure:
// @ts-check
/// <reference types="@actions/github-script" />
/**
* Brief description of what this module does
*/
/**
* Function documentation
* @param {string} input - Description of parameter
* @returns {string} Description of return value
*/
function myFunction(input) {
return input;
}
module.exports = {
myFunction,
};Key points:
// @ts-check for TypeScript checking/// <reference types="@actions/github-script" /> when the module is used with GitHub Actions scriptsmodule.exports = { ... }@actions/core or @actions/github directly unless the module is running in an action context that explicitly expects itCreate a matching test beside the module using the same base name plus .test.cjs:
Example: pkg/workflow/js/my_module.test.cjs
import { describe, it, expect, beforeEach, vi } from "vitest";
const mockCore = {
debug: vi.fn(),
info: vi.fn(),
warning: vi.fn(),
error: vi.fn(),
setFailed: vi.fn(),
setOutput: vi.fn(),
};
global.core = mockCore;
describe("myFunction", () => {
beforeEach(() => {
vi.clearAllMocks();
});
it("handles a normal input", async () => {
const { myFunction } = await import("./my_module.cjs");
expect(myFunction("test input")).toBe("expected output");
});
it("handles empty input", async () => {
const { myFunction } = await import("./my_module.cjs");
expect(myFunction("")).toBe("");
});
});Testing guidelines:
core and github globals as neededawait import()) to allow module setup at test timebeforeEachRun tests:
make test-jsDo not add a new //go:embed mapping just to ship a new runtime script. The current repo ships JavaScript through the action-generation/build pipeline.
Use this checklist:
pkg/cli/actions_build_command.goactions/<action-name>/src/make actions-buildpkg/workflow/js/ and update the action or workflow definition that consumes itExample design:
const { myFunction } = require("./my_module.cjs");
async function main() {
const result = myFunction("some input");
core.info(`Result: ${result}`);
}
module.exports = { main };Run the relevant checks for the area you changed:
make fmt-cjs
make lint-cjs
make test-js
make test-unit
make actions-buildBefore committing your refactor:
.cjs file created in the correct source directory.test.cjs file createdmake test-js or the targeted Vitest suiterequire() statements work correctly in other JS filesmake fmt-cjsmake lint-cjs or make test-unitFiles like sanitize_content.cjs or load_agent_output.cjs are best kept under pkg/workflow/js/ or actions/setup/js/ and consumed by other JS modules via require().
When the JavaScript belongs to a single action, keep it under actions/<action-name>/src/ and regenerate the output bundle with make actions-build.
If the script is executed directly in a workflow, export main and omit the direct await main() call. The host build/runtime step handles execution.
Cause: Action bundle was not rebuilt after editing the source file
Solution:
make actions-buildcore is not definedCause: Missing global mocks
Solution:
global.core = mockCore;Cause: It was added to the wrong layer
Solution: Move it to the action-specific source tree instead of creating a broad workflow-level registry entry.
Do not audit coverage in actions/setup/js/ by matching foo.cjs to foo.test.cjs by basename. That approach overstates untested files because tests here load sources in three other ways:
create_discussion_labels.test.cjs and create_discussion_sanitization.test.cjs both cover create_discussion.cjs.parse_copilot_log.test.cjs uses await import("./parse_copilot_log.cjs?" + Date.now()) to get fresh module state per test.readFileSync + eval: collect_ndjson_output.test.cjs reads the script source with fs.readFileSync(scriptPath, "utf8") and runs it with eval(...).Resolve require, import, and readFileSync targets from each test file (and their transitive requires) before reporting a source file as untested.
actions/README.md - current action-generation/build workflowpkg/cli/actions_build_command.go - action dependency mappingpkg/workflow/js/*.cjs - existing shared module patternsactions/setup/js/*.cjs - action runtime/source examples© github, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/javascript-refactoring of github/gh-aw.
Open the folder on GitHubat commit eb63040
Javascript Refactoring next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Javascript Refactoring this skillgithub/gh-aw | 5.3k | — | ~2k | Automated safety check: Pass | MIT | |
| Release Roundethereumjs/ethereumjs-monorepo | 2.8k | — | ~2k | Automated safety check: Pass | None | |
| Dinero Best Practicesdinerojs/dinero.js | 6.8k | — | ~756 | Automated safety check: Pass | MIT | |
| ast-grep Codemod Referencewarp-drive-data/warp-drive | 3.2k | — | ~2.6k | Automated safety check: Pass | MIT | |
| Valgocohesivestack/valgo | 508 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Rust Hygiene Audittsz-org/tsz | 572 | — | ~1.5k | Automated safety check: Pass | Apache-2.0 |
ethereumjs/ethereumjs-monorepo
Runs a coordinated EthereumJS npm release round in six human-gated phases — intent and readiness, CHANGELOG, version bump, publish (human executes), post-publish verification, and announcements.
dinerojs/dinero.js
Core best practices for the Dinero.js money library. An agent skill from dinerojs/dinero.js.
warp-drive-data/warp-drive
Reference for writing and debugging TypeScript and JavaScript codemods with @ast-grep/napi: parsing, node queries, meta-variables, rule objects and editing.
cohesivestack/valgo
Add, refactor, debug, review, explain, or migrate type-safe validation in consumer Go applications using github.com/cohesivestack/valgo.
tsz-org/tsz
Run a deep DRY + code-hygiene audit of the Rust workspace and turn the findings into verified, deduplicated, hierarchical GitHub tech-debt issues.
shapeshift/web
Comprehensive React and Next.js performance optimization guide with 40+ rules for eliminating waterfalls, optimizing bundles, and improving rendering.
github/gh-aw
Drives a real browser from the command line with playwright-cli to open pages, interact, mock requests, save state and work with Playwright tests.
github/gh-aw
Designs and verifies a deterministic grader that measures whether a GitHub Agentic Workflow run reached its real-world or repository outcome.
github/gh-aw
Scaffolds, edits, reloads and debugs a canvas extension that the GitHub Copilot CLI can open in its side panel.
github/gh-aw
Drives an open pull request to merge-ready from inside a GitHub Copilot cloud agent, resolving review threads and local checks concurrently, without merging or retriggering CI.
github/gh-aw
Bumps gh-aw's pinned gh-aw-firewall version, rebuilds generated artifacts, and flags upstream spec or schema changes that need follow-up work.
github/gh-aw
Guide to the console struct tag system in gh-aw: headers, titles, number and cost formats, omitempty, and how structs, slices and maps render in the terminal.
Works with
Categories
Split large JavaScript files into maintainable modules safely. Javascript Refactoring is an agent skill from github/gh-aw, published by the product's own GitHub organization. Split large JavaScript files into maintainable modules safely.
Javascript Refactoring fits situations like: tasks that involve Refactoring.
Run `npx skills add github/gh-aw --skill javascript-refactoring -a claude-code`. Or copy the skill folder (.github/skills/javascript-refactoring in github/gh-aw) into .claude/skills/javascript-refactoring in your project. Claude Code loads it when a task matches its description.
Run `npx skills add github/gh-aw --skill javascript-refactoring -a codex`. Or copy the skill folder (.github/skills/javascript-refactoring in github/gh-aw) into .agents/skills/javascript-refactoring in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add github/gh-aw --skill javascript-refactoring -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/javascript-refactoring, .gemini/skills/javascript-refactoring, .github/skills/javascript-refactoring and .opencode/skills/javascript-refactoring in your project.
Going by SKILL.md and its folder, Javascript Refactoring needs the command-line tools its instructions call (make and gh).
SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Javascript Refactoring is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Javascript Refactoring: Release Round (ethereumjs/ethereumjs-monorepo, 2.8k stars), Dinero Best Practices (dinerojs/dinero.js, 6.8k stars), ast-grep Codemod Reference (warp-drive-data/warp-drive, 3.2k stars) and Valgo (cohesivestack/valgo, 508 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
github (a GitHub organization, an official publisher) maintains it in github/gh-aw, which has 5,350 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on October 7, 2026.
Source: github/gh-aw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.