Skip to content
Back to skills

Ci

ASecurity

Detect/generate/debug CI pipeline config (GitHub Actions, GitLab CI). Triggers: CI setup, build pipeline, GitHub Actions config, debug CI, GitLab CI.

  • 177 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
developmenttypescriptpythonrustgophpbashnodedockertestinggit

Works with

  • cli

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 4 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add softspark/ai-toolkit --skill ci --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ci?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ci
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/softspark-ci/badge)](https://www.skillsdirectory.com/skills/softspark-ci)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ci
description: "Detect/generate/debug CI pipeline config (GitHub Actions, GitLab CI). Triggers: CI setup, build pipeline, GitHub Actions config, debug CI, GitLab CI."
effort: medium
disable-model-invocation: true
argument-hint: "[platform]"
allowed-tools: Bash, Read, Write
agent: devops-implementer
context: fork
scripts:
  - scripts/ci-detect.py
---

# /ci - CI/CD Pipeline Management

$ARGUMENTS

## What This Command Does

Generate, update, or troubleshoot CI/CD pipeline configuration based on project type.

## Project context

- CI config: !`cat .github/workflows/*.yml 2>/dev/null || cat .gitlab-ci.yml 2>/dev/null || echo "no-ci"`

## CI Detection Script

Detect CI platform and analyze configuration:
```bash
python3 scripts/ci-detect.py [directory]
```

Returns JSON with:
- `platform` - detected CI platform (github-actions, gitlab-ci, jenkins, bitbucket, circleci)
- `config_files[]` - CI config file paths
- `project_type` - detected project type (python, node, flutter, go, rust, php, docker)
- `jobs_found[]` - job/stage names extracted from config
- `stages_detected[]` - best-practice stages found (lint, test, build, deploy)
- `missing_stages[]` - recommended stages not yet configured
- `suggested_template` - pointer to ci-cd-patterns skill for templates

## Auto-Detection

| File Found | Project Type | Pipeline |
|------------|-------------|----------|
| `package.json` | Node.js/TypeScript | npm ci, lint, test, build |
| `pyproject.toml` / `setup.py` | Python | pip install, ruff, mypy, pytest |
| `pubspec.yaml` | Flutter/Dart | dart analyze, flutter test, build |
| `composer.json` | PHP | composer install, phpstan, phpunit |
| `go.mod` | Go | go vet, go test, go build |
| `Cargo.toml` | Rust | cargo clippy, cargo test, cargo build |
| `Dockerfile` | Docker | Build and push image |

## Supported Platforms

- **GitHub Actions** (default): `.github/workflows/ci.yml`
- **GitLab CI**: `.gitlab-ci.yml`

## Pipeline Stages

1. **Lint** - Static analysis, formatting checks
2. **Test** - Unit tests, integration tests with coverage
3. **Build** - Compile, bundle, Docker image
4. **Deploy** (optional) - Deploy to staging/production

## Usage Examples

```
/ci                          # Generate CI config for detected project type
/ci github-actions           # Explicitly use GitHub Actions
/ci add deploy staging       # Add deployment stage for staging
/ci fix                      # Troubleshoot failing pipeline
/ci add matrix node 18,20,22 # Add matrix testing
```

## Reference Skill
Use `ci-cd-patterns` skill for pipeline templates and best practices.

## Rules

- **MUST** detect existing CI platform before generating a new config — do not overwrite silently
- **NEVER** commit generated CI configs that embed hardcoded secrets or tokens
- **CRITICAL**: preserve existing job names and triggers unless the user explicitly asks for a restructure
- **MANDATORY**: every generated pipeline must include lint + test stages at minimum

## Gotchas

- GitHub Actions YAML parses `on:` as a reserved word only when unquoted. Writing `"on":` (quoted) produces a valid-looking file whose workflow **never triggers**. YAML anchors in this field also silently break.
- GitLab CI's `rules:` and `only:/except:` are mutually exclusive at the job level. Mixing them fails parse on pipeline run but not at `git push` time — test with `gitlab-ci-lint` before committing.
- `secrets.*` in GitHub Actions is undefined in workflows triggered from **forked** PRs (security boundary). Jobs that need secrets must gate on `github.event.pull_request.head.repo.full_name == github.repository` or use `pull_request_target` carefully.
- `actions/checkout@v6` defaults to `fetch-depth: 1` (shallow). Commands that need history (`git log`, `git describe`, conventional-commit tools) fail with misleading errors — set `fetch-depth: 0` for those jobs.

## When NOT to Use

- For running tests locally — use `/test`
- For general CI/CD patterns and theory — use `/ci-cd-patterns` (knowledge skill)
- For deployment orchestration only — use `/deploy`
- When the project has no VCS-hosted CI platform — generate locally-runnable scripts instead

Files in this skill

  • SKILL.md4.1 KB
  • scripts/ci-detect.py5 KB
  • templates/github-actions-node.yml671 B
  • templates/github-actions-python.yml872 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.