focus
Give an overview of large chained work on GitHub (tracking issues with sub-issues and blocked-by dependencies) and recommend where the user should put their…
Skill by s0up4200
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/s0up4200-focus
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: security
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
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/focus
What's inside
- Skill name
focus- Description
- Give an overview of large chained work on GitHub (tracking issues with sub-issues and blocked-by dependencies) and recommend where the user should put their focus next. When the repo has no epic, it picks a pull request to review or merge, or an issue to implement or triage. Use when the user types "/focus", or asks "what should I work on next", "where do I focus", "what is free to pick up", "what is blocked", "is my ticket unblocked yet", "status of the epic", "where does the rollout stand", or names a tracking issue such as owner/repo#123 and wants to know its state. Not for a sweep of every open issue for fixed or stale ones, which github-resolution-audit covers, and not for PR merge conflicts, which pr-conflicts covers.
- License
- MIT
- Instructions
- 174 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (3)
- SKILL.md
- epic.sh · scripts/
- open-work.sh · scripts/
SKILL.md (first lines)
# Focus
Answer one question: what should the user work on next? The answer is a judgement over all open work in the repo. First comes the work that holds up other maintainers, because each day that they wait costs the project more than one day of the user's own work. An epic (a tracking issue with sub-issues) is one input to this judgement, not the whole answer.
The report is read-only. Do not assign, comment, or edit an issue unless the user asks in this session, because a claim on shared work tells the other contributors to stay away.
Requires the `gh` CLI, authenticated.
## 1. Find the scope
- The user named an issue, or asked for the state of an epic: read [`references/epic-report.md`](references/epic-report.md) and follow it in place of the steps below.
- The user passed `prs` (`/focus prs`): rank only the pull requests.
- The user named a repo, or the current directory is a GitHub or Forgejo repo: that repo is the whole scope. A repo with no open issues and no open PRs is a complete answer. Report it and stop.
- Neither: find the repos where somebody waits on the user, and the repos of the user's own claims:
```bash
gh search prs --review-requested=@me --state open --limit 100 --json repository \
--jq '[.[].repository.nameWithOwner]|group_by(.)|map("\(.[0]) \(length)")[]'
gh search issues --assignee @me --state open --limit 100 --json repository \
--jq '[.[].repository.nameWithOwner]|group_by(.)|map("\(.[0]) \(length)")[]'
```
Read each repo that they list. Ask which repo only when both come back empty. Do not sweep every repo the user can see, because that is slow and mostly noise.
## 2. Read the open work
```bash
<skill base directory>/scripts/open-work.sh OWNER/REPO
```
The base directory is printed when the skill loads. The script prints one line per open PR, oldest first. Then it prints one line per open issue. The comment at the top of the script names each field. These fields drive the ranking:
- `team` or `outside` on a PR. A team member is an author with the association OWNER, MEMBER, or COLLABORATOR. Each other author is an outside contributor.
- `review requested: me` on a PR, and `new commits since my review`.
- `asks me` on an issue: a comment after the user's last comment mentions the user. A team comment after the user's last comment that proposes a plan or asks to take the issue waits on the user too, with no mention. Read each `last:` line for it.
- `blocking` and `blockedBy` on an issue, with only the open edges. An issue that blocks two or more open issues is a gate. Finishing a gate frees the most work.
- `epic N/M done` on a tracking issue, and `epic #N` on its sub-issues.
If a comment that the script cut can mean that the work is done, or that somebody asks the user a question, read the issue with `gh issue view N --json comments`.
On a Forgejo repo, use `fj`. Inside a clone, it finds the host and the repo from the git remote. `fj whoami` shows the login.
```bash
fj pr search --state open
fj issue search --state open
fj issue view N comments
```
`fj` shows no author association and no dependencies. On Forgejo, treat the collaborators of the repo as the team, and read the blockers from the issue bodies and comments.
### Labels
The repo's triage labels are in `docs/agents/triage-labels.md` when that file exists. Map each label to its role: `needs-triage`, `needs-info`, `ready-for-agent`, `ready-for-human`, `wontfix`, `needs-grilling`. An issue with no triage label has the role `needs-triage`.
Read the repo's labels once with `gh label list --json name,description`. Treat each label that means refactor, tech debt, or cleanup as a refactor label.
### Hot spots
When the current directory is a clone of the repo, find the files that bug fixes touched most often in the last 90 days:
```bash
git log --since=90.days --format= --name-only -E -i --grep='^fix' | sort | uniq -c | sort -rn | head -15
```
A file with many fixes is a hot spot. Leave out lock files, changelogs, and generated files. A refactor of a hot spot makes the next fix and the next agent run in that code cheaper. Skip this step when there is no local clone.
## 3. Find the work that is done
First find the issues that are done but still open: a comment says that the work is finished, and lists no open work. A PR with no closing keyword leaves its issue open. A status update that names merged PRs and also lists open work ("Open: ...", "left to do") is not done. Check each PR that a comment names with `gh pr view N --json state`, because a comment can be wrong. Report each done issue as one to close, not as work to rank.
A tracking issue with `epic M/M done` is done too: every sub-issue is closed. Report it as one to close, unless its body lists work that has no ticket yet.
## 4. Rank
Ignore drafts, `wontfix` issues, and `needs-info` issues with no reply from the reporter. Rank the rest, best first:
1. Unblock a teammate. A team PR that asks for the user's review, or that has no review from the user, or that has new commits since the user's last review. An issue with `asks me` from a team member. The user's issue or PR that blocks an issue that a teammate claimed. Next step for a PR: `/code-review`. Next step for an issue: `/grilling` on it, then one reply with the answers.
2. Merge: a PR that is approved, has green checks, and has no conflicts.
3. The user's own work: the user's PR with requested changes, then the user's ready claims, gates first.
4. Refactor: an open issue with a refactor label that is free or claimed by the user, and that nothing open blocks. Put first a refactor that is a gate or that touches a hot spot. When no refactor issue touches the top hot spot, name that file as a candidate for `/codebase-design`.
5. Review an outside contributor's PR, with the same conditions as in rank 1. A review request to the user comes first.
6. Implement: a free `ready-for-agent` issue that nothing open blocks. Gates first, then bugs before enhancements. Next step: `/implement`, on a new branch.
7. Triage: a `needs-triage` issue, or a `needs-info` issue that has a reply from the reporter after the last maintainer comment. An outside reporter's question that waits for an answer goes here too. Next step: `/triage`.
8. `ready-for-human`: name it. The user does this work, not an agent.
9. Grill: a `needs-grilling` issue, the maintainer's own parked idea. Next step: `/grill-with-docs`, then `/to-spec`.
Inside one rank, put the oldest PR first (by `created`). A PR that waits for weeks costs its author more than a new one. Show the size of each PR (`+additions/-deletions`).
A PR with failing checks or conflicts waits on its author, not on the user. Leave it out of ranks 1, 2, and 5, unless the author asked the user for help.
When the user's own claim is blocked, name the blocker and who holds it. A blocked claim is usually a reason to help with its blocker.
## 5. Report
Lead with one recommendation and at most two alternatives, each with a one-line reason. The user asked where to look, not for a ranked list of fourteen items. Then one block per repo:
```
owner/repo
Done: #99 (comment: finished in merged PR #117), close it
Waiting: PR #118 by alice (team, review requested, 9 days, +340/-80), #130 asks me (bob)
Merge: PR #120 (approved, CI green, +12/-3)
Yours: PR #122 changes requested, #104 (gate for #105 #106)
Refactor: #110 (gate for #111), hot spot internal/sync/worker.go (9 fixes in 90 days)
Outside: PR #125 by carol (review requested, +39/-1)
Implement: #107 bug, #98
Triage: #131 (no label), #81 needs-info (reporter replied)
Grill: #95, #97
Epics: #100 2/9 done, #140 0/4 done
```
Link each number. Leave empty lines out. The `Epics` line shows progress only. For the tree of one epic, the user runs `/focus #N`.
## 6. Ask only what changes the answer
Ask after the report, not before, and only when the answer changes the recommendation:
- The best free issue is a gate: should the user claim it? Assign it only on a yes, with `gh issue edit N --add-assignee @me`.
- An issue is done but still open: should the user close it? Close it only on a yes, with `gh issue comment N --body "Shipped in #X"` and then `gh issue close N`, because `gh issue close --comment` on an already-closed issue drops the comment and still exits 0.From s0up4200/skills, MIT.
More from s0up4200/skills
- 0.570score
branch-cleanup
s0up4200
Find dead local git branches and worktrees in the current repo, write a plan with a SHA backup, and hand the user a cleanup script to run.
SkillAFreshness: AClaude Code +9 - 0.567score
findability
s0up4200
Retro over the last N coding-agent sessions in a repo (Claude Code and Codex).
SkillAFreshness: AClaude Code +9 - 0.565score
github-resolution-audit
s0up4200
Use when auditing GitHub Issues or Discussions for open feature requests that may have shipped, bugs that may already be fixed, stale reports, or duplicates…
SkillAFreshness: AClaude Code +9 - 0.565score
labels
s0up4200
Label a GitHub pull request or issue with the repo's existing labels.
SkillAFreshness: AClaude Code +9 - 0.565score
file-issue
s0up4200
Draft and file a GitHub issue in an upstream repository soup does not maintain.
SkillAFreshness: AClaude Code +9 - 0.561score
codeowners
s0up4200
Create or update the CODEOWNERS file of a GitHub repository from the commit history and the maintainer's decisions.
SkillAFreshness: AClaude Code +9 - 0.561score
challenge-request
s0up4200
Challenge a feature request from Discord or GitHub, and give a verdict of yes, not now, already possible, no, or need more info.
SkillAFreshness: AClaude Code +9 - 0.544score
diagnosing-bugs
s0up4200
Diagnosis loop for hard bugs and performance regressions.
SkillAFreshness: AClaude Code +9 - 0.544score
code-review
s0up4200
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes: Standards (does the code follow this repo's documented coding…
SkillAFreshness: AClaude Code +9 - 0.539score
domain-modeling
s0up4200
Build and sharpen a project's domain model.
SkillAFreshness: AClaude Code +9 - 0.539score
codebase-design
s0up4200
Shared vocabulary for designing deep modules.
SkillAFreshness: AClaude Code +9 - 0.533score
ask-matt
s0up4200
Ask which skill or flow fits your situation.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/s0up4200/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from s0up4200
- 0.570score
branch-cleanup
s0up4200
Find dead local git branches and worktrees in the current repo, write a plan with a SHA backup, and hand the user a cleanup script to run.
SkillAFreshness: AClaude Code +9 - 0.567score
findability
s0up4200
Retro over the last N coding-agent sessions in a repo (Claude Code and Codex).
SkillAFreshness: AClaude Code +9 - 0.565score
github-resolution-audit
s0up4200
Use when auditing GitHub Issues or Discussions for open feature requests that may have shipped, bugs that may already be fixed, stale reports, or duplicates…
SkillAFreshness: AClaude Code +9 - 0.565score
labels
s0up4200
Label a GitHub pull request or issue with the repo's existing labels.
SkillAFreshness: AClaude Code +9 - 0.565score
file-issue
s0up4200
Draft and file a GitHub issue in an upstream repository soup does not maintain.
SkillAFreshness: AClaude Code +9 - 0.561score
challenge-request
s0up4200
Challenge a feature request from Discord or GitHub, and give a verdict of yes, not now, already possible, no, or need more info.
SkillAFreshness: AClaude Code +9
Cite this page
focus skill. Agent Mart. https://agentmart.dev/skills/s0up4200-focus (last updated 2026-10-24)