Runs the local equivalent of the CI merge gate before you push.

Apache-2.0Auto-check passedDevelopment

Install Pre Push

skills CLI
$ npx skills add strands-agents/harness-sdk --skill pre-push -a claude-code

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

GitHub CLI
$ gh skill install strands-agents/harness-sdk pre-push --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/strands-agents/harness-sdk.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pre-push .claude/skills/pre-push && 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
pre-push
GitHub stars
8.7k
Token cost
~1.4k tokens
SKILL.md length
796 words
Files
2
Skills in repo
14
Repo updated
First seen
Licence
Apache-2.0

At a glance

Runs the local equivalent of the CI merge gate before you push.

  • Works in 2 steps: Run the bundled script → Triage what phase 2 reports
  • The user asks to run pre-push checks
  • SKILL.md covers Process, Output format and Rules
  • Runs Shell scripts from its folder; calls git, bash and npm

What it does

Pre Push is an agent skill from strands-agents/harness-sdk. Runs the local equivalent of the CI merge gate before you push. Detects which areas (Python, TypeScript, docs) your changes touch, auto-fixes what it can, then runs only those checks. Use when the user asks to run pre-push checks, get push-ready, verify changes before pushing or opening a PR, "make sure CI will pass", or check lint/tests/types locally.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `run-checks.sh`).

It sits in Development, covering Linting and formatting. It works with Python and TypeScript. The repository describes itself as: Build an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python & TypeScript - any model, any cloud. The licence is Apache-2.0.

When your agent uses it

  • The user asks to run pre-push checks
  • Verify changes before pushing
  • Make sure CI will pass
  • Check lint/tests/types locally

Example prompts

  • “make sure CI will pass”
  • “/pre-push”

Requirements

  • Python 3
  • A Bash shell

Workflow steps

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

  1. Run the bundled script
  2. Triage what phase 2 reports

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • git
    • bash
    • npm

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

  • Network

    No URLs in SKILL.md. Its commands use git and npm, 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

Pre Push loads about 1.4k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 796 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

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 strands-agents/harness-sdk at commit e519d67, republished under its Apache-2.0 licence (© strands-agents). 796 words, ~1,425 tokens.

Download SKILL.mdSave it as .claude/skills/pre-push/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
pre-push
description
Runs the local equivalent of the CI merge gate before you push. Detects which areas (Python, TypeScript, docs) your changes touch, auto-fixes what it can, then runs only those checks. Use when the user asks to run pre-push checks, get push-ready, verify changes before pushing or opening a PR, "make sure CI will pass", or check lint/tests/types locally.

Pre-push Checks Skill

Get your branch push-ready: detect which areas your changes touch, auto-fix what's mechanically fixable, then run the same checks CI's merge gate runs for those areas — and triage whatever's left with the user.

This is a manually-invoked check, not a git hook — it runs only when you ask for it, so it never gets in the way of committing incrementally. Reach for it when you're about to push or open a PR. (When opening a PR, run this first, then use the pr-create / pr-writer skills to draft and open it.)

The repo's CI (.github/workflows/ci.yml) detects which of three areas changed and runs only those: python (strands-py/), typescript (strands-ts/), and docs (site/). This skill mirrors that routing locally.

Process

1. Run the bundled script
bash
bash .agents/skills/pre-push/run-checks.sh 2>&1

Non-zero exit means something failed. On failure, the script prints a summary at the end with every failed step and the last 20 lines of its error output — everything you need to start fixing is in the tail of the output. Ignore noise earlier in the output.

The script runs from anywhere in the repo (it locates the root via git rev-parse --show-toplevel). From a subdirectory:

bash
bash "$(git rev-parse --show-toplevel)/.agents/skills/pre-push/run-checks.sh"

It detects the changed areas — comparing against the closest main/master base it can find (local or any remote, so upstream/main on a fork works too — fork-aware), plus staged, unstaged, and untracked changes — using the same path filters CI uses, then for each detected area runs two phases:

  • Phase 1 — auto-fix: formatting, lint --fix, and lockfile sync. These are scoped to the files your change touches (so they never reformat unrelated files into your commit), write to working-tree files, and never fail the run.
  • Phase 2 — check: the gate (build, lint check, format check, type-check, tests, audit), run tree-wide for CI parity. Phase 2 runs on the now-fixed tree and decides pass/fail.

The script exits non-zero if any check fails after fixing.

Useful flags:

  • --list — show the detected areas and triggering files without running anything. Use first to confirm scope.
  • --all — run every area regardless of what changed.
  • --base <ref> — compare against <ref> instead of the auto-detected base.
  • --heavy — also run the slow CI-parity steps skipped by default (browser tests, test:package, full Python version matrix). Slower, may need extra system deps; reach for it only when the change is risky in those dimensions.
  • python / typescript / docs — run specific areas explicitly, overriding detection.
Show full SKILL.md (403 more words)Show less
2. Triage what phase 2 reports

If the script exits 0, you're done — report it and stop. If it exits non-zero, work the FAILED: items before calling the branch push-ready, splitting by whether the fix requires judgment:

  • Mechanical / unambiguous — a missing type annotation, an unused import the linter flagged but didn't strip, a lockfile that needs committing. Just fix these and re-run the script.
  • Anything ambiguous — loop back to the developer with the failing output before changing anything. The clearest case is a test failure: it means either the change broke real behavior (fix the code) or the behavior change is intended and the test is stale (fix the test). Don't guess, and never rewrite a test just to make it pass — that silences the very check that caught the regression. Surface it and let the developer decide.

How that split applies to the specific things phase 2 reports:

  • Lint / type errors the autofixer couldn't resolve — usually mechanical; fix the code and re-run.
  • Test failures — the judgment case above: show the failing output and let the developer decide whether the code or the test is wrong.
  • npm audit — a high-severity advisory may be a pre-existing transitive dependency issue outside this change. Surface it; don't block the user's work on it. Note it and move on.
  • Missing tool (hatch/npm not found) — the script says how to install. Report it; don't silently work around it.

After fixing anything, re-run the script to confirm green.

Output format

  • Starting a check: > label
  • Inline failure: FAILED: label (printed inline as each check fails)
  • End summary (on failure only): after ============, each failed step is listed as --- FAILED: label --- followed by the last 20 lines of its output. This summary has everything needed to diagnose and fix.
  • Exit code: non-zero if any check failed

Rules

  • Always run the script rather than freehanding the commands — it keeps the path filters and check list in sync with CI.
  • A green run clears the deterministic, single-platform failures but does not reproduce CI's OS/version matrices or the npm-pack smoke test. Report "local checks passed," not "CI will pass."
  • The script writes to working-tree files in phase 1 (formatters, lockfile). That's expected for a push-readiness helper; the user can review with git diff before committing.
  • If no area is detected (the change touches only files outside python/typescript/docs, e.g. top-level docs or .agents/), say so — there's nothing the merge gate runs for it, and that's fine.

© strands-agents, Apache-2.0. 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 1 other file in .agents/skills/pre-push of strands-agents/harness-sdk.

  • SKILL.md
  • run-checks.sh

Open the folder on GitHubat commit e519d67

Compare with similar skills

Pre Push 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.

Pre Push compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Pre Push this skillstrands-agents/harness-sdk8.7k—~1.4kAutomated safety check: PassApache-2.0
Git HooksProrise-cool/Claude-Code-Multi-Agent305—~3.6kAutomated safety check: NotesNone
Plankton Code Qualityaffaan-m/ECC275k2 repos~1.3kAutomated safety check: PassMIT
Code Qualitywaybarrios/opencode-power-pack533—~1.8kAutomated safety check: PassMIT
Zizkadb TestZIZKA-AI-SL/ZizkaDB123—~358Automated safety check: PassCustom licence
Maintainopenwpm/OpenWPM1.4k—~1.5kAutomated safety check: PassCustom licence

Similar skills

  • Git Hooks

    Prorise-cool/Claude-Code-Multi-Agent

    Central authority on git hook implementations, modern best practices, and tooling for .NET/C, JavaScript/TypeScript, Python, and polyglot repositories.

    305 GitHub stars~3.6k tokensUpdated 22 days ago
    DevelopmentAuto-check: notes
  • 使用Plankton进行编写时代码质量强制执行——通过钩子在每次文件编辑时自动格式化、代码检查和Claude驱动的修复。

    275k GitHub starsUsed in 2 repos~1.3k tokens
    DevelopmentAuto-check passed
  • Code Quality

    waybarrios/opencode-power-pack

    Agents should invoke this skill for code reviews, linting/formatting setup, maintainability checks, complexity concerns, warning cleanup, coding standards, or quality gates in Rust, TypeScript…

    533 GitHub stars~1.8k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Zizkadb Test

    ZIZKA-AI-SL/ZizkaDB

    Run the full ZizkaDB test suite across all layers — lint, Python unit tests, SDK tests, MCP tests, TypeScript tests, and dashboard build verification.

    123 GitHub stars~358 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Maintain

    openwpm/OpenWPM

    A skill your agent uses to run a periodic codebase-health pass — dependency audit, lint, test suite, dead code / TODO scan, doc freshness, crosslink issue hygiene, and build artifacts.

    1.4k GitHub stars~1.5k tokensUpdated 3 days ago
    Testing & QAAuto-check passed
  • Workflow Setup

    athola/claude-night-market

    Configures GitHub Actions CI/CD workflows for testing, linting, and deployment.

    342 GitHub stars~1.4k tokensUpdated 2 days ago
    DevOps & CloudAuto-check passed

More from strands-agents/harness-sdk

All 14 skills in this repo
  • Docs Audit

    strands-agents/harness-sdk

    Assess a published or in-progress documentation page for quality, accuracy, and voice compliance.

    8.7k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Docs Planner

    strands-agents/harness-sdk

    Identify documentation gaps and prioritize the docs backlog.

    8.7k GitHub stars~821 tokensUpdated today
    Auto-check passed
  • Docs Reviewer

    strands-agents/harness-sdk

    Review documentation drafts for voice consistency, structure, and terminology before PR submission.

    8.7k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Docs Writer

    strands-agents/harness-sdk

    Draft or rewrite Strands Agents documentation pages. An agent skill from strands-agents/harness-sdk.

    8.7k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • PR Create

    strands-agents/harness-sdk

    Creates a GitHub pull request using the gh CLI. An agent skill from strands-agents/harness-sdk.

    8.7k GitHub stars~593 tokensUpdated today
    Auto-check passed
  • PR Feedback

    strands-agents/harness-sdk

    Fetches PR review feedback and inline comments, categorizes them, and presents options to the user.

    8.7k GitHub stars~675 tokensUpdated today
    Auto-check passed

Categories

Questions about Pre Push

What does Pre Push do?

Runs the local equivalent of the CI merge gate before you push. Pre Push is an agent skill from strands-agents/harness-sdk. Runs the local equivalent of the CI merge gate before you push.

When should I use Pre Push?

Pre Push fits situations like: the user asks to run pre-push checks; verify changes before pushing; make sure CI will pass; check lint/tests/types locally.

How do I install Pre Push in Claude Code?

Run `npx skills add strands-agents/harness-sdk --skill pre-push -a claude-code`. Or copy the skill folder (.agents/skills/pre-push in strands-agents/harness-sdk) into .claude/skills/pre-push in your project. Claude Code loads it when a task matches its description.

How do I install Pre Push in Codex?

Run `npx skills add strands-agents/harness-sdk --skill pre-push -a codex`. Or copy the skill folder (.agents/skills/pre-push in strands-agents/harness-sdk) into .agents/skills/pre-push in your project. Codex loads it when a task matches its description.

Can I use Pre Push 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 strands-agents/harness-sdk --skill pre-push -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pre-push, .gemini/skills/pre-push, .github/skills/pre-push and .opencode/skills/pre-push in your project.

What does Pre Push need to run?

Going by SKILL.md and its folder, Pre Push needs a shell for the scripts in its folder and the command-line tools its instructions call (git, bash and npm). Our summary lists: Python 3; A Bash shell.

Does Pre Push access the network?

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

Is Pre Push 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 Pre Push use?

Pre Push is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Pre Push use?

About 1.4k tokens (SKILL.md is roughly 5.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Pre Push?

Skills that share tags, products or a category with Pre Push: Git Hooks (Prorise-cool/Claude-Code-Multi-Agent, 305 stars), Plankton Code Quality (affaan-m/ECC, 275k stars), Code Quality (waybarrios/opencode-power-pack, 533 stars) and Zizkadb Test (ZIZKA-AI-SL/ZizkaDB, 123 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Pre Push?

strands-agents (a GitHub organization) maintains it in strands-agents/harness-sdk, which has 8,731 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.

Source: strands-agents/harness-sdk on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.