Agent skill

Aif CI

by unxed in unxed/f4

Generate CI/CD pipeline (GitHub Actions / GitLab CI) with linting, static analysis, tests, security.

BSD-3-ClauseAuto-check passedDevOps & Cloud

Install Aif CI

skills CLI
$ npx skills add unxed/f4 --skill aif-ci -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install unxed/f4 aif-ci --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/unxed/f4.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/aif-ci .claude/skills/aif-ci && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
aif-ci
GitHub stars
244
Token cost
~4.7k tokens
SKILL.md length
1,960 words
Files
18 (incl. references)
Skills in repo
36
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Generate CI/CD pipeline (GitHub Actions / GitLab CI) with linting, static analysis, tests, security.

  • Works in 8 steps: Load Project Context → Detect Existing CI & Determine Mode → Deep Project Analysis → …
  • Tasks that involve CI/CD
  • SKILL.md covers Step 0: Load Project Context, Step 1: Detect Existing CI &…, Step 2: Deep Project Analysis and Step 3: Read Best Practices &…, plus 4 more sections
  • Calls go, cargo and pnpm

What it does

Aif CI is an agent skill from unxed/f4. Generate CI/CD pipeline (GitHub Actions / GitLab CI) with linting, static analysis, tests, security. Use when user says "ci", "setup ci", "github actions", "gitlab ci", "pipeline".

Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 21 other files, including reference files (for example `references/AUDIT-REPORT.md`, `references/BEST-PRACTICES.md` and `references/GITLAB-PATTERNS.md`).

It sits in DevOps & Cloud, covering CI/CD, Linting and formatting and Static analysis and SAST. It works with GitHub Actions and GitLab. The repository describes itself as: dual pane like a charm. The licence is BSD-3-Clause.

When your agent uses it

  • Tasks that involve CI/CD
  • Tasks that involve Linting and formatting
  • Tasks that involve Static analysis and SAST

Example prompts

  • “setup ci”
  • “github actions”
  • “gitlab ci”
  • “/aif-ci”

Requirements

  • Python 3
  • Node.js
  • Docker
  • Pre-approved tools (allowed-tools): Read, Edit, Glob, Grep, Write, Bash(git *), AskUserQuestion, Questions

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Load Project Context
  2. Detect Existing CI & Determine Mode
  3. Deep Project Analysis
  4. Read Best Practices & Templates
  5. Generate Pipeline (Generate Mode)
  6. Enhance / Audit Existing Pipeline
  7. Write Files
  8. Summary & Follow-Up

What it can do on your machine

Read from SKILL.md and the folder at commit 447642e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Edit
    • Glob
    • Grep
    • Write
    • Bash(git *)
    • AskUserQuestion
    • Questions

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • go
    • cargo
    • pnpm
    • npm
    • ruff
    • mysql
    • composer
    • bun
    • yarn
    • uv
    • poetry
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm, npm, yarn, uv and pip, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Aif CI loads about 4.7k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 47 tokens; SKILL.md has 1,960 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~47
When it runs · the whole SKILL.md, loaded when a task matches
~4.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from unxed/f4 at commit 447642e, republished under its BSD-3-Clause licence (© unxed). 1,960 words, ~4,705 tokens.

Download SKILL.mdSave it as .claude/skills/aif-ci/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.
name
aif-ci
description
Generate CI/CD pipeline (GitHub Actions / GitLab CI) with linting, static analysis, tests, security. Use when user says "ci", "setup ci", "github actions", "gitlab ci", "pipeline".
allowed-tools
Read, Edit, Glob, Grep, Write, Bash(git *), AskUserQuestion, Questions
argument-hint
[github|gitlab] [--enhance]
disable-model-invocation
true
metadata.author
AI Factory
metadata.version
1.0
metadata.category
ci

CI — Pipeline Configuration Generator

Analyze a project and generate production-grade CI/CD pipeline configuration for GitHub Actions or GitLab CI. Generates separate jobs for linting, static analysis, tests, and security scanning — adapted to the project's language, framework, and existing tooling.

Three modes based on what exists:

What existsModeAction
No CI configgenerateCreate pipeline from scratch with interactive setup
CI config exists but incompleteenhanceAudit & improve, add missing jobs
Full CI configauditAudit against best practices, fix gaps

Step 0: Load Project Context

Read the project description if available:

Read .ai-factory/DESCRIPTION.md

Store project context for later steps. If absent, Step 2 detects everything.

Read .ai-factory/skill-context/aif-ci/SKILL.md — MANDATORY if the file exists.

This file contains project-specific rules accumulated by /aif-evolve from patches, codebase conventions, and tech-stack analysis. These rules are tailored to the current project.

How to apply skill-context rules:

  • Treat them as project-level overrides for this skill's general instructions
  • When a skill-context rule conflicts with a general rule written in this SKILL.md, the skill-context rule wins (more specific context takes priority — same principle as nested CLAUDE.md files)
  • When there is no conflict, apply both: general rules from SKILL.md + project rules from skill-context
  • Do NOT ignore skill-context rules even if they seem to contradict this skill's defaults — they exist because the project's experience proved the default insufficient
  • CRITICAL: skill-context rules apply to ALL outputs of this skill — including generated CI workflow files and audit reports. Templates in this skill are base structures. If a skill-context rule says "CI MUST include step X" or "workflow MUST have job Y" — you MUST augment the templates accordingly. Generating CI config that violates skill-context rules is a bug.

Enforcement: After generating any output artifact, verify it against all skill-context rules. If any rule is violated — fix the output before presenting it to the user.


Step 1: Detect Existing CI & Determine Mode

1.1 Scan for Existing CI Configuration
Glob: .github/workflows/*.yml, .github/workflows/*.yaml, .gitlab-ci.yml, .circleci/config.yml, Jenkinsfile, .travis.yml, bitbucket-pipelines.yml

Classify found files:

  • HAS_GITHUB_ACTIONS: .github/workflows/ contains YAML files
  • HAS_GITLAB_CI: .gitlab-ci.yml exists
  • HAS_OTHER_CI: CircleCI, Jenkins, Travis, or Bitbucket detected
1.2 Determine Mode

If $ARGUMENTS contains --enhance -> set MODE = "enhance" regardless.

Path A: No CI config exists (!HAS_GITHUB_ACTIONS && !HAS_GITLAB_CI && !HAS_OTHER_CI):

  • Set MODE = "generate"
  • Proceed to Step 1.3: Interactive Setup

Path B: CI config exists but is incomplete (e.g., has only tests, no linting):

  • Set MODE = "enhance"
  • Read all existing CI files -> store as EXISTING_CONTENT
  • Log: "Found existing CI configuration. Will analyze and add missing jobs."

Path C: Full CI setup (has linting + tests + static analysis):

  • Set MODE = "audit"
  • Read all existing CI files -> store as EXISTING_CONTENT
  • Log: "Found complete CI setup. Will audit against best practices and fix gaps."
1.3 Interactive Setup (Generate Mode Only)

Determine CI platform from $ARGUMENTS or ask:

If $ARGUMENTS contains github -> set PLATFORM = "github" If $ARGUMENTS contains gitlab -> set PLATFORM = "gitlab"

Otherwise:

AskUserQuestion: Which CI/CD platform do you use?

Options:
1. GitHub Actions (Recommended) — .github/workflows/*.yml
2. GitLab CI — .gitlab-ci.yml

Ask about optional features:

AskUserQuestion: Which additional CI features do you need?

Options (multiSelect):
1. Security scanning — Dependency audit, SAST
2. Coverage reporting — Upload test coverage
3. Matrix builds — Test across multiple language versions
4. None — Just linting, static analysis, and tests

Store choices:

  • PLATFORM: github | gitlab
  • WANT_SECURITY: boolean
  • WANT_COVERAGE: boolean
  • WANT_MATRIX: boolean
1.4 Read Existing Files (Enhance / Audit Modes)

Read all existing CI files and store as EXISTING_CONTENT:

  • All .github/workflows/*.yml files
  • .gitlab-ci.yml
  • Any included GitLab CI files (check include: directives)

Determine PLATFORM from existing files.


Step 2: Deep Project Analysis

Scan the project thoroughly — every decision in the generated pipeline depends on this profile.

2.1 Language & Runtime
FileLanguage
composer.jsonPHP
package.jsonNode.js / TypeScript
pyproject.toml / setup.py / setup.cfgPython
go.modGo
Cargo.tomlRust
pom.xmlJava (Maven)
build.gradle / build.gradle.ktsJava/Kotlin (Gradle)
2.2 Language Version

Detect the project's language version to use in CI:

LanguageVersion SourceExample
PHPcomposer.json -> require.php>=8.2 -> ['8.2', '8.3', '8.4']
Node.jspackage.json -> engines.node, .nvmrc, .node-version>=18 -> [18, 20, 22]
Pythonpyproject.toml -> requires-python, .python-version>=3.11 -> ['3.11', '3.12', '3.13']
Gogo.mod -> go directivego 1.23 -> '1.23'
RustCargo.toml -> rust-version, rust-toolchain.toml1.82 -> '1.82'
Javapom.xml -> maven.compiler.source, build.gradle -> sourceCompatibility17 -> [17, 21]

For matrix builds: use the minimum version from the project config as the lowest, and include the latest stable version. For non-matrix builds: use the latest version that satisfies the constraint.

2.3 Package Manager & Lock File
FilePackage ManagerInstall Command
composer.lockComposercomposer install --no-interaction --prefer-dist
bun.lockbBunbun install --frozen-lockfile
pnpm-lock.yamlpnpmpnpm install --frozen-lockfile
yarn.lockYarnyarn install --frozen-lockfile
package-lock.jsonnpmnpm ci
uv.lockuvuv sync --all-extras --dev
poetry.lockPoetrypoetry install
Pipfile.lockPipenvpipenv install --dev
requirements.txtpippip install -r requirements.txt
go.sumGo modulesgo mod download
Cargo.lockCargo(built-in)

Store: PACKAGE_MANAGER, LOCK_FILE, INSTALL_CMD.

2.4–2.7 Tool Detection

Detect project tools by scanning config files and dependencies. For the complete tool-to-command mapping → read references/TOOL-COMMANDS.md

Categories: Linters & Formatters (PHP-CS-Fixer, ESLint, Prettier, Biome, Ruff, golangci-lint, clippy, Checkstyle), Static Analysis (PHPStan, Psalm, Rector, mypy, tsc), Test Frameworks (PHPUnit, Pest, Jest, Vitest, pytest, go test, cargo test) with coverage flags, Security Audit (composer audit, npm audit, pip-audit, govulncheck, cargo audit).

2.8 Services Detection

Check if tests require external services (database, Redis, etc.):

Grep in tests/: postgres|mysql|redis|mongo|rabbitmq|elasticsearch
Glob: docker-compose.test.yml, docker-compose.ci.yml

If services are needed, they will be configured in the CI pipeline as service containers.

2.9 Build Output

Does the project have a build step?

LanguageHas BuildBuild Command
Node.js (with build script)Yesnpm run build / pnpm build
GoYesgo build ./...
RustYescargo build --release
JavaYesmvn package -DskipTests -B / ./gradlew assemble
PHPUsually no—
PythonUsually no—
Summary

Build PROJECT_PROFILE:

  • language, language_version, language_versions (for matrix)
  • package_manager, lock_file, install_cmd
  • linters: list of {name, command, config_file}
  • static_analyzers: list of {name, command}
  • test_framework, test_cmd, coverage_cmd
  • security_tools: list of {name, command}
  • has_build_step, build_cmd
  • has_typescript: boolean (for typecheck job)
  • services_needed: list of services for CI
  • source_dir: main source directory (src/, app/, lib/)

Step 3: Read Best Practices & Templates

Read skills/ci/references/BEST-PRACTICES.md

Select templates matching the platform and language:

GitHub Actions:

LanguageTemplate
PHPtemplates/github/php.yml
Node.jstemplates/github/node.yml
Pythontemplates/github/python.yml
Gotemplates/github/go.yml
Rusttemplates/github/rust.yml
Javatemplates/github/java.yml

GitLab CI:

LanguageTemplate
PHPtemplates/gitlab/php.yml
Node.jstemplates/gitlab/node.yml
Pythontemplates/gitlab/python.yml
Gotemplates/gitlab/go.yml
Rusttemplates/gitlab/rust.yml
Javatemplates/gitlab/java.yml

Read the selected template:

Read skills/ci/templates/<platform>/<language>.yml

Step 4: Generate Pipeline (Generate Mode)

Using the PROJECT_PROFILE, best practices, and template as a base, generate a customized CI pipeline.

Show full SKILL.md (994 more words)Show less
4.1 GitHub Actions Generation

One workflow per concern — each file has its own triggers, permissions, concurrency:

FileNameJobsWhen to create
lint.ymlLintcode-style, static-analysis, rectorLinters or SA detected
tests.ymlTeststests (+ service containers)Always
build.ymlBuildbuildhas_build_step
security.ymlSecuritydependency-audit, dependency-reviewWANT_SECURITY

Why one file per concern:

  • Each check is a separate status check in PR — instantly see what failed
  • Independent triggers — security on schedule, tests on push/PR, build only after tests
  • Independent permissions — security may need security-events: write
  • Can disable/re-run one workflow without touching others
  • Branch protection rules can require specific workflows (e.g. require tests but not security)

When to keep single file: Only for very small projects with just lint + tests (2 jobs). As soon as there are 3+ concerns — split.

Every workflow gets the same header pattern:

yaml
name: <Name>

on:
  push:
    branches: [main]
  pull_request:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

Per-file job organization:

lint.yml — all code quality checks in parallel:

JobPurposeWhen to include
code-styleFormatting (CS-Fixer, Prettier, Ruff format, rustfmt)Formatter detected
lintLinting (ESLint, Ruff check, Clippy, golangci-lint)Linter detected
static-analysisType checking / SA (PHPStan, Psalm, mypy, tsc)SA tools detected
rectorRector dry-run (PHP only)Rector detected

All jobs run in parallel (no needs). If only one tool detected (e.g. Go with just golangci-lint) — single job in the file is fine.

tests.yml — test suite:

JobPurposeWhen to include
testsUnit/integration testsAlways
tests-<service>Tests requiring service containersservices_needed detected

Matrix builds (multiple language versions) only in this file.

build.yml — build verification:

JobPurposeNotes
buildVerify compilation/bundlingCan depend on external workflow via workflow_run or just run independently

security.yml — security scanning:

JobPurposeExtra triggers
dependency-auditVulnerability scanschedule: cron '0 6 * * 1' (weekly)
dependency-reviewPR dependency diffOnly on pull_request

Per-job rules:

  1. Each job gets its own setup (checkout, language setup, cache, dependency install)
  2. Use language-specific setup actions with built-in cache:
    • PHP: shivammathur/setup-php@v2 with tools: parameter
    • Node.js: actions/setup-node@v4 with cache: parameter
    • Python: astral-sh/setup-uv@v5 (if uv) or actions/setup-python@v5 (if pip)
    • Go: actions/setup-go@v5 (auto-caches)
    • Rust: dtolnay/rust-toolchain@stable + Swatinem/rust-cache@v2
    • Java: actions/setup-java@v4 with cache: parameter
  3. Use fail-fast: false in matrix builds
  4. Upload coverage as artifact when WANT_COVERAGE

Matrix builds (when WANT_MATRIX):

Only the tests job uses a matrix. Lint/SA jobs run on the latest version only.

yaml
tests:
  name: Tests (${{ matrix.<language>-version }})
  strategy:
    fail-fast: false
    matrix:
      <language>-version: <language_versions from PROJECT_PROFILE>

Combining linter jobs:

If the project has both a formatter AND a linter from the same ecosystem, combine them into one job:

  • PHP: php-cs-fixer check + other lint -> code-style job
  • Node.js: eslint + prettier -> lint job. Biome replaces BOTH ESLint and Prettier — if Biome is detected, use only npx biome check . in a single lint job
  • Python: ruff check + ruff format --check -> lint job (Ruff handles both)
  • Rust: cargo fmt + cargo clippy -> can be separate (fmt is fast, clippy needs compilation)

Do NOT combine lint/SA with tests — they should fail independently with clear feedback.

Use the templates in templates/github/ and templates/gitlab/ as a base for generating workflow files. Follow the header pattern (name, on, concurrency, permissions) and per-file job organization described above.

4.2 GitLab CI Generation

Output file: .gitlab-ci.yml

For GitLab-specific pipeline structure, cache strategy, report format integration, and language-specific patterns → read references/GITLAB-PATTERNS.md

Pipeline stages: install → lint → test → build → security

4.3 Service Containers

If services_needed is not empty, add service containers to the test job. For GitHub Actions and GitLab CI service container syntax → read references/SERVICE-CONTAINERS.md

Quality Checks (Before Writing)

Verify generated pipeline before writing:

Correctness:

  • Every job has checkout/setup/install steps
  • Cache is configured for the correct lock file
  • All commands match tools actually present in the project
  • Matrix versions match the project's version constraints
  • Service containers have health checks

Best practices:

  • concurrency group set (GitHub Actions)
  • permissions: contents: read set (GitHub Actions)
  • interruptible: true set (GitLab CI)
  • workflow.rules defined (GitLab CI)
  • Jobs are parallel where possible (no unnecessary needs)
  • fail-fast: false on matrix builds

No over-engineering:

  • No jobs for tools not present in the project
  • No matrix builds if the project only targets one version
  • No security scanning unless requested or tools are installed
  • No build job if the project has no build step

Step 5: Enhance / Audit Existing Pipeline

When MODE = "enhance" or MODE = "audit", analyze EXISTING_CONTENT against the project profile and best practices.

5.1 Gap Analysis

Compare existing pipeline against PROJECT_PROFILE:

Missing jobs:

  • Linter installed but no lint job in CI?
  • SA tool installed but no SA job?
  • Tests exist but no test job?
  • Security tools installed but no security job?

Configuration issues:

  • No caching configured?
  • No concurrency group (GitHub Actions)?
  • Using deprecated actions (e.g., actions-rs instead of dtolnay/rust-toolchain)?
  • Hardcoded language versions instead of variable/matrix?
  • Missing fail-fast: false on matrix?
  • Using policy: pull-push on all GitLab jobs instead of pull on non-install jobs?

Missing features:

  • No coverage reporting when coverage tools are available?
  • No JUnit/codequality report integration (GitLab)?
  • No path filtering for monorepos?
  • No workflow_dispatch trigger (GitHub Actions)?
5.2 Audit Report & Fix

For audit report format, fix flow options, and display templates → read references/AUDIT-REPORT.md

Present results as tables with ✅/❌/⚠️ per check. Categorize recommendations by severity (CRITICAL, HIGH, MEDIUM, LOW). Ask user to choose: fix all, fix critical only, or show details first.

If fixing: preserve existing structure, job names, and ordering conventions.


Step 6: Write Files

6.1 Generate Mode — Write Pipeline

GitHub Actions:

Bash: mkdir -p .github/workflows
Write .github/workflows/lint.yml        # If linters/SA detected
Write .github/workflows/tests.yml       # Always
Write .github/workflows/build.yml       # If has_build_step
Write .github/workflows/security.yml    # If WANT_SECURITY

Only create files for detected concerns. If only lint + tests — two files. If the project is trivially small (single lint + single test job) — a single ci.yml is acceptable.

GitLab CI:

Write .gitlab-ci.yml

GitLab CI uses a single .gitlab-ci.yml — stages and DAG (needs:) handle separation.

6.2 Enhance / Audit Mode — Update Existing

Edit existing files using the Edit tool. Preserve the original structure and only add/modify what's needed.


Step 7: Summary & Follow-Up

7.1 Display Summary

Display summary using format from references/AUDIT-REPORT.md (Summary Display Template section). Show platform, files created, features, and quick start commands.

7.2 Suggest Follow-Up Skills

Suggest: /aif-build-automation for CI targets in Makefile/Taskfile, /aif-dockerize for containerization.

Artifact Ownership and Config Policy

  • Primary ownership: CI pipeline artifacts such as .github/workflows/* and .gitlab-ci.yml.
  • Allowed companion updates: none by default outside CI files.
  • Config policy: config-agnostic by design. This skill relies on repository detection and explicit user choices, not config.yaml.

© unxed, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 17 other files (references) in .agents/skills/aif-ci of unxed/f4.

  • SKILL.md
  • references/AUDIT-REPORT.md
  • references/BEST-PRACTICES.md
  • references/GITLAB-PATTERNS.md
  • references/SERVICE-CONTAINERS.md
  • references/TOOL-COMMANDS.md
  • templates/github/go.yml
  • templates/github/java.yml
  • templates/github/node.yml
  • templates/github/php.yml
  • templates/github/python.yml
  • templates/github/rust.yml
  • templates/gitlab/go.yml
  • templates/gitlab/java.yml
  • templates/gitlab/node.yml
  • templates/gitlab/php.yml
  • templates/gitlab/python.yml
  • … and 1 more

Open the folder on GitHubat commit 447642e

Compare with similar skills

Aif CI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Aif CI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Aif CI this skillunxed/f4244—~4.7kAutomated safety check: PassBSD-3-Clause
ReviewdogAgentSecOps/SecOpsAgentKit2201 repos~3kAutomated safety check: PassCustom licence
Megalinter Checknvuillam/npm-groovy-lint2481 repos~3.9kAutomated safety check: NotesMIT
Hadolint Dockerfile Security LintingAgentSecOps/SecOpsAgentKit2201 repos~4.4kAutomated safety check: PassCustom licence
Golang Continuous Integrationsamber/cc-skills-golang3.4k—~3.7kAutomated safety check: PassMIT
Golang Continuous Integrationcontext-labs/whip1.1k—~3.5kAutomated safety check: PassMIT

Similar skills

  • Reviewdog

    AgentSecOps/SecOpsAgentKit

    Automated code review and security linting integration for CI/CD pipelines using reviewdog.

    220 GitHub starsUsed in 1 repo~3k tokens
    DevelopmentAuto-check passed
  • Megalinter Check

    nvuillam/npm-groovy-lint

    Collect MegaLinter lint errors for the current repository. An agent skill from nvuillam/npm-groovy-lint.

    248 GitHub starsUsed in 1 repo~3.9k tokens
    DevOps & CloudAuto-check: notes
  • Hadolint Dockerfile Security Linting

    AgentSecOps/SecOpsAgentKit

    Lints Dockerfiles with Hadolint for security misconfigurations and best-practice violations, locally and in CI, with strict, balanced and permissive rule templates.

    220 GitHub starsUsed in 1 repo~4.4k tokens
    SecurityAuto-check passed
  • Golang Continuous Integration

    samber/cc-skills-golang

    GitHub Actions CI/CD pipeline configuration for Golang projects — workflow files for test, lint, SAST, coverage and vulnerability-scan jobs, Dependabot and Renovate config files, GoReleaser release…

    3.4k GitHub stars~3.7k tokensUpdated 9 days ago
    DevelopmentAuto-check passed
  • CI/CD with GitHub Actions for Golang — testing, linting, SAST, security scanning, coverage, Dependabot, Renovate, GoReleaser, release pipelines.

    1.1k GitHub stars~3.5k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Mirrord CI

    metalbear-co/mirrord

    Help users set up mirrord in CI pipelines for testing against real Kubernetes environments.

    5.4k GitHub starsUsed in 1 repo~3.2k tokens
    DevOps & CloudAuto-check: warnings

More from unxed/f4

All 36 skills in this repo
  • Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt.

    244 GitHub starsUsed in 3 repos~3.5k tokens
    Auto-check passed
  • Golang code style conventions — line length and breaking, variable declarations, control flow clarity, when comments help vs hurt.

    244 GitHub starsUsed in 3 repos~2.5k tokens
    Auto-check passed
  • Comprehensive guide for Go database access — parameterized queries, struct scanning, NULLable columns, transactions, isolation levels, SELECT FOR UPDATE, connection pool, batch processing, context…

    244 GitHub starsUsed in 2 repos~2.9k tokens
    Auto-check passed
  • Security audit checklist based on OWASP Top 10 and best practices.

    244 GitHub stars~5.4k tokensUpdated today
    Auto-check: notes
  • Go (Golang) naming conventions — covers packages, constructors, structs, interfaces, constants, enums, errors, booleans, receivers, getters/setters, functional options, acronyms, test functions, and…

    244 GitHub starsUsed in 2 repos~3.1k tokens
    Auto-check passed
  • Golang concurrency design — goroutine lifecycle and leak prevention, channels and select, channel ownership and direction, sync.Mutex/RWMutex/sync.Map/sync.Once/atomics, errgroup, singleflight…

    244 GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed

Categories

Questions about Aif CI

What does Aif CI do?

Generate CI/CD pipeline (GitHub Actions / GitLab CI) with linting, static analysis, tests, security. Aif CI is an agent skill from unxed/f4. Generate CI/CD pipeline (GitHub Actions / GitLab CI) with linting, static analysis, tests, security.

When should I use Aif CI?

Aif CI fits situations like: tasks that involve CI/CD; tasks that involve Linting and formatting; tasks that involve Static analysis and SAST.

How do I install Aif CI in Claude Code?

Run `npx skills add unxed/f4 --skill aif-ci -a claude-code`. Or copy the skill folder (.agents/skills/aif-ci in unxed/f4) into .claude/skills/aif-ci in your project. Claude Code loads it when a task matches its description.

How do I install Aif CI in Codex?

Run `npx skills add unxed/f4 --skill aif-ci -a codex`. Or copy the skill folder (.agents/skills/aif-ci in unxed/f4) into .agents/skills/aif-ci in your project. Codex loads it when a task matches its description.

Can I use Aif CI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add unxed/f4 --skill aif-ci -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aif-ci, .gemini/skills/aif-ci, .github/skills/aif-ci and .opencode/skills/aif-ci in your project.

What does Aif CI need to run?

Going by SKILL.md and its folder, Aif CI needs the command-line tools its instructions call (go, cargo, pnpm, npm, ruff and mysql). Our summary lists: Python 3; Node.js; Docker. Its frontmatter pre-approves these tools: Read, Edit, Glob, Grep, Write, Bash(git *), AskUserQuestion, Questions.

Does Aif CI access the network?

SKILL.md contains no URLs. Its commands use npm, uv and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Aif CI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Aif CI use?

Aif CI is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Aif CI use?

About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5.9k tokens, read only when the agent opens those files.

What are the alternatives to Aif CI?

Skills that share tags, products or a category with Aif CI: Reviewdog (AgentSecOps/SecOpsAgentKit, 220 stars), Megalinter Check (nvuillam/npm-groovy-lint, 248 stars), Hadolint Dockerfile Security Linting (AgentSecOps/SecOpsAgentKit, 220 stars) and Golang Continuous Integration (samber/cc-skills-golang, 3.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Aif CI?

unxed (a GitHub user) maintains it in unxed/f4, which has 244 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on October 10, 2026.

Source: unxed/f4 on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.