python-ci
ALWAYS load alongside the python-project skill for any new or existing Python project.
Skill by hugobatista
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/hugobatista-python-ci
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, devops
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/python-ci
What's inside
- Skill name
python-ci- Description
- ALWAYS load alongside the python-project skill for any new or existing Python project. Creates GitHub Actions CI workflows for linting (ruff) and testing (pytest + coverage). Do not skip — CI is a standard part of Python project setup.
- License
- MIT
- Instructions
- 90 lines in SKILL.md · view on GitHub
Files (6)
- SKILL.md
- config.toml.example · assets/
- create_draft_release.yml.tmpl · assets/
- lint.yml.tmpl · assets/
- pypi.yml.tmpl · assets/
- test.yml.tmpl · assets/
SKILL.md (first lines)
## GitHub Actions workflows
When scaffolding a new Python project, or when adding CI to an existing one:
### Setup
0. Ask the user: *"Will this project be hosted on GitHub?"* If no, skip all CI workflow creation entirely.
1. Read the repo name from `pyproject.toml` `[project].name` (the name with hyphens is the repo name)
2. Read `config.toml` from this directory. If it exists, extract `github_owner` and `github_url_base` for defaults. If not, ask the user for these values and write them to `config.toml` (one-time setup).
3. Ask the user for the **GitHub owner** (default: `<github_owner from config>`)
4. Ask the user for the **URL base** for badge links:
- `go.<owner>.com/gh` (default, e.g. `https://<github_url_base from config>`)
- `github.com/<owner>` (e.g. `https://github.com/<github_owner from config>`)
- Custom — user provides their own
4. Ask the user: *"Do you want to set up Renovate for automated dependency updates?"*
If yes, load the `renovate` skill and follow its instructions for GitHub projects.
This creates `renovate.json` and optionally `.github/workflows/renovate.yml`.
Substitute `<owner>`, `<repo>`, `<package>`, and `<base>` in all workflow files and badges using the values gathered above.
### Workflow files
- `.github/workflows/lint.yml` — always
- `.github/workflows/test.yml` — always
- `.github/workflows/pypi.yml` — only if the user opts in (ask first)
- `.github/workflows/create_draft_release.yml` — only if the user opts in (ask first)
- `renovate.json` — only if the user opted in to Renovate
### Badges
After creating workflow files, add corresponding badges to the top of `README.md` in a single row. The GitHub Tag badge is always added.
| Badge | Condition | Markdown |
|-------|-----------|----------|
| GitHub Tag | always | `[](<base>/<repo>/releases)` |
| Lint | always | `[](<base>/<repo>/actions/workflows/lint.yml)` |
| Test | always | `[](<base>/<repo>/actions/workflows/test.yml)` |
| PyPI | if opted in | `[](https://pypi.org/project/<package>)` |
| Renovate | if opted in | `[](https://docs.renovatebot.com)` |
### Templates
Each template file lives in `assets/`. Read the `.yml.tmpl` with the Read tool, substitute placeholders, then write the result to `.github/workflows/<name>.yml`:
- **`assets/lint.yml.tmpl`** → `lint.yml` (no substitutions)
- **`assets/test.yml.tmpl`** → `test.yml` (no substitutions)
- **`assets/pypi.yml.tmpl`** → `pypi.yml` (only if user opted in)
- **`assets/create_draft_release.yml.tmpl`** → `create_draft_release.yml` (only if user opted in)
Create the directory before writing:
```
mkdir -p .github/workflows
```
### Action pinning policy
All workflow actions (`uses:` lines) are pinned to full commit SHAs with a version comment. The pinned version is the latest stable release available for > 30 days, ensuring a vetting window before automated updates are proposed. Renovate's `minimumReleaseAge: "30 days"` respects this window. To update a pin, find the desired tag's commit SHA via the GitHub API (`/repos/{owner}/{repo}/git/ref/tags/{tag}`) or the action's release page. Consider setting up Renovate (step 4) to automate these updates.
## README update
After creating workflow files, add the following section to `README.md` so contributors can run CI workflows locally with `act`.
### Local CI with act
Requires [act](https://github.com/nektos/act) and a modern runner image:
```bash
# One-time setup
act -P ubuntu-latest=catthehacker/ubuntu:act-latest
```
```bash
# Lint and tests (triggered on push)
act -P ubuntu-latest=catthehacker/ubuntu:act-latest -W .github/workflows/lint.yml
act -P ubuntu-latest=catthehacker/ubuntu:act-latest -W .github/workflows/test.yml
# PyPI publish (workflow_dispatch — needs GITHUB_TOKEN)
act workflow_dispatch -P ubuntu-latest=catthehacker/ubuntu:act-latest \
-W .github/workflows/pypi.yml -s GITHUB_TOKEN=<token>
# Create draft release (workflow_dispatch — needs GITHUB_TOKEN)
act workflow_dispatch -W .github/workflows/create_draft_release.yml \
-s GITHUB_TOKEN=<token>
```
Replace `<token>` with a GitHub classic PAT with `repo` scope.
(The block above is 4-space indented. Strip the leading 4 spaces from each line and write the result to README.)From hugobatista/agent-skills, MIT.
More from hugobatista/agent-skills
- 0.582score
web-frontend
hugobatista
Use when building or modifying web frontend code.
SkillAFreshness: A★ 1Claude Code +9 - 0.547score
pyproject-toml
hugobatista
Use when creating or modifying pyproject.toml configuration for Python projects.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
python-cli
hugobatista
Use when building or modifying Python CLI tools.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
architecture-brief
hugobatista
Generate an architecture overview document from a pull request or local git diff.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
markdown-style
hugobatista
Use when writing or editing Markdown documentation (*.md files).
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
mermaid-syntax
hugobatista
Correct Mermaid diagram syntax reference covering all types (flowchart, sequence, class, ERD, state, C4, git, gantt, pie).
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
ste100
hugobatista
Use when writing or editing technical documentation (manuals, procedures, work instructions, warnings, cautions, notes, maintenance guides, user guides).
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
renovate
hugobatista
Use when creating or modifying Renovate configuration for automated dependency management.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
python-project
hugobatista
Use when writing, reviewing, or modifying Python code (*.py files).
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
docker-python
hugobatista
Dockerfile best practices for Python projects.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
node-ci
hugobatista
Creates GitHub Actions CI workflows for Node.js/Bun projects: typecheck (tsc), tests (bun test), draft releases, and npm publish with OIDC trusted publishing.
SkillBFreshness: B★ 1Claude Code +9 - 0.544score
forge-detect
hugobatista
Detect the forge type from the current repo's git remote.
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 20, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/hugobatista/agent-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from hugobatista
- 0.582score
web-frontend
hugobatista
Use when building or modifying web frontend code.
SkillAFreshness: A★ 1Claude Code +9 - 0.547score
renovate
hugobatista
Use when creating or modifying Renovate configuration for automated dependency management.
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
ste100
hugobatista
Use when writing or editing technical documentation (manuals, procedures, work instructions, warnings, cautions, notes, maintenance guides, user guides).
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
markdown-style
hugobatista
Use when writing or editing Markdown documentation (*.md files).
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
mermaid-syntax
hugobatista
Correct Mermaid diagram syntax reference covering all types (flowchart, sequence, class, ERD, state, C4, git, gantt, pie).
SkillBFreshness: B★ 1Claude Code +9 - 0.547score
pyproject-toml
hugobatista
Use when creating or modifying pyproject.toml configuration for Python projects.
SkillBFreshness: B★ 1Claude Code +9
Cite this page
python-ci skill. Agent Mart. https://agentmart.dev/skills/hugobatista-python-ci (last updated 2026-10-24)