Contributor-First PR Merge
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
Drafts a merge request or pull request title and body in simple English from the branch's git history and diff against origin/dev, ready to paste into GitLab or GitHub.
$ npx skills add tabler/tabler --skill mr-description -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tabler/tabler mr-description --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/tabler/tabler.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/mr-description .claude/skills/mr-description && 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 "mr-description" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/mr-description into .claude/skills/mr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mr-description", 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/tabler/tabler/tree/dev/.agents/skills/mr-descriptionType 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 tabler/tabler --skill mr-description -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tabler/tabler mr-description --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/mr-description .agents/skills/mr-description && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mr-description" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/mr-description into .agents/skills/mr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mr-description", 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 tabler/tabler --skill mr-description -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tabler/tabler mr-description --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/mr-description .cursor/skills/mr-description && 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 "mr-description" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/mr-description into .cursor/skills/mr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mr-description", 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/tabler/tabler.git --path .agents/skills/mr-description--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 tabler/tabler --skill mr-description -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tabler/tabler mr-description --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/mr-description .gemini/skills/mr-description && 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 "mr-description" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/mr-description into .gemini/skills/mr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mr-description", 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 tabler/tabler mr-descriptionInstalls 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 tabler/tabler --skill mr-description -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/mr-description .github/skills/mr-description && 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 "mr-description" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/mr-description into .github/skills/mr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mr-description", 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 tabler/tabler --skill mr-description -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tabler/tabler mr-description --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tabler/tabler.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/mr-description .opencode/skills/mr-description && 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 "mr-description" agent skill from https://github.com/tabler/tabler/tree/dev/.agents/skills/mr-description into .opencode/skills/mr-description/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mr-description", 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.
mr-descriptionDrafts a merge request or pull request title and body in simple English from the branch's git history and diff against origin/dev, ready to paste into GitLab or GitHub.
The skill produces a short title and a markdown body, each in its own fenced block and grounded in real git output rather than guesses. The base is the dev branch: it compares against origin/dev with three-dot syntax so the text reflects only this branch's commits, falls back to local dev if the remote is missing and then asks you. It gathers git status, the commit log, the diff and a stat summary, and for very large diffs relies on the stat plus targeted per-path diffs.
It also reads the current branch name for the Vercel preview URL and checks with gh pr view whether a PR already exists for the branch, carrying over any issue references from the old body into the notes so a regenerated description never drops the link to a tracked issue. The aim is to infer intent, user-visible behavior and risk, not just list file names.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dcacb65. 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:
gitghcurlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh and curl, 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.
MR and PR Description Drafter loads about 2k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 1,025 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 tabler/tabler at commit dcacb65, republished under its MIT licence (© tabler). 1,025 words, ~2,017 tokens.
.claude/skills/mr-description/SKILL.md (or your agent's skills folder).Produce a short title and a markdown body, each in its own fenced markdown block, ready to paste into GitLab (MR) or GitHub (PR). Ground everything in actual git output from this repo—not guesses.
Default integration branch: dev. Compare against origin/dev.
If origin/dev is missing (offline clone, no remote), fall back to local dev, then ask the user. Only use another base (e.g. develop) if the user says so explicitly.
Comparison range: use three-dot merge syntax so the description reflects this branch’s commits and diff:
git log origin/dev...HEAD --onelinegit diff origin/dev...HEADgit diff origin/dev...HEAD --statIf the branch is not pushed yet: git merge-base dev HEAD then git diff <merge-base>...HEAD (or same with origin/dev when available).
From the repository root:
git status -sbgit log origin/dev...HEAD --oneline (or dev...HEAD if no remote tracking)git diff origin/dev...HEAD --statgit diff origin/dev...HEAD — if output is very large, rely on --stat plus targeted git diff origin/dev...HEAD -- <paths> for the touched areasgit branch --show-current — current branch name for the Vercel preview URLUse this to infer intent, user-visible behavior, and risk—not only filenames.
Existing PR content: Before drafting, check whether a PR already exists for this branch (e.g. gh pr view --json title,body,number,url for the current branch, or a PR number/URL the user gave you). If one exists, read its current title and body first:
Closes #N, Fixes #N, Resolves #N, or a plain #N mention — into the new body. Put them in Notes / rollout (or, if the PR uses a dedicated Issue/Closes line, keep that same convention) so a regenerated description never silently drops the link to a tracked issue.Vercel preview URL: only when the diff has visual / UI changes a reviewer can check in the browser (CSS, preview pages, docs examples, components, layout). Skip the preview URL for non-visual work (agent skills, CI, tooling, docs prose-only, lockfile, config with no rendered UI effect).
When a preview URL is needed and the branch is pushed, Vercel deploys a preview. The repo has two separate Vercel projects — pick the one matching the diff:
| Diff touches | Project | Host |
|---|---|---|
preview/**, core/** (demo pages) | tabler | https://tabler-git-{branch-slug}-tabler-io.vercel.app/ |
docs/** (documentation site) | tabler-docs | https://tabler-docs-git-{branch-slug}-tabler-io.vercel.app/ |
Using the tabler host for a docs page returns 404 — the pages simply do not exist in that project.
Build {branch-slug} from the branch name (git branch --show-current): replace / with -, remove dots entirely (do not replace them with dashes), lowercase. Examples: feature/pricing-banner → feature-pricing-banner, update-icons-3.45.0 → update-icons-3450.
Verify before pasting. The slug rule is a convention, not a guarantee. Read the real url from the deployment, then curl each link you intend to put in the body:
gh api repos/tabler/tabler/deployments --jq '[.[] | select(.environment=="Preview – tabler-docs")][0].id'
gh api repos/tabler/tabler/deployments/<id>/statuses --jq '.[0].environment_url'
curl -s -o /dev/null -w '%{http_code}\n' <link>Links to the published docs (not a Vercel preview) belong to a different pair of hosts: docs.tabler.io serves the last release, docs-dev.tabler.io serves dev. Check any docs.tabler.io link you mention against docs-dev.tabler.io — production still serves the pre-content-collection URLs, so a page that exists in docs/content/** can 404 there without being a broken link.
If the diff touches specific routes or pages, append that path. Path shape differs per project:
.html extension: preview/pages/icons.astro → /icons.html, not /icons.vercel.json sets trailingSlash: false): docs/content/ui/components/badge.mdx → /ui/components/badge. A trailing slash still resolves, but through a 308 redirect.Mention the exact path(s) in Preview.
git log origin/dev..HEAD shows a pattern (e.g. conventional prefixes).Deliver the title to the user inside a fenced markdown block with only the title line inside (no heading, no label). That matches the body block and makes one-click copy work in the UI.
Example (what you output):
Remove `money-back-guarantee` flag; show label on paid plansOutput the body in a second fenced markdown block after the title block. Use this structure inside that block. Omit Notes / rollout if nothing applies. Omit the URL line (or the whole Preview section) when there are no visual changes—do not link a Vercel preview in that case. Do not add a separate ## Test plan section unless the user explicitly asks for one—use Preview (or a short “how to review” note under Summary) instead.
## Summary
- …
## Preview
- **URL:** [preview link](https://tabler-git-{branch-slug}-tabler-io.vercel.app/…)
- **How to test:** … (concrete steps tied to the diff—what to open, click, or verify; mention feature flags, env, or auth if the diff requires them)
## Notes / rollout
- … (breaking changes, feature flags, migrations—only if supported by the diff)Summary bullets: 1–4 bullets tying changes to product/engineering impact.
Preview: Include a Vercel URL only when the change is visual and the branch is pushed (or note that preview is unavailable until push). If there are no visual changes, omit the preview link entirely—do not add a homepage or generic preview URL. When a URL is included, use the Vercel format from §2 and deep-link the most relevant path(s)—homepage only if changes are global. How to test should be actionable: which page, which UI element or behavior changed, and what the reviewer should expect to see. For non-visual PRs, say how to review the diff instead (e.g. which files to read).
Notes: Feature flags, env vars, backwards compatibility—only when evidenced in the diff or commit messages. Also include any issue reference carried over from an existing PR (see §2), e.g. Closes #123.
Write the title and full MR body in simple English, even if the user asked in another language.
Offer to open/create the MR if the user uses GitLab (project MCP or UI) or GitHub (gh pr create), without running destructive git commands unless they ask.
© tabler, 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 .agents/skills/mr-description of tabler/tabler.
Open the folder on GitHubat commit dcacb65
MR and PR Description Drafter 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 |
|---|---|---|---|---|---|---|
| MR and PR Description Drafter this skilltabler/tabler | 42k | — | ~2k | Automated safety check: Pass | MIT | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT | |
| Create Pull Requestcline/cline | 70k | 1 repos | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Creating Description For Gh PRredis/jedis | 12k | — | ~838 | Automated safety check: Pass | MIT | |
| Create Pull Request with Work Item IDmakeplane/plane | 60k | — | ~824 | Automated safety check: Pass | AGPL-3.0 | |
| React Router Pull Request Creatorremix-run/react-router | 57k | — | ~2.5k | Automated safety check: Pass | MIT |
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
cline/cline
Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.
redis/jedis
Generate a clear, concise GitHub PR title and description from the diff between two local git branches, and save it to prDescription.md in the repo root.
makeplane/plane
Opens a pull request for the current branch using the repo's template, a work item ID in the title and a description filled in from the actual diff.
remix-run/react-router
Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.
pascalorg/editor
Opens or refreshes a pull request on pascalorg/editor from the current branch, describing only what the branch's commits and diff actually contain.
tabler/tabler
Starts the right Tabler dev server, keeps it from clashing with builds and verifies changes in the browser before a page or component is handed back.
tabler/tabler
Rules for adding or fixing client-side scripts in Tabler's Astro components so the copied preview HTML stays readable, self-contained and runs in the right order.
tabler/tabler
Sets the file structure, typing and Data API pattern for writing a new Bootstrap-style JavaScript component class in Tabler's vendored port of Bootstrap's JS.
tabler/tabler
Writes or updates the classnames front matter that renders the class table at the end of a Tabler component docs page.
tabler/tabler
Guidance for changing the Tabler framework's own JavaScript in core/js: the tabler.js and tabler-theme.js bundles, the Bootstrap port and their tests.
tabler/tabler
Rules for adding or changing styles in Tabler's core/scss framework: file placement, custom properties, dark mode, RTL, tests and build gates.
Categories
Drafts a merge request or pull request title and body in simple English from the branch's git history and diff against origin/dev, ready to paste into GitLab or GitHub. The skill produces a short title and a markdown body, each in its own fenced block and grounded in real git output rather than guesses. The base is the dev branch: it compares against origin/dev with three-dot syntax so the text reflects only this branch's commits, falls back to local dev if the remote is missing and then asks you.
MR and PR Description Drafter fits situations like: writing a pull request description for the current branch; drafting GitLab merge request text for reviewers; summarizing a branch's commits and diff for review; regenerating a PR description without losing issue links.
Run `npx skills add tabler/tabler --skill mr-description -a claude-code`. Or copy the skill folder (.agents/skills/mr-description in tabler/tabler) into .claude/skills/mr-description in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tabler/tabler --skill mr-description -a codex`. Or copy the skill folder (.agents/skills/mr-description in tabler/tabler) into .agents/skills/mr-description 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 tabler/tabler --skill mr-description -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mr-description, .gemini/skills/mr-description, .github/skills/mr-description and .opencode/skills/mr-description in your project.
Going by SKILL.md and its folder, MR and PR Description Drafter needs the command-line tools its instructions call (git, gh and curl). Our summary lists: Git, with origin/dev available; GitHub CLI (gh), to read an existing PR.
SKILL.md contains no URLs. Its commands use git, gh and curl, 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.
MR and PR Description Drafter 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 MR and PR Description Drafter: Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars), Create Pull Request (cline/cline, 70k stars), Creating Description For Gh PR (redis/jedis, 12k stars) and Create Pull Request with Work Item ID (makeplane/plane, 60k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
tabler (a GitHub organization) maintains it in tabler/tabler, which has 41,821 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 6, 2026.
Source: tabler/tabler on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.