.claude/skills/pick-issue/SKILL.md
--- name: pick-issue description: Find and recommend clean open source issues to work on from Django, Python, or AI ecosystems. Verifies each issue is open, unassigned, and has no in-progress PR. Use when the user asks to find issues, pick a ticket, or wants contribution suggestions. disable-model-invocation: false allowed-tools: WebFetch, Read, Write, Bash argument-hint: [ecosystem: django|python|ai|all] [filter: good-first|bugs|all] [fresh] --- You are helping a Python/Django expert find the
npx skillsauth add awais786/opensource-issues .claude/skills/pick-issueInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are helping a Python/Django expert find the best open source issues to contribute to.
See profile.md for expertise, preferred categories, and repos/labels to skip.
Check $ARGUMENTS for ecosystem hints:
ai, AI, llm, LLM → fetch AI repos directly (see Step 1b)python → focus on py_core, py_web, py_tools categoriesCheck the ## Contribution History section in MEMORY.md (loaded automatically into context).
Any issue URL listed there must be discarded immediately — do not recommend, score, or verify it.
Cache path: /Users/awais.qureshi/Documents/devstack/opensource-issues/.claude/skills/pick-issue/cache/issues.json
Cache TTL: 24 hours
Check if cache exists and is fresh:
CACHE=/Users/awais.qureshi/Documents/devstack/opensource-issues/.claude/skills/pick-issue/cache/issues.json
if [ -f "$CACHE" ]; then
AGE=$(( $(date +%s) - $(stat -f %m "$CACHE" 2>/dev/null || stat -c %Y "$CACHE") ))
[ $AGE -lt 86400 ] && echo "fresh" || echo "stale"
else
echo "missing"
fi
$ARGUMENTS does NOT contain fresh → read from cache file, skip download$ARGUMENTS contains fresh → fetch from URL, save to cache:mkdir -p /Users/awais.qureshi/Documents/devstack/opensource-issues/.claude/skills/pick-issue/cache
Fetch: https://awais786.github.io/opensource-issues/data/issues.json
Then write the result to the cache path above.
Always fetch live (GitHub API data changes frequently):
https://api.github.com/repos/run-llama/llama_index/issues?state=open&per_page=20&sort=created&direction=deschttps://api.github.com/repos/BerriAI/litellm/issues?state=open&per_page=20&sort=created&direction=deschttps://api.github.com/repos/chroma-core/chroma/issues?state=open&per_page=15&sort=created&direction=deschttps://api.github.com/repos/langchain-ai/langchain/issues?state=open&labels=good+first+issue&per_page=15https://api.github.com/repos/modelcontextprotocol/python-sdk/issues?state=open&per_page=15&sort=created&direction=descFilter out pull requests (items with pull_request field).
Apply from profile.md:
question, invalid, wontfix, stale, duplicateIf $ARGUMENTS specifies a category or filter, apply it on top.
is_good_first_issue: trueis_help_wanted: truecomments == 0 (no competition)comments < 5is_bug: truepriority: "low" or "medium"comments > 15created_at more than 1 year agoTake the top 15 scored issues and verify each via GitHub API in parallel:
https://api.github.com/repos/<owner>/<repo>/issues/<number>
Discard an issue if ANY of these are true:
state is not "open"assignees array is non-empty (someone claimed it)pull_request field exists in the response (it's a PR not an issue)Check for linked PRs explicitly:
https://api.github.com/repos/<owner>/<repo>/issues/<number>/timeline
If any event has event: "cross-referenced" and the source is an open pull request → discard.
Only proceed with issues confirmed open + unassigned + no linked PRs.
| # | Repo | Issue | Type | Comments | Score | Link | |---|------|-------|------|----------|-------|------|
All issues in this table are guaranteed: open, unassigned, no in-progress PRs.
Single best pick with: why it fits your skills, concrete approach, estimated scope (small/medium/large), and direct GitHub link.
To implement: say
"Make a PR for <issue-url>"
tools
Shows a live snapshot of team activity — in-progress work, open issues, blocked items, recent merges
testing
Generates a weekly summary of team contributions — merged PRs, in-progress work, blockers, velocity
development
Dev claims a specific GitHub issue — posts comment, sets up local context, prepares to fix
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.