Repro
vaadin/web-components
Reproduce a Vaadin web component bug from a GitHub issue in vaadin/web-components.
Gate one or more open PRs before merge: CI check, then a code-level regression/business-rule review, then (only if that's clean) end-to-end Playwright verification of the PR's own workflow(s) plus…
$ npx skills add hmislk/hmis --skill merge-gate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hmislk/hmis merge-gate --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/hmislk/hmis.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/merge-gate .claude/skills/merge-gate && 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 "merge-gate" agent skill from https://github.com/hmislk/hmis/tree/development/.claude/skills/merge-gate into .claude/skills/merge-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "merge-gate", 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/hmislk/hmis/tree/development/.claude/skills/merge-gateType 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 hmislk/hmis --skill merge-gate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hmislk/hmis merge-gate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/merge-gate .agents/skills/merge-gate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "merge-gate" agent skill from https://github.com/hmislk/hmis/tree/development/.claude/skills/merge-gate into .agents/skills/merge-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "merge-gate", 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 hmislk/hmis --skill merge-gate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hmislk/hmis merge-gate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/merge-gate .cursor/skills/merge-gate && 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 "merge-gate" agent skill from https://github.com/hmislk/hmis/tree/development/.claude/skills/merge-gate into .cursor/skills/merge-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "merge-gate", 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/hmislk/hmis.git --path .claude/skills/merge-gate--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 hmislk/hmis --skill merge-gate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hmislk/hmis merge-gate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/merge-gate .gemini/skills/merge-gate && 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 "merge-gate" agent skill from https://github.com/hmislk/hmis/tree/development/.claude/skills/merge-gate into .gemini/skills/merge-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "merge-gate", 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 hmislk/hmis merge-gateInstalls 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 hmislk/hmis --skill merge-gate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/merge-gate .github/skills/merge-gate && 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 "merge-gate" agent skill from https://github.com/hmislk/hmis/tree/development/.claude/skills/merge-gate into .github/skills/merge-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "merge-gate", 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 hmislk/hmis --skill merge-gate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hmislk/hmis merge-gate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hmislk/hmis.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/merge-gate .opencode/skills/merge-gate && 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 "merge-gate" agent skill from https://github.com/hmislk/hmis/tree/development/.claude/skills/merge-gate into .opencode/skills/merge-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "merge-gate", 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.
merge-gateGate one or more open PRs before merge: CI check, then a code-level regression/business-rule review, then (only if that's clean) end-to-end Playwright verification of the PR's own workflow(s) plus…
Merge Gate is an agent skill from hmislk/hmis. Gate one or more open PRs before merge: CI check, then a code-level regression/business-rule review, then (only if that's clean) end-to-end Playwright verification of the PR's own workflow(s) plus two fixed baseline checks. Posts one top-level status comment per PR per run (PASSED or BLOCKED-) so the outcome is visible on GitHub, not just in chat. Use when asked to "gate PR(s) for merge", "run merge-gate on N", "check these PRs are safe to merge", or before merging any PR that touches shared/core code (API…
Its SKILL.md is about 4k 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 Testing & QA, covering Browser testing. It works with GitHub and Playwright. The repository describes itself as: This is an Open Source Java EE based Hospital Information Management System. The licence is GPL-3.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d5d2020. 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:
ghgitjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh and git, 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.
Merge Gate loads about 4k tokens when it runs. Until then it costs about 151 tokens; SKILL.md has 1,952 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 hmislk/hmis at commit d5d2020, republished under its GPL-3.0 licence (© hmislk). 1,952 words, ~4,036 tokens.
.claude/skills/merge-gate/SKILL.md (or your agent's skills folder).Full design rationale: developer_docs/git/2026-08-22-merge-gate-skill-design.md.
This exists because a past API-improvement PR shipped an NPE that broke all API functions, and neither CodeRabbit nor manual review caught it before merge. This skill adds a code-level review pass plus a live end-to-end sweep — including two fixed baseline checks unrelated to the PR's own scope — as a safety net for that class of regression.
This skill never merges anything. It ends with a report telling you which PRs are ready for your final review and merge.
$0, $1, ... — one or more PR numbers (not issue numbers). If a
number given doesn't resolve to an open PR, say so and ask for the
correct PR number rather than guessing which PR closes an issue.Process PRs sequentially, one fully through the pipeline (or blocked) before starting the next — only one branch/deployment can be live on local Payara at a time. Keep a running outcome table and print the final report after the last PR.
gh pr checks <PR>BLOCKED-CI, post the PR status comment (see
§ PR status comment), stop this PR, move to the next.ScheduleWakeup ~270s (same cadence as dev-issue §14), recheck
once. Still not green → BLOCKED-CI, post the comment, stop this PR.git fetch origin
git checkout -- src/main/resources/META-INF/persistence.xml
gh pr checkout <PR>The git checkout -- discards the previous PR's uncommitted local-JNDI edit
first — skip it and the branch switch can fail or behave inconsistently
whenever the committed persistence.xml differs between branches. Safe
no-op on the very first PR (nothing to discard).
Then restore persistence.xml to local JNDI (jdbc/coop /
jdbc/ruhunuAudit) per CLAUDE.md, left unstaged.
Invoke the code-review skill against this PR at high effort with
--comment, so findings post directly to the PR (reuses the existing
review engine instead of duplicating its logic).
Before classifying anything, run the fallback below to confirm every
finding the sub-agent claims to have posted actually landed — do this
before the classification step decides to record BLOCKED-REVIEW and
stop, not after. Running it after the stop decision defeats the point:
by the time you've stopped this PR and moved to the next one, an
unverified silent drop stays silently dropped.
code-review --comment posts via GitHub's PR-review-comment API, which can
only anchor a comment on a line that appears in this PR's own diff. A
finding whose defect lives in a file the PR doesn't touch (e.g. a downstream
method the new code merely calls) has nowhere to anchor — and can be
silently dropped instead of posted, with no error surfaced back. Confirmed
happening in practice (PR #23082, 2026-08-22: two blocking findings were
returned by the sub-agent as "posted" but never actually appeared on the
PR, because one lived in a file outside the diff and the anchor silently
failed).
Before trusting the sub-agent's "posted successfully" claim, verify for
every finding it returned (classification happens after this, once you
know what's actually posted). Get the actual poster identity first
(don't hardcode a username or just exclude coderabbitai[bot] — an
unrelated human/bot comment at the same path:line would then be
misread as confirmation), and always paginate — the default page size
silently truncates past ~30 comments, which would make a real PR with
substantial CodeRabbit + human discussion look falsely under-verified (or
mask a genuinely missing finding sitting past the cutoff):
gh api --jq only accepts one filter-string argument — piping --arg and
its value straight after it fails with accepts 1 arg(s), received 4.
Pipe to a standalone jq instead:
me=$(gh api user --jq '.login')
gh api --paginate repos/hmislk/hmis/pulls/<PR>/comments | \
jq --arg me "$me" '.[] | select(.user.login == $me) | "\(.path):\(.line)"'Cross-check this list against the findings returned. For any finding missing from it (blocking or not — verify all of them, since classification hasn't happened yet):
gh pr diff <PR> --name-only."could not be resolved"): get the real hunk
boundaries with gh api repos/hmislk/hmis/pulls/<PR>/files --jq '.[] | select(.filename=="<path>") | .patch' and anchor on the nearest
line that's actually inside it instead.Post any recovered findings with gh api repos/hmislk/hmis/pulls/<PR>/comments -f commit_id=<head-sha> -f path=<path> -F line=<n> -f side=RIGHT -f body=<text> (head SHA from gh pr view <PR> --json commits -q '.commits[-1].oid'). Re-run the verification query once more before
classifying anything — don't classify or stop on an unconfirmed assumption
that everything posted.
Now that every finding is confirmed actually posted (or folded into the status comment per case 4 above), classify what the sub-agent returned:
| Category | Effect |
|---|---|
| correctness, regression, business-rule violation | Blocking. Inline comments are already confirmed posted; summarize in chat; post the PR status comment (see § PR status comment); record BLOCKED-REVIEW; stop this PR — do not run Phase 2/3. |
| style, simplification, efficiency, reuse-only | Non-blocking. Note in chat, continue to Phase 2 regardless. |
No findings at all → continue to Phase 2.
gh pr diff <PR> --name-onlyUse the Explore agent to map the changed files (controllers, services,
entities, XHTML, REST resources) to the user-facing pages/flows that
exercise them. Produce a short concrete list (e.g. "GRN receipt flow",
"Stock Transfer approval"). Only pause for AskUserQuestion if the mapping
is genuinely ambiguous (e.g. a shared utility touched by many unrelated
flows) — don't ask when the diff makes the affected flow obvious.
Per playwright-e2e §0a / dev-issue §6:
$env:JAVA_HOME="C:\Program Files\Eclipse Adoptium\jdk-11.0.23.9-hotspot"
& "D:\Program Files\NetBeans-18\netbeans\java\maven\bin\mvn.cmd" clean package -DskipTests
& "D:\Payara\bin\asadmin.bat" redeploy --name rh "D:\Development\2024\hmis\target\rh-3.0.0.war"Check the server log for deployment errors before proceeding. If mvn clean package fails, asadmin redeploy fails, or the server log shows
deployment errors, stop this PR here: capture the failure output, redact
it of credentials/connection strings/hostnames (same rule as § Phase 3's
evidence redaction), post the PR status comment (see § PR status comment)
with the redacted excerpt, record BLOCKED-BUILD, and move to the next
PR — don't attempt Phase 3 against a stale or undeployed build.
Run via the playwright-e2e skill (login, department selection, AJAX-aware
waits, DB verification per its workflow doc). Reach every page through the
menus, never by URL — a URL-loaded page renders against uninitialised
session state and can fail in ways no user can reach (playwright-e2e §2). For every PR that reaches
this phase, run all three of the following — the two baseline checks are
fixed and always run, regardless of what the PR touches, because the
motivating incident broke core flows unrelated to the changed code:
dev-issue §4 does — confirm with
AskUserQuestion rather than guessing)./reports/inventoryReports/cost_of_goods_sold) and confirm
no unexplained variance. This report's Process button can silently no-op
or show stale results — poll for AJAX/query completion twice, a few
seconds apart, before reading the grid (see the project's COGS-report
testing-gotcha memory)./reports/cashier_reports/cashier_detailed) and
confirm the sale appears correctly for the cashier/shift used.A failure in any of the three (PR workflow or either baseline) is a real
bug the gate caught: capture evidence (screenshots, DB query output) into
the project tmp/ folder, record BLOCKED-E2E, and stop this PR. Redact
patient identifiers, credentials, tokens, and other sensitive fields from
that evidence before it leaves tmp/ (referenced in chat, posted to a PR
comment, etc.) — same rule as dev-issue §2a/§10. Do not attempt a fix
inline — report it and discuss next steps (per CLAUDE.md "discuss
uncertainties"); fixing is separate dev-issue work. Post the PR status
comment (see § PR status comment) describing what failed, with the
evidence redacted.
All three pass → record PASSED and post the PR status comment (see
§ PR status comment).
Post exactly one top-level PR comment per PR per run, at whatever
terminal state that PR's pipeline reaches (whether it stops early or runs
all the way to PASSED). This is an intentional, carved-out exception to
the general "never post top-level PR comments, only reply to reviewer
threads" rule — merge-gate is reporting its own factual outcome, not review
opinion needing threading, so a fresh top-level comment each run is
correct, not noise. Post via:
gh pr comment <PR> --body "..."The comment is public, like everything else in this repo. Keep hospital data out of it — no production record identifiers, affected-record counts, schema names or patient/staff names in the E2E evidence or the failure excerpts. See What May Go Into a GitHub Issue, PR, or Comment.
If merge-gate is re-run on the same PR later (e.g. after the author pushed fixes), post a new comment rather than editing/deleting the previous one — the history of gate runs staying visible is the point.
Use an outcome-specific template so a PR author or a merger who wasn't in this session gets enough context without opening the chat transcript:
PASSED:
## 🚦 Merge Gate: PASSED
**Tested:**
- PR workflow: <short description of what was exercised>
- Baseline A (pharmacy sale → COGS variance): ✅ no unexplained variance
- Baseline B (OPD sale → Cashier Details): ✅ sale appears correctly
Ready for final human review and merge.BLOCKED-CI: covers both an explicit check failure and a check that
never went green after the recheck — use wording that fits either.
## 🚦 Merge Gate: BLOCKED — CI not passing
CI did not reach a passing state: <failed check name and run URL, or
"still pending after the ~270s recheck">. Merge-gate stopped before the
code review pass.BLOCKED-REVIEW: keep this one short — the inline --comment findings
from Phase 1 already carry the detail. Covers correctness, regression, AND
business-rule-violation findings, not just regressions — say "blocking
findings," not "regressions."
## 🚦 Merge Gate: BLOCKED — blocking code-review findings
See the inline comments above for specifics. Merge-gate stopped here;
Phase 2/3 (build, E2E, baselines) did not run.BLOCKED-BUILD: redact the failure output the same way as the E2E
evidence rule below — Maven/Payara/asadmin output can contain JDBC
connection strings, JNDI names, hostnames, or other values CLAUDE.md's
credentials rule forbids ever leaving the machine. Redact before this
excerpt goes anywhere near gh pr comment, and cap its length.
## 🚦 Merge Gate: BLOCKED — build/deploy failed
<relevant tail of the compile or asadmin failure output, redacted of
credentials, connection strings, hostnames, and other sensitive values>
Merge-gate could not verify this PR end-to-end because the build/deploy
step itself failed.BLOCKED-E2E: the description below is inline, redacted prose — not
a link or attachment. Raw evidence (screenshots, DB output) stays local in
tmp/ and is never uploaded anywhere; there's no attachment mechanism in
this workflow. Don't imply otherwise in the Final report either (see
§ Final report).
## 🚦 Merge Gate: BLOCKED — end-to-end verification found a bug
**Failed:** <PR workflow name, or "Baseline A: COGS variance", or
"Baseline B: Cashier Details">
<redacted description of what went wrong — no patient identifiers,
credentials, or tokens>
This was not auto-fixed — it needs discussion (per CLAUDE.md "discuss
uncertainties") as separate `dev-issue` work.After all PRs are processed, print a table:
| PR # | Outcome | Workflows tested | Notes/links |
|---|
Outcome is one of PASSED, BLOCKED-CI, BLOCKED-REVIEW, BLOCKED-BUILD,
BLOCKED-E2E. Every row's Notes/links cell — PASSED included — should
include the URL of that PR's status comment (see § PR status comment); this
is the durable GitHub record, the table itself is just a summary for this
chat. For every PASSED row, additionally say it's ready for the user's
final review and merge. For blocked rows, the status comment itself points
to whatever's relevant: the Phase 1 inline comments, the (redacted)
build/deploy failure excerpt, or a redacted description of the Phase 3
failure — evidence never leaves tmp/ as a link or attachment, only as
inline redacted prose (see § PR status comment). Every PR should already
have its status comment posted by the time this table prints. Never merge,
approve, or request changes on the user's behalf.
persistence.xml to local JNDI around every PR's
checkout (see step 1), left unstaged — repeat for each PR in the batch,
not just the first.tmp/ folder (never system
/tmp/), per CLAUDE.md — redacted of patient/sensitive data before they
leave tmp/.Same as playwright-e2e (full mcp__playwright__* set, Maven +
asadmin, mysql read access) plus gh for PR checkout/checks/diff/comment
(gh pr comment, per § PR status comment) and the Agent tool for the
Phase 2 Explore dispatch.
© hmislk, GPL-3.0. 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 .claude/skills/merge-gate of hmislk/hmis.
Open the folder on GitHubat commit d5d2020
Merge Gate 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 |
|---|---|---|---|---|---|---|
| Merge Gate this skillhmislk/hmis | 236 | — | ~4k | Automated safety check: Pass | GPL-3.0 | |
| Reprovaadin/web-components | 582 | — | ~1.3k | Automated safety check: Pass | None | |
| Reprovaadin/flow-components | 129 | — | ~1.3k | Automated safety check: Pass | None | |
| Site Bugfixdebs-obrien/debbie.codes | 142 | — | ~960 | Automated safety check: Pass | None | |
| Hlive TestingSamHennessy/hlive | 101 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Handsontable Performance Testinghandsontable/handsontable | 22k | — | ~3.4k | Automated safety check: Pass | Custom licence |
vaadin/web-components
Reproduce a Vaadin web component bug from a GitHub issue in vaadin/web-components.
vaadin/flow-components
Reproduce a Vaadin Flow component bug from a GitHub issue in vaadin/flow-components or a component-specific issue in vaadin/flow.
debs-obrien/debbie.codes
Reproduce and fix a debbie.codes site bug with browser proof and a Playwright regression when useful.
SamHennessy/hlive
Write browser tests for HLive pages using the hlivetest package (github.com/SamHennessy/hlive/hlivetest) and Playwright.
handsontable/handsontable
Guide to Handsontable's performance-tests package: Playwright scenarios measured through CDP traces and compared against golden baselines taken from the develop branch.
lablup/backend.ai-webui
Record Playwright e2e tests as one GIF per test case (video → ffmpeg palette GIF) and return a markdown table for a PR description.
hmislk/hmis
Reference for calling existing HMIS REST APIs. An agent skill from hmislk/hmis.
hmislk/hmis
Application configuration options reference for the HMIS project.
hmislk/hmis
Ultra-compressed communication mode. An agent skill from hmislk/hmis.
hmislk/hmis
MySQL database development guide for the HMIS project. An agent skill from hmislk/hmis.
hmislk/hmis
A skill your agent uses when asked to make a demo, training, how-to or tutorial video with sound or voice-over showing an HMIS function or configuration (e.g.
hmislk/hmis
Sync development into QA/testing environment branches (QA1-QA4, local RH staging) via PR + merge on GitHub.
Works with
Categories
Gate one or more open PRs before merge: CI check, then a code-level regression/business-rule review, then (only if that's clean) end-to-end Playwright verification of the PR's own workflow(s) plus…. Merge Gate is an agent skill from hmislk/hmis. Gate one or more open PRs before merge: CI check, then a code-level regression/business-rule review, then (only if that's clean) end-to-end Playwright verification of the PR's own workflow(s) plus two fixed baseline checks.
Merge Gate fits situations like: asked to gate PR(s) for merge; run merge-gate on N; check these PRs are safe to merge; before merging any PR that touches shared/core code (API.
Run `npx skills add hmislk/hmis --skill merge-gate -a claude-code`. Or copy the skill folder (.claude/skills/merge-gate in hmislk/hmis) into .claude/skills/merge-gate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hmislk/hmis --skill merge-gate -a codex`. Or copy the skill folder (.claude/skills/merge-gate in hmislk/hmis) into .agents/skills/merge-gate 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 hmislk/hmis --skill merge-gate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/merge-gate, .gemini/skills/merge-gate, .github/skills/merge-gate and .opencode/skills/merge-gate in your project.
Going by SKILL.md and its folder, Merge Gate needs the command-line tools its instructions call (gh, git and jq).
SKILL.md contains no URLs. Its commands use gh and git, 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.
Merge Gate is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k 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 Merge Gate: Repro (vaadin/web-components, 582 stars), Repro (vaadin/flow-components, 129 stars), Site Bugfix (debs-obrien/debbie.codes, 142 stars) and Hlive Testing (SamHennessy/hlive, 101 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hmislk (a GitHub organization) maintains it in hmislk/hmis, which has 236 GitHub stars. The repository holds 33 skills in this directory. The repository was last updated on October 8, 2026.
Source: hmislk/hmis on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.