kimtth/fetch-llm-apps
Workflow for updating the popular LLM applications pool (section/x_llm_apps.md) using fetch_llm_apps.py. Covers full refresh, alternate exports, topic tuning, and common pitfalls. USE FOR: Refreshing the ranked GitHub applications list linked from applications.md. DO NOT USE FOR: Hand-curating application entries inside applications.md or adding GitHub star badges to the generated file.
npx skills add https://github.com/kimtth/azure-openai-llm-wiki --skill fetch-llm-apps
The pool file section/x_llm_apps.md is a generated ranked list of GitHub repositories related to LLM apps, agents, chat UIs, workflow builders, and similar application-layer projects.
It is generated by code/fetch_llm_apps.py using GitHub topic search, deduplicated across multiple topics, and sorted by GitHub star count descending.
The section #### Popular LLM Applications (GitHub Stars >= 1000) in section/applications.md links to this generated file with a one-line description only. Do not paste generated entries directly into applications.md.
Script: code/fetch_llm_apps.py
Python env: .venv\Scripts\python.exe
| Argument | Default | Purpose |
|----------|---------|---------|
| --output | section/x_llm_apps.md | Output file path. Extension controls format: .md, .json, .csv |
| --min-stars | 1000 | Minimum GitHub star threshold |
| --topics | curated list | GitHub topics to query and merge |
| --token | GITHUB_TOKEN env var | GitHub PAT for higher rate limits |
| --show | 30 | Number of repos printed to console |
| --timeout | 20 | Per-request timeout in seconds |
| --max-retries | 4 | Max retries per request |
| --backoff | 1.0 | Initial retry backoff |
| --sleep | 1.0 | Delay between successful page requests |
| --include-archived | off | Include archived repositories |
| --append | off | Merge new results with an existing output file, then re-sort by stars |
Use this for the normal update path.
.venv\Scripts\python.exe code/fetch_llm_apps.py
section/x_llm_apps.md.--min-stars 1000 by default to match the section title.--include-archived is passed..venv\Scripts\python.exe code/fetch_llm_apps.py --token $env:GITHUB_TOKEN
Use a GitHub PAT when doing a full refresh across many topics. Unauthenticated search is heavily rate-limited.
.venv\Scripts\python.exe code/fetch_llm_apps.py --min-stars 2000
Use this when you want a tighter list. If you change the threshold materially, update the descriptive text in section/applications.md so the label stays truthful.
.venv\Scripts\python.exe code/fetch_llm_apps.py --output files/x_llm_apps.json
.venv\Scripts\python.exe code/fetch_llm_apps.py --output files/x_llm_apps.csv
Use JSON or CSV when you want to inspect or post-process the ranked repo pool before regenerating markdown.
.venv\Scripts\python.exe code/fetch_llm_apps.py --topics llm agent rag chatbot ai-workflow
full_name after all topic passes complete.If the output is intentionally narrowed to a subset such as gemini claude azure-openai copilot assistant, keep the ranked entries as generated, then update the document metadata and the linking description in section/applications.md to reflect the narrowed scope.
.venv\Scripts\python.exe code/fetch_llm_apps.py `
--append `
--topics llm agent rag chatbot ai-workflow
--append parses the existing compact entries, merges newly fetched repositories by full_name, and rewrites the file sorted by star count. Use it when expanding coverage; use the normal full refresh when the default topic set changes substantially.
Each entry in section/x_llm_apps.md follows this compact format:
1. [owner/repo](https://github.com/owner/repo): Short GitHub description. [Mon YYYY] (⭐ 12,345)
[Mon YYYY].The file header includes:
section/x_llm_apps.md, not inline inside section/applications.md.(⭐ 12,345). Do not run add_github_stars.py on it.≥1000. If you generate with a different threshold, either restore 1000 or update the section label and description.GITHUB_TOKEN for routine refreshes.--topics or curate separately if coverage is insufficient.Take kimtth/fetch-llm-apps from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.