Reusable agent skills for GitLab projects. Skills are structured prompt files that AI coding assistants (like pi, OpenCode and Claude Code) can load on demand to gain domain-specific knowledge and workflows.
This repo follows the Agent Skills open format (spec).
A skill is a directory containing a SKILL.md file with:
- YAML frontmatter —
name,description,license,compatibility, and optionalmetadatafields - Markdown content — step-by-step workflows, code examples, reference tables, checklists, and anything else the agent needs
Skills are loaded explicitly by the agent when relevant to a task (e.g. "load the glab skill") rather than being injected into every prompt. This keeps context lean and focused.
Use when creating git commits, writing commit messages, or when about to run git commit -- enforces structured commit message format with imperative mood, capitalized subjects, 72-char wrapping, and atomic commits → SKILL.md
Monitor a GitLab MR's pipeline until green. Classifies failures (flaky, master-broken, lint, coverage, real), retries jobs where appropriate, makes light-touch auto-fixes, and posts findings as an MR comment. → SKILL.md
Write or update a GitLab MR description. Reads the branch diff, drafts structured markdown using GitLab's standard sections, and applies conventions for feature flags, database queries, and local testing matrices. Use when opening a new MR or refreshing an existing description. → SKILL.md
Watch GitLab MR pipelines and react to state changes → SKILL.md
GitLab workflow automation using glab CLI → SKILL.md
Use when running a critical, skeptical pass over a GitLab MR — either as the author before requesting human review, or as a reviewer wanting a structured first cut — produces a severity-bucketed findings report (High / Medium / Low / Done well) and posts it as a single comment on the MR. → SKILL.md
Review a GitLab merge request - read diffs, analyze changes, present findings, and optionally post comments on the MR → SKILL.md
Run pre-push lefthook checks and iteratively fix failures (up to 3 iterations, then escalate). Invoke when: (a) about to push and wanting hooks to pass cleanly, (b) git push has just failed on a pre-push hook and the failure needs to be driven to resolution, or (c) preparing a clean working tree without pushing — e.g. before opening a Draft MR for early review. → SKILL.md
Splits a large local change (uncommitted or committed) into a stacked-MR chain. Use when the user asks to split an MR they find too big to review, wants stacked diffs, has sprawling AI-mode work to publish, or types /stack-changes. → SKILL.md
Inspect GitLab local ClickHouse tables, schemas, ingestion paths, and data patterns. Use for CH table questions, DESCRIBE TABLE, schema and source-of-truth checks under db/click_house, ingestion debugging, and investigating aggregates, distributions, outliers, or anomalous ClickHouse data in a GitLab GDK environment. → SKILL.md
Inspect GitLab GDK PostgreSQL test and development databases with gdk psql. Use for Postgres schema checks, table and index inspection, read-only SQL queries, migration verification, and investigating GitLab application data in local test or development databases. → SKILL.md
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages. → SKILL.md
Help engineers write performance tests that detect regressions, using k6 for load testing, sitespeed.io for frontend Core Web Vitals, rspec-benchmark for unit-level perf assertions, and Ruby profilers (Stackprof, memory_profiler, derailed_benchmarks, etc.) for investigating slow code paths. Use when the user is adding or changing API endpoints, database queries, critical paths, or frontend pages and needs to decide whether to write a performance test, what kind, or how to integrate it into CI. Also activate when the user mentions load testing, stress testing, response times, benchmarking, performance budgets, CPT, component performance testing, MR pipeline performance testing, profiling slow Ruby code, memory bloat, or wants to run tests against staging - this skill enforces shared infrastructure safety rules. Does not cover APM or debugging production incidents. → SKILL.md
Run commands in a temporary tmux pane with full interactive zsh environment (login shell, shims, PATH, aliases, TTY). → SKILL.md
Write large files reliably using chunked bash append (>> heredoc) → SKILL.md
Compact the current session into a handoff document so a fresh agent can continue the work. Use when the user says hand off, wrap up, save context, continue later, pick this up in a new session, running low on context, or context is getting long. → SKILL.md
Iteratively test and refine prompts, skills, and agent configurations using opencode run → SKILL.md
Author a new agent skill or improve an existing one - write the SKILL.md frontmatter and description, structure the body, and fix skills that under- or over-trigger. Use when asked to create/write a skill, make a SKILL.md, improve/refactor a skill, or fix a skill's description. → SKILL.md
Execute GLQL queries against GitLab projects and groups using glab CLI → SKILL.md
Skills are grouped by category and auto-generated from skill frontmatter. Run
python3 scripts/update_skills_list.pyto regenerate after adding or modifying skills.
Note
Windows users: this repo uses symlinks for skill distribution. Before cloning, ensure Git is configured to create real symlinks:
git config --global core.symlinks trueYou may also need to enable Developer Mode or run Git as Administrator for symlink creation to work.
This repo ships .agents/skills/ with a symlink for each skill. That is the cross-tool discovery location defined by the Agent Skills spec, so multiple tools can read it:
- Zed loads skills from a project-local
<worktree>/.agents/skills/(in a trusted worktree) as well as the global~/.agents/skills/. Cloning this repo is enough for project-local discovery, no extra step needed. See the Zed skills docs. - GitLab Duo CLI discovers global skills from
~/.agents/skills/(or~/.gitlab/duo/skills/), behind the experimental--global-skillsflag.
For global discovery, symlink the shipped skills into ~/.agents/skills/:
git clone https://gitlab.com/gitlab-org/ai/skills.git ~/gitlab-skills
for skill in ~/gitlab-skills/.agents/skills/*/; do
ln -s "$skill" ~/.agents/skills/
doneThis repo ships as a pi package. Install globally or per-project:
# From git (global)
pi install git:gitlab.com/gitlab-org/ai/skills
# From local clone
pi install /path/to/skills
# Per-project (writes to .pi/settings.json)
pi install -l git:gitlab.com/gitlab-org/ai/skillsPi auto-discovers all skills under skills/ via the package.json manifest. To filter which skills load, use package filtering in .pi/settings.json.
This repo ships .opencode/skills/ with symlinks for each skill. Clone the repo and OpenCode discovers them automatically — no extra install step needed.
git clone https://gitlab.com/gitlab-org/ai/skills.git ~/gitlab-skills
# OpenCode picks up .opencode/skills/ from the cloned directoryOr symlink into your global OpenCode config:
for skill in ~/gitlab-skills/.opencode/skills/*/; do
ln -s "$skill" ~/.config/opencode/skills/
done@dgruzd/skills is a fork of vercel-labs/skills that adds GitLab update detection — without it, skills check and skills update silently skip GitLab-hosted skills. It handles symlinking, multi-agent installs, updates, and discovery with no global install required.
Note
We should strongly consider creating @gitlab/skills or, better yet, upstream GitLab support to vercel-labs/skills.
# Install all skills from this repo globally (for OpenCode)
npx @dgruzd/skills add https://gitlab.com/gitlab-org/ai/skills/-/tree/main/skills --global --agent opencode
# Install all skills from this repo globally (for Claude Code)
npx @dgruzd/skills add https://gitlab.com/gitlab-org/ai/skills/-/tree/main/skills --global --agent claude-code
# Check for updates
npx @dgruzd/skills check
# Apply updates
npx @dgruzd/skills update
# List installed skills
npx @dgruzd/skills list -gThis repo ships as a Claude Code plugin marketplace:
/plugin marketplace add https://gitlab.com/gitlab-org/ai/skills.git
/plugin install glab@gitlab-skills| Plugin | Skills | Description | Version |
|---|---|---|---|
authoring-skills |
authoring-skills |
Author a new agent skill or improve an existing one - write the SKILL.md frontmatter and description, structure the body, and fix skills that under- or over-trigger. Use when asked to create/write a skill, make a SKILL.md, improve/refactor a skill, or fix a skill's description. | 0.2.0 |
commit-messages |
commit-messages |
Use when creating git commits, writing commit messages, or when about to run git commit -- enforces structured commit message format with imperative mood, capitalized subjects, 72-char wrapping, and atomic commits | 1.0.1 |
gitlab-babysit-mr |
gitlab-babysit-mr |
Monitor a GitLab MR's pipeline until green. Classifies failures (flaky, master-broken, lint, coverage, real), retries jobs where appropriate, makes light-touch auto-fixes, and posts findings as an MR comment. | 0.10.0 |
gitlab-clickhouse |
gitlab-clickhouse |
Inspect GitLab local ClickHouse tables, schemas, ingestion paths, and data patterns. Use for CH table questions, DESCRIBE TABLE, schema and source-of-truth checks under db/click_house, ingestion debugging, and investigating aggregates, distributions, outliers, or anomalous ClickHouse data in a GitLab GDK environment. | 1.0.1 |
gitlab-mr-description |
gitlab-mr-description |
Write or update a GitLab MR description. Reads the branch diff, drafts structured markdown using GitLab's standard sections, and applies conventions for feature flags, database queries, and local testing matrices. Use when opening a new MR or refreshing an existing description. | 1.1.0 |
gitlab-pipeline-watch |
gitlab-pipeline-watch |
Watch GitLab MR pipelines and react to state changes | 1.0.0 |
gitlab-psql |
gitlab-psql |
Inspect GitLab GDK PostgreSQL test and development databases with gdk psql. Use for Postgres schema checks, table and index inspection, read-only SQL queries, migration verification, and investigating GitLab application data in local test or development databases. | 1.0.1 |
glab |
glab |
GitLab workflow automation using glab CLI | 1.10.2 |
glab-glql |
glab-glql |
Execute GLQL queries against GitLab projects and groups using glab CLI | 1.0.0 |
handoff |
handoff |
Compact the current session into a handoff document so a fresh agent can continue the work. Use when the user says hand off, wrap up, save context, continue later, pick this up in a new session, running low on context, or context is getting long. | 0.5.0 |
mr-adversarial-review |
mr-adversarial-review |
Use when running a critical, skeptical pass over a GitLab MR — either as the author before requesting human review, or as a reviewer wanting a structured first cut — produces a severity-bucketed findings report (High / Medium / Low / Done well) and posts it as a single comment on the MR. | 0.1.0 |
mr-review |
mr-review |
Review a GitLab merge request — read diffs, analyze changes, present findings, and optionally post comments on the MR | 0.1.0 |
pushify |
pushify |
Run pre-push lefthook checks and iteratively fix failures (up to 3 iterations, then escalate). Invoke when: (a) about to push and wanting hooks to pass cleanly, (b) git push has just failed on a pre-push hook and the failure needs to be driven to resolution, or (c) preparing a clean working tree without pushing — e.g. before opening a Draft MR for early review. |
1.1.0 |
run-in-tmux-pane |
run-in-tmux-pane |
Run commands in a temporary tmux pane with full interactive zsh environment (login shell, shims, PATH, aliases, TTY). | 1.1.1 |
self-service-performance-testing |
self-service-performance-testing |
Help engineers write performance tests that detect regressions, using k6 for load testing, sitespeed.io for frontend Core Web Vitals, rspec-benchmark for unit-level perf assertions, and Ruby profilers (Stackprof, memory_profiler, derailed_benchmarks, etc.) for investigating slow code paths. Use when the user is adding or changing API endpoints, database queries, critical paths, or frontend pages and needs to decide whether to write a performance test, what kind, or how to integrate it into CI. Also activate when the user mentions load testing, stress testing, response times, benchmarking, performance budgets, CPT, component performance testing, MR pipeline performance testing, profiling slow Ruby code, memory bloat, or wants to run tests against staging - this skill enforces shared infrastructure safety rules. Does not cover APM or debugging production incidents. | 0.4.0 |
stack-changes |
stack-changes |
Splits a large local change (uncommitted or committed) into a stacked-MR chain. Use when the user asks to split an MR they find too big to review, wants stacked diffs, has sprawling AI-mode work to publish, or types /stack-changes. | 0.1.0 |
write-large-file |
write-large-file |
Write large files reliably using chunked bash append (>> heredoc) | 1.0.0 |
To add a new skill:
- Create
skills/<skill-name>/SKILL.mdwith required frontmatter (name,description,version) - Run
bin/distribute-skill <skill-name>to register it in.opencode/and.claude-plugin/ - Run
lefthook run auto-fixto regenerate all derived files (README table, ToC, catalog, plugin manifests) - Run
bin/ci-checksto verify CI checks locally. - Commit, push and open a MR
See doc/contributing.md for full details, frontmatter reference, and development setup (including lefthook installation).
- Search Team AI Skills — team-specific skills collection that inspired this repo's conventions
- OpenCode Documentation
- Claude Code Plugin Marketplace Docs