Skip to content

Give ci-workflow-review first-class GitLab coverage#53

Merged
richardmhope merged 1 commit into
mainfrom
ci-review-gitlab-parity
Jul 4, 2026
Merged

Give ci-workflow-review first-class GitLab coverage#53
richardmhope merged 1 commit into
mainfrom
ci-review-gitlab-parity

Conversation

@richardmhope

Copy link
Copy Markdown
Collaborator

Follow-up to #52. The skill listed GitLab CI as in-scope but every concrete pattern was GitHub-flavored, so a .gitlab-ci.yml review was directionally right yet leaned on the agent to translate — and could miss GitLab-only hazards (privileged DinD runners, protected-variable boundaries, job-token allowlist).

Each checklist category now names both platforms' mechanics, grounded in sources fetched before writing — GitLab pipeline security, CI/CD job token, runner security:

  • Injection: $CI_MERGE_REQUEST_TITLE / $CI_COMMIT_MESSAGE into script: beside the github.event cases
  • PPE: fork MR pipelines execute the fork's edited .gitlab-ci.yml (the pull_request_target analogue)
  • Token scope: CI_JOB_TOKEN allowlist + masked/protected variables beside GITHUB_TOKEN permissions
  • Pinning: remote include: / CI-CD Catalog components and image: digests
  • Runners: privileged Docker/DinD and shell executors on shared/non-ephemeral runners — cross-job token and source theft

Adds a GitLab eval fixture (privileged DinD runner + MR-title injection in a fork-reachable job) alongside the GitHub one; the runner and structure test now allow multiple fixtures per skill via a <skill>-<variant> directory suffix. Bumped to 0.2.0, plugin tree regenerated, 125 tests pass.

🤖 Generated with Claude Code

The skill named GitLab CI in scope but its concrete patterns were all
GitHub-specific, so a GitLab review leaned on the agent to translate
and could miss GitLab-only hazards. Each checklist category now names
both platforms' mechanics, grounded in GitLab's pipeline security,
CI/CD job token, and runner security docs:

- injection: $CI_MERGE_REQUEST_TITLE / $CI_COMMIT_MESSAGE into script:
  alongside the github.event equivalents
- PPE: fork MR pipelines running the fork's edited .gitlab-ci.yml
- token scope: CI_JOB_TOKEN allowlist and masked/protected variables
  alongside GITHUB_TOKEN permissions
- pinning: remote include:/CI-CD Catalog components and image digests
- runners: privileged Docker/DinD and shell executors on shared runners
  (CI_JOB_TOKEN and cross-project source theft)

Adds a GitLab eval fixture (privileged DinD runner + MR-title injection
in a fork-reachable job) next to the existing GitHub one; the eval
runner and structure test now allow multiple fixtures per skill via a
<skill>-<variant> directory suffix. Bumped to 0.2.0; plugin tree
regenerated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@richardmhope
richardmhope merged commit f7a7f6e into main Jul 4, 2026
13 checks passed
@richardmhope
richardmhope deleted the ci-review-gitlab-parity branch July 4, 2026 01:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant