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.
npx agentmods add skills/ashtanko/compose-android-template/shepherdnpx skills add ashtanko/compose-android-template --skill shepherdgit clone --depth 1 https://github.com/ashtanko/compose-android-templateWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00049 | $0.02126 |
| Opus 5 | $0.00024 | $0.01063 |
| Sonnet 5 | $0.00010 | $0.00425 |
| Haiku 4.5 | $0.00005 | $0.00213 |
Grade A, and why
shepherd 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 3d 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.
How it starts
The opening of the file, as written. The whole thing — 184 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Shepherd
Core principle
Poll open PRs (GitHub) and MRs (GitLab) in a loop, fix all outstanding issues locally first, then push fixes, then resolve review threads, then wait for CI. Never sit idle when a PR has unaddressed feedback or a failing CI check.
Platform detection
Use git remote get-url origin to determine the platform:
| Remote URL pattern | Platform | CLI tool | ID prefix |
|---|---|---|---|
github.com |
GitHub | gh |
# |
gitlab.* |
GitLab | glab |
! |
Use the detected CLI tool (gh or glab) for all commands below. The skill uses PR generically for both pull requests and merge requests.
Command reference
| Operation | GitHub (gh) |
GitLab (glab) |
|---|---|---|
| List open PRs | gh pr list --state open --json number,title,headRepository,baseRefName,statusCheckRollup |
glab mr list --source-branch $(git branch --show-current) --output json |
| View PR details | gh pr view <#> --comments --json comments |
glab mr view <!> --comments |
| Check CI status | gh pr checks <#> |
glab mr view <!> (check pipeline or head_pipeline fields) |
| View CI logs | gh run view <run-id> --log-failed |
glab ci trace <job-id> |
| List CI pipelines | — | glab ci list --mr <!> |
| Add comment | gh pr comment <#> --body "..." |
glab mr note <!> --message "..." |
| Merge | gh pr merge <#> --squash --delete-branch |
glab mr merge <!> --squash |
| Approve | gh pr review <#> --approve |
glab mr approve <!> |
When to use
- User says "shepherd my PRs", "babysit my PRs", "watch my PRs", "monitor open PRs", or "poll PRs" — applies to GitHub PRs and GitLab MRs interchangeably
- User has open PRs that need ongoing attention across minutes or hours
- You're asked to handle PR review feedback autonomously
- CI keeps failing on issues you can fix (lint, format, minor test breakage)
Do NOT use when:
- The failure requires domain knowledge you don't have (ambiguous test failure, architectural feedback)
- The user explicitly says to do something else first
- There are no open PRs to shepherd
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.
- 3d ago First seen · 184 lines · 49 tokens per session scan A b8f3d27fcc6a
shepherd is a skill published in the GitHub repository ashtanko/compose-android-template (10 stars, last pushed 5d ago), licensed MIT. It adds 49 tokens to every session and 2,126 once invoked, about $0.0002 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.
Other skills, from other repositories
sceneview-web
Build 3D and WebXR (AR/VR) experiences in the browser with SceneView for Web — Filament.js (WebGL2/WASM) wrapped in a Kotlin/JS DSL and a plain-JavaScript API on window.sceneview. Use whenever the user asks for "3D in the browser", "a web model viewer", "WebXR AR/VR", or any browser 3D/AR app where the dependency is…
sceneview
Build 3D and AR apps with the SceneView SDK in Jetpack Compose, SwiftUI (iOS/macOS/visionOS via SceneViewSwift), Web (Filament.js), Flutter and React Native. Use whenever the user asks for "3D in Compose", "AR with ARCore in Compose", a model viewer, or any cross-platform 3D/AR app where the dependency is…
sceneview-ios
Build 3D and AR apps on Apple platforms (iOS, macOS, visionOS) with SceneViewSwift — the SwiftUI wrapper around RealityKit. Use whenever the user asks for "3D in SwiftUI", "AR with ARKit in SwiftUI", a model viewer for iOS, or any Apple-platform 3D/AR app where the dependency is the SceneViewSwift Swift Package from…
to-plan
Use when one ready GitHub issue or an in-chat task needs a repository-aware implementation plan for a later implementation workflow.
compose-ui-testing-patterns
Use when writing or reviewing Jetpack Compose UI tests, screenshot tests, previews, semantics assertions, fake image loading, keyboard input, focus assertions, interaction state (hover/pressed/focused), or tests for plain state-driven UI composables.
gradle-run
Use when planning to execute Gradle through gradle, ./gradlew, or a custom gradlew wrapper script, or diagnosing a Gradle build, compact workflow ledger, repeated failure fingerprint, check, test, lint, warning, or failure even when no new Gradle run is appropriate.