{"id":"d193fc27-1b55-4455-b2ba-c2d5b2c75b27","entityType":"agent","slug":"clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile","name":"GitLab Agent Profile","canonicalUrl":"https://www.xpersona.co/agent/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile","canonicalPath":"/agent/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile","generatedAt":"2026-10-09T16:58:48.680Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T04:02:42.377Z","emptyReason":null},"description":"Maintain the GitLab agent profile page and static contribution performance chart. Skill: GitLab Agent Profile Owner: xrowgmbh Summary: Maintain the GitLab agent profile page and static contribution performance chart. Tags: latest:1.108.1 Version history: v1.108.1 | 2026-10-08T22:08:25.703Z | auto - Removed the file: skill-card.md. - No other user-facing or functional changes. v1.108.0 | 2026-10-08T20:07:59.067Z | auto - Removed the sample file skill-card.md. - No changes to skill logic or configur","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 5.4K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17aekq8k9ea9rzxqpwjjz8ea987ze4c:xrowgmbh-gitlab-agent-profile","sourceUrl":"https://clawhub.ai/xrowgmbh/xrowgmbh-gitlab-agent-profile","homepage":"https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/xrowgmbh/xrowgmbh-gitlab-agent-profile","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":75,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Maintain the GitLab agent profile page and static contribution performance chart. Skill: GitLab Agent Profile Owner: xrowgmbh Summary: Maintain the GitLab agent"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:02:42.377Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:02:42.377Z","emptyReason":null},"stars":null,"forks":null,"downloads":5396,"packageName":null,"latestVersion":"1.108.1","tractionLabel":"5.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T04:02:42.377Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T04:02:42.377Z","lastCrawledAt":"2026-10-09T04:02:42.377Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T04:02:42.377Z","lastVerifiedAt":null,"highlights":[{"version":"1.108.1","createdAt":"2026-10-08T22:08:25.703Z","changelog":"- Removed the file: skill-card.md. - No other user-facing or functional changes.","fileCount":6,"zipByteSize":15495},{"version":"1.108.0","createdAt":"2026-10-08T20:07:59.067Z","changelog":"- Removed the sample file skill-card.md. - No changes to skill logic or configuration. - Documentation and primary functionality remain unchanged.","fileCount":6,"zipByteSize":15478},{"version":"1.107.1","createdAt":"2026-10-08T18:09:24.811Z","changelog":"- Removed the file skill-card.md from the project. - No changes to the skill logic or functionality.","fileCount":6,"zipByteSize":15424},{"version":"1.107.0","createdAt":"2026-10-08T17:05:30.560Z","changelog":"- removed 1 file(s). - Updated SKILL.md and bundle contents.","fileCount":6,"zipByteSize":15525},{"version":"1.106.1","createdAt":"2026-10-08T10:18:20.628Z","changelog":"- Removed the redundant or outdated file skill-card.md. - No functional or documentation changes to the skill itself.","fileCount":6,"zipByteSize":15481},{"version":"1.106.0","createdAt":"2026-10-08T08:39:33.566Z","changelog":"- Removed the file `skill-card.md`. - No changes to the skill logic, documentation, or behavior.","fileCount":6,"zipByteSize":15540},{"version":"1.105.1","createdAt":"2026-10-06T18:34:28.471Z","changelog":"- Removed the documentation file skill-card.md. - No functional or behavioral changes to the skill logic or configuration.","fileCount":6,"zipByteSize":15435},{"version":"1.105.0","createdAt":"2026-10-06T16:30:08.918Z","changelog":"- Removed the file: skill-card.md - No changes were made to the content or logic of the skill. - Skill documentation and behavior remain the same.","fileCount":6,"zipByteSize":15592}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17aekq8k9ea9rzxqpwjjz8ea987ze4c:xrowgmbh-gitlab-agent-profile","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T16:58:48.678Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-xrowgmbh-xrowgmbh-gitlab-agent-profile/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T04:02:42.377Z","emptyReason":null},"readme":"Skill: GitLab Agent Profile\n\nOwner: xrowgmbh\n\nSummary: Maintain the GitLab agent profile page and static contribution performance chart.\n\nTags: latest:1.108.1\n\nVersion history:\n\nv1.108.1 | 2026-10-08T22:08:25.703Z | auto\n\n- Removed the file: skill-card.md.\n- No other user-facing or functional changes.\n\nv1.108.0 | 2026-10-08T20:07:59.067Z | auto\n\n- Removed the sample file skill-card.md.\n- No changes to skill logic or configuration. \n- Documentation and primary functionality remain unchanged.\n\nv1.107.1 | 2026-10-08T18:09:24.811Z | auto\n\n- Removed the file skill-card.md from the project.\n- No changes to the skill logic or functionality.\n\nv1.107.0 | 2026-10-08T17:05:30.560Z | auto\n\n- removed 1 file(s).\n- Updated SKILL.md and bundle contents.\n\nv1.106.1 | 2026-10-08T10:18:20.628Z | auto\n\n- Removed the redundant or outdated file skill-card.md.\n- No functional or documentation changes to the skill itself.\n\nv1.106.0 | 2026-10-08T08:39:33.566Z | auto\n\n- Removed the file `skill-card.md`.\n- No changes to the skill logic, documentation, or behavior.\n\nv1.105.1 | 2026-10-06T18:34:28.471Z | auto\n\n- Removed the documentation file skill-card.md.\n- No functional or behavioral changes to the skill logic or configuration.\n\nv1.105.0 | 2026-10-06T16:30:08.918Z | auto\n\n- Removed the file: skill-card.md\n- No changes were made to the content or logic of the skill.\n- Skill documentation and behavior remain the same.\n\nv1.104.0 | 2026-10-06T15:28:04.547Z | auto\n\n- skill-card.md file removed.\n- SKILL.md updated with minor adjustment: model field in the bootstrap section changed from openai/gpt-5.6-sol to openai/gpt-6.1-sol.\n\nv1.103.0 | 2026-10-06T14:55:03.676Z | auto\n\n- Documentation file skill-card.md was removed.\n- No functional or behavior changes to the skill itself.\n\nv1.102.0 | 2026-10-06T13:16:58.451Z | auto\n\n- Removed the file: skill-card.md\n- No changes to core functionality or documentation, aside from the above file removal.\n\nv1.101.0 | 2026-10-06T08:26:56.190Z | auto\n\n- Removed the sample file skill-card.md.\n- No functional or behavioral changes were made to the skill logic or documentation.\n\nv1.100.0 | 2026-10-05T21:33:59.348Z | auto\n\n- Removed the file: skill-card.md\n- No changes to skill functionality or behavior.\n\nv1.99.1 | 2026-10-05T20:47:49.561Z | auto\n\n- Removed the redundant file: skill-card.md.\n- No changes were made to the core functionality or documentation in SKILL.md.\n\nv1.99.0 | 2026-10-05T17:51:30.098Z | auto\n\n- Removed the sample file skill-card.md.\n- No other functional or documentation changes in this version.\n\nv1.98.1 | 2026-10-05T14:47:05.293Z | auto\n\n- Removed the file: skill-card.md.\n- No functional or behavioral changes to the skill itself.\n\nv1.98.0 | 2026-10-05T11:10:54.986Z | auto\n\n- Removed the sample file skill-card.md from the repository.\n- No changes to core functionality or documentation in SKILL.md.\n\nv1.97.1 | 2026-10-05T01:03:52.763Z | auto\n\n- Removed the file: skill-card.md.\n- No changes to functionality or configuration.\n- Documentation, usage, and process remain unchanged.\n\nv1.97.0 | 2026-10-03T11:54:25.248Z | auto\n\n- Removed the file: skill-card.md.\n- No changes to the skill logic or documented behavior.\n- Documentation and configuration in SKILL.md remain unchanged.\n\nv1.96.0 | 2026-10-01T15:07:21.447Z | auto\n\n- Removed the file skill-card.md from the skill.\n- No other functionality or documentation changes.\n\nv1.95.1 | 2026-10-01T14:01:31.889Z | auto\n\n- Removed the file: skill-card.md\n- No other changes to code or documentation.\n\nv1.95.0 | 2026-09-30T18:10:45.403Z | auto\n\n- Removed the file skill-card.md from the skill package.\n- No other user-facing or functional changes in this version.\n\nv1.94.0 | 2026-09-24T05:09:18.222Z | auto\n\n- Removed the file skill-card.md.\n- No changes to functionality or documentation in SKILL.md.\n\nv1.93.1 | 2026-09-23T21:54:23.866Z | auto\n\n- Removed the skill-card.md file.\n- No other functional or documentation changes.\n\nv1.93.0 | 2026-09-20T05:54:35.760Z | auto\n\n- Removed the file: skill-card.md.\n- No functional changes to existing SKILL.md or logic.\n- Documentation and usage remain unchanged.\n\nv1.92.0 | 2026-09-19T19:16:39.003Z | auto\n\nNo visible changes in this release; documentation and code remain unchanged from the previous version.\n\nv1.91.8 | 2026-09-19T01:50:25.875Z | auto\n\nVersion 1.91.8\n\n- No file changes detected in this release.\n- Documentation and usage details in SKILL.md remain unchanged.\n\nv1.91.7 | 2026-09-18T18:25:31.375Z | auto\n\n- Removed the file: skill-card.md\n- No changes to functionality or documentation in SKILL.md\n- This update contains only a cleanup of unused or redundant files\n\nv1.91.6 | 2026-09-17T04:05:41.704Z | auto\n\nNo user-visible changes in this release.\n\n- Version 1.91.6 was published with no file changes detected.\n\nv1.91.5 | 2026-09-16T18:29:59.946Z | auto\n\n- Removed the sample file: skill-card.md.\n- No other changes to functionality or documentation.\n\nv1.91.4 | 2026-09-16T07:21:22.217Z | auto\n\n- Removed the skill-card.md file.\n- No changes to skill features or behavior.\n\nv1.91.3 | 2026-09-13T00:57:38.651Z | auto\n\n- Removed the file: skill-card.md\n- No other changes to code or documentation detected.\n\nv1.91.2 | 2026-09-11T06:40:48.955Z | auto\n\n- Removed the file: skill-card.md\n- No other functional or documentation changes made in this version.\n\nv1.91.1 | 2026-09-09T16:56:47.996Z | auto\n\n- Removed the file: skill-card.md\n- No functional or behavioral changes to the skill logic or documentation.\n\nv1.91.0 | 2026-09-09T13:54:10.634Z | auto\n\n- Removed the file skill-card.md.\n- No changes to functionality or documented behavior.\n\nv1.90.0 | 2026-09-08T06:42:22.475Z | auto\n\n**Expanded private data handling, project discovery, and coverage reporting for profile stats.**\n\n- Adds anonymized monthly totals for private/internal projects to the proof JSON; public output never leaks private names, commit IDs, or reviewers.\n- Automatically discovers all owned projects under a root group and subgroups when the project list is unset; explicit project override remains supported.\n- All stats now use each project’s default branch, not just \"main\"; legacy field names updated for clarity.\n- Chart and records show only completed calendar months, always excluding the current month; boundaries are process-local.\n- Failure to fully collect stats across all projects (e.g., API/metadata errors) aborts publishing, ensuring assets aren’t updated with partial data.\n- Includes a new test script to verify group pagination, explicit/override cases, branch handling, and private data redaction.\n\nv1.89.0 | 2026-09-08T06:23:50.857Z | auto\n\n- Removed the file skill-card.md.\n- No other changes to code or functionality in this version.\n\nv1.88.0 | 2026-09-07T23:34:24.815Z | auto\n\n- Removed the redundant file skill-card.md.\n- No changes to functionality or configuration.\n- Documentation and skill usage remain the same.\n\nv1.87.0 | 2026-09-07T17:19:15.115Z | auto\n\n- Removed the sample file: skill-card.md.\n- No changes to functionality or documentation in SKILL.md.\n\nv1.86.0 | 2026-09-07T08:24:28.113Z | auto\n\n- Removed the file skill-card.md.\n- No changes to functionality or configuration.\n\nv1.85.1 | 2026-09-07T06:29:47.698Z | auto\n\n- Removed the file skill-card.md.\n- No changes were made to the core functionality, logic, or documentation in SKILL.md.\n\nv1.85.0 | 2026-09-07T05:31:10.612Z | auto\n\n- Removed sample file skill-card.md.\n- No other functional or documentation changes.\n\nv1.84.7 | 2026-09-05T00:43:32.094Z | auto\n\n- Removed the file skill-card.md from the repository.\n- No changes to functionality or configuration.\n\nv1.84.6 | 2026-09-03T00:15:28.246Z | auto\n\n- Removed the file skill-card.md.\n- No changes were made to core functionality or configuration.\n- Documentation and skill behavior remain unchanged.\n\nv1.84.5 | 2026-09-02T00:33:40.735Z | auto\n\n- Removed the file skill-card.md.\n- No other functional or documentation changes.\n\nv1.84.4 | 2026-09-01T10:42:52.824Z | auto\n\n- Removed the file skill-card.md.\n- No changes to skill functionality or documentation.\n\nv1.84.3 | 2026-09-01T08:28:29.407Z | auto\n\n- Removed the file skill-card.md.\n- No other changes to the skill logic or documentation.\n\nv1.84.2 | 2026-08-25T00:38:45.250Z | auto\n\n- Removed the skill documentation file skill-card.md.\n- No changes to skill logic or user-facing features.\n\nv1.84.1 | 2026-08-24T20:11:27.391Z | auto\n\n- Changed MR type label check from type::fix to type::bug for MR classification and contribution score.\n- Updated SKILL.md documentation to reflect this classification change.\n- Removed skill-card.md file.\n\nv1.84.0 | 2026-08-16T12:29:19.991Z | auto\n\n- Removed the file skill-card.md.\n- No changes to functionality or interfaces.\n\nArchive index:\n\nArchive v1.108.1: 6 files, 15495 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (1999b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.108.1:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.108.1:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.108.1\",\n  \"publishedAt\": 1791497305703\n}\n\nFile v1.108.1:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and GitLab profile maintainers use this skill to track completed-month contributions across selected projects and publish profile charts and supporting records.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The update uses GitLab credentials and may read accessible project activity.\n\nMitigation: Configure an explicit project list or root group and grant only the access needed for the intended projects.\n\nRisk: Generated charts and records may be published to a profile repository.\n\nMitigation: Verify project coverage, monthly totals, and the generated JSON before committing or pushing assets.\n\nRisk: The bootstrap can add a recurring agent job, and WebP generation may run unpinned npm tooling.\n\nMitigation: Keep the job disabled until reviewed; avoid the npm fallback unless sharp-cli is pinned or preinstalled in a controlled environment.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n- [Publisher profile](https://clawhub.ai/user/xrowgmbh)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with shell commands and JSON configuration]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides production of SVG and WebP charts and a JSON proof file for GitLab profile assets.]\n\n## Skill Version(s):\n\n1.108.1 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.108.0: 6 files, 15478 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (1951b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.108.0:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.108.0:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.108.0\",\n  \"publishedAt\": 1791490079067\n}\n\nFile v1.108.0:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and GitLab project maintainers use this skill to update an agent's profile with monthly contribution charts and proof records for selected projects.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: GitLab API access and generated proof records may expose information beyond the intended projects.\n\nMitigation: Use an explicit project list and least-privilege GitLab token; review the JSON proof output before publishing.\n\nRisk: Recurring agent runs may update and publish profile assets unexpectedly.\n\nMitigation: Leave the recurring cron disabled or omit it unless automated updates are intended; review changes before pushing.\n\nRisk: WebP conversion may invoke npm-based tooling when other converters are unavailable.\n\nMitigation: Preinstall and trust the WebP conversion tooling instead of relying on the npm fallback.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Files]\n\n**Output Format:** [Markdown instructions; SVG and WebP charts; JSON proof records]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Charts summarize completed months; public proof records omit private project details and show private activity only as monthly totals.]\n\n## Skill Version(s):\n\n1.108.0 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.107.1: 6 files, 15424 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (1938b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.107.1:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.107.1:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.107.1\",\n  \"publishedAt\": 1791482964811\n}\n\nFile v1.107.1:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nGitLab profile maintainers use this skill to update monthly contribution charts and supporting records, then publish changed assets to their profile repository.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: GitLab credentials can expose private and internal activity during project scanning.\n\nMitigation: Limit the authorized project scope with an explicit project list and review generated records before publication.\n\nRisk: Publishing charts and aggregated private/internal totals can disclose activity patterns.\n\nMitigation: Review the generated files and counts before pushing updates to the public profile repository.\n\nRisk: Recurring updates may publish profile assets without ongoing review.\n\nMitigation: Enable the recurring schedule only when unattended updates are intended.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n- [Publisher profile](https://clawhub.ai/user/xrowgmbh)\n\n## Skill Output:\n\n**Output Type(s):** [Files, Guidance]\n\n**Output Format:** [SVG and WebP charts, JSON contribution records, and profile-update guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Charts cover completed calendar months; public records and aggregated private/internal totals support the counts.]\n\n## Skill Version(s):\n\n1.107.1 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.107.0: 6 files, 15525 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (2076b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.107.0:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.107.0:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.107.0\",\n  \"publishedAt\": 1791479130560\n}\n\nFile v1.107.0:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and GitLab profile maintainers use this skill to summarize completed-month contributions across selected projects and update the agent's profile charts and proof records.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: GitLab token access can collect private and internal activity across a broader group than intended.\n\nMitigation: Set explicit projects or a narrow root group and review the token's access before running.\n\nRisk: Generated public charts and proof records include aggregated private/internal activity and may reveal unintended information.\n\nMitigation: Inspect the JSON and charts before publishing, and keep output paths within the intended repository.\n\nRisk: Recurring automation can repeatedly collect data and push updated assets.\n\nMitigation: Review or disable the bootstrap cron and approve changed assets before committing or pushing.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n- [Publisher profile on ClawHub](https://clawhub.ai/user/xrowgmbh)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Files]\n\n**Output Format:** [Markdown instructions; generated SVG and WebP charts and JSON proof records]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Charts cover the last 12 completed months by default; public records and anonymized private/internal monthly totals contribute to the results.]\n\n## Skill Version(s):\n\n1.107.0 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.106.1: 6 files, 15481 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (1918b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.106.1:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.106.1:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.106.1\",\n  \"publishedAt\": 1791454700628\n}\n\nFile v1.106.1:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and GitLab profile maintainers use this skill to track monthly owner and agent contributions across selected projects and update the agent's public profile charts and proof records.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Broad GitLab access could expose more project activity than intended.\n\nMitigation: Use a minimally scoped token and restrict the root group or project list.\n\nRisk: Published charts and proof records include aggregate private or internal activity.\n\nMitigation: Review generated assets and totals for disclosure before pushing profile changes.\n\nRisk: Scheduled runs may repeatedly update and push profile assets without supervision.\n\nMitigation: Keep the cron disabled unless recurring unattended updates are explicitly wanted.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions, Files]\n\n**Output Format:** [Markdown instructions; SVG and WebP charts; JSON proof records]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Charts cover completed calendar months; private and internal contributions appear as aggregate totals without identifying project details.]\n\n## Skill Version(s):\n\n1.106.1 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.106.0: 6 files, 15540 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (2098b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.106.0:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.106.0:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.106.0\",\n  \"publishedAt\": 1791448773566\n}\n\nFile v1.106.0:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and GitLab profile maintainers use this skill to summarize monthly project contributions, generate profile charts and a supporting JSON record, and update the agent's profile assets.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: GitLab credentials may expose private or internal group activity to the agent.\n\nMitigation: Scope access to intended projects, preferably with an explicit project list, and review generated records before publishing.\n\nRisk: Generated profile assets may be pushed with unintended or sensitive content.\n\nMitigation: Review the generated JSON and asset diff before committing or pushing changes.\n\nRisk: The recurring task can persist beyond the initial update.\n\nMitigation: Keep the scheduled task disabled until its project scope and update workflow are approved.\n\nRisk: On-demand image conversion may install an unreviewed package.\n\nMitigation: Preinstall a trusted image converter rather than relying on automatic npm execution.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Files]\n\n**Output Format:** [Markdown instructions and generated SVG, WebP, and JSON files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [The JSON record includes public contributions and aggregate private/internal activity; the workflow may commit and push changed profile assets.]\n\n## Skill Version(s):\n\n1.106.0 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.105.1: 6 files, 15435 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (1825b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.105.1:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.105.1:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.105.1\",\n  \"publishedAt\": 1791311668471\n}\n\nFile v1.105.1:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and GitLab maintainers use this skill to update an agent's profile charts and contribution records across a GitLab group, then review and publish changed assets.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Broad GitLab access can expose private or internal group activity.\n\nMitigation: Use the narrowest GitLab token and group scope possible; review generated JSON before publishing.\n\nRisk: The WebP converter fallback can run an unpinned npm package.\n\nMitigation: Preinstall a trusted converter or review and remove the npm fallback before use.\n\nRisk: Enabling the scheduled task permits periodic unattended GitLab access and asset updates.\n\nMitigation: Leave the cron disabled unless periodic unattended runs are intended.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Files]\n\n**Output Format:** [Markdown instructions and SVG, WebP, and JSON files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Charts cover completed months; public records and anonymized private/internal monthly totals support review before publication.]\n\n## Skill Version(s):\n\n1.105.1 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.105.0: 6 files, 15592 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (2240b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.105.0:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.105.0:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.105.0\",\n  \"publishedAt\": 1791304208918\n}\n\nFile v1.105.0:skill-card.md\n\n## Description:\n\nMaintains a GitLab agent profile page with monthly contribution statistics and a static performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and teams use this skill to update a GitLab agent profile with completed-month contribution charts and supporting public records, while aggregating private activity without publishing its identifying details.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A GitLab token with access to private or internal projects can collect sensitive contribution data, and aggregate private activity may appear in published totals.\n\nMitigation: Use a narrowly scoped token and root group or explicit project list; review the generated proof file before publishing.\n\nRisk: Enabling the recurring schedule can trigger unattended collection and profile updates.\n\nMitigation: Keep the schedule disabled unless background updates are intended, and review its cadence and permissions before enabling it.\n\nRisk: WebP conversion can fall back to fetching and executing an npm package when local conversion tools are unavailable.\n\nMitigation: Use a trusted local converter and review the runtime environment before generating WebP assets.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n- [Publisher profile](https://clawhub.ai/user/xrowgmbh)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions, Files]\n\n**Output Format:** [Markdown guidance and generated SVG, WebP, and JSON assets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Charts cover completed calendar months; public records and aggregated private monthly totals support the reported scores.]\n\n## Skill Version(s):\n\n1.105.0 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.104.0: 6 files, 15494 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (1941b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.104.0:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.104.0:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.104.0\",\n  \"publishedAt\": 1791300484547\n}\n\nFile v1.104.0:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\n\n## Use Case:\n\nDevelopers and teams maintaining a GitLab agent profile use this skill to update monthly contribution charts and supporting records from their GitLab projects.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Broad GitLab project access may include private or internal activity.\n\nMitigation: Limit the selected root group or explicitly list projects, and grant only the GitLab access needed for the task.\n\nRisk: Generated profile assets may publish inaccurate or sensitive information.\n\nMitigation: Review project coverage, counts, private-data aggregation, and asset diffs before committing or pushing.\n\nRisk: Optional scheduling and an npm-based conversion fallback can run additional processes.\n\nMitigation: Enable the scheduler only when needed, and install a trusted converter or Python image stack to avoid the npm fallback.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Files]\n\n**Output Format:** [Markdown guidance; SVG and WebP charts and JSON proof records]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Charts summarize completed calendar months; public proof records aggregate private activity without exposing private project details.]\n\n## Skill Version(s):\n\n1.104.0 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.103.0: 6 files, 15505 bytes\n\nFiles: scripts/profile_chart.py (8819b), scripts/test_profile_stats.py (12145b), scripts/update-profile-stats.py (17889b), skill-card.md (1948b), SKILL.md (5818b), _meta.json (150b)\n\nFile v1.103.0:SKILL.md\n\n---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools` becomes `xrow-public/ci-tools`.\n\nThe 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.\n\n## Classification\n\nFor merged merge requests:\n\n* Owner: author username matches `GITLAB_AGENT_PROFILE_OWNER_USERNAME`.\n* Agent + reviewer: author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is a reviewer or merge user.\n* Agent (autonomous): author username matches `GITLAB_AGENT_PROFILE_AGENT_USERNAME` and the owner is neither reviewer nor merge user.\n* Merged total: sum of the three MR categories.\n* 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(...)`, or `revert`.\n* MRs with `type::bug` or `type::feature` labels count toward MR totals and contribution score.\n* If a merged MR has no type label, a Conventional Commit title beginning with `fix:`/`fix(...)` or `feat:`/`feat(...)` is used as a fallback type.\n* MRs beginning with `skip:`, `skip(...)`, `chore:`, `chore(...)`, `docs:`, or `docs(...)` are never counted, even if they have a counted type label.\n* MR contribution score: each counted MR starts at `1` point and is multiplied by its size factor.\n* Size factor: `size::small` = `1`, `size::medium` = `2`, `size::large` = `3`, `size::xlarge` = `5`; missing size labels default to `1`.\n* Direct owner commits count `0.2` point each.\n\nThe 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.\n\nRun `python3 {baseDir}/scripts/test_profile_stats.py` to verify group pagination, explicit overrides, non-main branches, private-data redaction, and complete-month boundaries.\n\n## Bootstrap\n\n* [ ] Add this cron, if it existed and was enabled then leave it enabled.\n\n```json\n{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-5.6-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}\n```\n\nFile v1.103.0:_meta.json\n\n{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.103.0\",\n  \"publishedAt\": 1791298503676\n}\n\nFile v1.103.0:skill-card.md\n\n## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nGitLab profile maintainers use this skill to collect monthly project contributions, update profile charts and a supporting records file, and publish changed assets.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Broad access to GitLab projects and contribution activity.\n\nMitigation: Use a suitably scoped GitLab token and set GITLAB_AGENT_PROFILE_PROJECTS to an explicit project allowlist.\n\nRisk: Recurring runs may collect and publish profile assets without fresh review.\n\nMitigation: Keep the scheduled job disabled unless recurring updates are intended; review changes before publishing.\n\nRisk: Custom output paths or runtime package execution may write outside intended assets or fetch additional software.\n\nMitigation: Keep output paths inside the repository assets directory and avoid environments that require npm exec to fetch sharp-cli at runtime.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n\n## Skill Output:\n\n**Output Type(s):** [Markdown, Shell commands, Configuration guidance, Files]\n\n**Output Format:** [Markdown guidance and SVG, WebP, and JSON repository assets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Counts completed months; separates public records from aggregated private activity.]\n\n## Skill Version(s):\n\n1.103.0 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: GitLab Agent Profile Owner: xrowgmbh Summary: Maintain the GitLab agent profile page and static contribution performance chart. Tags: latest:1.108.1 Version history: v1.108.1 | 2026-10-08T22:08:25.703Z | auto - Removed the file: skill-card.md. - No other user-facing or functional changes. v1.108.0 | 2026-10-08T20:07:59.067Z | auto - Removed the sample file skill-card.md. - No changes to skill logic or configur","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}"},{"language":"json","snippet":"{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}"},{"language":"json","snippet":"{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}"},{"language":"json","snippet":"{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}"},{"language":"json","snippet":"{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}"},{"language":"json","snippet":"{\n  \"name\": \"GitLab Agent\",\n  \"enabled\": false,\n  \"deleteAfterRun\": false,\n  \"schedule\": {\n    \"kind\": \"every\",\n    \"everyMs\": 900000\n  },\n  \"sessionTarget\": \"isolated\",\n  \"wakeMode\": \"now\",\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Read skill `gitlab-agent-profile` and run.\",\n    \"thinking\": \"high\",\n    \"timeoutSeconds\": 3600,\n    \"model\": \"openai/gpt-6.1-sol\"\n  },\n  \"delivery\": {\n    \"mode\": \"none\",\n    \"bestEffort\": false\n  }\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: \"gitlab-agent-profile\"\ndescription: \"Maintain the GitLab agent profile page and static contribution performance chart.\"\nmetadata: { \"openclaw\": { \"requires\": { \"bins\": [\"glab\", \"python3\"] }, \"primaryEnv\": \"GITLAB_TOKEN\" } }\n---\n\n# GitLab Agent Profile Skill\n\nUse this skill to keep the GitLab Agent profile assets current with monthly contribution performance statistics.\n\nYour profile's location is `https://<gitlab-instance>/<gitlab-username>/<gitlab-username>.git`.\n\n## Goal\n\nMaintain static profile assets for the agent with:\n\n* 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.\n* Categories for owner-authored work, agent-authored work with owner review/merge, agent-authored work without owner review/merge, and the combined total.\n* A legend and bar labels with the exact counts behind the chart.\n* A JSON proof file with public counted records sorted by date descending and anonymized monthly totals for private/internal activity.\n\n## Daily update routine\n\n* [ ] Check GitLab auth works\n* [ ] Run `{baseDir}/scripts/update-profile-stats.py` helper.\n* [ ] 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.\n* [ ] Commit and push the assets in the `assets/` folder, if they changed.\n\n## Inputs\n\nThe script accepts these environment variables:\n\n* `GITLAB_AGENT_PROFILE_CHART_OUTPUT`: Static SVG chart file to update. Defaults to `assets/gitlab-agent-profile.svg`.\n* `GITLAB_AGENT_PROFILE_WEBP_OUTPUT`: Static WebP chart file to update. Defaults to `assets/gitlab-agent-profile.webp`.\n* `GITLAB_AGENT_PROFILE_RECORDS_OUTPUT`: JSON proof file to update. Defaults to `assets/gitlab-agent-profile-records.json`.\n* `GITLAB_AGENT_PROFILE_WORKSPACE`: Workspace root used for relative output paths. Defaults to the current directory.\n* `GITLAB_AGENT_PROFILE_ROOT_GROUP`: Group path to discover recursively, also used to expand short project names. Defaults to `xrow-public`.\n* `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.\n* `GITLAB_AGENT_PROFILE_AGENT_USERNAME`: Agent username. Defaults to the authenticated `glab` user.\n* `GITLAB_AGENT_PROFILE_OWNER_USERNAME`: Owner username. Defaults to `xrow`.\n* `GITLAB_AGENT_PROFILE_MONTHS`: Positive number of completed calendar months to render. Defaults to `12`; always exclude the current in-progress month, using the process's local calendar.\n\nRelative output values are resolved from `GITLAB_AGENT_PROFILE_WORKSPACE`.\nProject names without `/` are expanded with `GITLAB_AGENT_PROFILE_ROOT_GROUP`, so `ci-tools"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7frykp2tnj00b0czk5f4r505809an4\",\n  \"slug\": \"xrowgmbh-gitlab-agent-profile\",\n  \"version\": \"1.108.1\",\n  \"publishedAt\": 1791497305703\n}"},{"path":"skill-card.md","content":"## Description:\n\nMaintain the GitLab agent profile page and static contribution performance chart.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[xrowgmbh](https://clawhub.ai/user/xrowgmbh)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and GitLab profile maintainers use this skill to track completed-month contributions across selected projects and publish profile charts and supporting records.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The update uses GitLab credentials and may read accessible project activity.\n\nMitigation: Configure an explicit project list or root group and grant only the access needed for the intended projects.\n\nRisk: Generated charts and records may be published to a profile repository.\n\nMitigation: Verify project coverage, monthly totals, and the generated JSON before committing or pushing assets.\n\nRisk: The bootstrap can add a recurring agent job, and WebP generation may run unpinned npm tooling.\n\nMitigation: Keep the job disabled until reviewed; avoid the npm fallback unless sharp-cli is pinned or preinstalled in a controlled environment.\n\n## Reference(s):\n\n- [GitLab Agent Profile on ClawHub](https://clawhub.ai/xrowgmbh/skills/xrowgmbh-gitlab-agent-profile)\n- [Publisher profile](https://clawhub.ai/user/xrowgmbh)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with shell commands and JSON configuration]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guides production of SVG and WebP charts and a JSON proof file for GitLab profile assets.]\n\n## Skill Version(s):\n\n1.108.1 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Maintain the GitLab agent profile page and static contribution performance chart. Skill: GitLab Agent Profile Owner: xrowgmbh Summary: Maintain the GitLab agent profile page and static contribution performance chart. Tags: latest:1.108.1 Version history: v1.108.1 | 2026-10-08T22:08:25.703Z | auto - Removed the file: skill-card.md. - No other user-facing or functional changes. v1.108.0 | 2026-10-08T20:07:59.067Z | auto - Removed the sample file skill-card.md. - No changes to skill logic or configur","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1218,"uniquenessScore":47,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T04:02:42.377Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T04:02:42.377Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T16:58:48.680Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}