marketplace/bundles/plan-marshall/skills/workflow-integration-gitlab/SKILL.md
GitLab provider for MR review workflows — fetch comments, triage, and respond to review feedback via glab CLI
npx skillsauth add cuioss/plan-marshall workflow-integration-gitlabInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
GitLab provider for the findings-pipeline pr-comment producer. Mirror of the GitHub producer: fetches MR review comments, applies the pre-filter (comment-patterns.json), and writes one finding per surviving comment via manage-findings add. Uses the glab CLI for all GitLab operations.
Architectural context: This SKILL.md owns the producer-side CLI surface. For the producer→store→consumer→gate flow that connects this producer to the unified store, the per-domain
ext-triageconsumer dispatch, and the invariant gate, seeref-workflow-architecture/standards/findings-pipeline.md.
Execution mode: Fetch MR review comments, triage each for action, implement fixes or generate responses, resolve threads.
Prohibited actions:
glab directly from LLM context; all operations go through script APIConstraints:
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| pr | int | no | auto-detect | MR number (auto-detects current branch's MR if omitted) |
| unresolved-only | bool | no | false | Only return unresolved comments (fetch-comments) |
workflow-integration-gitlab (GitLab MR comment workflow)
├─> gitlab_ops.py (GitLab operations via glab CLI)
├─> gitlab_pr.py (producer-side fetch + pre-filter + per-finding store)
└─> triage_helpers (ref-toon-format) — shared error handling
This skill is the GitLab provider in the CI provider model. The central dispatcher (tools-integration-ci:ci) routes to this skill's gitlab_ops.py for all GitLab operations.
# Producer-side: fetch + pre-filter + store one pr-comment finding per surviving comment
python3 .plan/execute-script.py plan-marshall:workflow-integration-gitlab:gitlab_pr comments-stage --pr-number 123 --plan-id EXAMPLE-PLAN
# Raw fetch (no filtering, no storage) — for ad-hoc inspection
python3 .plan/execute-script.py plan-marshall:workflow-integration-gitlab:gitlab_pr fetch-comments --pr 123
# LLM consumer reads stored findings via manage-findings
python3 .plan/execute-script.py plan-marshall:manage-findings:manage-findings list --plan-id EXAMPLE-PLAN --type pr-comment
| Script | Notation | Purpose |
|--------|----------|---------|
| gitlab_ops | plan-marshall:workflow-integration-gitlab:gitlab_ops | GitLab operations via glab CLI |
| gitlab_pr | plan-marshall:workflow-integration-gitlab:gitlab_pr | Producer-side MR review comment fetcher (fetch + pre-filter + store) |
Purpose: Stage MR review comments into the per-type finding store, then let the LLM consumer drive classification and responses from the stored findings.
Producer-side flow: comments-stage is the only callable surface. It fetches review comments, applies the comment-patterns.json keyword pre-filter to drop obvious noise (bot signatures, "lgtm", etc.), and writes one pr-comment finding per surviving comment via manage-findings add. The LLM reads the stored findings and decides per-finding action itself.
Steps:
Stage Comments:
python3 .plan/execute-script.py plan-marshall:workflow-integration-gitlab:gitlab_pr comments-stage --pr-number {mr} --plan-id {plan_id}
Output reports count_fetched, count_skipped_noise, count_stored, and producer_mismatch_hash_id (set when count_stored ≠ count_fetched − count_skipped_noise; the mismatch is also persisted as a Q-Gate finding under phase 5-execute with title prefix (producer-mismatch)).
Query Stored Findings:
python3 .plan/execute-script.py plan-marshall:manage-findings:manage-findings list --plan-id {plan_id} --type pr-comment
Process by Action Type — the LLM reads each finding's detail (which carries the full body, kind, thread_id, author, path:line, comment_id) and decides code_change / explain / ignore. After acting on each finding, call manage-findings resolve --hash-id {hash} --resolution fixed|suppressed|accepted.
This skill is consumed by:
tools-integration-ci — CI dispatcher routes GitLab operations hereworkflow-pr-doctor — PR diagnosis workflowsphase-6-finalize — plan finalization with MR creationstandards/comment-patterns.json is a pre-filter only — it drops obvious noise (bot signatures, "lgtm", "thanks!") before findings are written. Classification of surviving comments belongs to the LLM consumer, which reads the full body from each finding's detail field.
| Failure | Action | |---------|--------| | fetch-comments failure | Report error to caller with stderr details | | triage failure | Log warning, skip comment, continue | | CI router failure | Log warning, continue — best-effort |
The canonical argparse surface for gitlab_pr.py. The plugin-doctor analyzer (_analyze_manage_invocation.py) reads this section as source-of-truth for the manage-invocation-invalid and missing-canonical-block rules. Consuming docs xref this section by name instead of restating the command inline. See pm-plugin-development:plugin-script-architecture cross-skill-integration.md § "Script invocation in documentation".
python3 .plan/execute-script.py plan-marshall:workflow-integration-gitlab:gitlab_pr fetch-comments \
[--pr PR] [--unresolved-only]
python3 .plan/execute-script.py plan-marshall:workflow-integration-gitlab:gitlab_pr comments-stage \
--pr-number PR_NUMBER --plan-id PLAN_ID
plan-marshall:tools-integration-ci — Central CI dispatcherplan-marshall:workflow-integration-github — GitHub provider counterpartplan-marshall:workflow-pr-doctor — PR diagnosis workflowsdevelopment
The single append-only change-ledger — one worktree_sha-stamped substrate for kind=build and kind=change entries — plus the first-class worktree-sha freshness API
development
Authoring standards for ASCII box diagrams in skill and doc source — box-drawing conventions, right-border alignment, and a deterministic check/fix validator over fenced/literal code blocks in .md and .adoc files
testing
Recipe for verifying and fixing alignment of ASCII box diagrams across .md skill source and .adoc documentation, one deliverable per offending file
development
Pure platform-agnostic terminal-title composition consumed by platform-runtime via PYTHONPATH