subpush

A Git command that commits and pushes a submodule, then commits the parent project's updated submodule reference. It does not push the parent project itself.

In plain words
What is it for?
Use it after changing a submodule when you want to commit its changes, push them, and record the new version in the parent project.
Why use it?
It removes the need to perform these linked Git steps separately and checks that the selected path is a registered submodule.

Command for Claude Code

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/baek-labs/hames/subpush
Clone the repo
git clone --depth 1 https://github.com/baek-labs/hames

Made for: Claude Code.

Per session 28 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,239 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00028 $0.01239
Opus 5 $0.00014 $0.00620
Sonnet 5 $0.00006 $0.00248
Haiku 4.5 $0.00003 $0.00124

Measured 2d ago against content hash f6dc291b3cd7, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

subpush 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 2d 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.

.claude/commands/subpush.md · 107 lines

How it starts

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

/subpush

서브모듈 작업 후 "서브모듈 push → Hames gitlink bump 커밋" 2단 흐름을 자동화한다. Hames 루트 push는 포함하지 않는다 — 그것은 /save의 역할이다.

사용법

A. 서브모듈 안에서 커밋까지 끝낸 경우:

/subpush <submodule_path>

예: /subpush my-submodule

B. 워킹트리 변경분 통째로 커밋 + 흐름 전체 실행:

/subpush <submodule_path> "<commit message>"

예: /subpush my-submodule "feat: add new content"

사전 조건

  • CWD가 Hames 루트({{HAMES_ROOT}})여야 한다.
  • <submodule_path>는 Hames 기준 상대경로 (예: my-submodule-a, my-submodule-b).
  • 격리 도메인은 이 커맨드 대상이 아니다.

부정형 결론 안전장치 (전 단계 공통)

이 스킬의 모든 단계에서 "변경 없음 / 이미 동기화됨 / 커밋할 내용 없음 / gitlink 변경 없음" 같은 부정형 결론을 내리기 전:

  1. 직전에 실행한 검증 명령의 raw 출력을 화면에 그대로 표시 (요약·재해석 금지).
  2. raw 출력이 진짜로 비어있을 때만 부정형 결론을 낸다.
  3. raw 출력에 1줄이라도 있으면 다음 단계로 진행.

특히 Step 3의 ahead/behind 카운트, Step 4의 git status --short <submodule_path> 출력은 결정 직전에 raw로 박아둔다.

실행 순서

Step 1 — 인자 검증

  • $ARGUMENTS 첫 토큰이 비어있으면 "서브모듈 경로를 입력해주세요" 후 중단.
  • 해당 경로가 .gitmodules에 등록돼 있는지 확인:
    git config --file .gitmodules --get-regexp path | grep -F "<submodule_path>"
    
    없으면 "서브모듈이 아닙니다" 출력 후 중단.

Step 2 — (모드 B인 경우만) 서브모듈 안에서 커밋

cd <submodule_path>
git add -A
git status --short    # 사용자에게 변경 내역 확인 출력
git commit -m "<commit message>"
  • 변경분이 없으면 "커밋할 내용 없음" 출력 후 Step 3로 진행 (push만 시도).

Step 3 — 서브모듈 push

cd <submodule_path>     # 이미 안에 있으면 생략
git rev-list --left-right --count '@{u}...HEAD' 2>/dev/null
  • ahead가 0이면 "이미 동기화됨, push 생략" 출력 후 Step 4로.
  • ahead가 1 이상이면:
    git push
    
  • upstream이 설정 안 돼 있으면(fatal: no upstream) 사용자에게 보고하고 중단.

Step 4 — Hames 루트로 복귀 후 gitlink 상태 확인

cd {{HAMES_ROOT}}
git status --short <submodule_path>
  • M <submodule_path>이 보이면 gitlink 갱신 필요 → Step 5.
  • 출력 없으면 "gitlink 변경 없음" 출력 후 종료.

Step 5 — gitlink 커밋 (Hames push 없음)

git add <submodule_path>
git commit -m "chore: bump <submodule_path> gitlink"
  • push는 하지 않는다. Hames 루트 push가 필요하면 /save를 별도로 실행한다.

Step 6 — 최종 검증 보고

cd <submodule_path> && git rev-list --left-right --count '@{u}...HEAD'
  • 0 0이면 "서브모듈 동기화 완료. Hames gitlink 커밋됨. push는 /save로." 한 줄로 마감.
  • 그 외엔 ahead/behind 숫자 출력 후 다음 액션 안내.

Read the full file on GitHub · 107 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. 2d ago First seen · 107 lines · 28 tokens per session scan A f6dc291b3cd7

Subscribe to this mod's changes

subpush is a command published in the GitHub repository baek-labs/hames (5 stars, last pushed 1mo ago), licensed MIT. It adds 28 tokens to every session and 1,239 once invoked, about $0.0001 per session on Opus 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.