symphony-trello: Skill for Codex

.codex/skills/push-pr/SKILL.md

push-pr is a skill for Codex from martin-francois/symphony-trello. It costs 34 tokens per session (2,768 once invoked), scanned A, original, Apache-2.0.

A procedure for sending a code branch to GitHub and creating or updating its pull request, which is a request for others to review and merge the changes.

In plain words
What is it for?
Pushing a branch, creating a ready-for-review pull request, or updating the existing matching pull request.
Why use it?
It checks the branch, required tests, GitHub identity, and pull-request state before publishing work for review.

Skill for Codex

Written for Codex: installed under .codex/. Also seen: mentions AGENTS.md; mentions Codex.

This is martin-francois/symphony-trello's own configuration. It tells Codex how to work on symphony-trello itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything symphony-trello configures →

Reuse

Borrowing it

Nothing to install: this file belongs to martin-francois/symphony-trello. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/martin-francois/symphony-trello/main/.codex/skills/push-pr/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/martin-francois/symphony-trello

Made for: Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for push-pr

README.md
[![agentmods](https://agentmods.dev/badge/skills/martin-francois/symphony-trello/push-pr/github.svg)](https://agentmods.dev/skills/martin-francois/symphony-trello/push-pr)
Your own site
<a href="https://agentmods.dev/skills/martin-francois/symphony-trello/push-pr"><img src="https://agentmods.dev/badge/skills/martin-francois/symphony-trello/push-pr/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for push-pr

Your own site · 80×15
<a href="https://agentmods.dev/skills/martin-francois/symphony-trello/push-pr"><img src="https://agentmods.dev/badge/skills/martin-francois/symphony-trello/push-pr.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 34 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,768 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00034 $0.02768
Opus 5.5 $0.00014 $0.01107
Sonnet 5.5 $0.00007 $0.00554
Haiku 4.5 $0.00003 $0.00277

Measured 6d ago against content hash ecda8f298082, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

push-pr scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.codex/skills/push-pr/SKILL.md · 253 lines

How it starts

The opening of the file, as written. The whole thing — 253 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Push PR

Goals

  • Push the current branch without changing remotes behind the user's back.
  • Create a ready-for-review, non-draft PR when none exists, or update the existing PR.
  • Use a draft PR only when the Trello card explicitly asks for a draft PR.
  • Keep PR title and body aligned with the full branch scope.
  • Distinguish stale-branch problems from auth or permission problems.

Preconditions

  • gh is installed and authenticated for this repository.
  • Local verification required by AGENTS.md has passed or the blocker is known.

Steps

  1. Inspect the branch and diff:

    branch="$(git branch --show-current)"
    git status --short --branch
    git log --oneline --decorate -5
    
  2. If the prompt ends with a runtime Codex Review Before Handoff section, finish that review loop first. Then run the required local checks for the change, including CI-equivalent local checks when CI cannot run. Without that section, just run the required local checks.

  3. Before pushing, verify that commits intended for the PR are authored as the authenticated GitHub login:

    if ! github_name="$(gh api user --jq '.login // ""')" || [ -z "$github_name" ]; then
      echo "GitHub identity lookup failed: cannot verify PR commit author login" >&2
      exit 1
    fi
    if ! github_email="$(gh api user --jq '.email // ""')"; then
      echo "GitHub identity lookup failed: cannot verify PR commit author email metadata" >&2
      exit 1
    fi
    if [ -z "$github_email" ]; then
      if ! github_email="$(gh api user/emails --jq '[.[] | select(.email | endswith("@users.noreply.github.com")) | .email][0] // ""' 2>/dev/null)"; then
        echo "GitHub identity lookup failed: gh api user/emails needs the user:email scope; run gh auth refresh -s user:email for this account" >&2
        exit 1
      fi
    fi
    if [ -z "$github_email" ]; then
      echo "GitHub identity lookup failed: configure a public email or accessible GitHub noreply email for this account" >&2
      exit 1
    fi
    github_author="$github_name <$github_email>"
    default_branch="$(git remote show origin | sed -n 's/  HEAD branch: //p')"
    if [ -z "$default_branch" ]; then
      default_branch="$(git symbolic-ref --quiet --short refs/remotes/origin/HEAD 2>/dev/null | sed 's#^origin/##' || true)"
    fi
    if [ -z "$default_branch" ]; then
      echo "Git author verification failed: could not resolve origin default branch" >&2
      exit 1
    fi
    if ! git fetch origin "$default_branch"; then
      echo "Git author verification failed: could not fetch origin/$default_branch" >&2
      exit 1
    fi
    base_ref="origin/$default_branch"
    if ! git rev-parse --verify --quiet "$base_ref" >/dev/null; then
      echo "Git author verification failed: missing $base_ref" >&2
      exit 1
    fi
    if ! merge_base="$(git merge-base HEAD "$base_ref")"; then
      echo "Git author verification failed: could not find a merge base with $base_ref" >&2
      exit 1
    fi
    git log --format='%H %an <%ae>' "$merge_base"..HEAD
    symphony_trello_author_rewrite=false
    wrong_authors="$(
      git log --format='%H%x09%an <%ae>' "$merge_base"..HEAD |
        while IFS="$(printf '\t')" read -r commit author; do
          if [ "$author" != "$github_author" ]; then
            printf '%s %s\n' "$commit" "$author"
          fi
        done
    )"
    if [ -n "$wrong_authors" ]; then
      current_branch="$(git branch --show-current)"
      if [ -z "$current_branch" ] || [ "$current_branch" = "$default_branch" ]; then
        printf 'Git author verification failed: expected PR commits authored as %s\n%s\n' "$github_author" "$wrong_authors" >&2
        echo "Refusing to rewrite author metadata on the default branch or an unnamed branch" >&2
        exit 1
      fi
      printf 'Git author verification will rewrite PR branch commits to %s\n%s\n' "$github_author" "$wrong_authors" >&2
      export GIT_AUTHOR_NAME="$github_name"
      export GIT_AUTHOR_EMAIL="$github_email"
      export GIT_COMMITTER_NAME="$github_name"
      export GIT_COMMITTER_EMAIL="$github_email"
      if ! git rebase --exec 'git commit --amend --no-edit --reset-author' "$merge_base"; then
        echo "Git author verification failed: could not rewrite PR commit authors" >&2
        exit 1
      fi
      unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL
      wrong_authors="$(
        git log --format='%H%x09%an <%ae>' "$merge_base"..HEAD |
          while IFS="$(printf '\t')" read -r commit author; do
            if [ "$author" != "$github_author" ]; then
              printf '%s %s\n' "$commit" "$author"
            fi
          done
      )"
      if [ -n "$wrong_authors" ]; then
        printf 'Git author verification failed after rewrite: expected PR commits authored as %s\n%s\n' "$github_author" "$wrong_authors" >&2
        exit 1
      fi
      symphony_trello_author_rewrite=true
    fi
    

Read the full file on GitHub · 253 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 6d ago Changed · +7 lines ecda8f298082
  2. 10d ago Changed · +54 lines 699caeea453f
  3. 2mo ago First seen · 192 lines · 34 tokens per session scan A 243a3dc9304e

Subscribe to this mod's changes

push-pr is a skill published in the GitHub repository martin-francois/symphony-trello (5 stars, last pushed today), licensed Apache-2.0. It adds 34 tokens to every session and 2,768 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

push-pr compared with skills from other repositories

push-pr next to 6 skills from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
push-prmartin-francois/symphony-trelloSkill5todayApache-2.0A34Codex
git-integrationa5c-ai/babysitterSkill1.9k5d agoMITA39Claude Code
moai-workflow-worktreemodu-ai/moai-adkSkill1.3k4d agoApache-2.0A41Claude Code
audit-traila5c-ai/babysitterSkill1.9k5d agoMITA0Claude Code, Codex
moai-ref-git-workflowmodu-ai/moai-adkSkill1.3k4d agoApache-2.0A58Claude Code
strict-tdda5c-ai/babysitterSkill1.9k5d agoMITA34Claude Code
github-synca5c-ai/babysitterSkill1.9k5d agoMITA0Claude Code, Codex