skills/platform/gitlab-ci/SKILL.md
Write secure, optimized GitLab CI/CD pipelines. Use when: "create CI/CD pipeline", "GitLab CI config", "fix pipeline", ".gitlab-ci.yml", "configure runners", "pipeline optimization"
npx skillsauth add mikeparcewski/wicked-garden gitlab-ciInstall 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.
Write production-ready GitLab CI/CD pipelines with security and optimization built in.
# .gitlab-ci.yml
stages: [build, test, deploy]
build:
stage: build
script: [npm ci, npm run build]
artifacts: { paths: [dist/] }
See refs/templates.md for full Node.js, Python, and other stack-specific templates.
| Concept | GitHub Actions | GitLab CI |
|---------|---------------|-----------|
| Config | .github/workflows/*.yml | .gitlab-ci.yml |
| Grouping | jobs: | stages: |
| Triggers | on: | rules: |
| Secrets | ${{ secrets.X }} | $VARIABLE |
| Artifacts | actions/upload-artifact | Built-in |
| Caching | actions/cache | Built-in |
deploy:
script:
- deploy --token $DEPLOY_TOKEN
# Set DEPLOY_TOKEN as protected in GitLab UI
deploy:
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: manual # Require approval
- when: never
default:
cache:
key:
files:
- package-lock.json
paths:
- node_modules/
deploy:
needs:
- build-frontend
- build-backend
# Starts when both complete, skips waiting for whole stage
build:
rules:
- changes:
- src/**/*
- package.json
test:
parallel: 4
script:
- npm test -- --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL
include:
- local: .gitlab/ci/build.yml
- template: Security/SAST.gitlab-ci.yml
test:
services:
- postgres:15
variables:
DATABASE_URL: postgresql://postgres@postgres/test
YAML anchor (&deploy) lets you share a deploy job and override environment: + rules: per target (staging on develop, production on main, both when: manual for approval gates).
refs/templates.md - Copy-paste templates for Node.js, Python, Docker, K8srefs/troubleshooting.md - Common errors and fixesdevelopment
--- name: large-scale-migration description: How to execute a LARGE MECHANICAL change across any codebase with LEVERAGE instead of an agent-grind or hand-edits — a cross-cutting migration, refactor, rename, dialect/framework/DB port, library adoption, or bulk transform. The map→transform→gate pattern: a deterministic transform driven by a source-of-truth map, proven by a differential-equivalence gate. Use when the work is "migrate all X to Y", "rename Z everywhere", "port to a new DB/dialect/fra
testing
v11 LLM-based work-shape classifier. Replaces the regex archetype detector with the model's own reasoning. Reads the user's prompt, picks the right archetype(s) from the catalog, identifies signals (blast_radius, novelty, reversibility, etc.), and persists to SessionState so subsequent turns steer correctly. Use when: the prompt_submit hook emitted a `<wg classify-due />` directive, OR explicitly invoked at session start, OR when re-classifying after the user changes scope mid-session.
tools
v11 work-shape archetype runner. When a prompt has been routed to one of the 9 archetypes (triage, explore, specify, decide, ship, review, incident, build, migrate), this skill is the entry point. It picks the right per-archetype playbook from refs/ and executes the phase shape declared in `.claude-plugin/archetypes.json`. Use when: a `<wg archetype="X">` or `<wg archetypes>` system-reminder tag appears, an explicit "let's run the X archetype" request, or when one of the per-archetype slash commands resolves to this skill.
development
Show or set the session intent variable. Intent gates how loud the framework is — simple-edit (silent), feature/research (synthesis directive), rigor (full crew context). Auto-detected on turn 1; this skill overrides explicitly. Sticky for the session. Use when: "set intent", "intent override", "/wicked-garden:intent", "make the framework quiet", "force rigor", "what's my intent".