Detect branch, worktree session, and staged changes for devteam.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add Dev-Toolbelt/dev-team-agents --skill current-context --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Current Context?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/dev-toolbelt-current-context)More formats (shields.io, HTML) on the badges page.
---
name: current-context
description: Detect branch, worktree session, and staged changes for devteam.
---
# Current Context Detection
Before executing any devteam command, identify the working context so that analysis and actions stay scoped to the right branch and files.
## Steps
Run these commands in order:
| Command | Purpose |
|---------|---------|
| `git branch --show-current` | Identify the active branch |
| `git diff --name-only HEAD` | List locally modified files |
| `git diff --name-only main...HEAD` | List all files changed in this branch vs main |
| Check `.dev-team-agents/.worktree-session` (if present) | Identify active worktree and its branch |
## Scope Rule
Restrict all analysis and actions to files and changes within the detected context. Do NOT scan or act on the full codebase unless the task explicitly requests a broader scope.
## Worktree Session
If `.dev-team-agents/.worktree-session` exists, read it before proceeding:
- `worktree=no` — operating on main working tree; no worktree isolation active
- `worktree=yes branch=<b>` — operating inside a worktree on branch `<b>`; load `skills/shared/worktree/SKILL.md` and follow its isolation protocol
If the file does not exist, assume the main working tree and proceed normally.
## Staged Changes
Use `git status --porcelain` to distinguish:
- `M ` (staged modifications) — already added to the index
- ` M` (unstaged modifications) — modified but not staged
- `??` (untracked files) — new files not yet tracked
This matters when the task involves committing or reviewing only staged work.
## Branch Freshness Check
After running the context commands, check if the branch is behind the remote main:
```bash
git fetch --quiet origin 2>/dev/null || true
BEHIND=$(git rev-list --count HEAD..origin/main 2>/dev/null || echo 0)
```
If `BEHIND` is greater than 7:
- Warn the user: "This branch is N commits behind main. Consider rebasing before continuing."
- Offer three options: (a) rebase now, (b) continue anyway, (c) abort.
- If the user chooses (a), run `git rebase origin/main` and re-run the context detection.
If `git fetch` fails (no network), skip the check silently and proceed.
## Cache
Running 4 git commands on every invocation adds latency. Use a short-lived cache stored at `.dev-team-agents/user-data/.context-cache.json`:
```json
{ "ts": <unix-epoch-seconds>, "branch": "...", "changed": N, "worktree": "yes|no" }
```
**Read the cache first:**
```bash
CACHE=".dev-team-agents/user-data/.context-cache.json"
NOW=$(date +%s)
if [ -f "$CACHE" ]; then
CURRENT_BRANCH=$(git branch --show-current 2>/dev/null || echo "")
cached_branch=$(python3 -c "import json,sys; d=json.load(open('$CACHE')); print(d.get('branch',''))" 2>/dev/null || echo "")
if [ -n "$CURRENT_BRANCH" ] && [ -n "$cached_branch" ] && [ "$cached_branch" != "$CURRENT_BRANCH" ]; then
# Branch changed — invalidate cache
rm -f "$CACHE"
fi
fi
if [ -f "$CACHE" ]; then
cached_ts=$(python3 -c "import json,sys; print(json.load(open('$CACHE'))['ts'])" 2>/dev/null || echo 0)
age=$(( NOW - cached_ts ))
[ "$age" -lt 1800 ] && echo "Context (cached): $(cat $CACHE)" && exit 0
fi
```
**Write the cache after detection:**
```bash
python3 -c "
import json, time
json.dump({'ts': int(time.time()), 'branch': '$BRANCH', 'changed': $CHANGED, 'worktree': '$WORKTREE'}, open('$CACHE','w'))
" 2>/dev/null || true
```
Cache TTL is 1800 seconds (30 minutes). On cache miss, branch change, or stale cache, run the full detection flow and write a fresh cache entry. If `python3` is unavailable, skip caching silently and always run the full detection.
---
## Summary Format
After running the commands, produce a one-line context header before any action:
```
Context: branch=<branch> | worktree=<yes|no> | changed=<N files>
```
This makes the working scope explicit to any subsequent agent or step.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!