ci-guard
Use when starting work in a repository under repositories/ that may lack CI configuration. Detects missing CI workflows (GitHub Actions, GitLab CI, CircleCI) and alerts the user to add one. Skips repo
Файлы2
Открыть в GitHubSKILL.mdskills/ci-guard/SKILL.md
GitHubCI Guard
Repositories benefit from CI, but this skill is advisory. It checks for CI configuration and alerts when it is missing, while allowing research, prototypes, and intentionally local projects.
When to Activate
- At session start, after repository status is reported
- When a user clones or creates a new repo under
repositories/ - When running
/verifyor/quality-gatein a repo without CI
How to Check
Run the check script against any repo:
uv run skills/ci-guard/scripts/check-ci.py <repo-path>
The script checks for common CI indicators and the research exemption.
CI Indicators (any one is sufficient)
| Provider | Path |
|---|---|
| GitHub Actions | .github/workflows/ (with at least one .yml/.yaml) |
| GitLab CI | .gitlab-ci.yml |
| CircleCI | .circleci/config.yml |
| Jenkins | Jenkinsfile |
| Travis | .travis.yml |
| Azure | azure-pipelines.yml |
Research Exemption
A repo is exempt from the CI requirement if:
- A
.researchfile exists in the repo root, OR pyproject.tomlcontainspurpose = "research"in[project.optional]or as a comment marker
To mark a repo as research: touch <repo>/.research
Alert Behavior
When CI is missing and the repo is not research:
- Warn clearly at session start: "This repo has no CI configuration."
- Suggest a starter workflow based on the detected stack (Python/Node/Rust/Go)
- Reference the basecamp's own CI (
.github/workflows/ci.yml) as a working template - Do not block work - this is an alert, not a gate
Starter Templates
Python (uv-based, matching basecamp conventions)
name: CI
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- run: uv python install 3.12
- run: uv sync --group dev
- run: uv run ruff check .
- run: uv run ruff format --check .
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- run: uv python install 3.12
- run: uv sync --group dev
- run: uv run pytest -v
Node.js
name: CI
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm run lint
- run: npm test
Common Mistakes
| Mistake | Fix |
|---|---|
| Forgetting CI on quick prototype repos | Use .research file for true prototypes, add CI for everything else |
| Adding CI but not running tests | CI without tests is a false safety net - at minimum lint |
| Blocking the user from working | This is an alert, not a blocker - warn and continue |