Example Harness
ruvnet/metaharness
Scaffold a ready-made AI agent harness in one command from the 19 published @metaharness/ example packages — 9 host integrations (Claude Code, Codex, Hermes, pi.dev, OpenClaw, RVM, Copilot…
Adds and tests declarative, behavior-defined agentic engines in GitHub Agentic Workflows, touching Go infrastructure only when the declarative model falls short.
$ npx skills add github/gh-aw --skill custom-engine-implementation -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install github/gh-aw custom-engine-implementation --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/custom-engine-implementation .claude/skills/custom-engine-implementation && 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 "custom-engine-implementation" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/custom-engine-implementation into .claude/skills/custom-engine-implementation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "custom-engine-implementation", 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/custom-engine-implementationType 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 custom-engine-implementation -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install github/gh-aw custom-engine-implementation --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/custom-engine-implementation .agents/skills/custom-engine-implementation && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "custom-engine-implementation" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/custom-engine-implementation into .agents/skills/custom-engine-implementation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "custom-engine-implementation", 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 custom-engine-implementation -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install github/gh-aw custom-engine-implementation --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/custom-engine-implementation .cursor/skills/custom-engine-implementation && 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 "custom-engine-implementation" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/custom-engine-implementation into .cursor/skills/custom-engine-implementation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "custom-engine-implementation", 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/custom-engine-implementation--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 custom-engine-implementation -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install github/gh-aw custom-engine-implementation --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/custom-engine-implementation .gemini/skills/custom-engine-implementation && 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 "custom-engine-implementation" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/custom-engine-implementation into .gemini/skills/custom-engine-implementation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "custom-engine-implementation", 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 custom-engine-implementationInstalls 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 custom-engine-implementation -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/custom-engine-implementation .github/skills/custom-engine-implementation && 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 "custom-engine-implementation" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/custom-engine-implementation into .github/skills/custom-engine-implementation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "custom-engine-implementation", 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 custom-engine-implementation -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 custom-engine-implementation --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/custom-engine-implementation .opencode/skills/custom-engine-implementation && 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 "custom-engine-implementation" agent skill from https://github.com/github/gh-aw/tree/main/.github/skills/custom-engine-implementation into .opencode/skills/custom-engine-implementation/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "custom-engine-implementation", 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.
custom-engine-implementationAdds and tests declarative, behavior-defined agentic engines in GitHub Agentic Workflows, touching Go infrastructure only when the declarative model falls short.
The guiding rule is to choose the smallest implementation. A shared Markdown engine definition can already declare installation, execution, MCP configuration, provider routing, caching, manifests, plugins, network defaults, harness scripts and log parsing through engine.behaviors. Go code changes are for a reusable behavior the declarative model cannot express, and a dedicated Go engine is a last resort when the shared runtime cannot run the engine at all.
The skill names the files involved, among them the engine definition model, the behavior-defined runtime, the embedded definition loader, the agentic engine registry and the workflow schema, and points to existing shared definitions for opencode, aider, crush, cursor and deepseek-harness as patterns to study. Adding an engine means creating a shared Markdown file that declares its id, display name, description, experimental flag, provider metadata, authentication and only the behaviors it needs, pinning a default CLI version and giving a deterministic install with a verification command.
9 steps, taken from the first numbered list 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:
makegoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
gh-aw Custom Engine Implementation loads about 1.9k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 844 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). 844 words, ~1,907 tokens.
.claude/skills/custom-engine-implementation/SKILL.md (or your agent's skills folder).Use this skill when adding a new agentic engine definition or extending the behavior-defined engine infrastructure.
Prefer a shared Markdown engine definition. Installation, execution, MCP
configuration, provider routing, caching, manifests, plugins, network defaults,
harness scripts, and log parsing can already be declared through
engine.behaviors.
Only change Go code when the engine needs a reusable behavior that the declarative model cannot express. Add a dedicated Go engine only when the shared behavior-defined runtime cannot run the engine at all.
| Need | Implementation |
|---|---|
| Existing behaviors are sufficient | Add an imported shared engine definition |
| A reusable declarative behavior is missing | Extend the definition model and behavior-defined runtime |
| The shared runtime is fundamentally unsuitable | Add a dedicated Go engine and register it |
The relevant implementation is in:
pkg/workflow/engine_definition.go for the definition model and catalogpkg/workflow/behavior_defined_engine.go for the shared runtimepkg/workflow/engine_definition_loader.go for embedded built-in definitionspkg/workflow/agentic_engine.go for dedicated Go engine registrationpkg/parser/schemas/main_workflow_schema.json for the workflow schemaRead the closest examples before making changes:
.github/workflows/shared/opencode.md: npm installation, merged
configuration, MCP, provider routing, and log parsing.github/workflows/shared/aider.md: Python installation and a custom harness
without native MCP.github/workflows/shared/crush.md: native MCP configuration adapter and
harness.github/workflows/shared/cursor.md: plugin support.github/workflows/shared/deepseek-harness.md: provider endpoint discovery
and a headless profileUse the examples to identify a pattern, not as a reason to copy optional behaviors.
.github/workflows/shared/<engine>.md.engine.id, display-name, description, experimental, provider
metadata, authentication, and only the required behaviors..github/aw/engines.json. Imported behavior-defined engines are registered
dynamically; do not add them to NewEngineRegistry()..github/workflows/smoke-<engine>.md, following the closest existing
smoke workflow. Import the shared definition and exercise the capabilities
the engine claims to support.docs/src/content/docs/reference/engines.md.minor change.make recompile and include the generated smoke workflow
.lock.yml.TestKnownEngineImportsFile_MatchesSharedEngineFiles in
pkg/workflow/engine_definition_test.go enforces catalog coverage for shared
external engines.
Keep the definition declarative and minimal:
behaviors.installation.behaviors.execution.behaviors.network.provider-domains.Treat inline JavaScript in harnesses, configuration adapters, and log parsers as production code. Avoid shell interpolation, validate paths and child-process arguments, preserve nonzero exit codes, and never print secret values. Enabling package lifecycle scripts requires a pinned version and an explicit reason.
For log and error regular expressions, also load
.github/skills/error-pattern-safety/SKILL.md.
When an engine exposes a generally useful capability that existing behaviors cannot express:
pkg/workflow/engine_definition.go.pkg/parser/schemas/main_workflow_schema.json.make generate-schema-docs when generated schema documentation changes.Do not add a schema field for a behavior that can be represented by existing installation, execution, environment, harness, or adapter fields.
For a dedicated Go runtime, implement the engine interfaces by composing the
existing helpers, keep engine-specific code in its own files, and register the
engine in pkg/workflow/agentic_engine.go. Cover configuration, commands,
environment, authentication, tools, logs, and failure handling with focused
tests.
Use tests that match the changed behavior:
| Area | Tests and examples |
|---|---|
| Harness, configuration, MCP, and environment | behavior_defined_engine_harness_test.go |
| Log parsing | behavior_defined_engine_log_parser_test.go |
| Cache behavior | behavior_defined_engine_cache_test.go |
| Definitions, catalog, and known imports | engine_definition_test.go, engine_catalog_test.go |
| Embedded definitions | engine_definition_loader_test.go |
| Real shared workflow harness | aider_workflow_test.go |
| Sandboxed CLI visibility | cloud_hypervisor_test.go |
| Generated smoke workflows | compiled_lock_files_test.go |
Test both definition parsing and the generated installation/execution steps. Include negative cases for unsafe paths, invalid configuration, missing credentials, or malformed logs when relevant.
After Go changes:
make build
make fmtAfter workflow Markdown changes:
make recompileRun focused go test commands for the changed behavior while iterating. Before
an intermediate progress report, run:
make agent-report-progress-no-testBefore the final progress report, run:
make agent-report-progressUse make agent-finish for the final repository validation when time allows.
Do not trigger a smoke workflow from a Copilot cloud agent run.
.github/aw/engines.json, smoke workflow, generated lock file,
documentation, and changeset are updated when applicable.© 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/custom-engine-implementation of github/gh-aw.
Open the folder on GitHubat commit eb63040
gh-aw Custom Engine Implementation 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 |
|---|---|---|---|---|---|---|
| gh-aw Custom Engine Implementation this skillgithub/gh-aw | 5.3k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Example Harnessruvnet/metaharness | 688 | — | ~735 | Automated safety check: Pass | MIT | |
| Docs Tooling Notionlangchain-ai/docs | 424 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Prepare Cloudflare Production DeploymentLubomirGeorgiev/cloudflare-workers-nextjs-saas-template | 786 | — | ~5.9k | Automated safety check: Notes | MIT | |
| Claude Docs Consultantcentminmod/my-claude-code-setup | 2.7k | — | ~959 | Automated safety check: Pass | MIT | |
| Publishingadeze/raindrop-mcp | 188 | — | ~398 | Automated safety check: Pass | MIT |
ruvnet/metaharness
Scaffold a ready-made AI agent harness in one command from the 19 published @metaharness/ example packages — 9 host integrations (Claude Code, Codex, Hermes, pi.dev, OpenClaw, RVM, Copilot…
langchain-ai/docs
Document new or changed docs-team tooling on the Notion tooling pages.
LubomirGeorgiev/cloudflare-workers-nextjs-saas-template
Source-of-truth runbook for preparing this Vinext Cloudflare Workers SaaS template for production deployment.
centminmod/my-claude-code-setup
Consult official Claude Code documentation from code.claude.com using selective fetching.
adeze/raindrop-mcp
Publishing and release workflow with semantic-release and GitHub Actions
apollographql/apollo-mcp-server
Review a GitHub pull request for a Rust codebase. An agent skill from apollographql/apollo-mcp-server.
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
Adds and tests declarative, behavior-defined agentic engines in GitHub Agentic Workflows, touching Go infrastructure only when the declarative model falls short. The guiding rule is to choose the smallest implementation.behaviors.
gh-aw Custom Engine Implementation fits situations like: adding a new engine definition to gh-aw; deciding whether an engine needs Go changes or just a shared definition; extending the behavior-defined engine model with a reusable behavior.
Run `npx skills add github/gh-aw --skill custom-engine-implementation -a claude-code`. Or copy the skill folder (.github/skills/custom-engine-implementation in github/gh-aw) into .claude/skills/custom-engine-implementation in your project. Claude Code loads it when a task matches its description.
Run `npx skills add github/gh-aw --skill custom-engine-implementation -a codex`. Or copy the skill folder (.github/skills/custom-engine-implementation in github/gh-aw) into .agents/skills/custom-engine-implementation 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 custom-engine-implementation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/custom-engine-implementation, .gemini/skills/custom-engine-implementation, .github/skills/custom-engine-implementation and .opencode/skills/custom-engine-implementation in your project.
Going by SKILL.md and its folder, gh-aw Custom Engine Implementation needs the command-line tools its instructions call (make and go). Our summary lists: A checkout of the gh-aw repository.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
gh-aw Custom Engine Implementation is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k 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 gh-aw Custom Engine Implementation: Example Harness (ruvnet/metaharness, 688 stars), Docs Tooling Notion (langchain-ai/docs, 424 stars), Prepare Cloudflare Production Deployment (LubomirGeorgiev/cloudflare-workers-nextjs-saas-template, 786 stars) and Claude Docs Consultant (centminmod/my-claude-code-setup, 2.7k 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.