GitLab Agent Profile
Maintain the GitLab agent profile page and static contribution performance chart.
xrow GmbH
@xrowgmbh
What This Skill Does
Automated script that generates static SVG/WebP contribution charts and a JSON proof file for a GitLab agent profile page. It queries merged merge requests and direct commits over the last 12 months, classifies work by owner vs. agent authorship, and produces visual and data assets.
Replaces manually tracking and charting GitLab contribution statistics by automating the entire monthly profile update pipeline.
When to Use It
- Update the GitLab agent profile contribution chart for the current month
- Generate a static SVG chart showing last 12 months of merged merge requests
- Create a WebP version of the contribution chart for profile display
- Produce a JSON proof file with sorted contribution records
- Classify merge requests by owner, agent-with-review, and agent-autonomous categories
- Track direct owner commits to main that are not merge commits or chore/skip commits
Install
$ openclaw skills install @xrowgmbh/xrowgmbh-gitlab-agent-profileGitLab Agent Profile Skill
Use this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.
Your profile's location is https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git.
Goal
Maintain static profile assets for the agent with:
- Static SVG and WebP chart files showing the last 12 completed calendar months of merged merge requests, owner direct commits to each project's default branch, and contribution score.
- Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.
- A legend and bar labels with the exact counts behind the chart.
- A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.
Daily update routine
- Check GitLab auth works
- Run
{baseDir}/scripts/update-profile-stats.pyhelper. - Verify the completed-month range, project coverage, and monthly counts/scores against the public records plus private monthly totals. API errors must leave the previous assets unpublished.
- Commit and push the assets in the
assets/folder, if they changed.
Inputs
The script accepts these environment variables:
GITLAB_AGENT_PROFILE_CHART_OUTPUT: Static SVG chart file to update. Defaults toassets/gitlab-agent-profile.svg.GITLAB_AGENT_PROFILE_WEBP_OUTPUT: Static WebP chart file to update. Defaults toassets/gitlab-agent-profile.webp.GITLAB_AGENT_PROFILE_RECORDS_OUTPUT: JSON proof file to update. Defaults toassets/gitlab-agent-profile-records.json.GITLAB_AGENT_PROFILE_WORKSPACE: Workspace root used for relative output paths. Defaults to the current directory.GITLAB_AGENT_PROFILE_ROOT_GROUP: Group path to discover recursively, also used to expand short project names. Defaults toxrow-public.GITLAB_AGENT_PROFILE_PROJECTS: Optional space, comma, or newline separated project paths or names. When unset or blank, discover all accessible projects owned by the root group and its subgroups, including archived projects. Exclude projects merely shared into the group. A nonempty value overrides discovery.GITLAB_AGENT_PROFILE_AGENT_USERNAME: Agent username. Defaults to the authenticatedglabuser.GITLAB_AGENT_PROFILE_OWNER_USERNAME: Owner username. Defaults toxrow.GITLAB_AGENT_PROFILE_MONTHS: Positive number of completed calendar months to render. Defaults to12; always exclude the current in-progress month, using the process's local calendar.
Relative output values are resolved from GITLAB_AGENT_PROFILE_WORKSPACE.
Project names without / are expanded with GITLAB_AGENT_PROFILE_ROOT_GROUP, so ci-tools becomes xrow-public/ci-tools.
The proof file records project coverage and the completed-month period. Private/internal project names, titles, URLs, commit IDs, and reviewer details stay out of public output; their contributions are grouped by month, kind, and category in private_monthly_totals. Totals and contribution scores include both public and private activity. Empty repositories and disabled repository/MR features are reported in coverage. Other API or metadata failures stop collection rather than publishing partial totals.
Classification
For merged merge requests:
- Owner: author username matches
GITLAB_AGENT_PROFILE_OWNER_USERNAME. - Agent + reviewer: author username matches
GITLAB_AGENT_PROFILE_AGENT_USERNAMEand the owner is a reviewer or merge user. - Agent (autonomous): author username matches
GITLAB_AGENT_PROFILE_AGENT_USERNAMEand the owner is neither reviewer nor merge user. - Merged total: sum of the three MR categories.
- Direct owner commits: commits on each project's default branch authored or committed by the owner that are not known MR merge/squash commits and do not start with
skip:,skip(...),chore:,chore(...),docs:,docs(...), orrevert. - MRs with
type::bugortype::featurelabels count toward MR totals and contribution score. - If a merged MR has no type label, a Conventional Commit title beginning with
fix:/fix(...)orfeat:/feat(...)is used as a fallback type. - MRs beginning with
skip:,skip(...),chore:,chore(...),docs:, ordocs(...)are never counted, even if they have a counted type label. - MR contribution score: each counted MR starts at
1point and is multiplied by its size factor. - Size factor:
size::small=1,size::medium=2,size::large=3,size::xlarge=5; missing size labels default to1. - Direct owner commits count
0.2point each.
The script ignores merge requests authored by other users. The legacy direct_owner_main JSON field and owner_direct_main category now represent direct commits on the project's default branch.
Run python3 {baseDir}/scripts/test_profile_stats.py to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.
Bootstrap
- Add this cron, if it existed and was enabled then leave it enabled.
{
"name": "GitLab Agent",
"enabled": false,
"deleteAfterRun": false,
"schedule": {
"kind": "every",
"everyMs": 900000
},
"sessionTarget": "isolated",
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"message": "Read skill `gitlab-agent-profile` and run.",
"thinking": "high",
"timeoutSeconds": 3600,
"model": "openai/gpt-6.1-sol"
},
"delivery": {
"mode": "none",
"bestEffort": false
}
}
Top skills in this category
Skill Vetter
@spclaudehomeSecurity-first skill vetting for AI agents. Use before installing any skill from ClawdHub, GitHub, or other sources. Checks for red flags, permission scope, and suspicious patterns.
Clawdhub
@steipeteUse the ClawdHub CLI to search, install, update, and publish agent skills from clawdhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawdhub CLI.
Evolver
@autogame-17A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution. Communicates with EvoMap...
Evolver
@autogame-17A self-evolution engine for AI agents. Analyzes runtime history to identify improvements and applies protocol-constrained evolution. Communicates with EvoMap...
OpenClaw Command Center
@jontsaiMission control dashboard for OpenClaw - real-time session monitoring, LLM usage tracking, cost intelligence, and system vitals. View all your AI agents in one place.