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…