CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ci-all

Full CI pipeline: run local tests, type check, push branch, and return the pipeline URL. The only command you need before opening a PR.

Invalid
This skill can't be scored yet
Validation errors are blocking scoring. Review and fix them to unlock Quality, Impact and Security scores. See what needs fixing →
SKILL.md
Quality
Evals
Security

/ci:all: Full CI before PR

Runs everything in order: local tests → type check → push → pipeline URL.

One /ci:all replaces: manual tests + git push + copying the pipeline URL.

Stack detection

if [ -f "uv.lock" ]; then STACK="python"
elif [ -f "pnpm-lock.yaml" ]; then STACK="node"
elif [ -f "package-lock.json" ]; then STACK="node-npm"
elif [ -f "Cargo.toml" ]; then STACK="rust"
fi

Step 1: Local tests (blocking)

Python (uv/pytest):

uv run pytest --tb=short -q
# Failure → STOP + print failing tests

Node (pnpm/vitest):

pnpm vitest run
pnpm tsc --noEmit
# Failure → STOP

Rust:

cargo test --quiet 2>&1

If --skip-tests is passed → skip to step 2.

Step 2: Push + pipeline

BRANCH=$(git branch --show-current)

# Verify commits exist to push
AHEAD=$(git rev-list --count origin/$BRANCH..HEAD 2>/dev/null || echo "1")
if [ "$AHEAD" = "0" ]; then
  echo "Branch already up to date on origin."
else
  git push origin "$BRANCH"
fi

Step 3: Pipeline URL

GitLab CI

REMOTE=$(git remote get-url origin)
WEB_URL=$(echo "$REMOTE" | sed 's/git@gitlab\.com:/https:\/\/gitlab.com\//' | sed 's/\.git$//')
echo "Pipeline: $WEB_URL/-/pipelines?ref=$BRANCH"

# Optional: live status via glab CLI
if command -v glab &>/dev/null; then
  sleep 3
  glab ci status --branch "$BRANCH" 2>/dev/null || true
fi

GitHub Actions

REMOTE=$(git remote get-url origin)
WEB_URL=$(echo "$REMOTE" | sed 's/git@github\.com:/https:\/\/github.com\//' | sed 's/\.git$//')
echo "Actions: $WEB_URL/actions?query=branch%3A$BRANCH"

# Optional: live status via gh CLI
if command -v gh &>/dev/null; then
  sleep 5
  gh run list --branch "$BRANCH" --limit 3 2>/dev/null || true
fi

Expected output

CI: my-app (Node/Vitest)
──────────────────────────

① Local tests
  ✅ 47 passed in 8.2s

② Type check
  ✅ No errors

③ Push
  ✅ origin/feat/my-feature

④ Pipeline
  🔗 https://gitlab.com/org/my-app/-/pipelines?ref=feat/my-feature

Next step: open a PR with /pr or directly on GitLab/GitHub.

If tests fail:

CI: my-api (Python/pytest)
────────────────────────────

① Local tests
  ❌ 2 failed

  FAILED tests/test_orders.py::TestOrderService::test_refund_validation
  AssertionError: expected 400, got 500

→ Fix tests before pushing. Pipeline not triggered.

Usage

/ci:all
/ci:all --skip-tests    # push without re-running tests
/ci:all --e2e           # include E2E tests (if configured)

Target: $ARGUMENTS

Repository

FlorianBruniaux/claude-code-ultimate-guide

Path

examples/skills/ci-all/SKILL.md

Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.